rules revision 29633f709477530c1dc68039695cdc3cbb051184
9210d8796eaf4125ac58c034f9b5ca167857a55aAutomatic Updater# Author: Klaus L�ttich
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User# This Makefile will compile the new hetcats system and provides also
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt# targets for test programs during implementation phases.
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt# !!! Note: This makefile is written for GNU make !!!
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt# (gmake on solaris ; make on linux)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User####################################################################
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt## Some varibles, which control the compilation
76786c2904942b708d8a7a4659df74da5dc9446eEvan HuntINCLUDE_PATH = ghc:hetcats
e2e4d321999340802f77adaacd19c797d04b4b95Automatic UpdaterCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
76786c2904942b708d8a7a4659df74da5dc9446eEvan HuntCLEAN_PATH = Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Haskell/Language:Modal:CspCASL:$(INCLUDE_PATH)
76786c2904942b708d8a7a4659df74da5dc9446eEvan HuntHAPPY = happy
76786c2904942b708d8a7a4659df74da5dc9446eEvan HuntDRIFT = $(PERL) utils/DrIFT
76786c2904942b708d8a7a4659df74da5dc9446eEvan HuntHADDOCK = haddock
e2e4d321999340802f77adaacd19c797d04b4b95Automatic UpdaterHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall
e2e4d321999340802f77adaacd19c797d04b4b95Automatic UpdaterHC_INCLUDE = -i$(INCLUDE_PATH)
76786c2904942b708d8a7a4659df74da5dc9446eEvan HuntAG_FLAGS = -mdcfs
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### Profiling and Warnings (only for debugging)
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt### Attention every module must be compiled with profiling or the linker
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### cannot link the various .o files properly. So after switching on
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt### Profiling, do an 'gmake clean; gmake'
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### If you need Profiling comment out the following line
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt#HC_PROF = -prof -auto-all -Wall
76786c2904942b708d8a7a4659df74da5dc9446eEvan HuntHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserHC_OPTS = $(HCI_OPTS) $(HC_PROF)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### list of directories to run checks in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserTESTDIRS = Common/test CASL/test HasCASL/test ToHaskell test
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User####################################################################
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt## sources for hetcats (semi - manually produced with a perl script)
ec899c963c91c16c393e067996400ae244921110Tinderbox Userifneq ($(MAKECMDGOALS),clean)
ec899c963c91c16c393e067996400ae244921110Tinderbox Userifneq ($(MAKECMDGOALS),bin_clean)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntifneq ($(MAKECMDGOALS),d_clean)
ec899c963c91c16c393e067996400ae244921110Tinderbox Userifneq ($(MAKECMDGOALS),real_clean)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userifneq ($(MAKECMDGOALS),distclean)
ec899c963c91c16c393e067996400ae244921110Tinderbox Userobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt# this variable holds the modules that should be documented
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# the imported parsec library is not included!
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntdoc_sources = $(filter-out Nothing/Nothing% ,$(sources))
ec899c963c91c16c393e067996400ae244921110Tinderbox User####################################################################
ec899c963c91c16c393e067996400ae244921110Tinderbox User.PHONY : clean d_clean real_clean bin_clean check
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt.SECONDARY : %.hs %.d
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userall: $(sources)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(HC) --make -o hets hets.hs $(HC_OPTS)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userhets: $(sources)
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(HC) --make -o $@ hets.hs $(HC_OPTS)
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunthets-old: $(objects)
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(HC) -o hets $(HC_OPTS) $(objects)
ec899c963c91c16c393e067996400ae244921110Tinderbox Userhetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) hetcats-make sources_hetcats.mk
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make && \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(PERL) utils/create_sources.pl hetcats-make sources_hetcats.mk
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User###############################
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt### TAGS files for (x)emacs
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# load them with "M-x" "visit-tags-table" from
7ae7246a6339bb3a79ffc9f2f9c486de9a2bf65eAutomatic Updater# use "M-." to search for a tag
2cbb4ab75757fbb656997a82c14ca07db37d481aAutomatic Updater# !!Beware this is somewhat instable, because it uses an absolute path!!
7ae7246a6339bb3a79ffc9f2f9c486de9a2bf65eAutomatic Updater /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
7ae7246a6339bb3a79ffc9f2f9c486de9a2bf65eAutomatic Updater $(sources); mv TAGS $@; mv tags hetcats.tags
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt###############################
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt### Documentation via haddock
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $(HADDOCK) $(doc_sources) -o docs -h \
ec899c963c91c16c393e067996400ae244921110Tinderbox User -t 'hets -- a heterogenous Specification (CASL) tool set'
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(MAKE) distclean
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(MAKE) hetcats-make
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(RM) docs/*.html
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt mv docs/* a-docs/
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt###############
7ae7246a6339bb3a79ffc9f2f9c486de9a2bf65eAutomatic Updater### removes *.hi and *.o in all include directories
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userclean: bin_clean
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
ec899c963c91c16c393e067996400ae244921110Tinderbox User (cd $$p ; $(RM) *.hi *.o) ; done
ec899c963c91c16c393e067996400ae244921110Tinderbox User### remove binaries
ec899c963c91c16c393e067996400ae244921110Tinderbox User### additonally removes *.d (dependency files) in every include directory
2cbb4ab75757fbb656997a82c14ca07db37d481aAutomatic Updater### also delete *.d.bak (dependency file backups)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userd_clean: clean
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (cd $$p ; $(RM) *.d *.d.bak) ; done
7e71f05d8643aca84914437c900cb716444507e4Tinderbox User### remove files also in own libraries
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userlib_clean: clean
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User for p in $(subst :, ,$(COMMONLIB_PATH)) . ; do \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (cd $$p ; $(RM) *.hi *.d *.o) ; done
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt### additionally removes the files that define the sources-variable
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userreal_clean: bin_clean lib_clean
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(RM) hetcats-make sources_hetcats.mk
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(RM) AS_*.hs
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt### additionally removes files not in CVS tree
76786c2904942b708d8a7a4659df74da5dc9446eEvan Huntdistclean: real_clean
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(RM) $(drifted_files)
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater####################################################################
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt### test targets
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt####################################################################
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt### a parser to test annotation parser and Id parsers
e2e4d321999340802f77adaacd19c797d04b4b95Automatic UpdaterCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
76786c2904942b708d8a7a4659df74da5dc9446eEvan Hunt $(HC) --make -o $@ $< $(HC_OPTS)
76786c2904942b708d8a7a4659df74da5dc9446eEvan HuntCommon/annos: Common/annos.hs Common/AS_Annotation.der.hs
capa: CASL/capa
hacapa: HasCASL/hacapa
hapa: Haskell/hapa
wrap: Haskell/wrap
hetpa: Syntax/hetpa.hs Syntax/*.hs
hetana: Static/hetana.hs Static/*.hs
hetdg: GUI/hetdg.hs $(drifted_files) *.hs
$(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
## two hardcoded dependencies for a correct generation of Version.hs
%.hs: %.ag.hs
%.hs: %.der.hs
%.lhs: %.der.lhs