Makefile revision fa21fba9ceb1ddf7b3efd54731a12ed8750191d8
1fab57c209035f7e66198343074e9cee06718bdaKay Sievers# Author: Klaus L�ttich
cff452c7e974db5053cdbd0d7bbbab2e3b4c91b9Kay Sievers# This Makefile will compile the new hetcats system and provides also
cff452c7e974db5053cdbd0d7bbbab2e3b4c91b9Kay Sievers# targets for test programs during implementation phases.
cff452c7e974db5053cdbd0d7bbbab2e3b4c91b9Kay Sievers# !!! Note: This makefile is written for GNU make !!!
7c66aeba0f28cb82027d6015405ed71afa3b6059Kay Sievers# (gmake on solaris ; make on linux)
c904f64d84db8c4eebedf210ba10893f19ba05edLennart Poettering####################################################################
c904f64d84db8c4eebedf210ba10893f19ba05edLennart Poettering## Some varibles, which control the compilation
f957632b960a0a42999b38ded7089fa602b41745Kay SieversCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
f957632b960a0a42999b38ded7089fa602b41745Kay SieversCLEAN_PATH = Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Haskell/Language:Modal:CspCASL:ATC:ToHaskell:Proofs:Comorphisms:$(INCLUDE_PATH):Haskell/Hatchet
9a36607584bbd1d78775353e022a51794b4e27b1Lennart PoetteringDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:/home/linux-bkb/ghc/ghc-latest/lib/ghc-6.0.1/imports'
a6f0104a16350a4c2660837da6e0e5c2e50e2389Zbigniew Jędrzejewski-SzmekDRIFT = $(DRIFT_ENV) $(PERL) utils/DrIFT
ea92ae33e0fbbf8a98cd2e08ca5a850d83d57faeMaciej WereskiHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall
04ac799283f517672a5424e7c5bf066cfa4ca020Zbigniew Jędrzejewski-SzmekHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering### Profiling and Warnings (only for debugging)
dc7adf202b82fc0054c457ce6ca3bcedb88dde57Lennart Poettering### Attention every module must be compiled with profiling or the linker
7b4da18c1717f811bae67ea3d39290495857c03eLennart Poettering### cannot link the various .o files properly. So after switching on
81d112a8f0522a09fcfe317f420363a2b728137cLennart Poettering### Profiling, do an 'gmake clean; gmake'
81d112a8f0522a09fcfe317f420363a2b728137cLennart Poettering### If you need Profiling comment out the following line
81d112a8f0522a09fcfe317f420363a2b728137cLennart Poettering#HC_PROF = -prof -auto-all -Wall
466784c8710e5cb0e0b86a16506d992d7ec5b619Kay SieversHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
94bbc9915a4272a20feda86c5f97b8a587482aa1Lennart Poettering### list of directories to run checks in
bafb15bab99887d1b6b8a35136531bac6c3876a6Lennart Poettering####################################################################
bafb15bab99887d1b6b8a35136531bac6c3876a6Lennart Poettering## sources for hetcats (semi - manually produced with a perl script)
fcba531ed4c6e6f8f21d8ca4e3a56e3162b1c578Lennart Poetteringobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
fcba531ed4c6e6f8f21d8ca4e3a56e3162b1c578Lennart Poetteringdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
fcba531ed4c6e6f8f21d8ca4e3a56e3162b1c578Lennart Poettering Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
7b617155b50fdaad5d06359eb03e98f0c7b3087bLennart Poetteringgenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs Common/AS_Annotation.der.hs Common/Named.hs \
4c3a31668e4f3be9a35177a35d5b9794cdff663eLennart Poettering Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
4c3a31668e4f3be9a35177a35d5b9794cdff663eLennart Poettering CASL/Morphism.hs CASL/StaticAna.hs CASL/AS_Basic_CASL.der.hs \
38563c1947e34b71bf5557f2cd22fb7806c60077Lennart Poettering HasCASL/Le.hs HasCASL/As.hs HasCASL/Symbol.hs HasCASL/Morphism.hs \
94bbc9915a4272a20feda86c5f97b8a587482aa1Lennart Poettering Haskell/Hatchet/AnnotatedHsSyn.hs Haskell/Hatchet/MultiModuleBasics.hs \
5a4555ba6bc8ea086823fb71cb1cb92d4ec087a2Lennart Poettering Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
afaba0234727db6a82e323665d7d86f971f3090cLennart Poetteringgendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs ATC/Named.hs \
4c4ae27d4d314d0dc1c42cd6bfc7b9ae31660885Lennart Poettering ATC/AS_Library.hs ATC/GlobalAnnotations.hs \
4c4ae27d4d314d0dc1c42cd6bfc7b9ae31660885Lennart Poettering ATC/AS_Structured.hs ATC/AS_Architecture.hs ATC/DevGraph.hs \
408f281bc7d65c86563f46e99e07efd1a1d9e03aLennart Poettering CASL/ATC_CASL.hs Haskell/ATC_Haskell.hs HasCASL/ATC_HasCASL.hs CspCASL/ATC_CspCASL.hs
e1b7e7ec9b34ae6ae54a4c8084395cbf2bfe9960Lennart Poetteringgenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
e1b7e7ec9b34ae6ae54a4c8084395cbf2bfe9960Lennart Poetteringhappy_files = Haskell/Language/Parser.hs Haskell/Hatchet/HsParser.hs
c3bb87dbab8b79bb9253407cb5b7f3e6fe8db395Lennart Poettering# this variable holds the modules that should be documented
e7256c5c137e58fb3dc1ebca8e5845733a5f733cLennart Poettering# the imported parsec library is not included!
e7256c5c137e58fb3dc1ebca8e5845733a5f733cLennart Poetteringdoc_sources = $(filter-out Nothing/Nothing% ,$(sources))
042e33ae3a7feb08c8105f1345fd244315109405Lennart Poettering####################################################################
36c0868b67a9387d39c97983d3d22cfce0fedc62Lennart Poettering.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg clean_genRules genRules
36c0868b67a9387d39c97983d3d22cfce0fedc62Lennart Poettering.SECONDARY : %.hs %.d $(generated_rule_files)
fb6becb4436ae4078337011b2017ce294e7361cfLennart Poetteringhetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
11ddb6f48e367ae4b51c31d199b28f5be041a301Lennart Poettering###############################
11ddb6f48e367ae4b51c31d199b28f5be041a301Lennart Poettering### TAGS files for (x)emacs
7041efe9600e569da6089c36d00fa3ff58e33178Lennart Poettering# load them with "M-x" "visit-tags-table" from
b42defe3b8ed3947d85db654a6cdb1b9999f394dLennart Poettering# use "M-." to search for a tag
b42defe3b8ed3947d85db654a6cdb1b9999f394dLennart Poettering# !!Beware this is somewhat instable, because it uses an absolute path!!
3d3ee759e682701fce77b6559508e697e9e60fbfLennart Poettering /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
9444b1f20e311f073864d81e913bd4f32fe95cfdLennart Poettering $(sources); mv TAGS $@; mv tags hetcats.tags
9444b1f20e311f073864d81e913bd4f32fe95cfdLennart Poettering###############################
9444b1f20e311f073864d81e913bd4f32fe95cfdLennart Poettering### Documentation via haddock
69af45035913e7119cffd94c542bd3039600e45dZbigniew Jędrzejewski-Szmekdoc: docs/index.html utils/hd-lib
9444b1f20e311f073864d81e913bd4f32fe95cfdLennart Poettering -i/home/linux-bkb/ghc/ghc-6.0.1/share/ghc-6.0.1/html/base,/home/linux-bkb/ghc/ghc-6.0.1/share/ghc-6.0.1/html/base/base.haddock \
a016b9228f338cb9b380ce7e00826ef462767d98Lennart Poettering -t 'hets -- a heterogenous Specification (CASL) tool set'
4e09014daf8f98584b3f15e64e93bed232e70a6bLennart Poettering cp -r /home/linux-bkb/ghc/ghc-6.0.1/share/ghc-6.0.1/html/base a-docs
4e09014daf8f98584b3f15e64e93bed232e70a6bLennart Poettering $(PERL) utils/post_process_docs.pl docs \
4e09014daf8f98584b3f15e64e93bed232e70a6bLennart Poettering 'Common.Lib.Map.html:Common.Lib._Map.html' \
4e09014daf8f98584b3f15e64e93bed232e70a6bLennart Poettering '/home/linux-bkb/ghc/ghc-6.0.1/share/ghc-6.0.1/html/:'
4e09014daf8f98584b3f15e64e93bed232e70a6bLennart Poettering#############################
4e09014daf8f98584b3f15e64e93bed232e70a6bLennart Poettering### ATC DrIFT-rule generation
eb01ba5de14859d7a94835ab9299de40132d549aLennart Poettering $(foreach file,$(atc_files),$(gen_atc_files))
eb01ba5de14859d7a94835ab9299de40132d549aLennart Poettering utils/genRules -r $(rule) -o CASL -h ATC/CASL.header.hs $(casl_files)
eb01ba5de14859d7a94835ab9299de40132d549aLennart Poettering utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs $(hascasl_files)
eb01ba5de14859d7a94835ab9299de40132d549aLennart Poettering utils/genRules -r $(rule) -o CspCASL -h ATC/CspCASL.header.hs $(cspcasl_files)
e4ee6e5cc3e8e23e1ecc0d9fa756d9cc2534d218Lennart Poettering utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs $(haskell_files)
86312ab8de59c1066d6d2b456f3a9106ce3e0991Lennart Poetteringgen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
86312ab8de59c1066d6d2b456f3a9106ce3e0991Lennart Poettering utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
86312ab8de59c1066d6d2b456f3a9106ce3e0991Lennart Poettering utils/genRules -r $(rule) -o ATC $(file); \
154ff088d371bee5651eaa2bc9bde8a34c185656Lennart Poetteringatc_files := $(filter-out CASL/% HasCASL/% CspCASL/% Haskell/% ,$(genrule_files))
154ff088d371bee5651eaa2bc9bde8a34c185656Lennart Poetteringcasl_files := $(filter CASL/% ,$(genrule_files))
154ff088d371bee5651eaa2bc9bde8a34c185656Lennart Poetteringhascasl_files := $(filter HasCASL/% ,$(genrule_files))
7e853a9b9a858edbc24e6c85d134478cec840173Lennart Poetteringcspcasl_files := $(filter CspCASL/% ,$(genrule_files))
7e853a9b9a858edbc24e6c85d134478cec840173Lennart Poetteringhaskell_files := $(filter Haskell/%,$(genrule_files))
d686f034c3b9021e07faefe172ee660abd952871Lennart Poettering###############
19aa7c4fef4a3f1dfc6d9980574ca220a6a40a71Lennart Poettering### removes *.hi and *.o in all include directories
e8a7a315391a6a07897122725cd707f4e9ce63d7Lennart Poettering for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
461bd8e47cafacfcd38389e7558330bfb6e902adLennart Poettering### remove binaries
4a449ed73d2c1cfb91a1c773b70231b3457b3046Lennart Poettering### additonally removes *.d (dependency files) in every include directory
4a449ed73d2c1cfb91a1c773b70231b3457b3046Lennart Poettering### also delete *.d.bak (dependency file backups)
4ff49cb63075aba646b578f2516b37a8dfd5a65bLennart Poettering for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
fff87a35d9e26c0d4ea41273a963c0eb20e18da4Zbigniew Jędrzejewski-Szmek (cd $$p ; $(RM) *.d *.d.bak) ; done
fff87a35d9e26c0d4ea41273a963c0eb20e18da4Zbigniew Jędrzejewski-Szmek### remove files also in own libraries
b8b4d3dddc7611dce3bf28004b0375d661120c62Lennart Poettering for p in $(subst :, ,$(COMMONLIB_PATH)) . ; do \
3df82d5a8cdc510f518fd5e234ccb3233b748719Lennart Poettering### additionally removes the files that define the sources-variable
b5c03638d48c07aa0eaf13b5f54000c7133e1883Lennart Poettering### additionally removes files not in CVS tree
b5c03638d48c07aa0eaf13b5f54000c7133e1883Lennart Poetteringdistclean: real_clean clean_genRules d_clean
eece8c6fb5f4d354dcef6fd369e876c4f3a3f163Lennart Poettering####################################################################
eece8c6fb5f4d354dcef6fd369e876c4f3a3f163Lennart Poettering### test targets
356ce9915ab1a4a1e6dc26954df34936a69e7c12Lennart Poettering####################################################################
356ce9915ab1a4a1e6dc26954df34936a69e7c12Lennart Poettering### a parser to test annotation parser and Id parsers
3b953d68c628c6ae70adba871719ac0f16083b51Josh TriplettCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
09f727eebd87661f263d3c2c1e0de7b7771acd40Lennart Poettering### interactive
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering### christian's target
795607b22308f5b92073b012e43be1892fdd97c0Lennart Poettering### CASL parser
795607b22308f5b92073b012e43be1892fdd97c0Lennart PoetteringCASL/capa: CASL/capa.lhs Common/*.hs CASL/*.hs
0be8342c04bbf129b4a21e5073eacccbbce4e896Lennart Poettering### HasCASL parser
69af45035913e7119cffd94c542bd3039600e45dZbigniew Jędrzejewski-SzmekHasCASL/hacapa: HasCASL/hacapa.lhs CASL/capa HasCASL/*.hs
826872b61e4857dfffe63ba84e2b005623baecd6Lennart Poettering### Haskell parser
826872b61e4857dfffe63ba84e2b005623baecd6Lennart PoetteringHaskell/hapa: Haskell/hapa.lhs Haskell/*.hs Haskell/Language/*.hs $(happy_files)
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering### Haskell wrap parser
3679d1126bae52e02f6cd60fca196f616b9e660dLennart PoetteringHaskell/wrap: Haskell/wrap.lhs Haskell/*.hs
69af45035913e7119cffd94c542bd3039600e45dZbigniew Jędrzejewski-Szmek $(HC) --make -o $@ $< $(HC_OPTS)
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering### HetCASL parser
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering### HetCASL parser
3679d1126bae52e02f6cd60fca196f616b9e660dLennart Poettering### ATC test system
cbb7712189527f9f483321607e44c4ead3dd11b8Lennart Poettering### HetCASL with dev graph
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
f8aeee1f1fe432924b355f48f01f09c9a552ed97Lennart Poettering### run tests in other directories
356ce9915ab1a4a1e6dc26954df34936a69e7c12Lennart Poettering for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
81d112a8f0522a09fcfe317f420363a2b728137cLennart Poettering####################################################################
490b7e47093d491a2bdb1084fe92b796f4e07eefLennart Poettering## Preparing the version of HetCATS
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poetteringhetcats/Version.hs: hetcats/Version.in version_nr
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering## two hardcoded dependencies for a correct generation of Version.hs
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poetteringhetcats/Options.hs hetcats/WriteFn.hs hetcats/ReadFn.hs: hetcats/Version.hs
e41814846c19a48f4490169d82e359e005c4db45Lennart Poettering####################################################################
c0fe5db522b52f27e030655ce2c03e05cbbc1558Kay Sievers## rules for DrIFT
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering# $(AG) $< -o $@
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering## compiling rules for object and interface files
e673ad0415d89c322e5b1a121e411f1b1d8075c0Lennart Poettering## compiling rules for dependencies
e673ad0415d89c322e5b1a121e411f1b1d8075c0Lennart Poettering $(HC) -M $< $(HC_OPTS) -optdep-f -optdep$@
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering $(HC) -M $< $(HC_OPTS) -optdep-f -optdep$@
b87b8b2b5205c0584da220f73322ea4732d44013Kay Sievers####################################################################
b87b8b2b5205c0584da220f73322ea4732d44013Kay Sievers## Setting a global search path (for dependency files)
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poettering## include every .d file in INCLUDE_PATH
b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0Lennart Poetteringsources_hetcats.mk: hetcats-make hetcats/Version.hs hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)