Makefile revision b905126bab9454b89041f92b3c50bb9efc85e427
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu# Author: (c) Klaus L�ttich, Christian Maeder, Uni Bremen 2002-2004
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu# This Makefile will compile the new hetcats system and provides also
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu# targets for test programs during implementation phases.
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu# !!! Note: This makefile is written for GNU make !!!
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu# (gmake on solaris ; make on linux)
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu####################################################################
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu## Some varibles, which control the compilation
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi LiuCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi LiuCLEAN_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
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu## set ghc imports properly for your system
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi LiuLINUX_IMPORTS = $(wildcard /home/linux-bkb/ghc/ghc-latest/lib/ghc-*/imports)
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi LiuDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:${LINUX_IMPORTS}:${GHC_IMPORTS}'
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu# override on commandline for other architectures
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi LiuINSTALLDIR = /home/www/agbkb/forschung/formal_methods/CoFI/hets/`utils/sysname.sh`
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi LiuGENERATERULES_deps = utils/GenerateRules/*hs $(DRIFT_deps)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu# -fglasgow-exts comes in via ../uni/uni-package.conf
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi LiuHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci \
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu### Profiling and Warnings (only for debugging)
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu### Attention every module must be compiled with profiling or the linker
00c293f39ea1777bf7f682398237a2aba8d155d3Mingyi Liu### cannot link the various .o files properly. So after switching on
be2ce59898c3fecd3a52e981e57b553c54979bf8Mingyi Liu### Profiling, do an 'gmake clean; gmake'
f955439310a3bdfccb2543de3b9bd29480e1033fMingyi Liu### If you need Profiling comment out the following line
be2ce59898c3fecd3a52e981e57b553c54979bf8Mingyi Liu#HC_PROF = -prof -auto-all
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi LiuHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu### list of directories to run checks in
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi LiuTESTDIRS = Common CASL HasCASL Haskell/Hatchet/examples ToHaskell/test
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu####################################################################
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu## sources for hetcats (semi - manually produced with a perl script)
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liuobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liudrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liugenrule_header_files = $(wildcard ATC/*.header.hs)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liugenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs \
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs \
e953bea49e7f0e1a43bccf2a66c5e2a2b50848e0Christian Maeder Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
e953bea49e7f0e1a43bccf2a66c5e2a2b50848e0Christian Maeder CASL/Morphism.hs CASL/Sign.hs CASL/AS_Basic_CASL.der.hs \
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu HasCASL/As.hs HasCASL/Le.hs HasCASL/Morphism.hs \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liugendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs \
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu Modal/ATC_Modal.hs CoCASL/ATC_CoCASL.hs ATC/IsaSign.hs
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liugenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liugen_inline_axiom_files = $(patsubst %.hs,%.inline.hs,$(inline_axiom_files))
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu# this variable holds the modules that should be documented
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu# the imported parsec library is not included!
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liudoc_sources = $(filter-out ./Isabelle/IsaSign.hs ,$(sources))
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu####################################################################
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg \
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu.SECONDARY : %.hs %.d $(generated_rule_files) $(gen_inline_axiom_files)
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu $(HC) --make -o $@ hets.hs $(HC_OPTS) 2>&1 | tee hetcats-make
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu $(HC) --make -O -o hets hets.hs $(HC_OPTS) -w 2>&1 | tee hetcats-make
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu ghc --make -package-conf /home/luettich/ghc-pkg/package.conf -package WASH-CGI GUI/hets_cgi.hs -o hets.cgi
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liuhetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files) $(inline_axiom_files)
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu###############################
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu### TAGS files for (x)emacs
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu# load them with "M-x" "visit-tags-table" from
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu# use "M-." to search for a tag
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu# !!Beware this is somewhat instable, because it uses an absolute path!!
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu###############################
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu### count lines of code
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu###############################
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu### Documentation via haddock
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu# index for prelude is missing
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu -t 'hets -- a heterogenous Specification (CASL) tool set'
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu###############################
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### release management
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi LiuderivedSources: $(drifted_files) $(happy_files) hetcats/Version.hs $(inline_axiom_files)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu (cd utils/DrIFT-src; $(HC) --make DrIFT.hs -o ../DrIFT && \
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu $(HC) --make '-i../..:../DrIFT-src' -package text GenerateRules.hs -o ../genRules && \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu $(HC) --make utils/InlineAxioms/InlineAxioms.hs \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu cvs -d :pserver:cvsread@cvs-agbkb.informatik.uni-bremen.de:/repository co HetCATS
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu (cd HetCATS; $(MAKE) derivedSources; ./clean.sh; \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu find . -name CVS -o -name \*.o -o -name \*.hi | xargs $(RM) -r; \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu cp -p hets $(INSTALLDIR)/versions/hets-`cat version_nr`
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu ln -s versions/hets-`cat version_nr` hets; $(RM) version_nr)
d774fc2e7d543b2e264c3b8f7c0c68bd94e1901dMingyi Liu#############################
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### ATC DrIFT-rule generation
d774fc2e7d543b2e264c3b8f7c0c68bd94e1901dMingyi Liu$(generated_rule_files): $(genrule_files) utils/genRules #$(genrule_header_files)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu utils/genRules -r $(rule) -o Modal $(modal_files)
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu utils/genRules -r $(rule) -o CoCASL $(cocasl_files)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu utils/genRules -r $(rule) -o CspCASL $(cspcasl_files)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liugen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liuatc_files := $(filter-out CASL/% HasCASL/% Modal/% CoCASL/% CspCASL/% Haskell/% ,$(genrule_files))
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liuhascasl_files := $(filter HasCASL/% ,$(genrule_files))
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liumodal_files := $(filter Modal/% ,$(genrule_files))
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liucocasl_files := $(filter CoCASL/% ,$(genrule_files))
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liucspcasl_files := $(filter CspCASL/% ,$(genrule_files))
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liuhaskell_files := $(filter Haskell/%,$(genrule_files))
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu###############
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### removes *.hi and *.o in all include directories
6d3ac9939a862b2e4a3ca45f035617ee63738df3Mingyi Liu### remove binaries
9af1cee46dd16ba0c55a904a9d21ee2200bca2aeMingyi Liu### additonally removes *.d (dependency files) in every include directory
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### also delete *.d.bak (dependency file backups)
6d3ac9939a862b2e4a3ca45f035617ee63738df3Mingyi Liu### remove files also in own libraries
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### additionally removes the files that define the sources-variable
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### additionally removes files not in CVS tree
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu# $(RM) $(happy_files)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu####################################################################
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### test targets
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu####################################################################
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### a parser to test annotation parser and Id parsers
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi LiuCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### interactive
d774fc2e7d543b2e264c3b8f7c0c68bd94e1901dMingyi Liu### christian's target
d774fc2e7d543b2e264c3b8f7c0c68bd94e1901dMingyi Liu### CASL parser
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### HasCASL parser
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi LiuHasCASL/hacapa: HasCASL/hacapa.hs Common/*.hs HasCASL/*.hs
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### Haskell parser
6d3ac9939a862b2e4a3ca45f035617ee63738df3Mingyi LiuHaskell/hapa: Haskell/hapa.hs Haskell/Hatchet/*.hs $(happy_files)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### HetCASL parser
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### HetCASL parser
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### ATC test system
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liuatctest2: Common/ATerm/ATermLibTest.hs Common/SimpPretty.hs Common/ATerm/*.hs Common/Lib/*.hs
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### ATerm.Lib test system
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liuatermlibtest: Common/ATerm/ATermLibTest.hs Common/ATerm/*.hs Common/SimpPretty.hs
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### HetCASL with dev graph
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu### run tests in other directories
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu####################################################################
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu## Preparing the version of HetCATS
d774fc2e7d543b2e264c3b8f7c0c68bd94e1901dMingyi Liu $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
6d3ac9939a862b2e4a3ca45f035617ee63738df3Mingyi Liu## two hardcoded dependencies for a correct generation of Version.hs
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liuhetcats/Options.hs hetcats/WriteFn.hs hetcats/ReadFn.hs: hetcats/Version.hs
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu####################################################################
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu## rules for DrIFT
d774fc2e7d543b2e264c3b8f7c0c68bd94e1901dMingyi Liu## rules for inlineAxioms
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu## compiling rules for object and interface files
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu## compiling rules for dependencies
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu####################################################################
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu## Setting a global search path (for dependency files)
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liu## include every .d file in INCLUDE_PATH
cd2265c1c7279c901e34383275e0ca44a11d5d6cMingyi Liusources_hetcats.mk: hetcats-make hetcats/Version.hs hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)