Makefile revision 2b770da5668af0faade8133dc6377a0fcaf44134
2a6c49cfaef5979a5a06098f3ce987cd76769409manoj# Author: (c) Klaus L�ttich, Christian Maeder, Uni Bremen 2002-2004
2a6c49cfaef5979a5a06098f3ce987cd76769409manoj# Year: 2004
2900ab946a2d76b73a14cebfe2985d253f01c967stoddard# This Makefile will compile the new hetcats system and provides also
a548c09e6a8ca1b059d0e93b5256c6ccb2b3c3cdrbb# targets for test programs during implementation phases.
a548c09e6a8ca1b059d0e93b5256c6ccb2b3c3cdrbb# !!! Note: This makefile is written for GNU make !!!
b876b7bcf0ce3d232da723246d709e8dbbfe8762rbb# (gmake on solaris ; make on linux)
35330e0d79ceb8027223bbb8330a381b1f989d6etrawick####################################################################
6f6f4a4bca281779d196acbdd5c017bb90858305trawick## Some varibles, which control the compilation
2deb319e6b3de239f45c16a3e9e836d44f1f7108rbbCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
bd929c73ef04789b7183b840d8db6e01d03a4d86rbbCLEAN_PATH = utils/DrIFT-src:utils/GenerateRules:Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Modal:CspCASL:ATC:ToHaskell:Proofs:Comorphisms:Isabelle:$(INCLUDE_PATH):Haskell/Hatchet
70f6f32765cfaadd6da8de6f0fea97ddd72d8fadmanoj## set ghc imports properly for your system
2a6c49cfaef5979a5a06098f3ce987cd76769409manojLINUX_IMPORTS = $(wildcard /home/linux-bkb/ghc/ghc-latest/lib/ghc-*/imports)
2a4b7a53f3573605d4f5686f03a67c37425dc22bgregamesDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:${LINUX_IMPORTS}:${GHC_IMPORTS}'
5ac928b7a71a12bc1a6b42194c47edbff1dcc02fgregamesGENERATERULES_deps = utils/GenerateRules/*hs $(DRIFT_deps)
f467b575e2698cfeb818b357b00b2a13873eb309trawick# -fglasgow-exts comes in via ../uni/uni-package.conf
f467b575e2698cfeb818b357b00b2a13873eb309trawickHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci \
f467b575e2698cfeb818b357b00b2a13873eb309trawick### Profiling and Warnings (only for debugging)
f467b575e2698cfeb818b357b00b2a13873eb309trawick### Attention every module must be compiled with profiling or the linker
f467b575e2698cfeb818b357b00b2a13873eb309trawick### cannot link the various .o files properly. So after switching on
f467b575e2698cfeb818b357b00b2a13873eb309trawick### Profiling, do an 'gmake clean; gmake'
f467b575e2698cfeb818b357b00b2a13873eb309trawick### If you need Profiling comment out the following line
f467b575e2698cfeb818b357b00b2a13873eb309trawick#HC_PROF = -prof -auto-all
f467b575e2698cfeb818b357b00b2a13873eb309trawick### list of directories to run checks in
f467b575e2698cfeb818b357b00b2a13873eb309trawickTESTDIRS = Common CASL HasCASL Haskell/Hatchet/examples
f467b575e2698cfeb818b357b00b2a13873eb309trawick####################################################################
f467b575e2698cfeb818b357b00b2a13873eb309trawick## sources for hetcats (semi - manually produced with a perl script)
776e1de1acb79f624ff097edb15a3b32c832ea21trawickdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
776e1de1acb79f624ff097edb15a3b32c832ea21trawick Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
bf9acc131271d18db51d30ace549d3c3b6a2b9fbrbbgenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs \
bf9acc131271d18db51d30ace549d3c3b6a2b9fbrbb Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs \
447c6ce3ff08073c44f6785d5256271fcb877512wrowe CASL/Morphism.hs CASL/Sign.hs CASL/AS_Basic_CASL.der.hs \
10b386767f6c87b45937244371cb751f0b454d16wrowe Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
75960f20f88dad6bc67892c711c429946063d133stoddardgendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs \
10b386767f6c87b45937244371cb751f0b454d16wrowegenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
10b386767f6c87b45937244371cb751f0b454d16wrowegen_inline_axiom_files = $(patsubst %.hs,%.inline.hs,$(inline_axiom_files))
f6a6245816cd866361da8c576b1f47c7a54b6610fanf# this variable holds the modules that should be documented
f6a6245816cd866361da8c576b1f47c7a54b6610fanf# the imported parsec library is not included!
97b758d0b174d7b7c5a1de1a583f5840ec3fc910trawickdoc_sources = $(filter-out ./Isabelle/IsaSign.hs ,$(sources))
79d5106a9b65b956d646f5daae4b94bc79e315b8trawick####################################################################
79d5106a9b65b956d646f5daae4b94bc79e315b8trawick.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg \
9eccc0a669a3e711629345b357c46acce5fefdb4gstein.SECONDARY : %.hs %.d $(generated_rule_files) $(gen_inline_axiom_files)
750fcd3495b59eff6d4844409ae1dfb46d026059gstein $(HC) --make -o $@ hets.hs $(HC_OPTS) 2>&1 | tee hetcats-make
e9cfc70fceb74521ba0814cdc88808c7d4d00c97gstein $(HC) --make -O -o hets hets.hs $(HC_OPTS) 2>&1 | tee hetcats-make
26ef89f716a43048630e73f527dd2f0ee84f72c2rbbhetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files) $(inline_axiom_files)
281da4c02cf40c663298ded7e4e5b913a8f8b814gstein $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
281da4c02cf40c663298ded7e4e5b913a8f8b814gstein###############################
ec75f189410513ab8f6e1173a9d9d277ebec9ce7gstein### TAGS files for (x)emacs
ec75f189410513ab8f6e1173a9d9d277ebec9ce7gstein# load them with "M-x" "visit-tags-table" from
ec75f189410513ab8f6e1173a9d9d277ebec9ce7gstein# use "M-." to search for a tag
ec75f189410513ab8f6e1173a9d9d277ebec9ce7gstein# !!Beware this is somewhat instable, because it uses an absolute path!!
ec75f189410513ab8f6e1173a9d9d277ebec9ce7gstein /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
7bce59d998f2e5ca1cb60038ef6c1d0817605d62stoddard###############################
7bce59d998f2e5ca1cb60038ef6c1d0817605d62stoddard### Documentation via haddock
7bce59d998f2e5ca1cb60038ef6c1d0817605d62stoddard# index for prelude is missing
7bce59d998f2e5ca1cb60038ef6c1d0817605d62stoddard -t 'hets -- a heterogenous Specification (CASL) tool set'
b08eb15d0f6fc054bc997b4ba52b2e3b1eda3a92stoddard###############################
b08eb15d0f6fc054bc997b4ba52b2e3b1eda3a92stoddard### release management
b08eb15d0f6fc054bc997b4ba52b2e3b1eda3a92stoddardderivedSources: $(drifted_files) $(happy_files) hetcats/Version.hs $(inline_axiom_files)
b08eb15d0f6fc054bc997b4ba52b2e3b1eda3a92stoddard (cd utils/DrIFT-src; $(HC) --make DrIFT.hs -o ../DrIFT && \
bebc7b9445f95339822c26bfd470349006f9ec40stoddard $(HC) --make '-i../..:../DrIFT-src' -package text GenerateRules.hs -o ../genRules && \
7bce59d998f2e5ca1cb60038ef6c1d0817605d62stoddard cvs -d :pserver:cvsread@cvs-agbkb.informatik.uni-bremen.de:/repository co HetCATS
19cbe4d7b7c931723e7249de6829bf965a1fee72stoddard find . -name CVS -o -name \*.o -o -name \*.hi | xargs $(RM) -r; \
93db592309ba9e5ab230f67611a2c74fece9cdb2marc $(RM) clean.*; $(RM) Makefile; mv ReleaseMakefile Makefile)
93db592309ba9e5ab230f67611a2c74fece9cdb2marc#############################
93db592309ba9e5ab230f67611a2c74fece9cdb2marc### ATC DrIFT-rule generation
90aa1045e25f8ae38b16905abafbb37c89553469jwoolley$(generated_rule_files): $(genrule_files) utils/genRules #$(genrule_header_files)
0b54edee18a0ec095640e1038ff6da7d35042b44rbb utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs \
b187d568e1507d75139ebc13ca945b38fc05d55cstoddard utils/genRules -r $(rule) -o CspCASL $(cspcasl_files)
b187d568e1507d75139ebc13ca945b38fc05d55cstoddard utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs \
8bed76428f56e5c643174a2d6807c3f18016af5cbjhgen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
10b386767f6c87b45937244371cb751f0b454d16wrowe utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
10b386767f6c87b45937244371cb751f0b454d16wroweatc_files := $(filter-out CASL/% HasCASL/% Modal/% CspCASL/% Haskell/% ,$(genrule_files))
75960f20f88dad6bc67892c711c429946063d133stoddardcspcasl_files := $(filter CspCASL/% ,$(genrule_files))
a5ed555df952c85bc1b179f5981e8a6c54ba16e6stoddardhaskell_files := $(filter Haskell/%,$(genrule_files))
0bff2f28ef945280c17099c142126178a78e1e54manoj###############
0bff2f28ef945280c17099c142126178a78e1e54manoj### clean up
0bff2f28ef945280c17099c142126178a78e1e54manoj### removes *.hi and *.o in all include directories
302dc1f7b3feee23a91ad8f3cf3cb2edd95a557bmanoj### remove binaries
79d5106a9b65b956d646f5daae4b94bc79e315b8trawick### additonally removes *.d (dependency files) in every include directory
79d5106a9b65b956d646f5daae4b94bc79e315b8trawick### also delete *.d.bak (dependency file backups)
6fa71a1bd8c61518b05f5798a7a1594c270e78afrbb### remove files also in own libraries
14cccaddba3a9263cf0d0ddc311e18f3e3dc9b0fgstein### additionally removes the files that define the sources-variable
823c303d33c9e637a83d82208bcbafaf5f532d7bgstein### additionally removes files not in CVS tree
531c23ff01a2489646f0a2029097013b328d935agstein# $(RM) $(happy_files)
531c23ff01a2489646f0a2029097013b328d935agstein####################################################################
531c23ff01a2489646f0a2029097013b328d935agstein### test targets
281da4c02cf40c663298ded7e4e5b913a8f8b814gstein####################################################################
333eac96e4fb7d6901cb75e6ca7bb22b2ccb84cetrawick### a parser to test annotation parser and Id parsers
2f728b2e8555fee1b7cc11e886488692f2575fbddougmCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### interactive
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### christian's target
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### CASL parser
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### HasCASL parser
28d1da9ca818f831ea491f110dafcc10f7f07050coarHasCASL/hacapa: HasCASL/hacapa.hs Common/*.hs HasCASL/*.hs
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### Haskell parser
64ad864fa0f4493eebb181e393b40a8a90beccb9coarHaskell/hapa: Haskell/hapa.hs Haskell/Hatchet/*.hs $(happy_files)
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### HetCASL parser
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### HetCASL parser
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### ATC test system
28d1da9ca818f831ea491f110dafcc10f7f07050coaratctest2: Common/ATerm/ATermLibTest.hs Common/SimpPretty.hs Common/ATerm/*.hs Common/Lib/*.hs
28d1da9ca818f831ea491f110dafcc10f7f07050coar### ATerm.Lib test system
64ad864fa0f4493eebb181e393b40a8a90beccb9coaratermlibtest: Common/ATerm/ATermLibTest.hs Common/ATerm/*.hs Common/SimpPretty.hs
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### HetCASL with dev graph
28d1da9ca818f831ea491f110dafcc10f7f07050coar $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
64ad864fa0f4493eebb181e393b40a8a90beccb9coar### run tests in other directories
64ad864fa0f4493eebb181e393b40a8a90beccb9coar####################################################################
28d1da9ca818f831ea491f110dafcc10f7f07050coar## Preparing the version of HetCATS
64ad864fa0f4493eebb181e393b40a8a90beccb9coar $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
28d1da9ca818f831ea491f110dafcc10f7f07050coar## two hardcoded dependencies for a correct generation of Version.hs
64ad864fa0f4493eebb181e393b40a8a90beccb9coarhetcats/Options.hs hetcats/WriteFn.hs hetcats/ReadFn.hs: hetcats/Version.hs
64ad864fa0f4493eebb181e393b40a8a90beccb9coar####################################################################
28d1da9ca818f831ea491f110dafcc10f7f07050coar## rules for DrIFT
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## rules for inlineAxioms
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## compiling rules for object and interface files
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## compiling rules for dependencies
64ad864fa0f4493eebb181e393b40a8a90beccb9coar####################################################################
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## Setting a global search path (for dependency files)
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## include every .d file in INCLUDE_PATH
64ad864fa0f4493eebb181e393b40a8a90beccb9coarsources_hetcats.mk: hetcats-make hetcats/Version.hs hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)