diff options
Diffstat (limited to 'mk')
-rw-r--r-- | mk/boilerplate.mk | 4 | ||||
-rw-r--r-- | mk/bootstrap.mk | 6 | ||||
-rw-r--r-- | mk/config.mk.in | 442 | ||||
-rw-r--r-- | mk/package.mk | 9 | ||||
-rw-r--r-- | mk/paths.mk | 2 | ||||
-rw-r--r-- | mk/suffix.mk | 4 | ||||
-rw-r--r-- | mk/target.mk | 26 |
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 "------------------------------------------------------------------------" |