Makefile revision 25cc5fbba63f84b47e389af749f55abbbde71c8c
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart Poettering# Author: (c) Klaus L�ttich, Christian Maeder, Uni Bremen 2002-2004
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart Poettering# This Makefile will compile the new hetcats system and provides also
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart Poettering# targets for test programs during implementation phases.
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart Poettering# !!! Note: This makefile is written for GNU make !!!
9fa2f41077b2d76685058836f602f38715b5eef3Kay Sievers# (gmake on solaris ; make on linux)
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart Poettering####################################################################
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart Poettering## Some varibles, which control the compilation
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart PoetteringCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart PoetteringCLEAN_PATH = Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Haskell/Language:Modal:CspCASL:ATC:ToHaskell:Proofs:Comorphisms:$(INCLUDE_PATH):Haskell/Hatchet
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart Poettering## set ghc imports properly for your system
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart PoetteringDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:/home/linux-bkb/ghc/ghc-latest/lib/ghc-6.0.1/imports'
31cee6f634ce07aa2c3514a506f93830f91f14a5Lennart PoetteringHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci \
952d1536f4d7b64cfe938a569402434decffe4cdKay Sievers### Profiling and Warnings (only for debugging)
b67f541f130cd4c55da0b74af5fcbb4daeca1937Lennart Poettering### Attention every module must be compiled with profiling or the linker
b67f541f130cd4c55da0b74af5fcbb4daeca1937Lennart Poettering### cannot link the various .o files properly. So after switching on
85424725d1870e2c218e3e2d53971f7e5dc3f0aeKay Sievers### Profiling, do an 'gmake clean; gmake'
85424725d1870e2c218e3e2d53971f7e5dc3f0aeKay Sievers### If you need Profiling comment out the following line
673eab9bf0d2d79a72f3d7c430807b8786de7ee3Lennart Poettering#HC_PROF = -prof -auto-all
e946948eff517e895b287d0fd8c6d069ab9bbbb9Jesper LarsenHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
23aedd029452b65c11b6eb838e44f60be1c66814Kay Sievers#DRIFT_OPTS = +RTS -K10 -RTS
23aedd029452b65c11b6eb838e44f60be1c66814Kay Sievers### list of directories to run checks in
713bc0cfa477ca1df8769041cb3dbc83c10eace2Kay Sievers####################################################################
713bc0cfa477ca1df8769041cb3dbc83c10eace2Kay Sievers## sources for hetcats (semi - manually produced with a perl script)
713bc0cfa477ca1df8769041cb3dbc83c10eace2Kay Sieversobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
713bc0cfa477ca1df8769041cb3dbc83c10eace2Kay Sieversdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
f28cbd0382ca53baa99803bbc907a469fbf68128Kay Sievers Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
a21b4670d404ca4e55fef921f94a4259075882a9Umut Tezduyar Lindskoggenrule_header_files = $(wildcard ATC/*.header.hs)
a21b4670d404ca4e55fef921f94a4259075882a9Umut Tezduyar Lindskoggenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs \
713bc0cfa477ca1df8769041cb3dbc83c10eace2Kay Sievers Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs \
713bc0cfa477ca1df8769041cb3dbc83c10eace2Kay Sievers Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
f28cbd0382ca53baa99803bbc907a469fbf68128Kay Sievers CASL/Morphism.hs CASL/Sign.hs CASL/AS_Basic_CASL.der.hs \
f33016ff8b56c45dc85485ecf4d59f435c42ca40Thomas Bächler HasCASL/Le.hs HasCASL/As.hs HasCASL/Symbol.hs \
77b6e19458f37cfde127ec6aa9494c0ac45ad890Lennart Poettering Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
a7b1c3971a30546fe633e320d45033aba8b2ca3cLennart Poetteringgendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs \
a7b1c3971a30546fe633e320d45033aba8b2ca3cLennart Poettering ATC/AS_Library.hs ATC/GlobalAnnotations.hs \
a7b1c3971a30546fe633e320d45033aba8b2ca3cLennart Poettering ATC/AS_Structured.hs ATC/AS_Architecture.hs \
77b6e19458f37cfde127ec6aa9494c0ac45ad890Lennart Poettering CASL/ATC_CASL.hs Haskell/ATC_Haskell.hs \
c0467cf387548dc98c0254f63553d862b35a84e5Ronny Chevaliergenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
a18535d9e138c525d0443ec9f30a90b3e2184686Tom Gundersenhappy_files = Haskell/Language/Parser.hs Haskell/Hatchet/HsParser.hs
3ede835a0486f2ecc025dede0b33e9a1edc06d30Lennart Poettering# this variable holds the modules that should be documented
3ede835a0486f2ecc025dede0b33e9a1edc06d30Lennart Poettering# the imported parsec library is not included!
19d5d4cb6a89c844e298eb65bce6ba0fa9d58b91Zbigniew Jędrzejewski-Szmekdoc_sources = $(filter-out Nothing/Nothing% ,$(sources))
19d5d4cb6a89c844e298eb65bce6ba0fa9d58b91Zbigniew Jędrzejewski-Szmek####################################################################
7b17a7d72f5ba5ad838b19803534c56a46f3bce9Lennart Poettering.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg \
5b244719abc81b83d8a0d732c3b95a2845d8811aLennart Poettering.SECONDARY : %.hs %.d $(generated_rule_files)
8be12848423218c034cfa7e3078774c9d4732281Zbigniew Jędrzejewski-Szmek $(HC) --make -o $@ hets.hs $(HC_OPTS)
3ede835a0486f2ecc025dede0b33e9a1edc06d30Lennart Poetteringhetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)
19d5d4cb6a89c844e298eb65bce6ba0fa9d58b91Zbigniew Jędrzejewski-Szmek $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
19d5d4cb6a89c844e298eb65bce6ba0fa9d58b91Zbigniew Jędrzejewski-Szmek###############################
19d5d4cb6a89c844e298eb65bce6ba0fa9d58b91Zbigniew Jędrzejewski-Szmek### TAGS files for (x)emacs
32dcef3ab1eb91ee469c3246ef859578dccd8a45Zbigniew Jędrzejewski-Szmek# load them with "M-x" "visit-tags-table" from
21bc923aa35d455cdef1607eb7022608c705c9f3Lennart Poettering# use "M-." to search for a tag
19aadacf92ad86967ffb678e37b2ff9e83cb9480Jan Engelhardt# !!Beware this is somewhat instable, because it uses an absolute path!!
19aadacf92ad86967ffb678e37b2ff9e83cb9480Jan Engelhardt /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
fff2e5b58bab7a5ffbb7593742d462197b06728cLennart Poettering $(sources); mv TAGS $@; mv tags hetcats.tags
fff2e5b58bab7a5ffbb7593742d462197b06728cLennart Poettering###############################
9015fa646e04fc3cb180bea24c33d34edbb48ed7Zbigniew Jędrzejewski-Szmek### Documentation via haddock
9015fa646e04fc3cb180bea24c33d34edbb48ed7Zbigniew Jędrzejewski-Szmekdoc: docs/index.html utils/hd-lib
9015fa646e04fc3cb180bea24c33d34edbb48ed7Zbigniew Jędrzejewski-Szmek $(HADDOCK) $(doc_sources) -o docs -h \
9015fa646e04fc3cb180bea24c33d34edbb48ed7Zbigniew Jędrzejewski-Szmek --read-interface=http://www.haskell.org/ghc/docs/latest/html/libraries/base,/home/linux-bkb/ghc/ghc-6.0.1/share/ghc-6.0.1/html/base/base.haddock \
a24c64f03f9c5c0304451d8542fee853187a5168Lennart Poettering -t 'hets -- a heterogenous Specification (CASL) tool set'
a24c64f03f9c5c0304451d8542fee853187a5168Lennart Poettering $(PERL) utils/post_process_docs.pl docs \
a24c64f03f9c5c0304451d8542fee853187a5168Lennart Poettering 'Common.Lib.Map.html:Common.Lib._Map.html'
a24c64f03f9c5c0304451d8542fee853187a5168Lennart Poettering###############################
a24c64f03f9c5c0304451d8542fee853187a5168Lennart Poettering### release management
a24c64f03f9c5c0304451d8542fee853187a5168Lennart PoetteringdriftedSources: $(drifted_files) $(happy_files) hetcats/Version.hs
1a9ce3f766a03c7daab4ca7edae7533841e1721aMichael Biebl (cd utils/DrIFT-src; $(HC) --make DrIFT.hs -o ../DrIFT)
323a2f0b4b3db8f34c382e66f1940c1216bdfc9dLennart Poettering $(HC) --make -i../.. -package text GenerateRules.hs -o ../genRules)
323a2f0b4b3db8f34c382e66f1940c1216bdfc9dLennart Poettering cvs -d :pserver:cvsread@cvs-agbkb.informatik.uni-bremen.de:/repository co HetCATS
323a2f0b4b3db8f34c382e66f1940c1216bdfc9dLennart Poettering (cd HetCATS; $(MAKE) driftedSources; ./clean.sh)
323a2f0b4b3db8f34c382e66f1940c1216bdfc9dLennart Poettering find HetCATS -name CVS | xargs -r $(RM) -r
682265d5e2157882861b0091c6b81fa92699b72aTom Gundersen#############################
21bc923aa35d455cdef1607eb7022608c705c9f3Lennart Poettering### ATC DrIFT-rule generation
21bc923aa35d455cdef1607eb7022608c705c9f3Lennart PoetteringgenRules: $(generated_rule_files) utils/genRules
21bc923aa35d455cdef1607eb7022608c705c9f3Lennart Poettering$(generated_rule_files): $(genrule_files) utils/genRules #$(genrule_header_files)
21bc923aa35d455cdef1607eb7022608c705c9f3Lennart Poettering $(foreach file,$(atc_files),$(gen_atc_files))
19aadacf92ad86967ffb678e37b2ff9e83cb9480Jan Engelhardt utils/genRules -r $(rule) -o CASL -h ATC/CASL.header.hs \
19aadacf92ad86967ffb678e37b2ff9e83cb9480Jan Engelhardt utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs \
21bc923aa35d455cdef1607eb7022608c705c9f3Lennart Poettering utils/genRules -r $(rule) -o CspCASL -h ATC/CspCASL.header.hs \
21bc923aa35d455cdef1607eb7022608c705c9f3Lennart Poettering utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs \
47bc23c18cbc87471dc832534c8565625e4a9d16Lennart Poetteringgen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
aa1671320df5bd8aa4108c0efb34a49fdedd0e5fLennart Poettering utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
aa1671320df5bd8aa4108c0efb34a49fdedd0e5fLennart Poettering utils/genRules -r $(rule) -o ATC $(file); \
1b4bb4fdac4dce4e658aa3743153d77c04d1a331Zbigniew Jędrzejewski-Szmekatc_files := $(filter-out CASL/% HasCASL/% CspCASL/% Haskell/% ,$(genrule_files))
1b4bb4fdac4dce4e658aa3743153d77c04d1a331Zbigniew Jędrzejewski-Szmekcasl_files := $(filter CASL/% ,$(genrule_files))
### also delete *.d.bak (dependency file backups)
$(RM) $@
ghci:
$(RM) $@
$(RM) $@
$(RM) $@
$(RM) $@
$(RM) $@
$(RM) $@
$(RM) $@
$(RM) $@
### ATerm.Lib test system
$(RM) $@
$(RM) $@
$(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
$(HAPPY) $<
%.d : %.hs
%.d : %.lhs