Makefile revision c5e10ba19c9854112e5d29f491759e8e89f83652
c80e152862cc3e3207dc837fde7116bd4c0e4b9dTinderbox User# Author: (c) Klaus L�ttich, Christian Maeder, Uni Bremen 2002-2004
d77cb075aae5595e460e3299bfc1e8ea5d42b560Evan Hunt# This Makefile will compile the new hetcats system and provides also
d77cb075aae5595e460e3299bfc1e8ea5d42b560Evan Hunt# targets for test programs during implementation phases.
30ca20f720ad0887772a79e7abb25b4fa0e4b5b0Mark Andrews# !!! Note: This makefile is written for GNU make !!!
30ca20f720ad0887772a79e7abb25b4fa0e4b5b0Mark Andrews# (gmake on solaris ; make on linux)
30ca20f720ad0887772a79e7abb25b4fa0e4b5b0Mark Andrews####################################################################
701a93f5a592e4652343e049aa495d409c3ee133Mark Andrews## Some varibles, which control the compilation
701a93f5a592e4652343e049aa495d409c3ee133Mark AndrewsCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
002f1373374a0b72fc0329baa682917929bef168Tony FinchCLEAN_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
002f1373374a0b72fc0329baa682917929bef168Tony Finch## set ghc imports properly for your system
8f1ed05dc0aae7ae6c3da6ec6d405df61257a61eMark AndrewsLINUX_IMPORTS = $(wildcard /home/linux-bkb/ghc/ghc-latest/lib/ghc-*/imports)
8f1ed05dc0aae7ae6c3da6ec6d405df61257a61eMark AndrewsDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:${LINUX_IMPORTS}:${GHC_IMPORTS}'
8f1ed05dc0aae7ae6c3da6ec6d405df61257a61eMark Andrews# override on commandline for other architectures
8f1ed05dc0aae7ae6c3da6ec6d405df61257a61eMark AndrewsINSTALLDIR = /home/www/agbkb/forschung/formal_methods/CoFI/hets/`utils/sysname.sh`
73cf0ba4e82c6baef638ecc4e31321223f841d28Mark AndrewsGENERATERULES_deps = utils/GenerateRules/*hs $(DRIFT_deps)
31c7ab4fb3f7710af87dc9c3d64c5daf9a3dea35Mark Andrews# -fglasgow-exts comes in via ../uni/uni-package.conf
31c7ab4fb3f7710af87dc9c3d64c5daf9a3dea35Mark AndrewsHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci \
635e4351b04fd61ca6d853bdac6268c090b55129Mark Andrews### Profiling and Warnings (only for debugging)
635e4351b04fd61ca6d853bdac6268c090b55129Mark Andrews### Attention every module must be compiled with profiling or the linker
fc04365d2f83f197c8a54545dd9cd4ce6a209940Mark Andrews### cannot link the various .o files properly. So after switching on
fc04365d2f83f197c8a54545dd9cd4ce6a209940Mark Andrews### Profiling, do an 'gmake clean; gmake'
7cbac360bf98c0a52b2d6866ad887616c32d4d3aMark Andrews### If you need Profiling comment out the following line
7cbac360bf98c0a52b2d6866ad887616c32d4d3aMark Andrews#HC_PROF = -prof -auto-all
1cf118a656f5fd210787908b845362077fc507f8Evan Hunt### list of directories to run checks in
1cf118a656f5fd210787908b845362077fc507f8Evan HuntTESTDIRS = Common CASL HasCASL Haskell/Hatchet/examples ToHaskell/test
6fb3db01acad7f5c1f4e23789fb0f2ce56cc07deMukund Sivaraman####################################################################
6fb3db01acad7f5c1f4e23789fb0f2ce56cc07deMukund Sivaraman## sources for hetcats (semi - manually produced with a perl script)
7ff28f5befbee76048a23e504dcd3f9a44ce6209Evan Huntobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
7ff28f5befbee76048a23e504dcd3f9a44ce6209Evan Huntdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
7ff28f5befbee76048a23e504dcd3f9a44ce6209Evan Hunt Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
7ff28f5befbee76048a23e504dcd3f9a44ce6209Evan Huntgenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs \
cad79077bd5b2616bc4a7a6b3cbc0953bef8917fMark Andrews Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs \
cad79077bd5b2616bc4a7a6b3cbc0953bef8917fMark Andrews Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
adfe58e8e5cd1890585e92b67f1fd01989a1fa7dMark Andrews CASL/Morphism.hs CASL/Sign.hs CASL/AS_Basic_CASL.der.hs \
adfe58e8e5cd1890585e92b67f1fd01989a1fa7dMark Andrews HasCASL/As.hs HasCASL/Le.hs HasCASL/Morphism.hs \
c0a2210466dec0cc81ebf2ffbe21693b57b9c29cMark Andrews Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
534057c9f91a3eb6e0541f3526459c716239b337Mark Andrewsgendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs \
0f14b041328c062b1fa391887376388dfc8b2fe5Mark Andrews HasCASL/ATC_HasCASL.hs CspCASL/ATC_CspCASL.hs \
f7f4730e563a2749629fe7fef4cd9513cd2bfab7Mark Andrews Modal/ATC_Modal.hs CoCASL/ATC_CoCASL.hs ATC/IsaSign.hs
1848d38f441ebf70ab21f6151bc3487a92d25b63Mark Andrewsgenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
2d82ed9456e72dc4373bea19d63411afe1c48962Mark Andrewsgen_inline_axiom_files = $(patsubst %.hs,%.inline.hs,$(inline_axiom_files))
0d6328ce5f6b799f8e7c6cbbb3b965cf29bfb7baMark Andrews# this variable holds the modules that should be documented
0d6328ce5f6b799f8e7c6cbbb3b965cf29bfb7baMark Andrews# the imported parsec library is not included!
0d6328ce5f6b799f8e7c6cbbb3b965cf29bfb7baMark Andrewsdoc_sources = $(filter-out ./Isabelle/IsaSign.hs ,$(sources))
677f507de7c546c187c1505c48bc7b440545485cMark Andrews####################################################################
124cc0660c7eff8021c2422fb47441e9ca08b3f9Tinderbox User.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg \
677f507de7c546c187c1505c48bc7b440545485cMark Andrews.SECONDARY : %.hs %.d $(generated_rule_files) $(gen_inline_axiom_files)
bf459d24a117ae2c54c37016430b41cd6d73491cMark Andrews $(HC) --make -o $@ hets.hs $(HC_OPTS) 2>&1 | tee hetcats-make
f53e0bda467d96dfeeba1b4da30c37b37766bb75Evan Hunt $(HC) --make -O -o hets hets.hs $(HC_OPTS) -w 2>&1 | tee hetcats-make
64d7fa3ec4785b390665860aa6bdae304b3c1d24Mark Andrewshetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files) $(inline_axiom_files)
64d7fa3ec4785b390665860aa6bdae304b3c1d24Mark Andrews $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
64d7fa3ec4785b390665860aa6bdae304b3c1d24Mark Andrews###############################
75505befa93c993aa5d2df24a2b64eac0c34cbffMark Andrews### TAGS files for (x)emacs
75505befa93c993aa5d2df24a2b64eac0c34cbffMark Andrews# load them with "M-x" "visit-tags-table" from
a38f07c73790170842e4523b4a474d01ca0dede1Michał Kępień# use "M-." to search for a tag
a38f07c73790170842e4523b4a474d01ca0dede1Michał Kępień# !!Beware this is somewhat instable, because it uses an absolute path!!
39d5523a8afc73cbdb4fa426de2ce071267a5d6fMark Andrews /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
39d5523a8afc73cbdb4fa426de2ce071267a5d6fMark Andrews###############################
1f4a3c7088594d1b64cd734eb69e1fd023fde8bfMichał Kępień### Documentation via haddock
91827e6fd3851a5fe129ef5409ff45833ca01a0eMark Andrews# index for prelude is missing
35aae5884f410180706a89a9715bf9a85eeeb4b7Michał Kępień -t 'hets -- a heterogenous Specification (CASL) tool set'
86d2f9abc8493321aacb0d540485de4d562fb734Mark Andrews###############################
86d2f9abc8493321aacb0d540485de4d562fb734Mark Andrews### release management
86d2f9abc8493321aacb0d540485de4d562fb734Mark AndrewsderivedSources: $(drifted_files) $(happy_files) hetcats/Version.hs $(inline_axiom_files)
c7e57ce1b0bca9bc7da14bec485f7a7e3e4c761fMichał Kępień (cd utils/DrIFT-src; $(HC) --make DrIFT.hs -o ../DrIFT && \
3ed16e796dba90c96933c8a8a3f5b9404d8d3e61Mark Andrews $(HC) --make '-i../..:../DrIFT-src' -package text GenerateRules.hs -o ../genRules && \
70e041bea19b6ad9522b89c2299ad315a2deaafdMark Andrews $(HC) --make utils/InlineAxioms/InlineAxioms.hs \
eeb919b6f572e033d97cf001e4cd44aaff54e5dcMichał Kępień cvs -d :pserver:cvsread@cvs-agbkb.informatik.uni-bremen.de:/repository co HetCATS
a55438eda32ecebf43ead45b216662b7923a465fMark Andrews (cd HetCATS; $(MAKE) derivedSources; ./clean.sh; \
a55438eda32ecebf43ead45b216662b7923a465fMark Andrews find . -name CVS -o -name \*.o -o -name \*.hi | xargs $(RM) -r; \
f8362536c647625e602c8450a778a2b7ba90c9f4Mark Andrews cp -p hets $(INSTALLDIR)/versions/hets-`cat version_nr`
24231e53a5c3079431f84dcddfee1e761fec7329Mark Andrews ln -s versions/hets-`cat version_nr` hets; $(RM) version_nr)
4b669b69bae7dedda2faa09a7ade247499c1d49cMichał Kępień#############################
4b669b69bae7dedda2faa09a7ade247499c1d49cMichał Kępień### ATC DrIFT-rule generation
eb11b39981689e4a20fbe95e533577eacab992b4Mukund SivaramangenRules: $(generated_rule_files) utils/genRules
eb11b39981689e4a20fbe95e533577eacab992b4Mukund Sivaraman$(generated_rule_files): $(genrule_files) utils/genRules #$(genrule_header_files)
e7c0f978425f45731b08be1363f20626b0344f23Evan Hunt utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs \
01967d183990e44752fe61f193dab9c04c3afd9cEvan Hunt utils/genRules -r $(rule) -o CoCASL $(cocasl_files)
575e9d9e4b6beaae688f107814a320b91243a4b2Mark Andrews utils/genRules -r $(rule) -o CspCASL $(cspcasl_files)
575e9d9e4b6beaae688f107814a320b91243a4b2Mark Andrews utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs \
7c442d7fe06bc95432af7513764e5cc85e133648Evan Huntgen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
7c442d7fe06bc95432af7513764e5cc85e133648Evan Hunt utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
ba93bc80a7bce5ba07b2f98e68f0f57402f2459cMark Andrewsatc_files := $(filter-out CASL/% HasCASL/% Modal/% CoCASL/% CspCASL/% Haskell/% ,$(genrule_files))
ba93bc80a7bce5ba07b2f98e68f0f57402f2459cMark Andrewscasl_files := $(filter CASL/% ,$(genrule_files))
8ed107eab48687887d45a1ceb18b712bc7209dbaTinderbox Userhascasl_files := $(filter HasCASL/% ,$(genrule_files))
ba93bc80a7bce5ba07b2f98e68f0f57402f2459cMark Andrewsmodal_files := $(filter Modal/% ,$(genrule_files))
5f103158280fb2e814db305f917aa42040221623Mark Andrewscocasl_files := $(filter CoCASL/% ,$(genrule_files))
5f103158280fb2e814db305f917aa42040221623Mark Andrewscspcasl_files := $(filter CspCASL/% ,$(genrule_files))
5f103158280fb2e814db305f917aa42040221623Mark Andrewshaskell_files := $(filter Haskell/%,$(genrule_files))
b7b76d6b855cd4c1152c26d34fb61af05f965c5eEvan Hunt###############
764e2f3413ca89d09abffb3eb228c8c820bf08b8Mark Andrews### removes *.hi and *.o in all include directories
a06198688faca5c7bc1a35ec0ec18bc68c07691cEvan Hunt### remove binaries
6216df5ccded056abd5db4abac4e5cbd78c73f45Evan Hunt### additonally removes *.d (dependency files) in every include directory
6216df5ccded056abd5db4abac4e5cbd78c73f45Evan Hunt### also delete *.d.bak (dependency file backups)
56e30ebae6fdb0bdf94419caff3a43fb2d16c5dfEvan Hunt### remove files also in own libraries
0612274565d80e0ad87a19920e561cce5bddb05bEvan Hunt### additionally removes the files that define the sources-variable
f592d2f76cac7115038124c510d2ba3050334b4dEvan Hunt### additionally removes files not in CVS tree
4ee1fbe056e812e661b856b4b448296331a40249Michał Kępień# $(RM) $(happy_files)
1c8aa38b53a0494fc7d4c3439594d1913987f264Mark Andrews####################################################################
1c8aa38b53a0494fc7d4c3439594d1913987f264Mark Andrews### test targets
1c8aa38b53a0494fc7d4c3439594d1913987f264Mark Andrews####################################################################
1c8aa38b53a0494fc7d4c3439594d1913987f264Mark Andrews### a parser to test annotation parser and Id parsers
43d53a4e4b2f0f9482485a8ab764137a9898ab32Evan HuntCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
b1ce9b3d54cd072adb5275f08a9afac31cfb4c1cMichał Kępień### interactive
b1ce9b3d54cd072adb5275f08a9afac31cfb4c1cMichał Kępień### christian's target
b1ce9b3d54cd072adb5275f08a9afac31cfb4c1cMichał Kępień### CASL parser
24ffba17f06746257d5c009ca8ebfe6043966d20Evan Hunt### HasCASL parser
24ffba17f06746257d5c009ca8ebfe6043966d20Evan HuntHasCASL/hacapa: HasCASL/hacapa.hs Common/*.hs HasCASL/*.hs
d5bd8bb71a8970d4ebc4701b3e9ec3efef4954b7Evan Hunt### Haskell parser
d5bd8bb71a8970d4ebc4701b3e9ec3efef4954b7Evan HuntHaskell/hapa: Haskell/hapa.hs Haskell/Hatchet/*.hs $(happy_files)
ad1317338af79edad878c9c3e4361798503310baMark Andrews### HetCASL parser
1c81aef28ddf0905344cc58dd3ea0ca539ef1414Evan Hunt### HetCASL parser
da1f585afa8c103508c759142d6aed4edae6936eMark Andrews### ATC test system
d71d41341d36ddfd347daab982f0cb85d3dd7c4eMark Andrewsatctest2: Common/ATerm/ATermLibTest.hs Common/SimpPretty.hs Common/ATerm/*.hs Common/Lib/*.hs
aae171c5421ac2ba665ff122e004e753e62bac45Mark Andrews### ATerm.Lib test system
aae171c5421ac2ba665ff122e004e753e62bac45Mark Andrewsatermlibtest: Common/ATerm/ATermLibTest.hs Common/ATerm/*.hs Common/SimpPretty.hs
5a8f2f0cd67a5dd93d95e6a0935d4805721c3a0bMichał Kępień### HetCASL with dev graph
5a8f2f0cd67a5dd93d95e6a0935d4805721c3a0bMichał Kępień $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
36ec0d374836d070ba05b495e6f0a27f60e94476Evan Hunt### run tests in other directories
36ec0d374836d070ba05b495e6f0a27f60e94476Evan Hunt for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
f896f7c8be894a737998b97008a1389e72972fcfMukund Sivaraman####################################################################
e446fd29b9c6c4a7b6b5bb0aee3932578c346718Mukund Sivaraman## Preparing the version of HetCATS
027a4a5b5d806290146ce4989d34be2c8a664e8cMukund Sivaramanhetcats/Version.hs: hetcats/Version.in version_nr
027a4a5b5d806290146ce4989d34be2c8a664e8cMukund Sivaraman $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
b5252fcde512405a68dd4becfe683d9763bd0feaMukund Sivaraman## two hardcoded dependencies for a correct generation of Version.hs
b5252fcde512405a68dd4becfe683d9763bd0feaMukund Sivaramanhetcats/Options.hs hetcats/WriteFn.hs hetcats/ReadFn.hs: hetcats/Version.hs
b5252fcde512405a68dd4becfe683d9763bd0feaMukund Sivaraman####################################################################
99056063905a9273ec59cf477ae747e0490182b7Mukund Sivaraman## rules for DrIFT
b351a5864727a390e06d787e522b141ca760590fMichał Kępień## rules for inlineAxioms
b351a5864727a390e06d787e522b141ca760590fMichał Kępień## compiling rules for object and interface files
7b4bfc0201ffbcd64a336b99c945891808c44af0Mark Andrews## compiling rules for dependencies
c76e8412f4ff4f5945157410312df2a8950f942dMark Andrews####################################################################
a2a0100e0fc73c0af67a7c9e3524816954448dc6Evan Hunt## Setting a global search path (for dependency files)
e5f5675b1da287ed40aeff081ad2af86090e8d17Evan Hunt## include every .d file in INCLUDE_PATH
29f0ced781d745591fd058e530a68a281cd7a510Evan Huntsources_hetcats.mk: hetcats-make hetcats/Version.hs hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)