Makefile revision b9625461755578f3eed04676d42a63fd2caebd0c
c78c39caab4cf8b5daefc9c65878f7f5ed3eb7a0Tinderbox User# Author: Klaus L�ttich
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews# This Makefile will compile the new hetcats system and provides also
c57668a2fbbe558c1bd21652813616f2f517c469Tinderbox User# targets for test programs during implementation phases.
287a6a8f9040dc43560cd69cddf83bfc0f53b76fTinderbox User# !!! Note: This makefile is written for GNU make !!!
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews# (gmake on solaris ; make on linux)
e5a6871cd0635ecdb2bf792316a2d8c53206f4b2Tinderbox User####################################################################
950d203b64f512b85fcc093ee1e9e3e531a1aea3Tinderbox User## Some varibles, which control the compilation
3759f10fc543747668b1ca4b4671f35b0dea8445Francis DupontCOMMONLIB_PATH = Common/Lib:Common/Lib/Parsec:Common/ATerm
e676a596869d8a80a644c99a848afb53d1c5975eMark AndrewsCLEAN_PATH = Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Haskell/Language:Modal:CSP-CASL:$(INCLUDE_PATH)
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox UserHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User### Profiling and Warnings (only for debugging)
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews### Attention every module must be compiled with profiling or the linker
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews### cannot link the various .o files properly. So after switching on
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User### Profiling, do an 'gmake clean; gmake'
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews### If you need Profiling comment out the following line
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User#HC_PROF = -prof -auto-all -Wall
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox UserHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews### list of directories to run checks in
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt####################################################################
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User## sources for hetcats (semi - manually produced with a perl script)
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrewsdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# this variable holds the modules that should be documented
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater# the imported parsec library is not included!
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsdoc_sources = $(filter-out Common/Lib/% ,$(sources))
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User####################################################################
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews.PHONY : clean d_clean real_clean bin_clean check
294e9d4c34462d29a3e766c88f452b46aeb3702fTinderbox Userhetcats-make: hets.hs utils/create_sources.pl $(drifted_files)
4c6bae917bec70e1fc4d1b761a9765075af78441Tinderbox User $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make && \
294e9d4c34462d29a3e766c88f452b46aeb3702fTinderbox User $(PERL) utils/create_sources.pl hetcats-make sources_hetcats.mk
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt###############################
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt### TAGS files for (x)emacs
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# load them with "M-x" "visit-tags-table" from
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt# use "M-." to search for a tag
7cc0a5d21ef046bfd630c4769943d896a7d7472cTinderbox User# !!Beware this is somewhat instable, because it uses an absolute path!!
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews###############################
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User### Documentation via haddock
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User -t 'HetCATS -- a heterogenous CASL tool set'
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User###############
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User### removes *.hi and *.o in all include directories
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews### remove binaries
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User### additonally removes *.d (dependency files) in every include directory
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews### also delete *.d.bak (dependency file backups)
a450977e98155f6e828fe6f8d52cf24674231831Mark Andrews### remove files also in own libraries
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews for p in $(subst :, ,$(COMMONLIB_PATH):$(CLEANPATH)) . ; do \
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews### additionally removes the files that define the sources-variable
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews### additionally removes files not in CVS tree
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews####################################################################
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews### test targets
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews####################################################################
5747235bf35e7398984fd6b4632743396895ea7aTinderbox User### a parser to test annotation parser and Id parsers
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox UserCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User### interactive
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User### christian's target
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User### CASL parser
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox UserCASL/capa: CASL/capa.lhs Common/*.hs CASL/*.hs
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User### HasCASL parser
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsHasCASL/hacapa: HasCASL/hacapa.lhs CASL/capa HasCASL/*.hs
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews### Haskell parser
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox UserHaskell/hapa: Haskell/hapa.lhs Haskell/*.hs $(drifted_files) Haskell/Language/Parser.hs
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox UserHaskell/Language/Parser.hs: Haskell/Language/Parser.ly
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson### Haskell wrap parser
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User### HetCASL parser
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updater### HetCASL parser
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox Userhetana: Static/hetana.hs $(drifted_files) *.hs
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User### HetCASL with dev graph
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User### run tests in other directories
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User####################################################################
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews## Preparing the version of HetCATS
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox Userhetcats/Version.hs: hetcats/Version.in version_nr
ac2e2800b4ac9cbe4cb756d967f4583c611eb75eMark Andrews $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
70d987def5a58ebeb8243017c0ec2e9b2c326cf4Evan Hunt## two hardcoded dependencies for a correct generation of Version.hs
bac4435d473c9a0281507524f084480c34aa942aTinderbox User####################################################################
933799f3641f4f78445d015008bad0038900a82aTinderbox User## rules for DrIFT
f525041ae26958385b697cf82a30f108577024b6Tinderbox User## compiling rules for object and interface files
933799f3641f4f78445d015008bad0038900a82aTinderbox User## compiling rules for dependencies
19b3dc94bce93fa76bd7e066f9298630dbc9dcb4Automatic Updater $(HC) -M $< $(HC_OPTS) -optdep-f -optdep$@
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater####################################################################
bac4435d473c9a0281507524f084480c34aa942aTinderbox User## Setting a global search path (for dependency files)
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater## include every .d file in INCLUDE_PATH