Makefile revision c55a0f77be7e88d3620b419ec8961f4379a586e3
d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark Andrews# hetcats/Makefile
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson# $Id$
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User# Author: Klaus L�ttich
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Year: 2003
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User# This Makefile will compile the new hetcats system and provides also
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User# targets for test programs during implementation phases.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark Andrews# !!! Note: This makefile is written for GNU make !!!
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# (gmake on solaris ; make on linux)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User## Some varibles, which control the compilation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserINCLUDE_PATH = ghc:hetcats
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserCLEAN_PATH = Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Haskell/Language:Modal:CspCASL:ATC:ToHaskell:Proofs:Comorphisms:$(INCLUDE_PATH):Haskell/Hatchet
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:/home/linux-bkb/ghc/ghc-latest/lib/ghc-6.0.1/imports'
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserHC = ghc
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserPERL = perl
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserHAPPY = happy
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserDRIFT = $(DRIFT_ENV) $(PERL) utils/DrIFT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAG = $(PERL) utils/ag
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserHADDOCK = $(PERL) utils/haddock
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User# please remove '-O2' if compilation lasts to long on your system
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User# but please don't commit to cvs server
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserHC_INCLUDE = -i$(INCLUDE_PATH)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci \
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User -package uni-server
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserAG_FLAGS = -mdcfs
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Profiling and Warnings (only for debugging)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User### Attention every module must be compiled with profiling or the linker
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User### cannot link the various .o files properly. So after switching on
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Profiling, do an 'gmake clean; gmake'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### If you need Profiling comment out the following line
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#HC_PROF = -prof -auto-all
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC_OPTS = $(HCI_OPTS) $(HC_PROF)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinDRIFT_OPTS = +RTS -K10 -RTS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### list of directories to run checks in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTESTDIRS = CASL HasCASL test
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## sources for hetcats (semi - manually produced with a perl script)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userifneq ($(MAKECMDGOALS),clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),bin_clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),d_clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),real_clean)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userifneq ($(MAKECMDGOALS),distclean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),genRules)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),apache_doc)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),clean_genRules)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userifneq ($(MAKECMDGOALS),atctest2)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininclude sources_hetcats.mk
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userendif
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox Userendif
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(gendrifted_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeingenrule_header_files = $(wildcard ATC/*.header.hs)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeingenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Common/AS_Annotation.der.hs Common/Named.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein CASL/Sublogic.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein CASL/Morphism.hs CASL/StaticAna.hs CASL/AS_Basic_CASL.der.hs \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User HasCASL/Le.hs HasCASL/As.hs HasCASL/Symbol.hs \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User HasCASL/Morphism.hs HasCASL/AsToIds.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein CspCASL/AS_CSP_CASL.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Static/DevGraph.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Haskell/Hatchet/AnnotatedHsSyn.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Haskell/Hatchet/MultiModuleBasics.hs \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User Haskell/Hatchet/HsSyn.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Haskell/Hatchet/Representation.hs\
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Haskell/Hatchet/Env.hs
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeingendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ATC/Named.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ATC/AS_Library.hs ATC/GlobalAnnotations.hs \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User ATC/AS_Structured.hs ATC/AS_Architecture.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ATC/DevGraph.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein CASL/ATC_CASL.hs Haskell/ATC_Haskell.hs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein HasCASL/ATC_HasCASL.hs CspCASL/ATC_CspCASL.hs
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeingenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userhappy_files = Haskell/Language/Parser.hs Haskell/Hatchet/HsParser.hs
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# this variable holds the modules that should be documented
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the imported parsec library is not included!
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindoc_sources = $(filter-out Nothing/Nothing% ,$(sources))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### targets
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User clean_genRules genRules
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein.SECONDARY : %.hs %.d $(generated_rule_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#.PRECIOUS: sources_hetcats.mk
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinall: hets
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhets: $(sources)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User $(HC) --make -o $@ hets.hs $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhets-opt: $(sources)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User $(MAKE) real_clean
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(MAKE) hets-optimized
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhets-optimized: $(sources)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -O -o $@ hets.hs $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhets-old: $(objects)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User $(HC) -o hets $(HC_OPTS) $(objects)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetcats-make sources_hetcats.mk
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein###############################
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User### TAGS files for (x)emacs
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# load them with "M-x" "visit-tags-table" from
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# "HetCATS/hetcats/hetcats.TAGS"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# use "M-." to search for a tag
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# !!Beware this is somewhat instable, because it uses an absolute path!!
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhetcats.TAGS: $(sources)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(sources); mv TAGS $@; mv tags hetcats.tags
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein###############################
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User### Documentation via haddock
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindoc: docs/index.html utils/hd-lib
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userdocs/index.html: $(doc_sources)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HADDOCK) $(doc_sources) -o docs -h \
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User --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 \
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User -t 'hets -- a heterogenous Specification (CASL) tool set'
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox Userapache_doc:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User cvs up -d
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(MAKE) distclean
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(MAKE) hetcats-make
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) docs/*.html
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(MAKE) doc
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(MAKE) post_doc4apache
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox Userpost_doc4apache:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PERL) utils/post_process_docs.pl docs \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'Common.Lib.Map.html:Common.Lib._Map.html'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein mv docs/* a-docs/
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#############################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### ATC DrIFT-rule generation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteingenRules: $(generated_rule_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(generated_rule_files): $(genrule_files)# $(genrule_header_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(MAKE) clean_genRules
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(foreach file,$(atc_files),$(gen_atc_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein utils/genRules -r $(rule) -o CASL -h ATC/CASL.header.hs $(casl_files)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs $(hascasl_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein utils/genRules -r $(rule) -o CspCASL -h ATC/CspCASL.header.hs $(cspcasl_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs $(haskell_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinrule = ShATermConvertible
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeingen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein else \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein utils/genRules -r $(rule) -o ATC $(file); \
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User fi ;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafssonatc_files := $(filter-out CASL/% HasCASL/% CspCASL/% Haskell/% ,$(genrule_files))
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafssoncasl_files := $(filter CASL/% ,$(genrule_files))
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonhascasl_files := $(filter HasCASL/% ,$(genrule_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincspcasl_files := $(filter CspCASL/% ,$(genrule_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhaskell_files := $(filter Haskell/%,$(genrule_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox Userclean_genRules:
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson $(RM) $(generated_rule_files)
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson###############
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson### clean up
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson### removes *.hi and *.o in all include directories
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafssonclean: bin_clean
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson (cd $$p ; $(RM) *.hi *.o) ; done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### remove binaries
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinbin_clean:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hets
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(RM) test_parser
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(RM) CASL/capa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) HasCASL/hacapa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Haskell/hapa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Haskell/wrap
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Syntax/hetpa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Static/hetana
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Static/hetana
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) GUI/hetdg
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetpa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetana
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetdg
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User### additonally removes *.d (dependency files) in every include directory
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User### also delete *.d.bak (dependency file backups)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeind_clean: clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (cd $$p ; $(RM) *.d *.d.bak) ; done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### remove files also in own libraries
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlib_clean: clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for p in $(subst :, ,$(COMMONLIB_PATH)) . ; do \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (cd $$p ; $(RM) *.hi *.d *.o) ; done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes the files that define the sources-variable
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinreal_clean: bin_clean lib_clean
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(RM) hetcats-make sources_hetcats.mk
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes files not in CVS tree
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindistclean: real_clean clean_genRules d_clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetcats/Version.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $(drifted_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $(happy_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### test targets
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User####################################################################
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User### a parser to test annotation parser and Id parsers
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usertest_parser: Common/test_parser
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox UserCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### interactive
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinghci:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC)i $(HCI_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### christian's target
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### CASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincapa: CASL/capa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCASL/capa: CASL/capa.lhs Common/*.hs CASL/*.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### HasCASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhacapa: HasCASL/hacapa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHasCASL/hacapa: HasCASL/hacapa.lhs CASL/capa HasCASL/*.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Haskell parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhapa: Haskell/hapa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHaskell/hapa: Haskell/hapa.lhs Haskell/*.hs Haskell/Language/*.hs $(happy_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User### Haskell wrap parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinwrap: Haskell/wrap
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHaskell/wrap: Haskell/wrap.lhs Haskell/*.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(HC) --make -o $@ $< $(HC_OPTS)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### HetCASL parser
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox Userhetpa: Syntax/hetpa.hs Syntax/*.hs
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(RM) $@
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $(HC) --make -o $@ $< $(HC_OPTS)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### HetCASL parser
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox Userhetana: Static/hetana.hs Static/*.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
### ATC test system
atctest: ATC/ATCTest.hs ATC/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
atctest2: ATC/ATCTest2.hs Common/SimpPretty.hs Common/ATerm/*.hs Common/Lib/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### ATerm.Lib test system
atermlibtest: Common/ATerm/ATermLibTest.hs Common/ATerm/*.hs Common/SimpPretty.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### HetCASL with dev graph
hetdg: GUI/hetdg.hs $(drifted_files) *.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
### run tests in other directories
check: hetcats
for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
####################################################################
## Preparing the version of HetCATS
hetcats/Version.hs: hetcats/Version.in version_nr
$(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
## two hardcoded dependencies for a correct generation of Version.hs
hetcats/Options.hs hetcats/WriteFn.hs hetcats/ReadFn.hs: hetcats/Version.hs
hets.hs: hetcats/Version.hs
####################################################################
## rules for DrIFT
%.hs: %.ly
$(HAPPY) $<
#%.hs: %.ag.hs
# $(AG) $<
%.hs: %.der.hs
$(DRIFT) $(DRIFT_OPTS) $< > $@
#%.hs: %.ag
# $(AG) $< -o $@
%.lhs: %.der.lhs
$(DRIFT) $< > $@
## compiling rules for object and interface files
%.o %.hi: %.hs
$(HC) -c $< $(HC_OPTS)
%.o %.hi: %.lhs
$(HC) -c $< $(HC_OPTS)
## compiling rules for dependencies
%.d : %.hs
$(HC) -M $< $(HC_OPTS) -optdep-f -optdep$@
%.d : %.lhs
$(HC) -M $< $(HC_OPTS) -optdep-f -optdep$@
####################################################################
## Setting a global search path (for dependency files)
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),real_clean)
ifneq ($(MAKECMDGOALS),d_clean)
ifneq ($(MAKECMDGOALS),real_clean)
ifneq ($(MAKECMDGOALS),distclean)
ifneq ($(MAKECMDGOALS),genRules)
ifneq ($(MAKECMDGOALS),clean_genRules)
ifeq ($(MAKECMDGOALS),hets-old)
## include every .d file in INCLUDE_PATH
-include $(objects:.o=.d)
endif
sources_hetcats.mk: hetcats-make hetcats/Version.hs hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)
$(PERL) utils/create_sources.pl hetcats-make sources_hetcats.mk
endif
endif
endif
endif
endif
endif
endif