Files
mercury/tools/make_optimization_options
Zoltan Somogyi 30f302f348 Make tools/make_optimization_options update options.m.
tools/make_optimization_options:
    Instead of generating a file to be manually copied into the middle
    of compiler/options.m, do that update automatically.

compiler/options.m:
    Mark both ends of the region whose contents are controlled by
    tools/make_optimization_options.
2023-08-18 13:09:48 +02:00

45 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
# vim: ts=4 sw=4 et ft=sh
#---------------------------------------------------------------------------#
# Copyright (C) 2020 The Mercury team.
# This file may only be copied under the terms of the GNU General
# Public License - see the file COPYING in the Mercury distribution.
#---------------------------------------------------------------------------#
#
# This script constructs (or reconstructs) the contents of
# compiler/optimization_options.m. The initial and final parts
# are hand_written, in make_optimization_options_{start,end}
# respectively, while the middle is generated by
# make_optimization_options_middle from make_optimization_options_db.
#
# make_optimization_options_middle also reconstructs the contents of
# compiler/options.m. Specifically, it rewrites the part between two markers,
# INCLUDE_HANDLER_FILE_START and INCLUDE_HANDLER_FILE_END, which contains
# the code handling the bool_special, int_special etc optimization options.
#
if test -f ../compiler/optimization_options.m
then
chmod u+w ../compiler/optimization_options.m
fi
/bin/rm .options_init .options_final handler_file > /dev/null 2>&1
(
cat make_optimization_options_start;
awk -f make_optimization_options_middle make_optimization_options_db;
cat make_optimization_options_end
) > ../compiler/optimization_options.m
chmod a-w ../compiler/optimization_options.m
sed -e '1,/INCLUDE_HANDLER_FILE_START/w .options_init' \
< ../compiler/options.m > /dev/null 2>&1
sed -e '/INCLUDE_HANDLER_FILE_END/,$w .options_final' \
< ../compiler/options.m > /dev/null 2>&1
# The invocation of make_optimization_options_middle above
# creates handler_file
cat .options_init handler_file .options_final > .new_options.m
mv -f .new_options.m ../compiler/options.m
/bin/rm .options_init .options_final handler_file > /dev/null 2>&1