rules revision 88c800932dd7053322501ea2039d9f234be6866c
6ea1b817e31b89a627e146fe69e23ea0a64c89ecBob Halley
9a5087bf58f651bfff841192aba5afd06760d6ceTinderbox User# hetcats/Makefile
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews# $Id$
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Author: Klaus L�ttich
4a14ce5ba00ab7bc55c99ffdcf59c7a4ab902721Automatic Updater# Year: 2003
6ea1b817e31b89a627e146fe69e23ea0a64c89ecBob Halley
6ea1b817e31b89a627e146fe69e23ea0a64c89ecBob Halley# This Makefile will compile the new hetcats system and provides also
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# targets for test programs during implementation phases.
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews# !!! Note: This makefile is written for GNU make !!!
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# (gmake on solaris ; make on linux)
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews####################################################################
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews## Some varibles, which control the compilation
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews
6ea1b817e31b89a627e146fe69e23ea0a64c89ecBob HalleyINCLUDE_PATH = ghc:hetcats
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLEAN_PATH = Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Haskell/Language:Modal:CspCASL:$(INCLUDE_PATH)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:/home/linux-bkb/ghc/ghc-latest/lib/ghc-6.0/imports'
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC = ghc
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserPERL = perl
9a5087bf58f651bfff841192aba5afd06760d6ceTinderbox UserHAPPY = happy
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserDRIFT = $(DRIFT_ENV) $(PERL) utils/DrIFT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAG = $(PERL) utils/ag
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserHADDOCK = $(PERL) utils/haddock
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC_INCLUDE = -i$(INCLUDE_PATH)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAG_FLAGS = -mdcfs
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### Profiling and Warnings (only for debugging)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Attention every module must be compiled with profiling or the linker
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### 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 -Wall
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
9d557856c2a19ec95ee73245f60a92f8675cf5baTinderbox UserHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC_OPTS = $(HCI_OPTS) $(HC_PROF)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinDRIFT_OPTS = +RTS -K10 -RTS
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
9fbbfb5757a1e3e86d7dea62c4e63ffc2303ca2bAutomatic Updater### list of directories to run checks in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTESTDIRS = CASL HasCASL test
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User## sources for hetcats (semi - manually produced with a perl script)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),clean)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userifneq ($(MAKECMDGOALS),bin_clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),d_clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),real_clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),distclean)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userifneq ($(MAKECMDGOALS),genRules)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),apache_doc)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userifneq ($(MAKECMDGOALS),clean_genRules)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininclude sources_hetcats.mk
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userendif
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userendif
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews $(gendrifted_files)
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usergenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs Common/AS_Annotation.der.hs Common/Named.hs \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User CASL/Morphism.hs CASL/StaticAna.hs CASL/AS_Basic_CASL.der.hs \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews Haskell/Language/Syntax.hs \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews HasCASL/Le.hs HasCASL/As.hs HasCASL/Symbol.hs HasCASL/Morphism.hs \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews CspCASL/AS_CSP_CASL.hs \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Static/DevGraph.hs
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usergendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs ATC/Named.hs \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews ATC/AS_Library.hs ATC/GlobalAnnotations.hs \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews ATC/AS_Structured.hs ATC/AS_Architecture.hs ATC/DevGraph.hs \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews CASL/ATC_CASL.hs Haskell/ATC_Haskell.hs HasCASL/ATC_HasCASL.hs CspCASL/ATC_CspCASL.hs
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews
731cc132f22dbc9e0ecd7035dce314a61076d31bAutomatic Updatergenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhappy_files = Haskell/Language/Parser.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))
731cc132f22dbc9e0ecd7035dce314a61076d31bAutomatic Updater
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### targets
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg hets all clean_genRules genRules
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User.SECONDARY : %.hs %.d $(generated_rule_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#.PRECIOUS: sources_hetcats.mk
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinall: hets
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhets: $(sources)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(HC) --make -o $@ hets.hs $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userhets-old: $(objects)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) -o hets $(HC_OPTS) $(objects)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrewshetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) hetcats-make sources_hetcats.mk
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make && \
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews $(PERL) utils/create_sources.pl hetcats-make sources_hetcats.mk
18fa75b694d056da4be3ebfc2185d007d4882752Automatic Updater
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User###############################
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews### TAGS files for (x)emacs
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# load them with "M-x" "visit-tags-table" from
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# "HetCATS/hetcats/hetcats.TAGS"
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# use "M-." to search for a tag
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews# !!Beware this is somewhat instable, because it uses an absolute path!!
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrewshetcats.TAGS: $(sources)
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
9d557856c2a19ec95ee73245f60a92f8675cf5baTinderbox User $(sources); mv TAGS $@; mv tags hetcats.tags
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews###############################
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### Documentation via haddock
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindoc: docs/index.html utils/hd-lib
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindocs/index.html: $(doc_sources)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HADDOCK) $(doc_sources) -o docs -h \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User -i/home/linux-bkb/ghc/ghc-6.0/share/ghc-6.0/html/base,/home/linux-bkb/ghc/ghc-6.0/share/ghc-6.0/html/base/base.haddock \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -t 'hets -- a heterogenous Specification (CASL) tool set'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinapache_doc:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User cvs up -d
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(MAKE) distclean
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(MAKE) hetcats-make
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) docs/*.html
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(MAKE) doc
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PERL) utils/post_process_docs.pl docs \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User 'Common.Lib.Map.html:Common.Lib._Map.html'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein mv docs/* a-docs/
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein##########################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### DrIFT-rule generation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(generated_rule_files): genRules
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UsergenRules: $(genrule_files) 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)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox 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
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userrule = ShATermConvertible
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usergen_atc_files = if [ -e 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); \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User fi ;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinatc_files := $(filter-out CASL/% HasCASL/% CspCASL/% Haskell/% ,$(genrule_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincasl_files := $(filter CASL/% ,$(genrule_files))
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userhascasl_files := $(filter HasCASL/% ,$(genrule_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincspcasl_files := $(filter CspCASL/% ,$(genrule_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhaskell_files := $(filter Haskell/%,$(genrule_files))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinclean_genRules:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) ATC/*.der.hs CASL/ATC_CASL.der.hs HasCASL/ATC_HasCASL.der.hs Haskell/ATC_Haskell.der.hs CspCASL/ATC_CspCASL.der.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User###############
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### clean up
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### removes *.hi and *.o in all include directories
d71e2e0c61df16ff37c9934c371a4a60c08974f7Mark Andrewsclean: bin_clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (cd $$p ; $(RM) *.hi *.o) ; done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### remove binaries
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userbin_clean:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hets
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) test_parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) CASL/capa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) HasCASL/hacapa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Haskell/hapa
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) Haskell/wrap
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Syntax/hetpa
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) Static/hetana
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Static/hetana
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) GUI/hetdg
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetpa
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) hetana
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) hetdg
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### additonally removes *.d (dependency files) in every include directory
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### also delete *.d.bak (dependency file backups)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userd_clean: clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (cd $$p ; $(RM) *.d *.d.bak) ; done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### remove files also in own libraries
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlib_clean: clean
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User for p in $(subst :, ,$(COMMONLIB_PATH)) . ; do \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (cd $$p ; $(RM) *.hi *.d *.o) ; done
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User### additionally removes the files that define the sources-variable
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userreal_clean: bin_clean lib_clean
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) hetcats-make sources_hetcats.mk
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $(RM) AS_*.hs
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes files not in CVS tree
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userdistclean: real_clean clean_genRules d_clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetcats/Version.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $(drifted_files)
$(RM) Haskell/Language/Parser.hs
####################################################################
### test targets
####################################################################
### a parser to test annotation parser and Id parsers
test_parser: Common/test_parser
Common/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### interactive
ghci:
$(HC)i $(HCI_OPTS)
### christian's target
### CASL parser
capa: CASL/capa
CASL/capa: CASL/capa.lhs Common/*.hs CASL/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### HasCASL parser
hacapa: HasCASL/hacapa
HasCASL/hacapa: HasCASL/hacapa.lhs CASL/capa HasCASL/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### Haskell parser
hapa: Haskell/hapa
Haskell/hapa: Haskell/hapa.lhs Haskell/*.hs Haskell/Language/*.hs $(happy_files)
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### Haskell wrap parser
wrap: Haskell/wrap
Haskell/wrap: Haskell/wrap.lhs Haskell/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### HetCASL parser
hetpa: Syntax/hetpa.hs Syntax/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### HetCASL parser
hetana: Static/hetana.hs Static/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### ATC test system
atctest: ATC/ATCTest.hs ATC/*.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/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
endif
endif
endif
endif
endif
endif
endif