Makefile revision 26f228bf3a3fea810223396e5794c217a79a8d5b
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Author: Klaus L�ttich
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# This Makefile will compile the new hetcats system and provides also
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# targets for test programs during implementation phases.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# !!! Note: This makefile is written for GNU make !!!
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# (gmake on solaris ; make on linux)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## Some varibles, which control the compilation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinINCLUDE_PATH = Static:Common/ATerm:HasCASL:ghc:Modal:Haskell:GUI:hetcats
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark AndrewsCLEAN_PATH = Common/Lib:Common/Lib/Parsec:Common:Logic:CASL:Syntax:$(INCLUDE_PATH)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews### 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 AusteinHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### list of directories to run checks in
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## sources for hetcats (semi - manually produced with a perl script)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
c6d486af36165da7eb970354981d145249e342e4Mark Andrewsdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews# this variable holds the modules that should be documented
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews# the imported parsec library is not included!
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrewsdoc_sources = $(filter-out Common/Lib/% ,$(sources))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews.PHONY : clean d_clean real_clean bin_clean check
c6d486af36165da7eb970354981d145249e342e4Mark Andrewshetcats-make: hets.hs utils/create_sources.pl $(drifted_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make && \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PERL) utils/create_sources.pl hetcats-make sources_hetcats.mk
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews###############################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### TAGS files for (x)emacs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# load them with "M-x" "visit-tags-table" from
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# use "M-." to search for a tag
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# !!Beware this is somewhat instable, because it uses an absolute path!!
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein###############################
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews### Documentation via haddock
7208386cd37a2092c70eddf80cf29519b16c4c80Mark Andrews -t 'HetCATS -- a heterogenous CASL tool set'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein###############
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews### removes *.hi and *.o in all include directories
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes binaries
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additonally removes *.d (dependency files) in every include directory
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### also delete *.d.bak (dependency file backups)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes the files that define the sources-variable
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes files not in CVS tree
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### test targets
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### a parser to test annotation parser and Id parsers
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### interactive
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### christian's target
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### CASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCASL/capa: CASL/capa.lhs $(drifted_files) CASL/*.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### HasCASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHasCASL/hacapa: HasCASL/hacapa.lhs $(drifted_files) HasCASL/*.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Haskell parser
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews### Haskell parser
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews### HetCASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### HetCASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### HetCASL with dev graph
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### run tests in other directories
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## Preparing the version of HetCATS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhetcats/Version.hs: hetcats/Version.in version_nr
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## two hardcoded dependencies for a correct generation of Version.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## rules for DrIFT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## compiling rules for object and interface files
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews## compiling rules for dependencies
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews####################################################################
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews## Setting a global search path (for dependency files)
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews## include every .d file in INCLUDE_PATH