mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 01:13:30 +00:00
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.
45 lines
1.8 KiB
Bash
Executable File
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
|