Makefile revision 26f228bf3a3fea810223396e5794c217a79a8d5b
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews# hetcats/Makefile
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews# $Id$
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Author: Klaus L�ttich
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Year: 2003
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# This Makefile will compile the new hetcats system and provides also
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# targets for test programs during implementation phases.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# !!! Note: This makefile is written for GNU make !!!
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# (gmake on solaris ; make on linux)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## Some varibles, which control the compilation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
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 Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC = ghc
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPERL = perl
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinDRIFT = $(PERL) utils/DrIFT
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark AndrewsAG = $(PERL) utils/ag
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHADDOCK = $(PERL) utils/haddock
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC_FLAGS = -fglasgow-exts -fallow-overlapping-instances -Wall
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC_INCLUDE = -i$(INCLUDE_PATH)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC_PACKAGE = -package data
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAG_FLAGS = -mdcfs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
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 Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHCI_OPTS = $(HC_FLAGS) $(HC_PACKAGE) $(HC_INCLUDE)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHC_OPTS = $(HCI_OPTS) $(HC_PROF)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### list of directories to run checks in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTESTDIRS = CASL HasCASL test
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## sources for hetcats (semi - manually produced with a perl script)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),bin_clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),d_clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),real_clean)
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrewsifneq ($(MAKECMDGOALS),distclean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininclude sources_hetcats.mk
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
c6d486af36165da7eb970354981d145249e342e4Mark Andrewsendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
c6d486af36165da7eb970354981d145249e342e4Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinobjects = $(patsubst %.lhs,%.o,$(sources:%.hs=%.o))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
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
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
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))
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews### targets
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews.PHONY : clean d_clean real_clean bin_clean check
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews.SECONDARY : %.hs %.d
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#.PRECIOUS: sources_hetcats.mk
a53c45b2b8e778663ea51834272169dc946b6672Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhets: $(objects)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews $(HC) -o $@ $(HC_OPTS) $(objects)
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews
c6d486af36165da7eb970354981d145249e342e4Mark Andrewshetcats-make: hets.hs utils/create_sources.pl $(drifted_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetcats-make sources_hetcats.mk
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
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews###############################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### TAGS files for (x)emacs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# load them with "M-x" "visit-tags-table" from
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews# "HetCATS/hetcats/hetcats.TAGS"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# use "M-." to search for a tag
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# !!Beware this is somewhat instable, because it uses an absolute path!!
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrewshetcats.TAGS: $(sources)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein /home/ger/linux/ghc-5.04.2/bin/i386-unknown-linux/hasktags \
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews $(sources); mv TAGS $@; mv tags hetcats.tags
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein###############################
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews### Documentation via haddock
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindoc: docs/index.html utils/hd-lib
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrewsdocs/index.html: $(doc_sources)
24e79a68e1b16324e17364fcd8959379ff6e20e9Mark Andrews $(HADDOCK) $(doc_sources) -o docs -h \
7208386cd37a2092c70eddf80cf29519b16c4c80Mark Andrews -t 'HetCATS -- a heterogenous CASL tool set'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein###############
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### clean up
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews### removes *.hi and *.o in all include directories
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrewsclean:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews (cd $$p ; $(RM) *.hi *.hi.bak *.o) ; done
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes binaries
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinbin_clean: clean
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews $(RM) hets
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) CASL/capa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) HasCASL/hacapa
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews $(RM) Syntax/hetpa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) Static/hetana
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) GUI/hetdg
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additonally removes *.d (dependency files) in every include directory
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### also delete *.d.bak (dependency file backups)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeind_clean: clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for p in $(subst :, ,$(CLEAN_PATH)) . ; do \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (cd $$p ; $(RM) *.d *.d.bak) ; done
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes the files that define the sources-variable
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinreal_clean: d_clean bin_clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetcats-make sources_hetcats.mk
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### additionally removes files not in CVS tree
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindistclean: real_clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) hetcats/Version.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $(drifted_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### test targets
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### a parser to test annotation parser and Id parsers
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeintest_parser: test_parser.hs $(drifted_files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### interactive
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinghci:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC)i $(HCI_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### christian's target
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### CASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincapa: CASL/capa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCASL/capa: CASL/capa.lhs $(drifted_files) CASL/*.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### HasCASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhacapa: HasCASL/hacapa
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHasCASL/hacapa: HasCASL/hacapa.lhs $(drifted_files) HasCASL/*.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Haskell parser
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewshapa: Haskell/hapa
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsHaskell/hapa: Haskell/hapa.lhs Haskell/*.hs
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews $(RM) $@
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews $(HC) --make -o $@ $< $(HC_OPTS)
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews### Haskell parser
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewswrap: Haskell/wrap
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsHaskell/wrap: Haskell/wrap.lhs Haskell/*.hs
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews $(RM) $@
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews $(HC) --make -o $@ $< $(HC_OPTS)
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews### HetCASL parser
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewshetpa: Syntax/hetpa.hs $(drifted_files) *.hs
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### HetCASL parser
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhetana: Static/hetana.hs $(drifted_files) *.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### HetCASL with dev graph
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhetdg: GUI/hetdg.hs $(drifted_files) *.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) --make -o $@ $< $(HC_OPTS) -package-conf ../uni/uni-package.conf -package uni-davinci -package uni-server
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### run tests in other directories
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincheck: hetcats
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for i in $(TESTDIRS); do $(MAKE) -C $$i check; done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
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
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## two hardcoded dependencies for a correct generation of Version.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhetcats/Options.hs: hetcats/Version.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhets.hs: hetcats/Version.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein####################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## rules for DrIFT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein%.hs: %.ag.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(AG) $<
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein%.hs: %.der.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(DRIFT) $< > $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein%.hs: %.ag
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(AG) $< -o $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein%.lhs: %.der.lhs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(DRIFT) $< > $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein## compiling rules for object and interface files
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein%.o %.hi: %.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) -c $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein%.o %.hi: %.lhs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(HC) -c $< $(HC_OPTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews## compiling rules for dependencies
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews%.d : %.hs
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews $(HC) -M $< $(HC_OPTS) -optdep-f -optdep$@
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews%.d : %.lhs
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews $(HC) -M $< $(HC_OPTS) -optdep-f -optdep$@
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews####################################################################
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews## Setting a global search path (for dependency files)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrewsifneq ($(MAKECMDGOALS),clean)
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrewsifneq ($(MAKECMDGOALS),real_clean)
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrewsifneq ($(MAKECMDGOALS),d_clean)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinifneq ($(MAKECMDGOALS),real_clean)
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrewsifneq ($(MAKECMDGOALS),distclean)
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews## include every .d file in INCLUDE_PATH
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews-include $(objects:.o=.d)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinsources_hetcats.mk: hetcats-make hetcats/Version.hs
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinendif
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein