Makefile revision b905126bab9454b89041f92b3c50bb9efc85e427
90c099e88e9f16bfee9edee3ac1a51fc98843772Brian Wellington# Author: (c) Klaus L�ttich, Christian Maeder, Uni Bremen 2002-2004
620de5a4b1f23dc9b4ec30d30c0607ff389be0daBob Halley# This Makefile will compile the new hetcats system and provides also
68b952dc98a9e02b269c0712da120cd773679652Brian Wellington# targets for test programs during implementation phases.
d1cc210d2091916df6f9858fae20a1c760f3b257Andreas Gustafsson# !!! Note: This makefile is written for GNU make !!!
d1cc210d2091916df6f9858fae20a1c760f3b257Andreas Gustafsson# (gmake on solaris ; make on linux)
d1cc210d2091916df6f9858fae20a1c760f3b257Andreas Gustafsson####################################################################
d1cc210d2091916df6f9858fae20a1c760f3b257Andreas Gustafsson## Some varibles, which control the compilation
d1cc210d2091916df6f9858fae20a1c760f3b257Andreas GustafssonCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
d1cc210d2091916df6f9858fae20a1c760f3b257Andreas GustafssonCLEAN_PATH = utils/DrIFT-src:utils/GenerateRules:Common:Logic:CASL:CASL/CCC:Syntax:Static:GUI:HasCASL:Haskell:Modal:CoCASL:CspCASL:ATC:ToHaskell:Proofs:Comorphisms:Isabelle:$(INCLUDE_PATH):Haskell/Hatchet
d1cc210d2091916df6f9858fae20a1c760f3b257Andreas Gustafsson## set ghc imports properly for your system
ed0a4f1a302a5e543a9a2e4f8e61ca8a0673c6a7Mark AndrewsLINUX_IMPORTS = $(wildcard /home/linux-bkb/ghc/ghc-latest/lib/ghc-*/imports)
ed0a4f1a302a5e543a9a2e4f8e61ca8a0673c6a7Mark AndrewsDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:${LINUX_IMPORTS}:${GHC_IMPORTS}'
a93cf7e83be621d3d68f51e37121a47a70a6757bMark Andrews# override on commandline for other architectures
a93cf7e83be621d3d68f51e37121a47a70a6757bMark AndrewsINSTALLDIR = /home/www/agbkb/forschung/formal_methods/CoFI/hets/`utils/sysname.sh`
1c1156b6e71555e593ed4bbca2284055c9f6fa45Andreas GustafssonGENERATERULES_deps = utils/GenerateRules/*hs $(DRIFT_deps)
1c1156b6e71555e593ed4bbca2284055c9f6fa45Andreas GustafssonINLINEAXIOMS_deps = utils/InlineAxioms/*hs
df0f58959ed82a2a43ca8d816ce9592541df9f2fMark Andrews# -fglasgow-exts comes in via ../uni/uni-package.conf
f4b5a0f43481026ea27bd96e3584ca0e92542f0dBob HalleyHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci \
f4b5a0f43481026ea27bd96e3584ca0e92542f0dBob Halley### Profiling and Warnings (only for debugging)
f4b5a0f43481026ea27bd96e3584ca0e92542f0dBob Halley### Attention every module must be compiled with profiling or the linker
f4b5a0f43481026ea27bd96e3584ca0e92542f0dBob Halley### cannot link the various .o files properly. So after switching on
6211baaa66d7cac28a21b6426681e597ff04ca9eAndreas Gustafsson### Profiling, do an 'gmake clean; gmake'
6211baaa66d7cac28a21b6426681e597ff04ca9eAndreas Gustafsson### If you need Profiling comment out the following line
4e605108c6533c2ec6311ee7a466582392656dddAndreas Gustafsson#HC_PROF = -prof -auto-all
ea544b0511a66bc5f3700d56a72dcd808fdf22e8Brian WellingtonHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
a012d6dbfb100390efa7d0d4be64ada0210b09ddBrian Wellington### list of directories to run checks in
a012d6dbfb100390efa7d0d4be64ada0210b09ddBrian WellingtonTESTDIRS = Common CASL HasCASL Haskell/Hatchet/examples ToHaskell/test
7ae7d499f353549162ddcf6fed957ea21e4fa52bMark Andrews####################################################################
c8d185ad5827bf2cf9982075e3336f680759a260Andreas Gustafsson## sources for hetcats (semi - manually produced with a perl script)
22457624d3e63e7cd255b4083cb435c16caea26dBob Halleyobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
f765672e93eb863ae86571b4a46c9d0b33264976Mark Andrewsdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
91425b5e7204b05165e2c5b244f3dad502f9627dBrian Wellington Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
91425b5e7204b05165e2c5b244f3dad502f9627dBrian Wellingtongenrule_header_files = $(wildcard ATC/*.header.hs)
b18a5b6730dcb062cf7f47c6b3cb909030b58f36Brian Wellingtongenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs \
e880677f633f726b7df11ba3e59d4406e22256aaMark Andrews Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs \
7e361074bc8a2df7a0891a7040eea02ca3a5e286Andreas Gustafsson Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
328b080b4af258fdd4d3a2ea1558b48706bd8116Andreas Gustafsson CASL/Morphism.hs CASL/Sign.hs CASL/AS_Basic_CASL.der.hs \
328b080b4af258fdd4d3a2ea1558b48706bd8116Andreas Gustafsson HasCASL/As.hs HasCASL/Le.hs HasCASL/Morphism.hs \
d6b3d06db7ce3b9229dc30cc0e3a72ba2603da28Bob Halley Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
8e68489885e744ab48907414b4199c36858c27ddMark Andrewsgendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs \
c17c59662f0969a5e52e8b7529cbde1a7c746095Andreas Gustafsson CASL/ATC_CASL.hs Haskell/ATC_Haskell.hs \
c17c59662f0969a5e52e8b7529cbde1a7c746095Andreas Gustafsson HasCASL/ATC_HasCASL.hs CspCASL/ATC_CspCASL.hs \
c17c59662f0969a5e52e8b7529cbde1a7c746095Andreas Gustafsson Modal/ATC_Modal.hs CoCASL/ATC_CoCASL.hs ATC/IsaSign.hs
d8d95c7d2eae28c5adbde097e88efa115bae6f35Andreas Gustafssongenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
651421a5db8a9edf39c76fd8cf859409eb8c373bAndreas Gustafssoninline_axiom_files = Comorphisms/CASL2PCFOL.hs
651421a5db8a9edf39c76fd8cf859409eb8c373bAndreas Gustafssongen_inline_axiom_files = $(patsubst %.hs,%.inline.hs,$(inline_axiom_files))
7427490a67b9547242b57c255254f7e146127c48Bob Halley# this variable holds the modules that should be documented
7427490a67b9547242b57c255254f7e146127c48Bob Halley# the imported parsec library is not included!
aac319b506beb2e9a77ef124ee95b18870194b05Mark Andrewsdoc_sources = $(filter-out ./Isabelle/IsaSign.hs ,$(sources))
dfa0badebe5a8260281228d94dbe28e4314a9df6Andreas Gustafsson####################################################################
dfa0badebe5a8260281228d94dbe28e4314a9df6Andreas Gustafsson.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg \
2d0627005d48b7657fa11792c123466b4f974b61Mark Andrews.SECONDARY : %.hs %.d $(generated_rule_files) $(gen_inline_axiom_files)
94baac869a70b529a24ff23d8dc899faa5d4fdc4Brian Wellington $(HC) --make -o $@ hets.hs $(HC_OPTS) 2>&1 | tee hetcats-make
702a69f04a89422968ef8fc6fc271fac058e03efBrian Wellington $(HC) --make -O -o hets hets.hs $(HC_OPTS) -w 2>&1 | tee hetcats-make
c27148868266dd718b6677c794b3e6dca53c3bdcAndreas Gustafsson ghc --make -package-conf /home/luettich/ghc-pkg/package.conf -package WASH-CGI GUI/hets_cgi.hs -o hets.cgi
c27148868266dd718b6677c794b3e6dca53c3bdcAndreas Gustafssonhetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files) $(inline_axiom_files)
f8a44ed40032e034883019ac556f3bb732491a32Mark Andrews $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
f1007e99b7db3f4e65663d348530f078adb48ccbMark Andrews###############################
07d6480b684d3745e645f35a8b95dae9bda982a3Mark Andrews### TAGS files for (x)emacs
07d6480b684d3745e645f35a8b95dae9bda982a3Mark Andrews# load them with "M-x" "visit-tags-table" from
634784cb66a1c9ddee0c448f71580f024c8fe40bAndreas Gustafsson# use "M-." to search for a tag
ea6709ec8a66e3ffef9c9466613df499567c57f8Brian Wellington# !!Beware this is somewhat instable, because it uses an absolute path!!
ea6709ec8a66e3ffef9c9466613df499567c57f8Brian Wellington /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
634784cb66a1c9ddee0c448f71580f024c8fe40bAndreas Gustafsson $(sources); mv TAGS $@; mv tags hetcats.tags
634784cb66a1c9ddee0c448f71580f024c8fe40bAndreas Gustafsson###############################
634784cb66a1c9ddee0c448f71580f024c8fe40bAndreas Gustafsson### count lines of code
634784cb66a1c9ddee0c448f71580f024c8fe40bAndreas Gustafsson###############################
ce1269825c9d9c4bca42ae9750a7a2fd93a45557Mark Andrews### Documentation via haddock
e8af4e152413190e5553c2fb3074a1cc689c6cefAndreas Gustafsson# index for prelude is missing
131d5feb05fce60143bc17dab73df20753d9301fBrian Wellington -t 'hets -- a heterogenous Specification (CASL) tool set'
49576ae7a481415d5e815ff59b71c76203259619Andreas Gustafsson $(PERL) utils/post_process_docs.pl docs \
49576ae7a481415d5e815ff59b71c76203259619Andreas Gustafsson 'Common.Lib.Map.html:Common.Lib._Map.html'
1ec527b71267747cc3ae4d9849aa4f6362c78ea9Brian Wellington###############################
1ec527b71267747cc3ae4d9849aa4f6362c78ea9Brian Wellington### release management
703e1c0bb66f3cd3d300358ca0c1fdf3cb5fb1c5Brian WellingtonderivedSources: $(drifted_files) $(happy_files) hetcats/Version.hs $(inline_axiom_files)
bfd14616fa53e2572e7492a21467fad239deeae7Andreas Gustafsson (cd utils/DrIFT-src; $(HC) --make DrIFT.hs -o ../DrIFT && \
01b8865b1462ba219c90cf6c00f1bf0fdf780d9bBrian Wellington $(HC) --make '-i../..:../DrIFT-src' -package text GenerateRules.hs -o ../genRules && \
fb0663dbdd4811c6062fe602b511227be66aec56Mark Andrews $(HC) --make utils/InlineAxioms/InlineAxioms.hs \
6d3e8dffb447b9a961360f7f4fd77b0bdb81de76Andreas Gustafsson cvs -d :pserver:cvsread@cvs-agbkb.informatik.uni-bremen.de:/repository co HetCATS
6d3e8dffb447b9a961360f7f4fd77b0bdb81de76Andreas Gustafsson (cd HetCATS; $(MAKE) derivedSources; ./clean.sh; \
b65fc651b8aaab5d0fb9b8f6ef583d699d14a113Mark Andrews find . -name CVS -o -name \*.o -o -name \*.hi | xargs $(RM) -r; \
6d3e8dffb447b9a961360f7f4fd77b0bdb81de76Andreas Gustafsson $(RM) clean.*; mv Makefile Makefile.orig; \
6d3e8dffb447b9a961360f7f4fd77b0bdb81de76Andreas Gustafsson cp -p hets $(INSTALLDIR)/versions/hets-`cat version_nr`
a51f77a70bba62f227fb15fe72ecf959893e3f0fMark Andrews ln -s versions/hets-`cat version_nr` hets; $(RM) version_nr)
f7321615eaaf63461bd682513d2873d97ae31771Mark Andrews#############################
ff7f1dc0393cfc8a033be7e94aa56cd57c97d174Andreas Gustafsson### ATC DrIFT-rule generation
7dec36c225ad044a6546a4e232888f3412c030a8Brian WellingtongenRules: $(generated_rule_files) utils/genRules
ff7f1dc0393cfc8a033be7e94aa56cd57c97d174Andreas Gustafsson$(generated_rule_files): $(genrule_files) utils/genRules #$(genrule_header_files)
ff7f1dc0393cfc8a033be7e94aa56cd57c97d174Andreas Gustafsson $(foreach file,$(atc_files),$(gen_atc_files))
ff7f1dc0393cfc8a033be7e94aa56cd57c97d174Andreas Gustafsson utils/genRules -r $(rule) -o CASL $(casl_files)
725fec8d79ff36402b0f90a7a05aafa7964e387fBrian Wellington utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs \
9b0c4bf7003db929fe00a345fc96fb97677d29e0Brian Wellington utils/genRules -r $(rule) -o Modal $(modal_files)
19c7cce8555ccc0c95455a0c35dedd017d420d05Mark Andrews utils/genRules -r $(rule) -o CoCASL $(cocasl_files)
19c7cce8555ccc0c95455a0c35dedd017d420d05Mark Andrews utils/genRules -r $(rule) -o CspCASL $(cspcasl_files)
576f85e5fdb8805307f318db79dfc0d19e390d1aAndreas Gustafsson utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs \
0c70ab306505d89983186e9f8bb8647de55b5d04Mark Andrewsgen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
0c70ab306505d89983186e9f8bb8647de55b5d04Mark Andrews utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
32e64787d9bd84a012ddac506f88fbc677b49377Brian Wellington utils/genRules -r $(rule) -o ATC $(file); \
fa5a42fbad42f4e033376d5d4624e29d018d97b7Brian Wellingtonatc_files := $(filter-out CASL/% HasCASL/% Modal/% CoCASL/% CspCASL/% Haskell/% ,$(genrule_files))
fa5a42fbad42f4e033376d5d4624e29d018d97b7Brian Wellingtoncasl_files := $(filter CASL/% ,$(genrule_files))
fa5a42fbad42f4e033376d5d4624e29d018d97b7Brian Wellingtonhascasl_files := $(filter HasCASL/% ,$(genrule_files))
fa5a42fbad42f4e033376d5d4624e29d018d97b7Brian Wellingtonmodal_files := $(filter Modal/% ,$(genrule_files))
523dd6a979865b8b1b8f1ecc81e5ce47a168c63fBrian Wellingtoncocasl_files := $(filter CoCASL/% ,$(genrule_files))
523dd6a979865b8b1b8f1ecc81e5ce47a168c63fBrian Wellingtoncspcasl_files := $(filter CspCASL/% ,$(genrule_files))
523dd6a979865b8b1b8f1ecc81e5ce47a168c63fBrian Wellingtonhaskell_files := $(filter Haskell/%,$(genrule_files))
d119051ef75d5a88d28c13fb0a7c6d6757a4e9b5Brian Wellington###############
3f8ad70264645ebd6a2a8bc7e923271eb5bf8416Brian Wellington### removes *.hi and *.o in all include directories
9b0e404e5fc71a2bd4fba8a66296477f815af7d5Brian Wellington for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
fff07c1022643da7274d4ba1b086c9c218762dc9Brian Wellington### remove binaries
a2a7eaf89cd68acdb16177bb05701107ceab52b9Brian Wellington### additonally removes *.d (dependency files) in every include directory
a2a7eaf89cd68acdb16177bb05701107ceab52b9Brian Wellington### also delete *.d.bak (dependency file backups)
54ce9b2e29aafe1cb5f898a0983fb66e450e9559Brian Wellington for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
54ce9b2e29aafe1cb5f898a0983fb66e450e9559Brian Wellington### remove files also in own libraries
7357590beef5f671cfdd4ec4304e5210adfb0d8aBrian Wellington for p in $(subst :, ,$(COMMONLIB_PATH)) . ; do \
8dd5237a27e2e824d18f835dc711573aeb23a173Mark Andrews### additionally removes the files that define the sources-variable
bbd3d20d0843165a74698166a3180897fd019e18Andreas Gustafsson### additionally removes files not in CVS tree
f7e900edbc368275aa7cec7ebec0986e45aeadd7Mark Andrews# $(RM) $(happy_files)
ec772e873bd7f24418049b5b1b5d7c44ff781356Brian Wellington####################################################################
ec772e873bd7f24418049b5b1b5d7c44ff781356Brian Wellington### test targets
ec772e873bd7f24418049b5b1b5d7c44ff781356Brian Wellington####################################################################
abfbf760f3bc2a6744b0249a31ca5153234b49e8Brian Wellington### a parser to test annotation parser and Id parsers
75768d5fa2c6c5c441b849ca4efa649a7c2a9e88Bob HalleyCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
75768d5fa2c6c5c441b849ca4efa649a7c2a9e88Bob Halley### interactive
4e7942dc7612acb71b111a5e8d919960f5a9efc5Mark Andrews### christian's target
fa280ff02ad0c29616a0c3a22ef02cbb3f6db7efDavid Lawrence### CASL parser
22dbaf9ad8065127fd93eff0f239fd9c548d18b6Andreas GustafssonCASL/capa: CASL/capa.hs Common/*.hs CASL/*.hs
184867e88b5a30bbc29f17edbc7b50a6c8a944e7David Lawrence### HasCASL parser
fa280ff02ad0c29616a0c3a22ef02cbb3f6db7efDavid LawrenceHasCASL/hacapa: HasCASL/hacapa.hs Common/*.hs HasCASL/*.hs
f4e4111795ceb13066d09c38723afacb04e33ad4Mark Andrews### Haskell parser
253ab81bf2760d3d7f68512b43710afc02d788daMark AndrewsHaskell/hapa: Haskell/hapa.hs Haskell/Hatchet/*.hs $(happy_files)
9f28451bca8377ef6c9ea3b0a49bf342c9fa6800Mark Andrews### HetCASL parser
ef9f9001fca9445ef315b1e76a66fc84fef6fdc6Andreas Gustafsson### HetCASL parser
9b2a2a9016980fbed6b2025d365a8ae99897608cDavid Lawrence### ATC test system
125a916d1a0c01f139ced5736145703df28d07cfDavid Lawrenceatctest2: Common/ATerm/ATermLibTest.hs Common/SimpPretty.hs Common/ATerm/*.hs Common/Lib/*.hs
2115bc7d6433c92499d8e4f67e1c1dfa42ecd6f0David Lawrence### ATerm.Lib test system
2115bc7d6433c92499d8e4f67e1c1dfa42ecd6f0David Lawrenceatermlibtest: Common/ATerm/ATermLibTest.hs Common/ATerm/*.hs Common/SimpPretty.hs
f8da2d95835c5216570a45e9000f740321503ae3David Lawrence### HetCASL with dev graph
f8da2d95835c5216570a45e9000f740321503ae3David Lawrence $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
6094a7774954463e312f7266c8d4d3f26aa07d4aAndreas Gustafsson### run tests in other directories
8dc3d2006f679d0a291f7a20612c37e2a7146096Brian Wellington for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
a110543bb4d2e53caa40f83c2b45786a1efe63efAndreas Gustafsson####################################################################
a110543bb4d2e53caa40f83c2b45786a1efe63efAndreas Gustafsson## Preparing the version of HetCATS
ef9f9001fca9445ef315b1e76a66fc84fef6fdc6Andreas Gustafssonhetcats/Version.hs: hetcats/Version.in version_nr
bd5f2ac1880f5f2e96b291378c3dff296fc011f1Mark Andrews $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
24c5978e0b32137305c2bef2c6e116ee7680a610Andreas Gustafsson## two hardcoded dependencies for a correct generation of Version.hs
f0f61db621eed0c453e31bb85f6803c550e19a6bAndreas Gustafssonhetcats/Options.hs hetcats/WriteFn.hs hetcats/ReadFn.hs: hetcats/Version.hs
63612a0fe1abbeb8ab6d727a4cfe46831c481387Brian Wellington####################################################################
63612a0fe1abbeb8ab6d727a4cfe46831c481387Brian Wellington## rules for DrIFT
7d33e8996948523e0180bc7e28a93d534d878dccAndreas Gustafsson## rules for inlineAxioms
732f883c12f171186d7f3331ebdf5d16044b14b0Brian Wellington## compiling rules for object and interface files
bb1cf189bb9fd9059cf13b785d15b0e50c0be8fbAndreas Gustafsson## compiling rules for dependencies
d46bf932ed5e1f58a4c424ce1ce7525963354482Brian Wellington####################################################################
64a84169d7eed05486b10be90afea58f4af146f9Brian Wellington## Setting a global search path (for dependency files)
f19771c55d7e7d5bb38160e710185e6e61749d16Andreas Gustafsson## include every .d file in INCLUDE_PATH
f1d427043e94371cdf1f21b3cbd65917adbcff25Andreas Gustafssonsources_hetcats.mk: hetcats-make hetcats/Version.hs hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)