# Default definitions filled in by config script, included from Makefile.inc include Makefile.inc .SUFFIXES: # To remove default rules like .cpp -> C++ BASIC = Makefile.inc Makefile README INSTALL COPYRIGHT configure PRELUDEA = \ src/prelude/Main.hi src/prelude/Makefile* \ src/prelude/Array/Makefile* src/prelude/Array/*.hs \ src/prelude/Bit/Makefile* src/prelude/Bit/*.hs \ src/prelude/Binary/Makefile* src/prelude/Binary/*.hs \ src/prelude/Binary/*.gc src/prelude/Binary/cLowBinary.[ch] \ src/prelude/BinArray/Makefile* src/prelude/BinArray/*.hs \ src/prelude/BinArray/*.gc src/prelude/BinArray/cLowUnboxedArray.[ch] \ src/prelude/CPUTime/Makefile* src/prelude/CPUTime/*.hs \ src/prelude/CPUTime/*.gc \ src/prelude/Char/Makefile* src/prelude/Char/*.hs \ src/prelude/Complex/Makefile* src/prelude/Complex/*.hs \ src/prelude/DErrNo.hs \ src/prelude/Directory/Makefile* src/prelude/Directory/*.hs \ src/prelude/Directory/*.gc \ src/prelude/FFI/Makefile* src/prelude/FFI/*.hs \ src/prelude/FFI/*.h src/prelude/FFI/*.cpp \ src/prelude/GreenCard/Makefile* src/prelude/GreenCard/*.gc \ src/prelude/IO/Makefile* src/prelude/IO/*.hs \ src/prelude/IOExtras/Makefile* src/prelude/IOExtras/*.hs \ src/prelude/Internal/Makefile* src/prelude/Internal/*.hs \ src/prelude/Ix/Makefile* src/prelude/Ix/*.hs PRELUDEB = \ src/prelude/List/Makefile* src/prelude/List/*.hs \ src/prelude/Locale/Makefile* src/prelude/Locale/*.hs \ src/prelude/LowB/Makefile* src/prelude/LowB/*.hs \ src/prelude/Maybe/Makefile* src/prelude/Maybe/*.hs \ src/prelude/Monad/Makefile* src/prelude/Monad/*.hs \ src/prelude/NonStd/Makefile* src/prelude/NonStd/*.hs \ src/prelude/NonStd/*.gc \ src/prelude/Numeric/Makefile* src/prelude/Numeric/*.hs \ src/prelude/Observe/Makefile* src/prelude/Observe/*.lhs \ src/prelude/PackedString/Makefile* src/prelude/PackedString/*.hs \ src/prelude/Prelude/Makefile* src/prelude/Prelude/*.hs \ src/prelude/PreludeIO/Makefile* src/prelude/PreludeIO/*.hs \ src/prelude/PreludeList/Makefile* src/prelude/PreludeList/*.hs \ src/prelude/PreludeText/Makefile* src/prelude/PreludeText/*.hs \ src/prelude/Random/Makefile* src/prelude/Random/*.hs \ src/prelude/Ratio/Makefile* src/prelude/Ratio/*.hs \ src/prelude/System/Makefile* src/prelude/System/*.hs \ src/prelude/Time/Makefile* src/prelude/Time/*.hs \ src/prelude/Time/*.gc \ src/prelude/Vector/Makefile* src/prelude/Vector/*.hs PRELUDEC = \ src/prelude/Array/*.hc src/prelude/Array/*.c \ src/prelude/Bit/*.hc src/prelude/Bit/*.c \ src/prelude/Binary/*.hc src/prelude/Binary/*.c \ src/prelude/CPUTime/*.hc src/prelude/CPUTime/*.c \ src/prelude/Char/*.hc src/prelude/Char/*.c \ src/prelude/Complex/*.hc src/prelude/Complex/*.c \ src/prelude/DErrNo.hc src/prelude/DErrNo.?.c \ src/prelude/Directory/*.hc src/prelude/Directory/*.c \ src/prelude/GreenCard/*.hc src/prelude/GreenCard/*.c \ src/prelude/IO/*.hc src/prelude/IO/*.c \ src/prelude/IOExtras/*.hc src/prelude/IOExtras/*.c \ src/prelude/Internal/*.hc src/prelude/Internal/*.c \ src/prelude/Ix/*.hc src/prelude/Ix/*.c \ src/prelude/List/*.hc src/prelude/List/*.c \ src/prelude/Locale/*.hc src/prelude/Locale/*.c \ src/prelude/LowB/*.hc src/prelude/LowB/*.c \ src/prelude/Maybe/*.hc src/prelude/Maybe/*.c \ src/prelude/Monad/*.hc src/prelude/Monad/*.c \ src/prelude/NonStd/*.hc src/prelude/NonStd/*.c \ src/prelude/Numeric/*.hc src/prelude/Numeric/*.c \ src/prelude/Observe/*.hc src/prelude/Observe/*.c \ src/prelude/PackedString/*.hc src/prelude/PackedString/*.c \ src/prelude/Prelude/*.hc src/prelude/Prelude/*.c \ src/prelude/PreludeIO/*.hc src/prelude/PreludeIO/*.c \ src/prelude/PreludeList/*.hc src/prelude/PreludeList/*.c \ src/prelude/PreludeText/*.hc src/prelude/PreludeText/*.c \ src/prelude/Random/*.hc src/prelude/Random/*.c \ src/prelude/Ratio/*.hc src/prelude/Ratio/*.c \ src/prelude/System/*.hc src/prelude/System/*.c \ src/prelude/Time/*.hc src/prelude/Time/*.c \ src/prelude/FFI/*.hc src/prelude/FFI/*.c \ src/prelude/Vector/*.hc src/prelude/Vector/*.c # src/prelude/BinArray/*.hc src/prelude/BinArray/*.c \ PACKAGES = $(shell for pkg in `cat src/libraries/default-packages`; do basename $$pkg; done) PACKAGEBUILD = haskell98 base polyparse parsec process PACKAGECABAL = old-locale old-time filepath directory pretty \ haskell-src random Cabal QuickCheck \ fps HaXml HUnit html xhtml PACKAGES_UNTESTED = \ arrows fgl monadLib mtl network readline time unix LIBRARIES = src/libraries/Makefile.common src/libraries/Makefile.inc \ src/libraries/Makefile.cabal src/libraries/cabal-parse.hs \ src/libraries/CabalParse.hs src/libraries/nhc98-pkg.hs \ src/libraries/default-packages \ $(patsubst %, src/libraries/%, ${PACKAGEBUILD}) \ $(patsubst %, src/libraries/%, ${PACKAGECABAL}) COMPILER = src/compiler98/Makefile* src/compiler98/*.hs src/compiler98/*/*.hs \ src/compiler98/*.gc src/compiler98/*.c.inst src/compiler98/*.h COMPILERC = src/compiler98/*.hc src/compiler98/*/*.hc DATA2C = src/data2c/Makefile* src/data2c/*.hs SCRIPT = script/hmake.inst script/greencard.inst script/nhc98.inst \ script/hmake-config.inst script/hi.inst script/config-errno.c \ script/nhc98heap.c script/harch script/confhc script/map \ script/mangler script/errnogen.c script/GenerateErrNo.hs \ script/fixghc script/echo.c script/hood.inst script/tprofprel \ script/fixcygwin script/hmake-PRAGMA.hs script/hmake-PRAGMA.hc \ script/hsc2hs.inst src/hsc2hs/template-hsc.h \ nhc98.spec lib/hood.jar GREENCARD = src/greencard/*.lhs src/greencard/*.hs \ src/greencard/Makefile* GREENCARDC = src/greencard/*.hc HSC2HS = src/hsc2hs/Main.hs src/hsc2hs/Makefile* HSC2HSC = src/hsc2hs/Main.hc HP2GRAPH = src/hp2graph/Makefile* src/hp2graph/README \ src/hp2graph/doc src/hp2graph/*.[hc1] HMAKE = src/hmake/Makefile* src/hmake/*.hs src/hmake/README* \ src/hmake/HISTORY src/hmake/Summary* \ src/interpreter/Makefile* src/interpreter/*.hs HMAKEC = src/hmake/*.hc src/interpreter/*.hc CPPHS = src/cpphs/Makefile* src/cpphs/cpphs.* src/cpphs/Language src/cpphs/Text CPPHSC = src/cpphs/*.hc src/cpphs/docs src/cpphs/tests \ src/cpphs/README src/cpphs/CHANGELOG src/cpphs/LICENCE* RUNTIME = \ src/Makefile.inc \ src/runtime/Makefile* \ src/runtime/Builtin/Makefile* \ src/runtime/Builtin/*.c \ src/runtime/Builtin/*.h \ src/runtime/Integer/Makefile* \ src/runtime/Integer/*.c \ src/runtime/Integer/*.h \ src/runtime/Kernel/Makefile* \ src/runtime/Kernel/*.c \ src/runtime/Kernel/*.h \ src/runtime/Mk/Makefile* \ src/runtime/Mk/*.c \ src/runtime/Mk/*.h TESTS = tests/README tests/runtests \ tests/conformance98 tests/nofib tests/nhc-bugs PRAGMA = lib/$(MACHINE)/hmake-PRAGMA HOODUI = src/hoodui/Makefile* src/hoodui/*.java \ src/hoodui/com/microstar/xml/* INCLUDE = include/*.hi include/*.h include/NHC/*.hi include/NHC/*.gc INCLUDEPKG = $(patsubst %, include/packages/%, ${PACKAGEBUILD}) \ $(patsubst %, include/packages/%, ${PACKAGECABAL}) DOC = docs/* MAN = man/*.1 TARGDIR= targets TARGETS= runtime prelude libraries greencard hp2graph hsc2hs cpphs cabal-parse \ profruntime profprelude profprelude-$(CC) \ timeruntime timeprelude timeprelude-$(CC) \ proflibraries timelibraries proflibraries-$(CC) timelibraries-$(CC) \ compiler-nhc compiler-hbc compiler-ghc compiler-$(CC) \ hmake-nhc hmake-hbc hmake-ghc hmake-$(CC) \ greencard-nhc greencard-hbc greencard-ghc greencard-$(CC) \ prelude-$(CC) pragma-$(CC) libraries-$(CC) hsc2hs-$(CC) cpphs-$(CC) .PHONY: default basic all compiler help config install ##### compiler build + install scripts default: all basic: basic-${BUILDCOMP} all: all-${BUILDCOMP} compiler: compiler-${BUILDCOMP} greencard: greencard-${BUILDCOMP} hmake: hmake-${BUILDCOMP} help: @echo "Default target is: basic + heapprofile + timeprofile" @echo "Main targets include: basic heapprofile timeprofile" @echo " all (= basic + heapprofile + timeprofile)" @echo " config install clean realclean" @echo " (other subtargets: compiler hmake runtime prelude libraries" @echo " greencard hp2graph hsc2hs cpphs hoodui" @echo " cabal-parse)" @echo "For a specific build-compiler: basic-hbc basic-ghc basic-nhc basic-gcc" @echo " all-hbc all-ghc all-nhc all-gcc" @echo " etc..." @echo "For individual library packages: (not all tested)" @echo " $(PACKAGES)" config: script/errnogen.c ./configure --config install: ./configure --install test: cd tests && ./runtests clean >/dev/null && ./runtests >t.log 2>t.err tail -4 tests/t.err basic-nhc: $(PRAGMA) runtime hmake-nhc greencard-nhc compiler-nhc cpphs \ prelude hsc2hs libraries basic-hbc: $(PRAGMA) runtime hmake-hbc greencard-hbc compiler-hbc cpphs \ prelude hsc2hs libraries basic-ghc: $(PRAGMA) runtime hmake-ghc greencard-ghc compiler-ghc cpphs \ prelude hsc2hs libraries basic-$(CC): runtime prelude-$(CC) pragma-$(CC) cpphs-$(CC) \ greencard-$(CC) hmake-$(CC) hsc2hs-$(CC) package-deps-$(CC) \ compiler-$(CC) libraries-$(CC) all-$(BUILDCOMP): basic-$(BUILDCOMP) heapprofile timeprofile #hoodui heapprofile: compiler profruntime profprelude-$(BUILDCOMP) \ proflibraries-$(BUILDCOMP) hp2graph timeprofile: compiler timeruntime timeprelude-$(BUILDCOMP) \ timelibraries-$(BUILDCOMP) profprelude-nhc: profprelude profprelude-ghc: profprelude profprelude-hbc: profprelude timeprelude-nhc: timeprelude timeprelude-ghc: timeprelude timeprelude-hbc: timeprelude proflibraries-nhc: proflibraries proflibraries-ghc: proflibraries proflibraries-hbc: proflibraries timelibraries-nhc: timelibraries timelibraries-ghc: timelibraries timelibraries-hbc: timelibraries $(TARGETS): % : $(TARGDIR)/$(MACHINE)/% #runtime: $(TARGDIR)/$(MACHINE)/runtime: $(RUNTIME) cd src/runtime; $(MAKE) all nhc98heap$(EXE) touch $(TARGDIR)/$(MACHINE)/runtime $(TARGDIR)/$(MACHINE)/compiler-nhc: $(COMPILER) cd src/compiler98; $(MAKE) HC=$(BUILDWITH) all touch $(TARGDIR)/$(MACHINE)/compiler-nhc $(TARGDIR)/$(MACHINE)/compiler-hbc: $(COMPILER) cd src/compiler98; $(MAKE) HC=$(BUILDWITH) all touch $(TARGDIR)/$(MACHINE)/compiler-hbc $(TARGDIR)/$(MACHINE)/compiler-ghc: $(COMPILER) cd src/compiler98; $(MAKE) HC=$(BUILDWITH) all touch $(TARGDIR)/$(MACHINE)/compiler-ghc $(TARGDIR)/$(MACHINE)/prelude: $(PRELUDEA) $(PRELUDEB) cd src/prelude; $(MAKE) all touch $(TARGDIR)/$(MACHINE)/prelude $(TARGDIR)/$(MACHINE)/libraries: $(LIBRARIES) runtime for pkg in ${PACKAGEBUILD};\ do ( cd src/libraries/$$pkg; $(MAKE) -f Makefile.nhc98; ) ;\ done && \ $(MAKE) cabal-parse && \ for pkg in ${PACKAGECABAL};\ do ( cd src/libraries/$$pkg; $(MAKE) -f ../Makefile.cabal; ) ;\ done && touch $(TARGDIR)/$(MACHINE)/libraries ${PACKAGEBUILD}: runtime cd src/libraries/`basename $@`; $(MAKE) -f Makefile.nhc98 ${PACKAGECABAL}: runtime cabal-parse cd src/libraries/`basename $@`; $(MAKE) -f ../Makefile.cabal ${PACKAGES_UNTESTED}: runtime cabal-parse cd src/libraries/`basename $@`; $(MAKE) -f ../Makefile.cabal $(TARGDIR)/$(MACHINE)/greencard-nhc: $(GREENCARD) cd src/greencard; $(MAKE) HC=$(BUILDWITH) all touch $(TARGDIR)/$(MACHINE)/greencard $(TARGDIR)/$(MACHINE)/greencard-nhc $(TARGDIR)/$(MACHINE)/greencard-hbc: $(GREENCARD) cd src/greencard; $(MAKE) HC=$(BUILDWITH) all touch $(TARGDIR)/$(MACHINE)/greencard $(TARGDIR)/$(MACHINE)/greencard-hbc $(TARGDIR)/$(MACHINE)/greencard-ghc: $(GREENCARD) cd src/greencard; $(MAKE) HC=$(BUILDWITH) all touch $(TARGDIR)/$(MACHINE)/greencard $(TARGDIR)/$(MACHINE)/greencard-ghc $(TARGDIR)/$(MACHINE)/hsc2hs: $(HSC2HS) cd src/hsc2hs; $(MAKE) -f Makefile.nhc98 HC=$(BUILDWITH) all touch $(TARGDIR)/$(MACHINE)/hsc2hs $(TARGDIR)/$(MACHINE)/cpphs: $(CPPHS) cd src/cpphs; $(MAKE) -f Makefile.nhc98 HC=$(BUILDWITH) all touch $(TARGDIR)/$(MACHINE)/cpphs $(TARGDIR)/$(MACHINE)/cabal-parse: polyparse src/libraries/cabal-parse.hs \ src/libraries/CabalParse.hs src/libraries/nhc98-pkg.hs script/nhc98 -o $(LIBDIR)/$(MACHINE)/cabal-parse \ src/libraries/CabalParse.hs src/libraries/cabal-parse.hs \ -Isrc/libraries -package polyparse -package base script/nhc98 -o $(LIBDIR)/$(MACHINE)/nhc98-pkg \ src/libraries/CabalParse.hs src/libraries/nhc98-pkg.hs \ -Isrc/libraries -package polyparse -package base touch $@ pragma: $(PRAGMA) $(PRAGMA): script/hmake-PRAGMA.hs $(BUILDWITH) $(shell echo $(BUILDOPTS)) -cpp -o $@ $< $(TARGDIR)/$(MACHINE)/hmake-nhc: $(HMAKE) $(CPPHS) cd src/hmake; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=${BUILDCOMP} all config cd src/interpreter; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=${BUILDCOMP} all touch $(TARGDIR)/$(MACHINE)/hmake-nhc $(TARGDIR)/$(MACHINE)/hmake-hbc: $(HMAKE) $(CPPHS) cd src/hmake; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=${BUILDCOMP} all config cd src/interpreter; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=${BUILDCOMP} all touch $(TARGDIR)/$(MACHINE)/hmake-hbc $(TARGDIR)/$(MACHINE)/hmake-ghc: $(HMAKE) $(CPPHS) cd src/hmake; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=${BUILDCOMP} all config cd src/interpreter; $(MAKE) HC=$(BUILDWITH) BUILDCOMP=${BUILDCOMP} all touch $(TARGDIR)/$(MACHINE)/hmake-ghc $(TARGDIR)/$(MACHINE)/hp2graph: $(HP2GRAPH) cd src/hp2graph; $(MAKE) all touch $(TARGDIR)/$(MACHINE)/hp2graph $(TARGDIR)/$(MACHINE)/profruntime: $(RUNTIME) cd src/runtime; $(MAKE) CFG=p all touch $(TARGDIR)/$(MACHINE)/profruntime $(TARGDIR)/$(MACHINE)/profprelude: greencard $(PRELUDEA) $(PRELUDEB) cd src/prelude; $(MAKE) CFG=p all touch $(TARGDIR)/$(MACHINE)/profprelude $(TARGDIR)/$(MACHINE)/proflibraries: $(LIBRARIES) for pkg in ${PACKAGEBUILD};\ do ( cd src/libraries/$$pkg; $(MAKE) -f Makefile.nhc98 CFG=p; ) ;\ done && \ for pkg in ${PACKAGECABAL};\ do ( cd src/libraries/$$pkg; $(MAKE) -f ../Makefile.cabal CFG=p; ) ;\ done && touch $(TARGDIR)/$(MACHINE)/proflibraries $(TARGDIR)/$(MACHINE)/timeruntime: $(RUNTIME) cd src/runtime; $(MAKE) CFG=z all touch $(TARGDIR)/$(MACHINE)/timeruntime $(TARGDIR)/$(MACHINE)/timeprelude: greencard $(PRELUDEA) $(PRELUDEB) cd src/prelude; $(MAKE) CFG=z all touch $(TARGDIR)/$(MACHINE)/timeprelude $(TARGDIR)/$(MACHINE)/timelibraries: $(LIBRARIES) for pkg in ${PACKAGEBUILD};\ do ( cd src/libraries/$$pkg; $(MAKE) -f Makefile.nhc98 CFG=z; ) ;\ done && \ for pkg in ${PACKAGECABAL};\ do ( cd src/libraries/$$pkg; $(MAKE) -f ../Makefile.cabal CFG=z; ) ;\ done && touch $(TARGDIR)/$(MACHINE)/timelibraries $(TARGDIR)/$(MACHINE)/prelude-$(CC): $(PRELUDEC) cd src/prelude; $(MAKE) fromC relink touch $(TARGDIR)/$(MACHINE)/prelude-$(CC) touch $(TARGDIR)/$(MACHINE)/prelude $(TARGDIR)/$(MACHINE)/timeprelude-$(CC): $(PRELUDEC) cd src/prelude; $(MAKE) CFG=z fromC cd src/prelude/$(MACHINE)/NHC; $(MAKE) CFG=z clean all cd src/prelude; $(MAKE) CFG=z relink touch $(TARGDIR)/$(MACHINE)/timeprelude-$(CC) touch $(TARGDIR)/$(MACHINE)/timeprelude $(TARGDIR)/$(MACHINE)/profprelude-$(CC): $(PRELUDEC) cd src/prelude; $(MAKE) CFG=p fromC cd src/prelude/$(MACHINE)/NHC; $(MAKE) CFG=p clean all cd src/prelude; $(MAKE) CFG=p relink touch $(TARGDIR)/$(MACHINE)/profprelude-$(CC) touch $(TARGDIR)/$(MACHINE)/profprelude $(TARGDIR)/$(MACHINE)/compiler-$(CC): $(COMPILERC) cd src/compiler98; $(MAKE) fromC cd src/prelude/$(MACHINE)/NHC; $(MAKE) clean all # Patch machine-specific parts. cd src/prelude; $(MAKE) relink cd src/compiler98; $(MAKE) relink touch $(TARGDIR)/$(MACHINE)/compiler-$(CC) $(TARGDIR)/$(MACHINE)/greencard-$(CC): $(GREENCARDC) cd src/greencard; $(MAKE) fromC touch $(TARGDIR)/$(MACHINE)/greencard $(TARGDIR)/$(MACHINE)/greencard-$(CC) $(TARGDIR)/$(MACHINE)/pragma-$(CC): script/hmake-PRAGMA.hc script/nhc98 -o $(PRAGMA) script/hmake-PRAGMA.hc touch $(TARGDIR)/$(MACHINE)/pragma-$(CC) $(TARGDIR)/$(MACHINE)/cpphs-$(CC): $(CPPHS) cd src/cpphs; $(MAKE) -f Makefile.nhc98 fromC touch $(TARGDIR)/$(MACHINE)/cpphs-$(CC) $(TARGDIR)/$(MACHINE)/hmake-$(CC): $(HMAKEC) cd src/hmake; $(MAKE) BUILDCOMP=nhc fromC config cd src/interpreter; $(MAKE) BUILDCOMP=nhc fromC touch $(TARGDIR)/$(MACHINE)/hmake-$(CC) $(TARGDIR)/$(MACHINE)/hsc2hs-$(CC): $(HSC2HS) $(HSC2HSC) cd src/hsc2hs; $(MAKE) -f Makefile.nhc98 fromC touch $(TARGDIR)/$(MACHINE)/hsc2hs-$(CC) package-deps-$(CC): ( cd src/libraries/base; $(MAKE) -f Makefile.nhc98 fromC; ) $(TARGDIR)/$(MACHINE)/libraries-$(CC): $(LIBRARIES) for pkg in ${PACKAGEBUILD};\ do ( cd src/libraries/$$pkg; $(MAKE) -f Makefile.nhc98 fromC; ) ;\ done && \ $(MAKE) cabal-parse && \ for pkg in ${PACKAGECABAL};\ do ( cd src/libraries/$$pkg; $(MAKE) -f ../Makefile.cabal fromC; ) ;\ done && touch $(TARGDIR)/$(MACHINE)/libraries-$(CC) $(TARGDIR)/$(MACHINE)/proflibraries-$(CC): $(LIBRARIES) for pkg in ${PACKAGEBUILD};\ do ( cd src/libraries/$$pkg; $(MAKE) -f Makefile.nhc98 CFG=p fromC; ) ;\ done && \ for pkg in ${PACKAGECABAL};\ do ( cd src/libraries/$$pkg; $(MAKE) -f ../Makefile.cabal CFG=p fromC; ) ;\ done && touch $(TARGDIR)/$(MACHINE)/proflibraries-$(CC) $(TARGDIR)/$(MACHINE)/timelibraries-$(CC): $(LIBRARIES) for pkg in ${PACKAGEBUILD};\ do ( cd src/libraries/$$pkg; $(MAKE) -f Makefile.nhc98 CFG=z fromC; ) ;\ done && \ for pkg in ${PACKAGECABAL};\ do ( cd src/libraries/$$pkg; $(MAKE) -f ../Makefile.cabal CFG=z fromC; ) ;\ done && touch $(TARGDIR)/$(MACHINE)/timelibraries-$(CC) script/errnogen.c: script/GenerateErrNo.hs hmake script/GenerateErrNo script/GenerateErrNo +RTS -H2M -RTS >script/errnogen.c ######### tracing with HOOD hoodui: $(TARGDIR)/hoodui $(TARGDIR)/hoodui: lib/hood.jar touch $(TARGDIR)/hoodui lib/hood.jar: $(HOODUI) cd src/hoodui; $(MAKE) all ##### scripts for packaging various distribution formats binDist: rm -f nhc98-$(VERSION)-$(MACHINE).tar nhc98-$(VERSION)-$(MACHINE).tar.gz tar cf nhc98-$(VERSION)-$(MACHINE).tar $(BASIC) tar rf nhc98-$(VERSION)-$(MACHINE).tar lib/$(MACHINE) tar rf nhc98-$(VERSION)-$(MACHINE).tar $(SCRIPT) tar rf nhc98-$(VERSION)-$(MACHINE).tar $(MAN) tar rf nhc98-$(VERSION)-$(MACHINE).tar $(INCLUDE) tar rf nhc98-$(VERSION)-$(MACHINE).tar $(INCLUDEPKG) tar rf nhc98-$(VERSION)-$(MACHINE).tar $(DOC) mkdir nhc98-$(VERSION) cd nhc98-$(VERSION); tar xf ../nhc98-$(VERSION)-$(MACHINE).tar rm nhc98-$(VERSION)/lib/$(MACHINE)/hmakerc tar cf nhc98-$(VERSION)-$(MACHINE).tar nhc98-$(VERSION) rm -r nhc98-$(VERSION) gzip nhc98-$(VERSION)-$(MACHINE).tar srcDist: $(TARGDIR)/timepreludeC \ $(TARGDIR)/heappreludeC $(TARGDIR)/preludeC \ $(TARGDIR)/compilerC $(TARGDIR)/greencardC $(TARGDIR)/hmakeC \ $(TARGDIR)/pragmaC $(TARGDIR)/hsc2hsC $(TARGDIR)/librariesC \ $(TARGDIR)/cpphsC hoodui \ cleantest $(MAKE) nolinks # moved from dependency list (because order matters) rm -f nhc98src-$(VERSION).tar nhc98src-$(VERSION).tar.gz tar cf nhc98src-$(VERSION).tar $(BASIC) tar rf nhc98src-$(VERSION).tar $(COMPILER) tar rf nhc98src-$(VERSION).tar $(COMPILERC) tar rf nhc98src-$(VERSION).tar $(RUNTIME) tar rf nhc98src-$(VERSION).tar $(PRELUDEA) tar rf nhc98src-$(VERSION).tar $(PRELUDEB) tar rf nhc98src-$(VERSION).tar $(PRELUDEC) tar rf nhc98src-$(VERSION).tar --exclude _darcs $(LIBRARIES) tar rf nhc98src-$(VERSION).tar $(HOODUI) tar rf nhc98src-$(VERSION).tar $(GREENCARD) tar rf nhc98src-$(VERSION).tar $(GREENCARDC) tar rf nhc98src-$(VERSION).tar $(HSC2HS) tar rf nhc98src-$(VERSION).tar $(HSC2HSC) tar rf nhc98src-$(VERSION).tar $(CPPHS) tar rf nhc98src-$(VERSION).tar $(CPPHSC) tar rf nhc98src-$(VERSION).tar $(HP2GRAPH) tar rf nhc98src-$(VERSION).tar $(HMAKE) tar rf nhc98src-$(VERSION).tar $(HMAKEC) tar rf nhc98src-$(VERSION).tar $(MAN) tar rf nhc98src-$(VERSION).tar $(INCLUDE) tar rf nhc98src-$(VERSION).tar $(INCLUDEPKG) tar rf nhc98src-$(VERSION).tar $(DOC) tar rf nhc98src-$(VERSION).tar $(TESTS) tar rf nhc98src-$(VERSION).tar $(SCRIPT) mkdir nhc98-$(VERSION) cd nhc98-$(VERSION); tar xf ../nhc98src-$(VERSION).tar tar cf nhc98src-$(VERSION).tar nhc98-$(VERSION) rm -r nhc98-$(VERSION) gzip nhc98src-$(VERSION).tar nolinks: cd src/runtime; $(MAKE) nolinks # 'make nolinks' invalidates the links from include dir to runtime dir # so we need to force the links to be re-made on next build: rm -f $(TARGDIR)/$(MACHINE)/runtime $(TARGDIR)/preludeC: $(PRELUDEA) $(PRELUDEB) cd src/prelude; $(MAKE) cfiles touch $(TARGDIR)/preludeC $(TARGDIR)/timepreludeC: $(PRELUDEA) $(PRELUDEB) cd src/prelude; $(MAKE) CFG=z cfiles touch $(TARGDIR)/timepreludeC $(TARGDIR)/heappreludeC: $(PRELUDEA) $(PRELUDEB) cd src/prelude; $(MAKE) CFG=p cfiles touch $(TARGDIR)/heappreludeC $(TARGDIR)/compilerC: $(COMPILER) cd src/compiler98; $(MAKE) cfiles touch $(TARGDIR)/compilerC $(TARGDIR)/greencardC: $(GREENCARD) cd src/greencard; $(MAKE) cfiles touch $(TARGDIR)/greencardC $(TARGDIR)/hsc2hsC: $(HSC2HS) cd src/hsc2hs; $(MAKE) -f Makefile.nhc98 cfiles touch $(TARGDIR)/hsc2hsC $(TARGDIR)/cpphsC: $(HSC2HS) cd src/cpphs; $(MAKE) -f Makefile.nhc98 cfiles touch $(TARGDIR)/cpphsC $(TARGDIR)/pragmaC: script/hmake-PRAGMA.hs script/nhc98 -cpp -C script/hmake-PRAGMA.hs touch $(TARGDIR)/pragmaC $(TARGDIR)/hmakeC: $(HMAKE) cd src/hmake; $(MAKE) cfiles cd src/interpreter; $(MAKE) cfiles touch $(TARGDIR)/hmakeC $(TARGDIR)/librariesC: $(LIBRARIES) runtime for pkg in ${PACKAGEBUILD};\ do ( cd src/libraries/$$pkg;\ $(MAKE) -f Makefile.nhc98 cfiles;\ $(MAKE) CFG=p -f Makefile.nhc98 cfiles;\ $(MAKE) CFG=z -f Makefile.nhc98 cfiles; ) ;\ done && \ for pkg in ${PACKAGECABAL};\ do ( cd src/libraries/$$pkg;\ $(MAKE) -f ../Makefile.cabal cfiles;\ $(MAKE) CFG=p -f ../Makefile.cabal cfiles;\ $(MAKE) CFG=z -f ../Makefile.cabal cfiles; ) ;\ done && touch $(TARGDIR)/librariesC ##### package up hmake separately HBASIC = src/hmake/README src/hmake/INSTALL HMFILE = src/hmake/Makefile.toplevel HAUX1 = Makefile.inc COPYRIGHT HAUX2 = src/Makefile* HSCRIPT = script/hmake.inst script/hmake-config.inst \ script/harch script/hi.inst script/confhc \ script/echo.c script/fixghc script/fixcygwin HMAN = man/hmake.1 docs/hmake HCONF = hmake-configure HBIN = lib/$(MACHINE)/MkProg$(EXE) lib/$(MACHINE)/Older$(EXE) \ lib/$(MACHINE)/hi$(EXE) targets/$(MACHINE)/config.cache hmakeDist: rm -f hmake-$(HMAKEVERSION).tar hmake-$(HMAKEVERSION).tar.gz tar cf hmake-$(HMAKEVERSION).tar $(HAUX1) tar rf hmake-$(HMAKEVERSION).tar $(HAUX2) tar rf hmake-$(HMAKEVERSION).tar $(HMAKE) tar rf hmake-$(HMAKEVERSION).tar $(CPPHS) tar rf hmake-$(HMAKEVERSION).tar $(HSCRIPT) tar rf hmake-$(HMAKEVERSION).tar $(HMAN) mkdir hmake-$(HMAKEVERSION) cd hmake-$(HMAKEVERSION); tar xf ../hmake-$(HMAKEVERSION).tar cp $(HBASIC) hmake-$(HMAKEVERSION) cp $(HMFILE) hmake-$(HMAKEVERSION)/Makefile cp $(HCONF) hmake-$(HMAKEVERSION)/configure tar cf hmake-$(HMAKEVERSION).tar hmake-$(HMAKEVERSION) rm -r hmake-$(HMAKEVERSION) gzip hmake-$(HMAKEVERSION).tar hmakeBinDist: rm -f hmake-$(HMAKEVERSION)-$(MACHINE).tar hmake-$(HMAKEVERSION)-$(MACHINE).tar.gz tar cf hmake-$(HMAKEVERSION)-$(MACHINE).tar $(HAUX1) tar rf hmake-$(HMAKEVERSION)-$(MACHINE).tar $(HSCRIPT) tar rf hmake-$(HMAKEVERSION)-$(MACHINE).tar $(HBIN) tar rf hmake-$(HMAKEVERSION)-$(MACHINE).tar $(HMAN) mkdir hmake-$(HMAKEVERSION) cd hmake-$(HMAKEVERSION); tar xf ../hmake-$(HMAKEVERSION)-$(MACHINE).tar cp $(HBASIC) hmake-$(HMAKEVERSION) cp $(HMFILE) hmake-$(HMAKEVERSION)/Makefile cp $(HCONF) hmake-$(HMAKEVERSION)/configure tar cf hmake-$(HMAKEVERSION)-$(MACHINE).tar hmake-$(HMAKEVERSION) rm -r hmake-$(HMAKEVERSION) gzip hmake-$(HMAKEVERSION)-$(MACHINE).tar ##### cleanup clean: cleanhi #cd data2c; $(MAKE) clean cd src/compiler98; $(MAKE) clean cd src/greencard; $(MAKE) clean cd src/hp2graph; $(MAKE) clean cd src/hmake; $(MAKE) clean cd src/cpphs; $(MAKE) -f Makefile.nhc98 clean cd src/hsc2hs; $(MAKE) -f Makefile.nhc98 clean cd src/interpreter; $(MAKE) clean rm -f script/hmake-PRAGMA.o rm -rf $(BUILDDIR)/obj* # all object files cleanhi: rm -f script/hmake-PRAGMA.hi cd src/prelude; $(MAKE) cleanhi cleanC: rm -f src/compiler98/*.hc rm -f src/greencard/*.hc rm -f src/hmake/*.hc rm -f src/interpreter/*.hc rm -f script/hmake-PRAGMA.hc cd src/prelude; $(MAKE) cleanC cd src/prelude; $(MAKE) CFG=p cleanC cd src/prelude; $(MAKE) CFG=z cleanC find src/libraries -name '*.hc' -print | xargs rm -f find src/libraries -name '*.p.c' -print | xargs rm -f find src/libraries -name '*.z.c' -print | xargs rm -f cd $(TARGDIR); rm -f preludeC compilerC greencardC hmakeC pragmaC \ timepreludeC heappreludeC hsc2hsC cpphsC librariesC cleantest: cd tests && ./runtests clean >/dev/null realclean: clean cleanC cleantest #cd data2c; $(MAKE) realclean cd $(TARGDIR)/$(MACHINE); rm -f $(TARGETS) cd $(TARGDIR)/$(MACHINE); rm -f hmakerc hmake3.config config.cache rm -rf src/prelude/$(MACHINE) rm -rf $(LIBDIR)/$(MACHINE) rm -f script/hmake-PRAGMA.o script/hmake-PRAGMA.hi rm -f script/nhc98 script/greencard script/hmake