Move the fixed paths out of config.mk, so cleaning works without configuring
authorIan Lynagh <igloo@earth.li>
Sat, 16 May 2009 12:12:48 +0000 (12:12 +0000)
committerIan Lynagh <igloo@earth.li>
Sat, 16 May 2009 12:12:48 +0000 (12:12 +0000)
ghc.mk
mk/config.mk.in
mk/tree.mk [new file with mode: 0644]
rules/build-prog.mk

diff --git a/ghc.mk b/ghc.mk
index b857e7b..3271dc4 100644 (file)
--- 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)" ""
index 0adad73..40e5e91 100644 (file)
 #        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 (file)
index 0000000..4d1416a
--- /dev/null
@@ -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
+
index 8397f3f..4bfc1e1 100644 (file)
@@ -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)