Makefile revision 724ecbf67db2531c73555411c57555065f12913b
2a6c49cfaef5979a5a06098f3ce987cd76769409manoj# Author: Klaus L�ttich
2a6c49cfaef5979a5a06098f3ce987cd76769409manoj# Year: 2003
571760de5e60c0b459cb11be45507b923cd023eejwoolley# This Makefile will compile the new hetcats system and provides also
571760de5e60c0b459cb11be45507b923cd023eejwoolley# targets for test programs during implementation phases.
bcb6e1be6041dfeb549c8ea8d37f97ad4e90a0c3rbb# !!! Note: This makefile is written for GNU make !!!
9bd71e35f5d26d26d23fe3a677401828e842ed72wrowe# (gmake on solaris ; make on linux)
a548c09e6a8ca1b059d0e93b5256c6ccb2b3c3cdrbb####################################################################
a548c09e6a8ca1b059d0e93b5256c6ccb2b3c3cdrbb## Some varibles, which control the compilation
cf6bf6c34c936e6a6fe731dbce4a5c3c8bf8e9a3gsteinCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
35330e0d79ceb8027223bbb8330a381b1f989d6etrawickCLEAN_PATH = Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Haskell/Language:Modal:CspCASL:ATC:ToHaskell:Proofs:Comorphisms:$(INCLUDE_PATH):Haskell/Hatchet
8dd4618c4709236b4ea297d7250d282e463ce2d8rbbDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:/home/linux-bkb/ghc/ghc-latest/lib/ghc-6.0.1/imports'
5ac928b7a71a12bc1a6b42194c47edbff1dcc02fgregamesHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall -O2
2a4b7a53f3573605d4f5686f03a67c37425dc22bgregames# please remove '-O2' if compilation lasts to long on your system
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawick# but please don't commit to cvs server
f467b575e2698cfeb818b357b00b2a13873eb309trawickHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
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
f467b575e2698cfeb818b357b00b2a13873eb309trawick####################################################################
f467b575e2698cfeb818b357b00b2a13873eb309trawick## sources for hetcats (semi - manually produced with a perl script)
e5d1a36ad35f809c6f1bd3339aae78569abdd48ctrawickdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
e5d1a36ad35f809c6f1bd3339aae78569abdd48ctrawick Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
e5d1a36ad35f809c6f1bd3339aae78569abdd48ctrawickgenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs Common/AS_Annotation.der.hs Common/Named.hs \
e5d1a36ad35f809c6f1bd3339aae78569abdd48ctrawick Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
e5d1a36ad35f809c6f1bd3339aae78569abdd48ctrawick CASL/Morphism.hs CASL/StaticAna.hs CASL/AS_Basic_CASL.der.hs \
e5d1a36ad35f809c6f1bd3339aae78569abdd48ctrawick HasCASL/Le.hs HasCASL/As.hs HasCASL/Symbol.hs HasCASL/Morphism.hs HasCASL/AsToIds.hs\
e5d1a36ad35f809c6f1bd3339aae78569abdd48ctrawick Haskell/Hatchet/AnnotatedHsSyn.hs Haskell/Hatchet/MultiModuleBasics.hs \
e5d1a36ad35f809c6f1bd3339aae78569abdd48ctrawick Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawickgendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs ATC/Named.hs \
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawick ATC/AS_Structured.hs ATC/AS_Architecture.hs ATC/DevGraph.hs \
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawick CASL/ATC_CASL.hs Haskell/ATC_Haskell.hs HasCASL/ATC_HasCASL.hs CspCASL/ATC_CspCASL.hs
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawickgenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawickhappy_files = Haskell/Language/Parser.hs Haskell/Hatchet/HsParser.hs
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawick# this variable holds the modules that should be documented
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawick# the imported parsec library is not included!
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawickdoc_sources = $(filter-out Nothing/Nothing% ,$(sources))
5b233db661cfc7c8c420dfe63d8e7058bc5d3e62trawick####################################################################
531c23ff01a2489646f0a2029097013b328d935agstein.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg clean_genRules genRules
750fcd3495b59eff6d4844409ae1dfb46d026059gsteinhetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)
750fcd3495b59eff6d4844409ae1dfb46d026059gstein $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
750fcd3495b59eff6d4844409ae1dfb46d026059gstein###############################
750fcd3495b59eff6d4844409ae1dfb46d026059gstein### TAGS files for (x)emacs
750fcd3495b59eff6d4844409ae1dfb46d026059gstein# load them with "M-x" "visit-tags-table" from
9eccc0a669a3e711629345b357c46acce5fefdb4gstein# use "M-." to search for a tag
281da4c02cf40c663298ded7e4e5b913a8f8b814gstein# !!Beware this is somewhat instable, because it uses an absolute path!!
281da4c02cf40c663298ded7e4e5b913a8f8b814gstein /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
ec75f189410513ab8f6e1173a9d9d277ebec9ce7gstein###############################
ec75f189410513ab8f6e1173a9d9d277ebec9ce7gstein### Documentation via haddock
7bce59d998f2e5ca1cb60038ef6c1d0817605d62stoddard --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 \
7bce59d998f2e5ca1cb60038ef6c1d0817605d62stoddard -t 'hets -- a heterogenous Specification (CASL) tool set'
60d567a0c2aae815ee6fc20c0d65032bea52c92cwrowe#############################
60d567a0c2aae815ee6fc20c0d65032bea52c92cwrowe### ATC DrIFT-rule generation
7239216999e746bb4fc7671621becea33c5c1c87stoddard$(generated_rule_files): $(genrule_files) $(genrule_header_files)
d180ec1b29106f4fec480ef7fcdb04df078010cerse utils/genRules -r $(rule) -o CASL -h ATC/CASL.header.hs $(casl_files)
d180ec1b29106f4fec480ef7fcdb04df078010cerse utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs $(hascasl_files)
d180ec1b29106f4fec480ef7fcdb04df078010cerse utils/genRules -r $(rule) -o CspCASL -h ATC/CspCASL.header.hs $(cspcasl_files)
d180ec1b29106f4fec480ef7fcdb04df078010cerse utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs $(haskell_files)
d180ec1b29106f4fec480ef7fcdb04df078010cersegen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
d180ec1b29106f4fec480ef7fcdb04df078010cerse utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
d180ec1b29106f4fec480ef7fcdb04df078010cerseatc_files := $(filter-out CASL/% HasCASL/% CspCASL/% Haskell/% ,$(genrule_files))
d180ec1b29106f4fec480ef7fcdb04df078010cerse###############
e32adabcbf3bf5b69ba2e8b163b971839efc94dbtrawick### clean up
e32adabcbf3bf5b69ba2e8b163b971839efc94dbtrawick### removes *.hi and *.o in all include directories
7bce59d998f2e5ca1cb60038ef6c1d0817605d62stoddard### remove binaries
93db592309ba9e5ab230f67611a2c74fece9cdb2marc### additonally removes *.d (dependency files) in every include directory
93db592309ba9e5ab230f67611a2c74fece9cdb2marc### also delete *.d.bak (dependency file backups)
93db592309ba9e5ab230f67611a2c74fece9cdb2marc### remove files also in own libraries
1c6fb1e726ce22694de0e9a957adb67b929e5d4fstoddard### additionally removes the files that define the sources-variable
d2f8b010487ffa990a9c268df5a25579e7291bcdrbb### additionally removes files not in CVS tree
1e585ba09ea32272e63c4c39c35491e975d21d98stoddard####################################################################
0bff2f28ef945280c17099c142126178a78e1e54manoj### test targets
35330e0d79ceb8027223bbb8330a381b1f989d6etrawick####################################################################
9c09943bad734ebd5c7cc10bd6d63b75c4c6e056stoddard### a parser to test annotation parser and Id parsers
447c6ce3ff08073c44f6785d5256271fcb877512wroweCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
447c6ce3ff08073c44f6785d5256271fcb877512wrowe### interactive
c03566fa0156d3a1500a42e4fe539e3e0fc8a11dgstein### christian's target
db3ccce11afac4fc1d4f51a65424412f7480c46cgstein### CASL parser
db3ccce11afac4fc1d4f51a65424412f7480c46cgstein### HasCASL parser
79d5106a9b65b956d646f5daae4b94bc79e315b8trawickHasCASL/hacapa: HasCASL/hacapa.lhs CASL/capa HasCASL/*.hs
6fa71a1bd8c61518b05f5798a7a1594c270e78afrbb### Haskell parser
14cccaddba3a9263cf0d0ddc311e18f3e3dc9b0fgsteinHaskell/hapa: Haskell/hapa.lhs Haskell/*.hs Haskell/Language/*.hs $(happy_files)
14cccaddba3a9263cf0d0ddc311e18f3e3dc9b0fgstein### Haskell wrap parser
281da4c02cf40c663298ded7e4e5b913a8f8b814gstein### HetCASL parser
2f728b2e8555fee1b7cc11e886488692f2575fbddougm### HetCASL parser
60d567a0c2aae815ee6fc20c0d65032bea52c92cwrowe### ATC test system
60d567a0c2aae815ee6fc20c0d65032bea52c92cwrowe### ATerm.Lib test system
60d567a0c2aae815ee6fc20c0d65032bea52c92cwroweatermlibtest: Common/ATerm/ATermLibTest.hs Common/ATerm/*.hs Common/SimpPretty.hs
60d567a0c2aae815ee6fc20c0d65032bea52c92cwrowe### HetCASL with dev graph
60d567a0c2aae815ee6fc20c0d65032bea52c92cwrowe $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
60d567a0c2aae815ee6fc20c0d65032bea52c92cwrowe### run tests in other directories
64ad864fa0f4493eebb181e393b40a8a90beccb9coar####################################################################
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## Preparing the version of HetCATS
64ad864fa0f4493eebb181e393b40a8a90beccb9coar $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## two hardcoded dependencies for a correct generation of Version.hs
28d1da9ca818f831ea491f110dafcc10f7f07050coarhetcats/Options.hs hetcats/WriteFn.hs hetcats/ReadFn.hs: hetcats/Version.hs
64ad864fa0f4493eebb181e393b40a8a90beccb9coar####################################################################
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## rules for DrIFT
64ad864fa0f4493eebb181e393b40a8a90beccb9coar#%.hs: %.ag
64ad864fa0f4493eebb181e393b40a8a90beccb9coar# $(AG) $< -o $@
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## compiling rules for object and interface files
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## compiling rules for dependencies
64ad864fa0f4493eebb181e393b40a8a90beccb9coar####################################################################
64ad864fa0f4493eebb181e393b40a8a90beccb9coar## Setting a global search path (for dependency files)
28d1da9ca818f831ea491f110dafcc10f7f07050coar## include every .d file in INCLUDE_PATH
28d1da9ca818f831ea491f110dafcc10f7f07050coarsources_hetcats.mk: hetcats-make hetcats/Version.hs hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)