Makefile revision 470ca7a2797069ae4b27c34c1b71419f67be1f84
c7ef13f6c9ef4436bc804b150e0a93307b11fa27Tinderbox User# Author: Klaus L�ttich
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User# This Makefile will compile the new hetcats system and provides also
c57668a2fbbe558c1bd21652813616f2f517c469Tinderbox User# targets for test programs during implementation phases.
137fdbc214e99c4cbe57551e9e14f2015c2e42aeTinderbox User# !!! Note: This makefile is written for GNU make !!!
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User# (gmake on solaris ; make on linux)
02b47c5d62e1e827743684c28a08e871da454a2dMark Andrews####################################################################
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User## Some varibles, which control the compilation
e20309353e6246485c521278131d3fced73d7957Tinderbox UserCLEAN_PATH = Common/Lib:Common/Lib/Parsec:Common:Logic:CASL:Syntax:Static:GUI:HasCASL:Haskell:Haskell/Language:Modal:CSP-CASL:$(INCLUDE_PATH)
df4ebd8217d02dafc12145b55c4d93d0255d1ec7Tinderbox UserHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson### Profiling and Warnings (only for debugging)
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater### Attention every module must be compiled with profiling or the linker
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User### cannot link the various .o files properly. So after switching on
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User### Profiling, do an 'gmake clean; gmake'
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt### If you need Profiling comment out the following line
e130ab53e992670e2a2ecf043976ac09f21358d1Automatic Updater#HC_PROF = -prof -auto-all -Wall
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater### list of directories to run checks in
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User####################################################################
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt## sources for hetcats (semi - manually produced with a perl script)
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox Userobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsdrifted_files = Syntax/AS_Architecture.hs Syntax/AS_Library.hs\
24934f08b9ff81c2be711e566e8002d145573031Tinderbox User Common/AS_Annotation.hs CASL/AS_Basic_CASL.hs Syntax/AS_Structured.hs
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# this variable holds the modules that should be documented
7feccf248d2a20a2ae48b290f58ded5abc853e9aTinderbox User# the imported parsec library is not included!
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsdoc_sources = $(filter-out Common/Lib/% ,$(sources))
80faf1588895fd26490f82f95a7a1b771df1c324Automatic Updater####################################################################
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews.PHONY : clean d_clean real_clean bin_clean check
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrewshetcats-make: hets.hs utils/create_sources.pl $(drifted_files)
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson $(HC) --make -o hets $< $(HC_OPTS) 2>&1 | tee hetcats-make && \
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater $(PERL) utils/create_sources.pl hetcats-make sources_hetcats.mk
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson###############################
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater### TAGS files for (x)emacs
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews# load them with "M-x" "visit-tags-table" from
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews# use "M-." to search for a tag
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User# !!Beware this is somewhat instable, because it uses an absolute path!!
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews###############################
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews### Documentation via haddock
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews -t 'HetCATS -- a heterogenous CASL tool set'
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User###############
bed0874e1a09e810575328c4bfc346a47514b69fMark Andrews### removes *.hi and *.o in all include directories
a308b69ac66fadf66863484f301314d6e6a3f1d2Automatic Updater### additionally removes binaries
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater### additonally removes *.d (dependency files) in every include directory
fa0326cc2cf428f67575b6ba3b97b528a31b0010Tinderbox User### also delete *.d.bak (dependency file backups)
f2770f6b39a9b2a98afb7a11ed105f73f1570c1eAutomatic Updater### additionally removes the files that define the sources-variable
aa1d397c4736cd86540555193d71e55fa3b37b2aMark Andrews### additionally removes files not in CVS tree
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updater####################################################################
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updater### test targets
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updater####################################################################
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson### a parser to test annotation parser and Id parsers
5f7586ddbd3edd11272cdd30ed613d936129328bTinderbox UserCommon/test_parser: Common/test_parser.hs Common/AS_Annotation.der.hs
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User### interactive
f132a836c4e386b1af045dd8fe7106ae61b90bffAutomatic Updater### christian's target
d642d3857129678797a01adee14fbd70335b05a9Mark Andrews### CASL parser
5f33078b538b3d317917deb962bd057b2a888db1Tinderbox UserCASL/capa: CASL/capa.lhs Common/*.hs CASL/*.hs
8711e5c73ca872d59810760af0332194cbdd619bAutomatic Updater### HasCASL parser
91d187ce035f39073f0732ff2a401a45c3c955fbMark AndrewsHasCASL/hacapa: HasCASL/hacapa.lhs CASL/capa HasCASL/*.hs
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews### Haskell parser
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic UpdaterHaskell/hapa: Haskell/hapa.lhs Haskell/*.hs $(drifted_files) Haskell/Language/Parser.hs
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic UpdaterHaskell/Language/Parser.hs: Haskell/Language/Parser.ly
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater### Haskell wrap parser
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic UpdaterHaskell/wrap: Haskell/wrap.lhs Haskell/*.hs
7f94d9a8162c9a96b56e66176702b66e79d8e1a2Automatic Updater### HetCASL parser
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updaterhetpa: Syntax/hetpa.hs $(drifted_files) *.hs
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews### HetCASL parser
6a9d2121152c94cb9e35832126c3f2e4d18d81edTinderbox Userhetana: Static/hetana.hs $(drifted_files) *.hs
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater### HetCASL with dev graph
8638278ed8ce58c4709477d250d109dd5b3ccc70Tinderbox User $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews### run tests in other directories
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
6a9d2121152c94cb9e35832126c3f2e4d18d81edTinderbox User####################################################################
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews## Preparing the version of HetCATS
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewshetcats/Version.hs: hetcats/Version.in version_nr
27c3c21f41520e8d6336d80a8094389e321cb6d2Mark Andrews $(PERL) utils/build_version.pl version_nr < hetcats/Version.in > $@
551271d8198ae06e37edf5da519d8ee153eeac0fTinderbox User## two hardcoded dependencies for a correct generation of Version.hs
bbc0e1c4f47f101c4a64db3469352c49a49e734fTinderbox User####################################################################
f751b1576ee6fef4023bf7101d10167e4fe520f3Tinderbox User## rules for DrIFT
a382ca49c874d38ad3ac8995b49f9f27128e4ca9Automatic Updater## compiling rules for object and interface files
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews## compiling rules for dependencies
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson $(HC) -M $< $(HC_OPTS) -optdep-f -optdep$@
0b57424d28c9a67018107133f9fbc0a7dcf057e2Mark Andrews####################################################################
0b57424d28c9a67018107133f9fbc0a7dcf057e2Mark Andrews## Setting a global search path (for dependency files)
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews## include every .d file in INCLUDE_PATH