From 6793a033e1ce41f77316675e8f7aa83196a9b211 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Sat, 16 May 2009 12:12:48 +0000 Subject: [PATCH] Move the fixed paths out of config.mk, so cleaning works without configuring --- ghc.mk | 2 ++ mk/config.mk.in | 48 ------------------------------------------------ mk/tree.mk | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ rules/build-prog.mk | 2 ++ 4 files changed, 54 insertions(+), 48 deletions(-) create mode 100644 mk/tree.mk diff --git a/ghc.mk b/ghc.mk index b857e7b..3271dc4 100644 --- a/ghc.mk +++ b/ghc.mk @@ -134,6 +134,8 @@ show: # ----------------------------------------------------------------------------- # Include subsidiary build-system bits +include mk/tree.mk + ifeq "$(findstring clean,$(MAKECMDGOALS))" "" include mk/config.mk ifeq "$(ProjectVersion)" "" diff --git a/mk/config.mk.in b/mk/config.mk.in index 0adad73..40e5e91 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -23,12 +23,6 @@ # If you don't have a build.mk file then you get defaults for everything. # The defaults should provide a reasonable vanilla build. -ifneq "$(findstring 3.7, $(MAKE_VERSION))" "" -ifeq "$(findstring 3.79.1, $(MAKE_VERSION))" "" -$(error GNU make version 3.79.1 or later is required.) -endif -endif - # TOP: the top of the fptools hierarchy, absolute path. # On Windows this is a c:/foo/bar style path. TOP = @hardtop@ @@ -552,42 +546,6 @@ SRC_BLD_DLL_OPTS += --target=i386-mingw32 GC_CPP_OPTS += -P -E -x c -traditional -D__GLASGOW_HASKELL__ -################################################################################ -# -# Layout of the source tree -# -################################################################################ - -# Here we provide defines for the various directories in the source tree, -# so we can move things around more easily. A define $(GHC_FOO_DIR) -# indicates a directory relative to the top of the source tree. - -GHC_UTILS_DIR = utils -GHC_INCLUDE_DIR = includes -GHC_COMPILER_DIR = compiler -GHC_PROG_DIR = ghc -GHC_RTS_DIR = rts -GHC_DRIVER_DIR = driver -GHC_COMPAT_DIR = compat - -GHC_MKDEPENDC_DIR = $(GHC_UTILS_DIR)/mkdependC -GHC_LTX_DIR = $(GHC_UTILS_DIR)/ltx -GHC_LNDIR_DIR = $(GHC_UTILS_DIR)/lndir -GHC_MKDIRHIER_DIR = $(GHC_UTILS_DIR)/mkdirhier -GHC_DOCBOOK_DIR = $(GHC_UTILS_DIR)/docbook -GHC_UNLIT_DIR = $(GHC_UTILS_DIR)/unlit -GHC_HP2PS_DIR = $(GHC_UTILS_DIR)/hp2ps -GHC_GHCTAGS_DIR = $(GHC_UTILS_DIR)/ghctags -GHC_HSC2HS_DIR = $(GHC_UTILS_DIR)/hsc2hs -GHC_TOUCHY_DIR = $(GHC_UTILS_DIR)/touchy -GHC_PKG_DIR = $(GHC_UTILS_DIR)/ghc-pkg -GHC_GENPRIMOP_DIR = $(GHC_UTILS_DIR)/genprimopcode -GHC_GENAPPLY_DIR = $(GHC_UTILS_DIR)/genapply -GHC_CABAL_DIR = $(GHC_UTILS_DIR)/ghc-cabal -GHC_MANGLER_DIR = $(GHC_DRIVER_DIR)/mangler -GHC_SPLIT_DIR = $(GHC_DRIVER_DIR)/split -GHC_SYSMAN_DIR = $(GHC_RTS_DIR)/parallel - # ----------------------------------------------------------------------------- # Names of programs in the GHC tree # @@ -627,11 +585,6 @@ SYSMAN = $(GHC_SYSMAN_DIR)/$(GHC_SYSMAN_PGM) LTX = $(GHC_LTX_DIR)/$(GHC_LTX_PGM) LNDIR = $(GHC_LNDIR_DIR)/$(GHC_LNDIR_PGM) -INPLACE = inplace -INPLACE_BIN = $(INPLACE)/bin -INPLACE_LIB = $(INPLACE)/lib -INPLACE_MINGW = $(INPLACE)/mingw - UNLIT = $(INPLACE_LIB)/$(GHC_UNLIT_PGM) TOUCHY = $(INPLACE_LIB)/$(GHC_TOUCHY_PGM) MKDIRHIER = $(INPLACE_BIN)/$(GHC_MKDIRHIER_PGM) @@ -810,7 +763,6 @@ PYTHON = @PythonCmd@ PIC = pic PREPROCESSCMD = $(CC) -E RANLIB = @RANLIB@ -RM = rm -f SED = @SedCmd@ SHELL = /bin/sh diff --git a/mk/tree.mk b/mk/tree.mk new file mode 100644 index 0000000..4d1416a --- /dev/null +++ b/mk/tree.mk @@ -0,0 +1,50 @@ + +ifneq "$(findstring 3.7, $(MAKE_VERSION))" "" +ifeq "$(findstring 3.79.1, $(MAKE_VERSION))" "" +$(error GNU make version 3.79.1 or later is required.) +endif +endif + +################################################################################ +# +# Layout of the source tree +# +################################################################################ + +# Here we provide defines for the various directories in the source tree, +# so we can move things around more easily. A define $(GHC_FOO_DIR) +# indicates a directory relative to the top of the source tree. + +GHC_UTILS_DIR = utils +GHC_INCLUDE_DIR = includes +GHC_COMPILER_DIR = compiler +GHC_PROG_DIR = ghc +GHC_RTS_DIR = rts +GHC_DRIVER_DIR = driver +GHC_COMPAT_DIR = compat + +GHC_MKDEPENDC_DIR = $(GHC_UTILS_DIR)/mkdependC +GHC_LTX_DIR = $(GHC_UTILS_DIR)/ltx +GHC_LNDIR_DIR = $(GHC_UTILS_DIR)/lndir +GHC_MKDIRHIER_DIR = $(GHC_UTILS_DIR)/mkdirhier +GHC_DOCBOOK_DIR = $(GHC_UTILS_DIR)/docbook +GHC_UNLIT_DIR = $(GHC_UTILS_DIR)/unlit +GHC_HP2PS_DIR = $(GHC_UTILS_DIR)/hp2ps +GHC_GHCTAGS_DIR = $(GHC_UTILS_DIR)/ghctags +GHC_HSC2HS_DIR = $(GHC_UTILS_DIR)/hsc2hs +GHC_TOUCHY_DIR = $(GHC_UTILS_DIR)/touchy +GHC_PKG_DIR = $(GHC_UTILS_DIR)/ghc-pkg +GHC_GENPRIMOP_DIR = $(GHC_UTILS_DIR)/genprimopcode +GHC_GENAPPLY_DIR = $(GHC_UTILS_DIR)/genapply +GHC_CABAL_DIR = $(GHC_UTILS_DIR)/ghc-cabal +GHC_MANGLER_DIR = $(GHC_DRIVER_DIR)/mangler +GHC_SPLIT_DIR = $(GHC_DRIVER_DIR)/split +GHC_SYSMAN_DIR = $(GHC_RTS_DIR)/parallel + +INPLACE = inplace +INPLACE_BIN = $(INPLACE)/bin +INPLACE_LIB = $(INPLACE)/lib +INPLACE_MINGW = $(INPLACE)/mingw + +RM = rm -f + diff --git a/rules/build-prog.mk b/rules/build-prog.mk index 8397f3f..4bfc1e1 100644 --- a/rules/build-prog.mk +++ b/rules/build-prog.mk @@ -24,9 +24,11 @@ define build-prog # $2 = distdir # $3 = GHC stage to use (0 == bootstrapping compiler) +ifneq "$$(CLEANING)" "YES" ifeq "$$($1_$2_PROG)" "" $$(error $1_$2_PROG is not set) endif +endif ifeq "$$(findstring $3,0 1 2)" "" $$(error $1/$2: stage argument to build-prog should be 0, 1, or 2) -- 1.7.10.4