[m-dev.] rl_exprn doesn't compile without ADITI
Fergus Henderson
fjh at cs.mu.OZ.AU
Wed Jun 23 13:04:42 AEST 1999
That looks great -- thanks, Simon.
On 23-Jun-1999, Simon Taylor <stayl at cs.mu.OZ.AU> wrote:
>
> I wrote:
> > I've got a better fix bootstrapping now.
> > I've also added some more comments to Mmake.common.in.
>
> Estimated hours taken: 1
>
> Mmake.common.in:
> Document that `mmake depend' needs to be run
> in the compiler directory if the setting
> of `INCLUDE_ADITI_OUTPUT' is changed.
>
> compiler/Mmakefile:
> Change the action of `mmake depend' so that it always
> regenerates the `.m' files for which `.pp' files exist.
>
> Don't update the timestamp on a `.m' file if regenerating
> it does not change it.
>
> tools/bootcheck:
> Link rather than copy `.pp' files now that reprocessing
> them is handled by `mmake depend'.
>
> Index: Mmake.common.in
> ===================================================================
> RCS file: /home/staff/zs/imp/mercury/Mmake.common.in,v
> retrieving revision 1.37
> diff -u -u -r1.37 Mmake.common.in
> --- Mmake.common.in 1999/04/28 01:18:27 1.37
> +++ Mmake.common.in 1999/06/23 02:11:08
> @@ -186,6 +186,9 @@
> # To disable the Aditi support, put `INCLUDE_ADITI_OUTPUT = no'
> # in Mmake.stage.params. Do not put this into Mmake.params - we still
> # want to check that the Aditi code compiles after any changes.
> +# `mmake depend' must be run in any compiler directories affected by
> +# the changed value (tools/bootcheck will do this automatically for
> +# the stage2 and stage3 directories).
> INCLUDE_ADITI_OUTPUT = yes
>
> #-----------------------------------------------------------------------------#
> Index: compiler/Mmakefile
> ===================================================================
> RCS file: /home/staff/zs/imp/mercury/compiler/Mmakefile,v
> retrieving revision 1.19
> diff -u -u -r1.19 Mmakefile
> --- Mmakefile 1999/06/10 13:14:52 1.19
> +++ Mmakefile 1999/06/23 02:07:11
> @@ -54,30 +54,52 @@
> #-----------------------------------------------------------------------------#
>
> # Rules for preprocessing `.pp' files.
> +# `.pp_date' files are used as timestamps as for interface files.
>
> ifeq ($(INCLUDE_ADITI_OUTPUT),yes)
>
> # Remove the #if line and everything between the #else and #endif lines.
> -%.m: %.pp
> - @-[ ! -f $@ ] || chmod +w $@
> +$(dates_subdir)%.pp_date: %.pp
> + m_file=$(<:.pp=.m); \
> + [ ! -f $$m_file ] || chmod +w $$m_file; \
> sed -e '/^#if *INCLUDE_ADITI_OUTPUT/s/.*//' \
> -e '/^#else/,/^#endif/s/.*//' \
> - $< > $@
> - @-chmod -w $@
> + $< > $$m_file.tmp; \
> + mercury_update_interface -v $$m_file; \
> + touch $@; \
> + chmod -w $$m_file
>
> else
>
> # Remove everything between the #if line and the #else line,
> # and the #endif line.
> -%.m: %.pp
> - @-[ ! -f $@ ] || chmod +w $@
> +$(dates_subdir)%.pp_date: %.pp
> + m_file=$(<:.pp=.m); \
> + [ ! -f $$m_file ] || chmod +w $$m_file; \
> sed -e '/^#if *INCLUDE_ADITI_OUTPUT/,/^#else/s/.*//' \
> -e '/^#endif/s/.*//' \
> - $< > $@
> - @-chmod -w $@
> + $< > $$m_file.tmp; \
> + mercury_update_interface -v $$m_file; \
> + touch $@; \
> + chmod -w $$m_file
>
> endif
>
> +PREPROCESSED_MODULES = rl_file rl_out
> +PREPROCESSED_FILES = $(PREPROCESSED_MODULES:%=%.pp)
> +PREPROCESSED_M_FILES = $(PREPROCESSED_MODULES:%=%.m)
> +PP_DATE_FILES = $(PREPROCESSED_MODULES:%=$(dates_subdir)%.pp_date)
> +
> +# Force regeneration of the preprocessed modules.
> +# This is necessary if the setting of `INCLUDE_ADITI_OUTPUT' has changed.
> +regenerate_preprocessed_files:
> + touch $(PREPROCESSED_FILES)
> + $(MMAKE) $(PREPROCESSED_M_FILES)
> +
> +# The `.m' files for the preprocessed modules depend on the `.pp_date' files.
> +$(PREPROCESSED_M_FILES): %.m: $(dates_subdir)%.pp_date
> + @:
> +
> #-----------------------------------------------------------------------------#
>
> # targets
> @@ -87,9 +109,7 @@
> .PHONY: depend
> depend: mercury_compile.depend
>
> -# we need to make sure the .pp files get converted to .m before
> -# we do the make depend
> -mercury_compile.depend: rl_file.m rl_out.m
> +mercury_compile.depend: regenerate_preprocessed_files
>
> .PHONY: all
> all: mercury
> @@ -151,7 +171,7 @@
> done
>
> realclean:
> - rm -f tags mercury_compile.stats
> + rm -f tags mercury_compile.stats $(PP_DATE_FILES)
>
> #-----------------------------------------------------------------------------#
> #-----------------------------------------------------------------------------#
> Index: tools/bootcheck
> ===================================================================
> RCS file: /home/staff/zs/imp/mercury/tools/bootcheck,v
> retrieving revision 1.81
> diff -u -u -r1.81 bootcheck
> --- bootcheck 1999/05/05 05:24:28 1.81
> +++ bootcheck 1999/06/22 05:40:44
> @@ -286,9 +286,7 @@
> ln -s $root/compiler/[a-h]*.m .
> ln -s $root/compiler/[i-s]*.m .
> ln -s $root/compiler/[t-z]*.m .
> - # Make sure rl_out.m and rl_file.m are recreated with
> - # the value of INCLUDE_ADITI_OUTPUT in Mmake.stage.params.
> - cp $root/compiler/*.pp .
> + ln -s $root/compiler/*.pp .
>
> cp $root/compiler/Mmake* .
> cd $root/stage2
> @@ -489,9 +487,7 @@
> ln -s $root/compiler/[a-h]*.m .
> ln -s $root/compiler/[i-s]*.m .
> ln -s $root/compiler/[t-z]*.m .
> - # Make sure rl_out.m and rl_file.m are recreated with
> - # the value of INCLUDE_ADITI_OUTPUT in Mmake.stage.params.
> - cp $root/compiler/*.pp .
> + ln -s $root/compiler/*.pp .
>
> cp $root/compiler/Mmake* .
> cd $root/stage3
> --------------------------------------------------------------------------
> mercury-developers mailing list
> Post messages to: mercury-developers at cs.mu.oz.au
> Administrative Queries: owner-mercury-developers at cs.mu.oz.au
> Subscriptions: mercury-developers-request at cs.mu.oz.au
> --------------------------------------------------------------------------
>
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3 | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list