summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2006-04-07 02:05:11 +0000
committerSimon Marlow <simonmar@microsoft.com>2006-04-07 02:05:11 +0000
commit0065d5ab628975892cea1ec7303f968c3338cbe1 (patch)
tree8e2afe0ab48ee33cf95009809d67c9649573ef92 /mk
parent28a464a75e14cece5db40f2765a29348273ff2d2 (diff)
downloadhaskell-0065d5ab628975892cea1ec7303f968c3338cbe1.tar.gz
Reorganisation of the source tree
Most of the other users of the fptools build system have migrated to Cabal, and with the move to darcs we can now flatten the source tree without losing history, so here goes. The main change is that the ghc/ subdir is gone, and most of what it contained is now at the top level. The build system now makes no pretense at being multi-project, it is just the GHC build system. No doubt this will break many things, and there will be a period of instability while we fix the dependencies. A straightforward build should work, but I haven't yet fixed binary/source distributions. Changes to the Building Guide will follow, too.
Diffstat (limited to 'mk')
-rw-r--r--mk/boilerplate.mk4
-rw-r--r--mk/bootstrap.mk6
-rw-r--r--mk/config.mk.in442
-rw-r--r--mk/package.mk9
-rw-r--r--mk/paths.mk2
-rw-r--r--mk/suffix.mk4
-rw-r--r--mk/target.mk26
7 files changed, 261 insertions, 232 deletions
diff --git a/mk/boilerplate.mk b/mk/boilerplate.mk
index 13c7a863b7..94ba7d5743 100644
--- a/mk/boilerplate.mk
+++ b/mk/boilerplate.mk
@@ -2,10 +2,10 @@
#
# mk/boilerplate.mk
#
-# The Glorious fptools Boilerplate Makefile
+# The Glorious GHC Boilerplate Makefile
#
# This one file should be included (directly or indirectly) by all Makefiles
-# in the fptools hierarchy.
+# in the GHC hierarchy.
#
#################################################################################
diff --git a/mk/bootstrap.mk b/mk/bootstrap.mk
index 5bbc41f567..1501d5500c 100644
--- a/mk/bootstrap.mk
+++ b/mk/bootstrap.mk
@@ -67,7 +67,7 @@ PLATFORM_CC_OPTS += -D__GLASGOW_HASKELL__=$(ProjectVersionInt)
HC_BOOT_CC_OPTS = $(PLATFORM_HC_BOOT_CC_OPTS) $(PLATFORM_CC_OPTS) $(CC_OPTS)
-SRC_CC_OPTS += -I$(FPTOOLS_TOP_ABS)/ghc/includes -I$(FPTOOLS_TOP_ABS)/libraries/base/include -I$(FPTOOLS_TOP_ABS)/libraries/unix/include -I$(FPTOOLS_TOP_ABS)/libraries/parsec/include
+SRC_CC_OPTS += -I$(FPTOOLS_TOP_ABS)/$(GHC_INCLUDE_DIR_REL) -I$(FPTOOLS_TOP_ABS)/libraries/base/include -I$(FPTOOLS_TOP_ABS)/libraries/unix/include -I$(FPTOOLS_TOP_ABS)/libraries/parsec/include
# C code compiled with UseGhcForCc=YES assumes the existence of certain CPP
# symbols defined by GHC (eg. __GLASGOW_HASKELL__), so we better make sure
@@ -89,11 +89,11 @@ UNDERSCORE=
endif
ifeq "$(HaveLibGmp)" "NO"
-DASH_L_GHC_RTS_GMP_DIR=-L$(FPTOOLS_TOP_ABS)/ghc/rts/gmp
+DASH_L_GHC_RTS_GMP_DIR=-L$(FPTOOLS_TOP_ABS)/$(GHC_RTS_DIR_REL)/gmp
endif
HC_BOOT_LD_OPTS = \
- -L$(FPTOOLS_TOP_ABS)/ghc/rts \
+ -L$(FPTOOLS_TOP_ABS)/$(GHC_RTS_DIR_REL) \
$(DASH_L_GHC_RTS_GMP_DIR) \
-L$(FPTOOLS_TOP_ABS)/libraries/base \
-L$(FPTOOLS_TOP_ABS)/libraries/base/cbits \
diff --git a/mk/config.mk.in b/mk/config.mk.in
index 23162f9363..774d6375e0 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -25,12 +25,6 @@
#
# This is one of only two files that configure generates (the other is config.h)
#
-# There is a section below for each project within the fptools suite
-#
-# PLUS
-#
-# a section corresponding to each of the main .mk files
-# included by boilerplate.mk (see boilerplate.mk for a list).
ifneq "$(findstring 3.7, $(MAKE_VERSION))" ""
ifeq "$(findstring 3.79.1, $(MAKE_VERSION))" ""
@@ -40,7 +34,34 @@ endif
################################################################################
#
-# Project-wide platform variables
+# GHC Version
+#
+
+# ProjectVersion is treated as a *string*
+# ProjectVersionInt is treated as an *integer* (for cpp defines)
+
+# Versioning scheme: A.B.C
+# A: major version, decimal, any number of digits
+# B: minor version, decimal, any number of digits
+# C: patchlevel, one digit, omitted if zero.
+#
+# ProjectVersionInt does *not* contain the patchlevel (rationale: this
+# figure is used for conditional compilations, and library interfaces
+# etc. are not supposed to change between patchlevels).
+#
+# The ProjectVersionInt is included in interface files, and GHC
+# checks that it's reading interface generated by the same ProjectVersion
+# as itself. It does this even though interface file syntax may not
+# change between versions. Rationale: calling conventions or other
+# random .o-file stuff might change even if the .hi syntax doesn't
+
+ProjectVersion = @ProjectVersion@
+ProjectVersionInt = @ProjectVersionInt@
+ProjectPatchLevel = @ProjectPatchLevel@
+
+################################################################################
+#
+# Platform variables
#
################################################################################
@@ -127,6 +148,12 @@ BuildVendor_CPP = @BuildVendor_CPP@
@TargetVendor_CPP@_TARGET_VENDOR = 1
@BuildVendor_CPP@_BUILD_VENDOR = 1
+################################################################################
+#
+# Global configuration options
+#
+################################################################################
+
# Leading underscores on symbol names in object files
# Valid options: YES/NO
#
@@ -142,14 +169,6 @@ else
Windows=NO
endif
-################################################################################
-#
-# project-wide flags
-#
-# Set of options applicable to all fptools projects
-#
-################################################################################
-
# BootingFromHc - build GHC and the libraries from .hc files?
BootingFromHc = @BootingFromHc@
@@ -157,39 +176,6 @@ BootingFromHc = @BootingFromHc@
# rather than registerised code, i.e., disable the mangler?
BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@
-# Build Order: we build Happy, Haddock and Alex before GHC if they are
-# in this source tree, just in case our GHC build depends on these
-# local builds rather than installed versions of the tools.
-#
-# Build the libs first if we're bootstrapping from .hc files.
-ifeq "$(BootingFromHc)" "YES"
-AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib docs
-else
-AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib docs
-endif
-
-#
-# (OPTIONAL) set ProjectsToBuild to a list of projects to be built. If this
-# list is empty, then all projects present in the source tree will be built.
-#
-ProjectsToBuild =
-
-#
-# set ProjectsDontInstall to a list of projects which are normally built but
-# not installed.
-#
-ProjectsDontInstall = glafp-utils nofib
-
-#
-# Should the various project tests directories be built?
-#
-IncludeTestDirsInBuild=NO
-
-#
-# Should the various project example directories be built?
-#
-IncludeExampleDirsInBuild=NO
-
#
# Which ways should DocBook XML documents be built?
# options are: dvi ps pdf html chm HxS
@@ -198,18 +184,9 @@ XMLDocWays=
################################################################################
#
-# GHC project
-#
-# Set of (configurable) options needed by the ghc tree
-# plus their default options (if any).
-#
-################################################################################
-
-#---------------------------------------------------------------
-#
# Variables that control how the compiler itself is built
#
-#---------------------------------------------------------------
+################################################################################
# The compiler used to build GHC is $(GHC). To change the actual compiler
# used, re-configure with --with-ghc=<path-to-ghc>.
@@ -219,7 +196,7 @@ XMLDocWays=
GhcCompilerWays=
# Extra option flags to pass to the compiler that compiles the compiler
-# (Ones that are essential are wired into ghc/compiler/Makefile)
+# (Ones that are essential are wired into compiler/Makefile)
# Typical options to use here:
#
# -DDEBUG include debugging code and assertions (will make the
@@ -297,6 +274,25 @@ endif
BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
+# Interface file version (hi-boot files only)
+#
+# A GHC built with HscIfaceFileVersion=n will look for
+# M.hi-boot-n, and only then for
+# M.hi-boot.
+# (It'll be happy with the latter if the former doesn't exist.)
+#
+#
+# This variable is used ONLY for hi-boot files. Its only purpose is
+# to allow you to have a single directory with multiple .hi-boot files
+# for the same module, each corresponding to a different version of
+# GHC.
+#
+# HscIfaceFileVersion is propagated to hsc via
+# compiler/main/Config.hs, which is automatically generated by
+# compiler/Makefile.
+
+HscIfaceFileVersion=6
+
#------------------------------------------------------------------------------
# Options for Libraries
@@ -380,23 +376,6 @@ ifeq "$(TargetArch_CPP)" "ia64"
SplitObjs=NO
endif
-# ----------------------------------------------------------------------------
-# Options for GHC's RTS
-
-# For an optimised RTS (you probably don't want to change these; we build
-# a debugging RTS by default now. Use -debug to get it).
-GhcRtsHcOpts=-optc-O2
-GhcRtsCcOpts=-fomit-frame-pointer
-
-# Include the front panel code? Needs GTK+.
-GhcRtsWithFrontPanel = NO
-
-################################################################################
-#
-# libraries project
-#
-################################################################################
-
# Build the Haskell Readline bindings?
#
GhcLibsWithReadline=@GhcLibsWithReadline@
@@ -424,41 +403,20 @@ DotnetSupport=@DotnetSupport@
#
GhcLibsWithUnix=@GhcLibsWithUnix@
-################################################################################
-#
-# happy project
-#
-# Happy specific options
-#
-################################################################################
-
-# The compiler you'd like to use to compile Happy
-WithHappyHc = @WithHc@
-
-# HappyHcOpts gives the flags to pass to the Haskell compiler used
-# to compile the Happy sources with.
-#
-HappyHcOpts = -O
+# ----------------------------------------------------------------------------
+# Options for GHC's RTS
-################################################################################
-#
-# haggis project
-#
-# Haggis specific options
-#
-################################################################################
+# For an optimised RTS (you probably don't want to change these; we build
+# a debugging RTS by default now. Use -debug to get it).
+GhcRtsHcOpts=-optc-O2
+GhcRtsCcOpts=-fomit-frame-pointer
-################################################################################
-#
-# greencard project
-#
-# GreenCard specific options
-#
-################################################################################
+# Include the front panel code? Needs GTK+.
+GhcRtsWithFrontPanel = NO
################################################################################
#
-# nofib project
+# nofib
#
# nofib specific options
#
@@ -488,14 +446,6 @@ NoFibHcOpts = -O
# Number of times to run each program
NoFibRuns = 5
-# ==============================================================================
-#
-# END OF PROJECT-SPECIFIC STUFF
-#
-# Now come the generic configuration options
-#
-# ==============================================================================
-
################################################################################
#
# Paths (see paths.mk)
@@ -553,11 +503,11 @@ libdir = $(prefix)
else
#
-# Unix: override libdir and datadir to put project-specific stuff in
+# Unix: override libdir and datadir to put ghc-specific stuff in
# a subdirectory with the version number included.
#
-libdir = $(if $(ProjectNameShort),$(libdir0)/$(ProjectNameShort)-$(ProjectVersion),$(libdir0))
-datadir = $(if $(ProjectNameShort),$(datadir0)/$(ProjectNameShort)-$(ProjectVersion),$(datadir0))
+libdir = $(libdir0)/ghc-$(ProjectVersion)
+datadir = $(datadir0)/ghc-$(ProjectVersion)
endif # Windows
@@ -658,50 +608,141 @@ GC_CPP_OPTS += -P -E -x c -traditional -D__GLASGOW_HASKELL__
################################################################################
#
-# Utilities programs: where to find them
+# Layout of the source tree
#
################################################################################
-#-----------------------------------------------------------------------------
-# FPtools Utility locations
-
-# By default, the various utils needed to be build ghc and chums
-# is set up to point to the utils/ directory. Define here the
-# path prefix for the utilities. Notice that it's a prefix with
-# a trailing slash, so that it can be concatenated directly on
-# front of a program name; if it's not set then we just look
-# along the shell's $(PATH)
-#
-# If instead you want to use installed or your own versions of these,
-# override the various *_PREFIX in build.mk, i.e., having the following
-# in build.mk:
-#
-# MKDEPENDC_PREFIX=
-#
-# will force `make' to rummage around in your PATH to find `mkdependC' (not
-# sure it would need it in the first place, but still).
-#
-GLAFP_UTILS = $(FPTOOLS_TOP)/glafp-utils
+# 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_REL)
+# indicates a directory relative to the top of the source tree, whereas
+# $(GHC_FOO_DIR) is a directory relative to the current directory.
+# $(GHC_FOO_DIR_ABS) is the absolute path to the directory.
+
+GHC_UTILS_DIR_REL = utils
+GHC_INCLUDE_DIR_REL = includes
+GHC_COMPILER_DIR_REL = compiler
+GHC_RTS_DIR_REL = rts
+GHC_UTILS_DIR_REL = utils
+GHC_DRIVER_DIR_REL = driver
+GHC_COMPAT_DIR_REL = compat
+
+GHC_MKDEPENDC_DIR_REL = $(GHC_UTILS_DIR_REL)/mkdependC
+GHC_LTX_DIR_REL = $(GHC_UTILS_DIR_REL)/ltx
+GHC_RUNTEST_DIR_REL = $(GHC_UTILS_DIR_REL)/runstdtest
+GHC_LNDIR_DIR_REL = $(GHC_UTILS_DIR_REL)/lndir
+GHC_MKDIRHIER_DIR_REL = $(GHC_UTILS_DIR_REL)/mkdirhier
+GHC_DOCBOOK_DIR_REL = $(GHC_UTILS_DIR_REL)/docbook
+GHC_UNLIT_DIR_REL = $(GHC_UTILS_DIR_REL)/unlit
+GHC_HP2PS_DIR_REL = $(GHC_UTILS_DIR_REL)/hp2ps
+GHC_HSTAGS_DIR_REL = $(GHC_UTILS_DIR_REL)/hasktags
+GHC_HSC2HS_DIR_REL = $(GHC_UTILS_DIR_REL)/hsc2hs
+GHC_TOUCHY_DIR_REL = $(GHC_UTILS_DIR_REL)/touchy
+GHC_PKG_DIR_REL = $(GHC_UTILS_DIR_REL)/ghc-pkg
+GHC_GENPRIMOP_DIR_REL = $(GHC_UTILS_DIR_REL)/genprimopcode
+GHC_GENAPPLY_DIR_REL = $(GHC_UTILS_DIR_REL)/genapply
+
+GHC_MANGLER_DIR_REL = $(GHC_DRIVER_DIR_REL)/mangler
+GHC_SPLIT_DIR_REL = $(GHC_DRIVER_DIR_REL)/split
+GHC_SYSMAN_DIR_REL = $(GHC_RTS_DIR_REL)/parallel
+
+GHC_UTILS_DIR = $(FPTOOLS_TOP)/$(GHC_UTILS_DIR_REL)
+GHC_INCLUDE_DIR = $(FPTOOLS_TOP)/$(GHC_INCLUDE_DIR_REL)
+GHC_COMPILER_DIR = $(FPTOOLS_TOP)/$(GHC_COMPILER_DIR_REL)
+GHC_RTS_DIR = $(FPTOOLS_TOP)/$(GHC_RTS_DIR_REL)
+GHC_UTILS_DIR = $(FPTOOLS_TOP)/$(GHC_UTILS_DIR_REL)
+GHC_DRIVER_DIR = $(FPTOOLS_TOP)/$(GHC_DRIVER_DIR_REL)
+GHC_COMPAT_DIR = $(FPTOOLS_TOP)/$(GHC_COMPAT_DIR_REL)
+
+GHC_MKDEPENDC_DIR = $(FPTOOLS_TOP)/$(GHC_MKDEPENDC_DIR_REL)
+GHC_LTX_DIR = $(FPTOOLS_TOP)/$(GHC_LTX_DIR_REL)
+GHC_RUNTEST_DIR = $(FPTOOLS_TOP)/$(GHC_RUNTEST_DIR_REL)
+GHC_LNDIR_DIR = $(FPTOOLS_TOP)/$(GHC_LNDIR_DIR_REL)
+GHC_MKDIRHIER_DIR = $(FPTOOLS_TOP)/$(GHC_MKDIRHIER_DIR_REL)
+GHC_DOCBOOK_DIR = $(FPTOOLS_TOP)/$(GHC_DOCBOOK_DIR_REL)
+GHC_UNLIT_DIR = $(FPTOOLS_TOP)/$(GHC_UNLIT_DIR_REL)
+GHC_HP2PS_DIR = $(FPTOOLS_TOP)/$(GHC_HP2PS_DIR_REL)
+GHC_HSTAGS_DIR = $(FPTOOLS_TOP)/$(GHC_HSTAGS_DIR_REL)
+GHC_HSC2HS_DIR = $(FPTOOLS_TOP)/$(GHC_HSC2HS_DIR_REL)
+GHC_TOUCHY_DIR = $(FPTOOLS_TOP)/$(GHC_TOUCHY_DIR_REL)
+GHC_PKG_DIR = $(FPTOOLS_TOP)/$(GHC_PKG_DIR_REL)
+GHC_GENPRIMOP_DIR = $(FPTOOLS_TOP)/$(GHC_GENPRIMOP_DIR_REL)
+GHC_GENAPPLY_DIR = $(FPTOOLS_TOP)/$(GHC_GENAPPLY_DIR_REL)
+
+GHC_MANGLER_DIR = $(FPTOOLS_TOP)/$(GHC_MANGLER_DIR_REL)
+GHC_SPLIT_DIR = $(FPTOOLS_TOP)/$(GHC_SPLIT_DIR_REL)
+GHC_SYSMAN_DIR = $(FPTOOLS_TOP)/$(GHC_SYSMAN_DIR_REL)
+
+GHC_UTILS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_UTILS_DIR_REL)
+GHC_INCLUDE_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_INCLUDE_DIR_REL)
+GHC_COMPILER_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_COMPILER_DIR_REL)
+GHC_RTS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_RTS_DIR_REL)
+GHC_UTILS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_UTILS_DIR_REL)
+GHC_DRIVER_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_DRIVER_DIR_REL)
+GHC_COMPAT_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_COMPAT_DIR_REL)
+
+GHC_MKDEPENDC_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_MKDEPENDC_DIR_REL)
+GHC_LTX_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_LTX_DIR_REL)
+GHC_RUNTEST_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_RUNTEST_DIR_REL)
+GHC_LNDIR_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_LNDIR_DIR_REL)
+GHC_MKDIRHIER_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_MKDIRHIER_DIR_REL)
+GHC_DOCBOOK_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_DOCBOOK_DIR_REL)
+GHC_UNLIT_DIR = $(FPTOOLS_TOP_ABS)/$(GHC_UNLIT_DIR_REL)
+GHC_HP2PS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_HP2PS_DIR_REL)
+GHC_HSTAGS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_HSTAGS_DIR_REL)
+GHC_HSC2HS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_HSC2HS_DIR_REL)
+GHC_TOUCHY_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_TOUCHY_DIR_REL)
+GHC_PKG_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)
+GHC_GENPRIMOP_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_GENPRIMOP_DIR_REL)
+GHC_GENAPPLY_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_GENAPPLY_DIR_REL)
+
+GHC_MANGLER_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_MANGLER_DIR_REL)
+GHC_SYSMAN_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_SYSMAN_DIR_REL)
+GHC_SPLIT_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_SPLIT_DIR_REL)
-SCRIPT_PREFIX = $(GLAFP_UTILS)/scripts/
-MKDEPENDC_PREFIX = $(GLAFP_UTILS)/mkdependC/
-LTX_PREFIX = $(GLAFP_UTILS)/ltx/
-RUNTEST_PREFIX = $(GLAFP_UTILS)/runstdtest/
-VERBATIM_PREFIX = $(GLAFP_UTILS)/verbatim/
-SGMLVERB_PREFIX = $(GLAFP_UTILS)/sgmlverb/
-ETAGS_PREFIX = $(GLAFP_UTILS)/etags/
-LNDIR_PREFIX = $(GLAFP_UTILS)/lndir/
-MKDIRHIER_PREFIX = $(GLAFP_UTILS)/mkdirhier/
-DOCBOOK_PREFIX = $(GLAFP_UTILS)/docbook/
-
-HADDOCK_PREFIX = $(FPTOOLS_TOP)/haddock/
+# -----------------------------------------------------------------------------
+# Names of programs in the GHC tree
+#
+# xxx_PGM the name of an executable, without the path
+# xxx the executable relative to the current dir
+
+GHC_UNLIT_PGM = unlit$(exeext)
+GHC_HSTAGS_PGM = hasktags
+GHC_HSC2HS_INPLACE_PGM = hsc2hs-inplace
+GHC_TOUCHY_PGM = touchy$(exeext)
+GHC_MANGLER_PGM = ghc-asm
+GHC_SPLIT_PGM = ghc-split
+GHC_SYSMAN_PGM = SysMan
+GHC_PKG_INPLACE_PGM = ghc-pkg-inplace
+GHC_GENPRIMOP_PGM = genprimopcode
+GHC_GENAPPLY_PGM = genapply
+GHC_MKDEPENDC_PGM = mkdependC
+GHC_LTX_PGM = ltx
+GHC_MKDIRHIER_PGM = mkdirhier
+GHC_LNDIR_PGM = lndir
+GHC_RUNTEST_PGM = runstdtest
-LITERATE_PREFIX = $(FPTOOLS_TOP)/literate/
+ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
+GHC_CP = "xcopy /y"
+GHC_PERL = perl
+else
+GHC_CP = $(CP)
+GHC_PERL = $(PERL)
+endif
-UNLIT_PREFIX = $(FPTOOLS_TOP)/ghc/utils/unlit/
-HP2PS_PREFIX = $(FPTOOLS_TOP)/ghc/utils/hp2ps/
-HSTAGS_PREFIX = $(FPTOOLS_TOP)/ghc/utils/hasktags/
-HSC2HS_PREFIX = $(FPTOOLS_TOP)/ghc/utils/hsc2hs/
+UNLIT = $(GHC_UNLIT_DIR)/$(GHC_UNLIT_PGM)
+HSTAGS = $(GHC_HSTAGS_DIR)/$(GHC_HSTAGS_PGM)
+HSC2HS_INPLACE = $(GHC_HSC2HS_DIR)/$(GHC_HSC2HS_INPLACE_PGM)
+MANGLER = $(GHC_MANGLER_DIR)/$(GHC_MANGLER_PGM)
+SPLIT = $(GHC_SPLIT_DIR)/$(GHC_SPLIT_PGM)
+SYSMAN = $(GHC_SYSMAN_DIR)/$(GHC_SYSMAN_PGM)
+GHC_PKG_INPLACE = $(GHC_PKG_DIR)/$(GHC_PKG_INPLACE_PGM)
+GENPRIMOP = $(GHC_GENPRIMOP_DIR)/$(GHC_GENPRIMOP_PGM)
+GENAPPLY = $(GHC_GENAPPLY_DIR)/$(GHC_GENAPPLY_PGM)
+MKDEPENDC = $(GHC_MKDEPENDC_DIR)/$(GHC_MKDEPENDC_PGM)
+LTX = $(GHC_LTX_DIR)/$(GHC_LTX_PGM)
+MKDIRHIER = $(GHC_MKDIRHIER_DIR)/$(GHC_MKDIRHIER_PGM)
+LNDIR = $(GHC_LNDIR_DIR)/$(GHC_LNDIR_PGM)
+RUNTEST = $(GHC_RUNTEST_DIR)/$(GHC_RUNTEST_PGM)
#-----------------------------------------------------------------------------
# Haskell compilers and mkdependHS
@@ -722,6 +763,9 @@ GhcMajVersion = @GhcMajVersion@
GhcMinVersion = @GhcMinVersion@
GhcPatchLevel = @GhcPatchLevel@
+# Set to YES if $(GHC) has the readline package installed
+GhcHasReadline = @GhcHasReadline@
+
# Canonicalised ghc version number, used for easy (integer) version
# comparisons. We must expand $(GhcMinVersion) to two digits by
# adding a leading zero if necessary:
@@ -734,17 +778,45 @@ endif
HBC = @HBC@
NHC = @NHC@
+# Setting UseStage1=YES forces use of the stage1 compiler to compile
+# Haskell code, rather than the installed compiler.
+ifeq "$(UseStage1)" "YES"
+HC =$(GHC_STAGE1)
+MKDEPENDHS =$(GHC_STAGE1)
+else
HC = @WithHc@
MKDEPENDHS = $(GHC)
+endif
# Sometimes we want to invoke ghc from the build tree in different
-# projects (eg. it's handy to have a nofib & a ghc build in the same
+# places (eg. it's handy to have a nofib & a ghc build in the same
# tree). We can refer to "this ghc" as $(GHC_INPLACE):
-GHC_INPLACE = $(FPTOOLS_TOP)/ghc/compiler/ghc-inplace
-GHC_STAGE1 = $(FPTOOLS_TOP)/ghc/compiler/stage1/ghc-inplace
-GHC_STAGE2 = $(FPTOOLS_TOP)/ghc/compiler/stage2/ghc-inplace
-GHC_STAGE3 = $(FPTOOLS_TOP)/ghc/compiler/stage3/ghc-inplace
+GHC_INPLACE = $(GHC_COMPILER_DIR)/ghc-inplace
+GHC_STAGE1 = $(GHC_COMPILER_DIR)/stage1/ghc-inplace
+GHC_STAGE2 = $(GHC_COMPILER_DIR)/stage2/ghc-inplace
+GHC_STAGE3 = $(GHC_COMPILER_DIR)/stage3/ghc-inplace
+
+# Some useful GHC version predicates:
+
+ifeq "$(UseStage1)" "YES"
+ghc_ge_504 = YES
+ghc_ge_601 = YES
+ghc_ge_602 = YES
+ghc_ge_603 = YES
+else
+ifeq "$(BootingFromHc)" "YES"
+ghc_ge_504 = YES
+ghc_ge_601 = YES
+ghc_ge_602 = YES
+ghc_ge_603 = YES
+else
+ghc_ge_504 = $(shell if (test $(GhcCanonVersion) -ge 504); then echo YES; else echo NO; fi)
+ghc_ge_601 = $(shell if (test $(GhcCanonVersion) -ge 601); then echo YES; else echo NO; fi)
+ghc_ge_602 = $(shell if (test $(GhcCanonVersion) -ge 602); then echo YES; else echo NO; fi)
+ghc_ge_603 = $(shell if (test $(GhcCanonVersion) -ge 603); then echo YES; else echo NO; fi)
+endif
+endif
#-----------------------------------------------------------------------------
# C compiler
@@ -859,7 +931,7 @@ LdIsGNULd = @LdIsGNULd@
# The reason for having to do this is that overly long command lines
# cause unnecessary trouble with some shells (e.g., /bin/sh on Solaris
# 2.5.1), which is why this backdoor is provided. The situation of overly
-# long command lines is either encountered while doing `make boot' in ghc/compiler,
+# long command lines is either encountered while doing `make boot' in compiler/,
# or when linking the compiler binary (`hsc').
#
# We do not use SHELL to execute long commands, as `make' will more than likely
@@ -893,6 +965,9 @@ TIME = @TimeCmd@
TROFF = troff
UNAME = uname
+# GTK+
+GTK_CONFIG = @GTK_CONFIG@
+
#-----------------------------------------------------------------------------
# DocBook XML stuff
@@ -912,16 +987,6 @@ XSLTPROC_LABEL_OPTS = --stringparam toc.section.depth 3 \
#-----------------------------------------------------------------------------
# FPtools support software
-# Stuff from fptools/glafp-utils
-MKDEPENDC = $(MKDEPENDC_PREFIX)mkdependC
-LTX = $(LTX_PREFIX)ltx
-MKDIRHIER = $(MKDIRHIER_PREFIX)mkdirhier
-LNDIR = $(LNDIR_PREFIX)lndir
-ETAGS = $(ETAGS_PREFIX)etags
-VERBATIM = $(VERBATIM_PREFIX)verbatim
-SGMLVERB = $(SGMLVERB_PREFIX)sgmlverb
-RUNTEST = $(RUNTEST_PREFIX)runstdtest
-
BLD_DLL = dllwrap
#
@@ -969,31 +1034,9 @@ GHC_ALEX_OPTS = -g
# Haddock
#
HADDOCK = @HaddockCmd@
-HADDOCK_INPLACE = $(HADDOCK_PREFIX)/src/haddock-inplace
-
-#
-# Stuff from fptools/literate
-#
-LIT2PGM = $(LITERATE_PREFIX)lit2pgm
-LIT2HTML = $(LITERATE_PREFIX)lit2html
-LIT2LATEX = $(LITERATE_PREFIX)lit2latex
-MKDEPENDLIT = $(LITERATE_PREFIX)mkdependlit
-LIT2CHANGELOG = $(LITERATE_PREFIX)lit2changelog
-LIT2TEXT = $(LITERATE_PREFIX)lit2text
-
-#
-# Stuff from fptools/ghc/utils
-#
-UNLIT = $(UNLIT_PREFIX)unlit$(exeext)
-HP2PS = $(HP2PS_PREFIX)hp2ps$(exeext)
-HSTAGS = $(HSTAGS_PREFIX)hasktags
-HSC2HS = $(HSC2HS_PREFIX)hsc2hs-inplace
#
-# Options for the compiling different `ways'. Various projects within
-# the glorious fptools tree support building in various user-configured
-# ways. For instance, you could set up one `way' such that the prelude
-# libraries all were built with the option -ffoldr-build-on.
+# Options for compiling in different `ways'.
#
# To configure up your own way, have a look at some of the standard ways
# such as profiling, and create your own set of WAY_*_OPTS defs below.
@@ -1003,15 +1046,6 @@ HSC2HS = $(HSC2HS_PREFIX)hsc2hs-inplace
#
#
-# IMPORTANT! The WAYS variable configures the different `ways'
-# you want to build a project (or maybe just parts of it, as is
-# the case for ghc/). This variable is intended set inside the
-# project mk setup, enforcing a global fptools WAYS is a bit too
-# much (do you *really* want to build glafp-utils the profiled-concurrent
-# way?)
-#
-
-#
# Definitions of the different ways:
#
# * their name:
@@ -1032,7 +1066,7 @@ USER_WAYS=a b c d e f g h j k l m n o A B
# The following ways currently have treated specially, p u t mg,
# as the driver script treats these guys specially and needs to carefully be told
# about the options for these. Hence, we hide the required command line options
-# for these in the ghc/driver, as this is the only place they are needed.
+# for these in the driver, as this is the only place they are needed.
#
# If you want to add to these default options, fill in the variables below:
diff --git a/mk/package.mk b/mk/package.mk
index 37e286bca7..fbabfeb1e4 100644
--- a/mk/package.mk
+++ b/mk/package.mk
@@ -3,13 +3,8 @@
ifneq "$(PACKAGE)" ""
-ifeq "$(STANDALONE_PACKAGE)" ""
-ifeq "$(ProjectNameShort)" "ghc"
+# FIXME: does anyone do this any more?
STANDALONE_PACKAGE = NO
-else
-STANDALONE_PACKAGE = YES
-endif
-endif
# -----------------------------------------------------------------------------
# Directory layouts, installation etc.
@@ -104,7 +99,7 @@ package.conf.installed : package.conf.in
sed -e 's/""//g' -e 's/:[ ]*,/: /g' >$@
# we could be more accurate here and add a dependency on
-# ghc/driver/package.conf, but that doesn't work too well because of
+# driver/package.conf, but that doesn't work too well because of
# make's limited accuracy with modification times: when doing 'make
# boot' in multiple packages, make won't detect that the package
# configuration needs updating if it was updated already in the last
diff --git a/mk/paths.mk b/mk/paths.mk
index 84f8988b17..b616e7d28d 100644
--- a/mk/paths.mk
+++ b/mk/paths.mk
@@ -230,7 +230,7 @@ TAGS_C_SRCS=$(C_SRCS)
#
# NOTE: $(SCRIPT_OBJS) is not in MOSTLY_CLEAN_FILES, because in some
# places in the tree it appears that we have source files in $(SCRIPT_OBJS).
-# Specifically glafp-utils/mkdependC/mkdependC.prl and others in ghc/driver and
+# Specifically glafp-utils/mkdependC/mkdependC.prl and others in driver/ and
# possibly others elsewhere in the tree. ToDo: fix this properly.
MOSTLY_CLEAN_FILES += $(HS_OBJS) $(C_OBJS) $(HSC_C_OBJS) $(GC_C_OBJS)
CLEAN_FILES += $(HS_PROG) $(C_PROG) $(SCRIPT_PROG) $(SCRIPT_LINK) \
diff --git a/mk/suffix.mk b/mk/suffix.mk
index 984c311ef4..276c0c02f0 100644
--- a/mk/suffix.mk
+++ b/mk/suffix.mk
@@ -26,7 +26,7 @@
# Haskell Suffix Rules
# The $(odir) support is for building GHC, where we need to build three
-# different versions from the same sources. See ghc/compiler/Makefile.
+# different versions from the same sources. See compiler/Makefile.
ifneq "$(odir)" ""
odir_ = $(odir)/
else
@@ -165,7 +165,7 @@ endif # BootingFromHc
#
ifneq "$(BootingFromHc)" "YES"
%_hsc.c %_hsc.h %.hs : %.hsc
- $(HSC2HS) $(HSC2HS_OPTS) $<
+ $(HSC2HS_INPLACE) $(HSC2HS_OPTS) $<
@touch $(patsubst %.hsc,%_hsc.c,$<)
endif
diff --git a/mk/target.mk b/mk/target.mk
index 7a49c35417..0334896b3f 100644
--- a/mk/target.mk
+++ b/mk/target.mk
@@ -2,14 +2,14 @@
#
# target.mk
#
-# Standard targets for fptools
+# Standard targets for GHC
#
#################################################################################
#
# This file contain three groups of target rules:
#
-# 1. FPtools targets
+# 1. GHC targets
# depend*
# runtests*
#
@@ -19,7 +19,7 @@
# install-docs*
# clean* distclean* mostlyclean* maintainer-clean*
# tags*
-# dvi ps (no info) FPTOOLS adds: pdf rtf html chm HxS
+# dvi ps (no info) GHC adds: pdf rtf html chm HxS
# check
#
# 3. Some of the above targets have a version that
@@ -50,7 +50,7 @@ include $(TOP)/mk/package.mk
include $(TOP)/mk/suffix.mk
##################################################################
-# FPtools standard targets
+# GHC standard targets
#
# depend:
#
@@ -202,7 +202,7 @@ endif
# directories where files are installed, and their parent
# directories. There is a script called `mkinstalldirs' which is
# convenient for this; find it in the Texinfo package.
-# (FPTOOLS: we use a close relative of the suggested script, situated
+# (GHC: we use a close relative of the suggested script, situated
# in glafp-utils/mkdirhier -- SOF)
@@ -373,7 +373,7 @@ SRC_BLD_DLL_OPTS += --export-all --output-def=HS$(PACKAGE)$(_cbits)$(_way).def D
ifneq "$(PACKAGE) $(IS_CBITS_LIB)" "std YES"
ifneq "$(PACKAGE)" "rts"
SRC_BLD_DLL_OPTS += -lHSstd_cbits_imp -L$(GHC_LIB_DIR)/std/cbits
-SRC_BLD_DLL_OPTS += -lHSrts_$(way_)imp -L$(GHC_RUNTIME_DIR)
+SRC_BLD_DLL_OPTS += -lHSrts_$(way_)imp -L$(GHC_RTS_DIR)
ifneq "$(PACKAGE)" "std"
ifeq "$(IS_CBITS_LIB)" ""
SRC_BLD_DLL_OPTS += -lHSstd_$(way_)imp -L$(GHC_LIB_DIR)/std
@@ -382,7 +382,7 @@ endif
endif
endif
-SRC_BLD_DLL_OPTS += -lgmp -L. -L$(GHC_RUNTIME_DIR)/gmp
+SRC_BLD_DLL_OPTS += -lgmp -L. -L$(GHC_RTS_DIR)/gmp
ifeq "$(IS_CBITS_LIB)" ""
SRC_BLD_DLL_OPTS += $(patsubst %,-lHS%_$(way_)imp, $(PACKAGE_DEPS))
SRC_BLD_DLL_OPTS += $(patsubst %,-L../%, $(PACKAGE_DEPS))
@@ -1077,21 +1077,21 @@ ifeq "$(way)" ""
# since these are way-independent
all docs TAGS clean distclean mostlyclean maintainer-clean install ::
@echo "------------------------------------------------------------------------"
- @echo "===fptools== Recursively making \`$@' for ways: $(WAYS) ..."
+ @echo "== Recursively making \`$@' for ways: $(WAYS) ..."
@echo "PWD = $(shell pwd)"
@echo "------------------------------------------------------------------------"
# Don't rely on -e working, instead we check exit return codes from sub-makes.
@case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *) x_on_err=1;; esac; \
for i in $(WAYS) ; do \
echo "------------------------------------------------------------------------"; \
- echo "==fptools== $(MAKE) way=$$i $@;"; \
+ echo "== $(MAKE) way=$$i $@;"; \
echo "PWD = $(shell pwd)"; \
echo "------------------------------------------------------------------------"; \
$(MAKE) way=$$i --no-print-directory $(MFLAGS) $@ ; \
if [ $$? -eq 0 ] ; then true; else exit $$x_on_err; fi; \
done
@echo "------------------------------------------------------------------------"
- @echo "===fptools== Finished recursively making \`$@' for ways: $(WAYS) ..."
+ @echo "== Finished recursively making \`$@' for ways: $(WAYS) ..."
@echo "PWD = $(shell pwd)"
@echo "------------------------------------------------------------------------"
@@ -1171,21 +1171,21 @@ endif
$(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean maintainer-clean $(INSTALL_TARGET) $(INSTALL_DOCS_TARGET) html chm HxS ps dvi txt::
@echo "------------------------------------------------------------------------"
- @echo "===fptools== Recursively making \`$@' in $(SUBDIRS) ..."
+ @echo "== Recursively making \`$@' in $(SUBDIRS) ..."
@echo "PWD = $(shell pwd)"
@echo "------------------------------------------------------------------------"
# Don't rely on -e working, instead we check exit return codes from sub-makes.
@case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *) x_on_err=1;; esac; \
for i in $(SUBDIRS); do \
echo "------------------------------------------------------------------------"; \
- echo "==fptools== $(MAKE) $@ $(MFLAGS);"; \
+ echo "== $(MAKE) $@ $(MFLAGS);"; \
echo " in $(shell pwd)/$$i"; \
echo "------------------------------------------------------------------------"; \
$(MAKE) --no-print-directory -C $$i $(MFLAGS) $@; \
if [ $$? -eq 0 -o $$x_on_err -eq 0 ] ; then true; else exit 1; fi; \
done
@echo "------------------------------------------------------------------------"
- @echo "===fptools== Finished making \`$@' in $(SUBDIRS) ..."
+ @echo "== Finished making \`$@' in $(SUBDIRS) ..."
@echo "PWD = $(shell pwd)"
@echo "------------------------------------------------------------------------"