Makefile revision 77a65251ee036c6aaf09c2775315a4ee24259fbd
609b8d08176469485edce25f3c2f50365bbd3819Mark Andrews# hetcats/Makefile
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# $Header$
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# Author: (c) Klaus L�ttich, Christian Maeder, Uni Bremen 2002-2004
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# Year: 2004
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# This Makefile will compile the new hetcats system and provides also
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# targets for test programs during implementation phases.
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# !!! Note: This makefile is written for GNU make !!!
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# (gmake on solaris ; make on linux)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt####################################################################
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt## Some varibles, which control the compilation
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan HuntINCLUDE_PATH = ghc:hetcats
55e5c51e661e23e24573db84114a3837817745c9Evan HuntCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
55e5c51e661e23e24573db84114a3837817745c9Evan HuntCLEAN_PATH = Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Modal:CspCASL:ATC:ToHaskell:Proofs:Comorphisms:$(INCLUDE_PATH):Haskell/Hatchet
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt## set ghc imports properly for your system
55e5c51e661e23e24573db84114a3837817745c9Evan HuntDRIFT_ENV = DERIVEPATH='.:ghc:hetcats:/home/linux-bkb/ghc/ghc-latest/lib/ghc-6.2/imports:${GHC_IMPORTS}'
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan HuntHC = ghc
55e5c51e661e23e24573db84114a3837817745c9Evan HuntPERL = perl
55e5c51e661e23e24573db84114a3837817745c9Evan HuntHAPPY = happy
55e5c51e661e23e24573db84114a3837817745c9Evan HuntDRIFT = $(DRIFT_ENV) utils/DrIFT
55e5c51e661e23e24573db84114a3837817745c9Evan HuntHADDOCK = haddock
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan HuntHC_FLAGS = -fglasgow-exts -Wall
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan HuntHC_INCLUDE = -i$(INCLUDE_PATH)
55e5c51e661e23e24573db84114a3837817745c9Evan HuntHC_PACKAGE = -package-conf ../uni/uni-package.conf -package uni-davinci \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt -package uni-server
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### Profiling and Warnings (only for debugging)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### Attention every module must be compiled with profiling or the linker
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### cannot link the various .o files properly. So after switching on
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### Profiling, do an 'gmake clean; gmake'
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### If you need Profiling comment out the following line
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt#HC_PROF = -prof -auto-all
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan HuntHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
55e5c51e661e23e24573db84114a3837817745c9Evan HuntHC_OPTS = $(HCI_OPTS) $(HC_PROF)
55e5c51e661e23e24573db84114a3837817745c9Evan HuntDRIFT_OPTS = +RTS -K10m -RTS
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### list of directories to run checks in
55e5c51e661e23e24573db84114a3837817745c9Evan HuntTESTDIRS = Common CASL HasCASL
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt####################################################################
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt## sources for hetcats (semi - manually produced with a perl script)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),clean)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),bin_clean)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),d_clean)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),real_clean)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),distclean)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),genRules)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),hets-opt)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),hets-optimized)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),derivedSources)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),release)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),check)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),apache_doc)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),clean_genRules)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntifneq ($(MAKECMDGOALS),atctest2)
55e5c51e661e23e24573db84114a3837817745c9Evan Huntinclude sources_hetcats.mk
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Huntendif
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(gendrifted_files)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntgenrule_header_files = $(wildcard ATC/*.header.hs)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntgenrule_files = Common/Lib/Graph.hs Common/Id.hs Common/Result.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Common/AS_Annotation.der.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Syntax/AS_Structured.der.hs Syntax/AS_Architecture.der.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Common/GlobalAnnotations.hs Syntax/AS_Library.der.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt CASL/Sublogic.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt CASL/Morphism.hs CASL/Sign.hs CASL/AS_Basic_CASL.der.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt HasCASL/Le.hs HasCASL/As.hs HasCASL/Symbol.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt HasCASL/Morphism.hs HasCASL/AsToIds.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt CspCASL/AS_CSP_CASL.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Static/DevGraph.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Haskell/Hatchet/AnnotatedHsSyn.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Haskell/Hatchet/MultiModuleBasics.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Haskell/Hatchet/HsSyn.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Haskell/Hatchet/Representation.hs\
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Haskell/Hatchet/Class.hs Haskell/Hatchet/KindInference.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt Haskell/Hatchet/Env.hs
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntgendrifted_files = ATC/Graph.hs ATC/Id.hs ATC/Result.hs ATC/AS_Annotation.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt ATC/AS_Library.hs ATC/GlobalAnnotations.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt ATC/AS_Structured.hs ATC/AS_Architecture.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt ATC/DevGraph.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt CASL/ATC_CASL.hs Haskell/ATC_Haskell.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt HasCASL/ATC_HasCASL.hs CspCASL/ATC_CspCASL.hs
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntgenerated_rule_files = $(patsubst %.hs,%.der.hs,$(gendrifted_files))
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunthappy_files = Haskell/Hatchet/HsParser.hs
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# this variable holds the modules that should be documented
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# the imported parsec library is not included!
55e5c51e661e23e24573db84114a3837817745c9Evan Huntdoc_sources = $(filter-out Nothing/Nothing% ,$(sources))
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt####################################################################
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### targets
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt.PHONY : clean d_clean real_clean bin_clean check hetana hetpa hetdg \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt clean_genRules genRules
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt.SECONDARY : %.hs %.d $(generated_rule_files)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt#.PRECIOUS: sources_hetcats.mk
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntall: hets
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunthets: $(sources)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(HC) --make -o $@ hets.hs $(HC_OPTS) 2>&1 | tee hetcats-make
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunthets-opt: hetcats/Version.hs
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(MAKE) distclean
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(MAKE) derivedSources
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(MAKE) hets-optimized
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunthets-optimized:
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(HC) --make -O -o hets hets.hs $(HC_OPTS) 2>&1 | tee hetcats-make
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt strip hets
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunthets-old: $(objects)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(RM) $@
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(HC) -o hets $(HC_OPTS) $(objects)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunthetcats-make: hets.hs utils/create_sources.pl $(drifted_files) $(happy_files)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(RM) hetcats-make sources_hetcats.mk
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt###############################
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### TAGS files for (x)emacs
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# load them with "M-x" "visit-tags-table" from
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# "HetCATS/hetcats/hetcats.TAGS"
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# use "M-." to search for a tag
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# !!Beware this is somewhat instable, because it uses an absolute path!!
55e5c51e661e23e24573db84114a3837817745c9Evan Hunthetcats.TAGS: $(sources)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
68357e5241b9eb636da9852f4e5b77cb0a18b866Evan Hunt $(sources); mv TAGS $@; mv tags hetcats.tags
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt###############################
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### Documentation via haddock
68357e5241b9eb636da9852f4e5b77cb0a18b866Evan Huntdoc: docs/index.html
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt# index for prelude is missing
55e5c51e661e23e24573db84114a3837817745c9Evan Huntdocs/index.html: $(doc_sources)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(HADDOCK) $(doc_sources) -o docs -h \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt -i docs/base.haddock \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt -t 'hets -- a heterogenous Specification (CASL) tool set'
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntapache_doc:
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt cvs up -d
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(MAKE) distclean
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(MAKE) hetcats-make
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(RM) docs/*.html
68357e5241b9eb636da9852f4e5b77cb0a18b866Evan Hunt (cd docs; cvs up -d)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(MAKE) doc
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(MAKE) post_doc4apache
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntpost_doc4apache:
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(PERL) utils/post_process_docs.pl docs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt 'Common.Lib.Map.html:Common.Lib._Map.html'
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt cp docs/*.* a-docs/
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(RM) docs/index.html
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt###############################
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### release management
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan HuntderivedSources: $(drifted_files) $(happy_files) hetcats/Version.hs
68357e5241b9eb636da9852f4e5b77cb0a18b866Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntutils/DrIFT:
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt (cd utils/DrIFT-src; $(HC) --make DrIFT.hs -o ../DrIFT)
68357e5241b9eb636da9852f4e5b77cb0a18b866Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntutils/genRules:
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt (cd utils/GenerateRules; \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(HC) --make -i../.. -package text GenerateRules.hs -o ../genRules)
68357e5241b9eb636da9852f4e5b77cb0a18b866Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Huntrelease:
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(RM) -r HetCATS
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt cvs -d :pserver:cvsread@cvs-agbkb.informatik.uni-bremen.de:/repository co HetCATS
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(RM) -r uni
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt ln -s ../uni uni
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt (cd HetCATS; $(MAKE) derivedSources; ./clean.sh; \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt find . -name CVS -o -name \*.o -o -name \*.hi | xargs -r $(RM) -r; \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(RM) clean.*; $(RM) Makefile; mv ReleaseMakefile Makefile)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt tar zcvf HetCATS.tgz HetCATS
68357e5241b9eb636da9852f4e5b77cb0a18b866Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt#############################
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt### ATC DrIFT-rule generation
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan HuntgenRules: $(generated_rule_files) utils/genRules
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt$(generated_rule_files): $(genrule_files) utils/genRules #$(genrule_header_files)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(MAKE) clean_genRules
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(foreach file,$(atc_files),$(gen_atc_files))
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt utils/genRules -r $(rule) -o CASL -h ATC/CASL.header.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(casl_files)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt utils/genRules -r $(rule) -o HasCASL -h ATC/HasCASL.header.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(hascasl_files)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt utils/genRules -r $(rule) -o CspCASL -h ATC/CspCASL.header.hs \
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt $(cspcasl_files)
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt utils/genRules -r $(rule) -o Haskell -h ATC/Haskell.header.hs \
d654c95c96c0e26387d8734b1e1d231e33000e36Evan Hunt $(haskell_files)
d654c95c96c0e26387d8734b1e1d231e33000e36Evan Hunt
d654c95c96c0e26387d8734b1e1d231e33000e36Evan Huntrule = ShATermConvertible
gen_atc_files = if [ -f ATC/$(basename $(basename $(notdir $(file)))).header.hs ]; then \
utils/genRules -r $(rule) -o ATC -h ATC/$(basename $(basename $(notdir $(file)))).header.hs $(file); \
else \
utils/genRules -r $(rule) -o ATC $(file); \
fi ;
atc_files := $(filter-out CASL/% HasCASL/% CspCASL/% Haskell/% ,$(genrule_files))
casl_files := $(filter CASL/% ,$(genrule_files))
hascasl_files := $(filter HasCASL/% ,$(genrule_files))
cspcasl_files := $(filter CspCASL/% ,$(genrule_files))
haskell_files := $(filter Haskell/%,$(genrule_files))
clean_genRules:
$(RM) $(generated_rule_files)
###############
### clean up
### removes *.hi and *.o in all include directories
clean: bin_clean
for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
(cd $$p ; $(RM) *.hi *.o) ; done
### remove binaries
bin_clean:
$(RM) hets
$(RM) test_parser
$(RM) CASL/capa
$(RM) HasCASL/hacapa
$(RM) Haskell/hapa
$(RM) Haskell/wrap
$(RM) Syntax/hetpa
$(RM) Static/hetana
$(RM) Static/hetana
$(RM) GUI/hetdg
$(RM) hetpa
$(RM) hetana
$(RM) hetdg
### additonally removes *.d (dependency files) in every include directory
### also delete *.d.bak (dependency file backups)
d_clean: clean
for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
(cd $$p ; $(RM) *.d *.d.bak) ; done
### remove files also in own libraries
lib_clean: clean
for p in $(subst :, ,$(COMMONLIB_PATH)) . ; do \
(cd $$p ; $(RM) *.hi *.d *.o) ; done
### additionally removes the files that define the sources-variable
real_clean: bin_clean lib_clean
$(RM) hetcats-make sources_hetcats.mk
### additionally removes files not in CVS tree
distclean: real_clean clean_genRules d_clean
$(RM) hetcats/Version.hs
$(RM) $(drifted_files)
$(RM) $(happy_files)
####################################################################
### 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.hs Common/*.hs CASL/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### HasCASL parser
hacapa: HasCASL/hacapa
HasCASL/hacapa: HasCASL/hacapa.hs CASL/capa HasCASL/*.hs
$(RM) $@
$(HC) --make -o $@ $< $(HC_OPTS)
### Haskell parser
hapa: Haskell/hapa
Haskell/hapa: Haskell/hapa.hs Haskell/Hatchet/*.hs $(happy_files)
$(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)
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: %.der.hs utils/DrIFT
$(DRIFT) $(DRIFT_OPTS) $< > $@
## 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),derivedSources)
ifneq ($(MAKECMDGOALS),release)
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
endif
endif