Files
mercury/scripts/Mmake.rules
Simon Taylor 3dad0e05f1 Module qualification of types, insts and modes.
Estimated hours taken: 0.2

Module qualification of types, insts and modes.

Added a new interface file - <module>.int3. This contains the
short interface qualified as much as possible given the information
in the current module.

When producing the .int and .int2 files for a module, the compiler uses
the information in the .int3 files of modules imported in the interface
to fully module qualify all items. The .int2 file is just a fully
qualified version of the .int3 file. The .int3 file cannot be overwritten
by the fully qualified version in the .int2 file because then mmake would
not be able to tell when the interface files that depend on that .int3
file really need updating.


scripts/Mmake.rules
scripts/Mmake.vars
Removed the rule for .int, since this is now in the .d files.
Rules and suffix entry for the .int3 and .date3 files.
1996-06-11 06:31:37 +00:00

148 lines
3.2 KiB
Plaintext

#-----------------------------------------------------------------------------#
# Copyright (C) 1995 University of Melbourne.
# This file may only be copied under the terms of the GNU General
# Public License - see the file COPYING in the Mercury distribution.
#-----------------------------------------------------------------------------#
# Mmake.rules - rules for building Mercury programs
main_target: $(MAIN_TARGET)
#-----------------------------------------------------------------------------#
# Beware that the order of suffixes is significant.
.SUFFIXES: .pp .m .nl .no .err .int .int2 .int3 .dep .depend .doit .ugly \
.date .date3 .mod .c .nu .o .pic_o .i .s .garb .mod_h .ql .pl
.PRECIOUS: %.date
# All the builtin rules must use $@ as the target, so that they work
# when $(VPATH) is set.
.pp.m:
@-[ ! -f $@ ] || chmod +w $@
sed '/^#if *NU_PROLOG/,/^#endif/s/.*//' $< > $@
@-chmod -w $@
.m.no:
$(MNC) $(MNCFLAGS) -o $@ $<
.nl.no:
$(MNC) $(MNCFLAGS) -o $@ $<
.m.ql:
$(MSC) $(MSCFLAGS) -o $@ $<
.nl.ql:
$(MSC) $(MSCFLAGS) -o $@ $<
.m.pl:
sicstus_conv $<
.nl.pl:
sicstus_conv $<
# The `touch' is necessary, since otherwise if
# the old .err file was of size zero and
# the new .err file is also of size zero,
# the time-stamp doesn't get updated!
# (Is that a bug in unix? In bash?)
.m.err:
$(MC) $(MCFLAGS) --errorcheck-only $< > $@ 2>&1
@touch $@
.m.date:
$(MCI) $(MCIFLAGS) $<
.m.date3:
$(MCSI) $(MCSIFLAGS) $<
# do not remove the whitespace in the following three rules!
.date.int:
.date.int2:
.date3.int3:
.m.garb:
$(MCG) --garbage-collection accurate $(MCGFLAGS) $<
.m.ugly:
$(MC) --convert-to-mercury $(MCFLAGS) $<
.m.dep:
@-[ ! -f $*.dep ] || chmod +w $*.dep
$(MCD) $(MCDFLAGS) $<
@-chmod -w $*.dep
.m.depend:
@-[ ! -f $*.dep ] || chmod +w $*.dep
$(MCD) $(MCDFLAGS) $<
@-chmod -w $*.dep
-rm -f $*_init.c
.dep.doit:
sed -e ':a' -e '/\\/N' -e 's/\\\n //' -e 't a' $< | \
tee tmp | \
grep 'srcs *=' | \
sed -e 's/.*=/:-[ '\''nu_library.doit'\'', /' \
-e 's/\.nl/,/g' \
-e 's/$$/ portray ]./' \
> $@
.m.c:
rm -f $*.c
$(MCG) -s $(GRADE) $(MCGFLAGS) $< > $*.err2 2>&1
# the next rule should be needed only in runtime in a short while
.mod.c:
[ -f $< ] && $(MOD2C) -s$(GRADE) $(MOD2CFLAGS) $< > $@
# the next rule will need changing (probably by Tyson)
.mod.mod_h:
[ -f $< ] && $(MOD2H) -s$(GRADE) $(MOD2HFLAGS) $< > $@
.c.o:
$(MGNUC) -s$(GRADE) $(MGNUCFLAGS) -c $< -o $@
# .c.pic_o:
# $(MGNUC) -s$(GRADE) $(MGNUCFLAGS) $(CFLAGS_FOR_PIC) -c $< -o $@
.c.s:
$(MGNUC) -s$(GRADE) $(MGNUCFLAGS) -S $< -o $@
.c.i:
$(MGNUC) -s$(GRADE) $(MGNUCFLAGS) -E $< > $@
.m.o:
$(MMAKE_MAKE_CMD) $(MAKEOVERRIDES) $*.c
$(MGNUC) -s$(GRADE) $(MGNUCFLAGS) -c $*.c -o $@
$(RM_C) $*.c
.o.pic_o:
$(MMAKE_MAKE_CMD) $(MAKEOVERRIDES) $*.c
$(MGNUC) -s$(GRADE) $(MGNUCFLAGS) $(CFLAGS_FOR_PIC) -c $*.c -o $@
$(RM_C) $*.c
%.dir/*.o: %.m
rm -f $@
$(MCS) -s$(GRADE) $(MCSFLAGS) $<
#-----------------------------------------------------------------------------#
# The actions for `mmake clean' etc. are in the `.d' files.
.PHONY: clean realclean clean_nu clean_sicstus
realclean: clean
#-----------------------------------------------------------------------------#