X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Makefile;h=bca8e86432c37987666149a5586415eef0fbeb48;hb=442f06cc8f9f729d33a8de3aa14cdaf80545808e;hp=0e980384d9c0dd2121f3dc9d28d0b6d15d253618;hpb=323d194de147879b411a924ca423e064e4712e9e;p=ghc-hetmet.git diff --git a/Makefile b/Makefile index 0e98038..bca8e86 100644 --- a/Makefile +++ b/Makefile @@ -1,113 +1,73 @@ -################################################################################# +# ----------------------------------------------------------------------------- # -# fptools/Makefile +# (c) 2009 The University of Glasgow # -# This is the main Makefile for fptools. +# This file is part of the GHC build system. # -################################################################################# +# To understand how the build system works and how to modify it, see +# http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture +# http://hackage.haskell.org/trac/ghc/wiki/Building/Modifying +# +# ----------------------------------------------------------------------------- -TOP=. -include $(TOP)/mk/boilerplate.mk -SRC_DIST_DIR=$(shell pwd)/$(SRC_DIST_NAME) +ifeq "$(wildcard distrib/)" "" -# -# Totally evil hack to make the setting of SUBDIRS be dependent -# on whether we do `make install' or not. Having a $(ifeq ... ) would -# be preferable.. -CURRENT_TARGET = $@ -SUBDIRS = $(shell if (test x$(CURRENT_TARGET) = xinstall) ; then echo $(ProjectsToInstall); else echo $(ProjectsToBuild); fi) +# We're in a bindist -# -# Files to include in fptools source distribution -# -SRC_DIST_DIRS += mk docs CONTRIB distrib $(ProjectsToBuild) -SRC_DIST_FILES += configure.in config.guess config.sub configure aclocal.m4 README ANNOUNCE INSTALL Makefile install-sh +.PHONY: default +default: + @echo 'Run "make install" to install' + @false -# -# Making a binary distribution -# -BIN_DIST_TMPDIR=$(shell pwd) -BIN_DIST_NAME=fptools +.PHONY: install +install: + $(MAKE) -r --no-print-directory -f ghc.mk install BINDIST=YES NO_INCLUDE_DEPS=YES -# -# list of toplevel `projects' to include in binary distrib. -# -BIN_DIST_DIRS=ghc - -binary-dist:: binary-dist-pre - -BIN_DIST_TOP= distrib/Makefile-bin.in \ - distrib/configure-bin.in \ - README \ - distrib/INSTALL \ - ANNOUNCE \ - ghc/PATCHLEVEL \ - glafp-utils/mkdirhier/mkdirhier \ - ghc/RELEASE \ - install-sh \ - config.guess \ - config.sub - -binary-dist:: - @for i in $(BIN_DIST_TOP); do \ - echo cp $$i $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME); \ - cp $$i $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME); \ - done; - @echo "hackily rename some of these chaps.." - $(MV) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/Makefile-bin.in $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/Makefile.in - $(MV) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/configure-bin.in $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/configure.in - @echo "Generating a shippable configure script.." - ( cd $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME); autoconf ) +.PHONY: show +show: + $(MAKE) -r --no-print-directory -f ghc.mk $@ -# -# binary dist'ing the documentation. -# Which documentation to build/install is hardcoded below. -# +else -BINDIST_DOCS = docs ghc/docs/users_guide -BINDIST_DOCS_WAYS = html info dvi - -binary-dist :: - @for way in $(BINDIST_DOCS_WAYS); do \ - $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/$$way/$(GhcProjectNameShort)-$(GhcProjectVersion); \ - for dir in $(BINDIST_DOCS); do \ - echo Making $$way documentation in $$dir; \ - $(MAKE) -C $$dir --no-print-directory $(MFLAGS) $$way; \ - echo cp -f $$dir/*.$$way $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/$$way/$(GhcProjectNameShort)-$(GhcProjectVersion); \ - cp -f $$dir/*.$$way $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/$$way/$(GhcProjectNameShort)-$(GhcProjectVersion); \ - echo "Done."; \ - done; \ - done +default : all + @: + +# No need to update makefiles for these targets: +REALGOALS=$(filter-out clean clean_% distclean maintainer-clean show,$(MAKECMDGOALS)) + +# NB. not the same as saying '%: ...', which doesn't do the right thing: +# it does nothing if we specify a target that already exists. +.PHONY: $(REALGOALS) +$(REALGOALS) all: + @echo "===--- updating makefiles phase 0" + $(MAKE) -r --no-print-directory -f ghc.mk phase=0 just-makefiles + @echo "===--- updating makefiles phase 1" + $(MAKE) -r --no-print-directory -f ghc.mk phase=1 just-makefiles + @echo "===--- updating makefiles phase 2" + $(MAKE) -r --no-print-directory -f ghc.mk phase=2 just-makefiles + @echo "===--- updating makefiles phase 3" + $(MAKE) -r --no-print-directory -f ghc.mk phase=3 just-makefiles + @echo "===--- finished updating makefiles" + $(MAKE) -r --no-print-directory -f ghc.mk $@ + +binary-dist: + rm -f bindist-list + $(MAKE) -r --no-print-directory -f ghc.mk bindist BINDIST=YES + $(MAKE) -r --no-print-directory -f ghc.mk binary-dist + +clean distclean maintainer-clean: + $(MAKE) -r --no-print-directory -f ghc.mk $@ + test ! -d testsuite || $(MAKE) -C testsuite $@ + +$(filter clean_%, $(MAKECMDGOALS)) : clean_% : + $(MAKE) -r --no-print-directory -f ghc.mk $@ + +show: + $(MAKE) -r --no-print-directory -f ghc.mk $@ + +# If the user says 'make A B', then we don't want to invoke two +# instances of the rule above in parallel: +.NOTPARALLEL: + +endif -# -# binary dist'ing hslibs/, hackily. -# -binary-dist :: - @echo $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/ghc-$(ProjectVersion)/hslibs; - @$(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/ghc-$(ProjectVersion)/hslibs; - $(MAKE) -C hslibs $(MFLAGS) install \ - BIN_DIST=1 BIN_DIST_NAME=$(BIN_DIST_NAME) \ - prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) \ - exec_prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) \ - bindir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM)/ghc-$(ProjectVersion) \ - libdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/ghc-$(ProjectVersion)/hslibs \ - libexecdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/ghc-$(ProjectVersion)/hslibs \ - datadir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/ghc-$(ProjectVersion) ; - -# Even more of a hack, but I'm too tired to fix this up right now.. -BIN_DIST_SCRIPTS_NEEDING_RENAMING=ghc stat2resid hstags mkdependHS - -binary-dist:: - @for i in $(BIN_DIST_SCRIPTS_NEEDING_RENAMING); do \ - echo "Renaming $$i to $$i.prl"; \ - $(MV) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM)/ghc-$(ProjectVersion)/$$i $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM)/ghc-$(ProjectVersion)/$$i.prl; \ - done - @echo "Renaming hscpp to hscpp.prl" - @$(MV) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/ghc-$(ProjectVersion)/hscpp $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/ghc-$(ProjectVersion)/hscpp.prl - -dist :: dist-pre -include $(TOP)/mk/target.mk -dist :: dist-post - -binary-dist:: - @echo "Mechanical and super-natty! Inspect the result and *if* happy; freeze, sell and get some sleep!"