X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Fconfig.mk.in;h=cac676cca50e172d64c6d7d20bdfc72d5e687229;hb=7ca6e18319483cd198c6d74dbfef8b7de734ed98;hp=3153e495e7097224ebc03d6c41cd3b75e3c63770;hpb=cab3c5cb1a0038412472172cb0b25bc81dfdde8f;p=ghc-hetmet.git diff --git a/mk/config.mk.in b/mk/config.mk.in index 3153e49..cac676c 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -41,14 +41,48 @@ # A "platform" is the GNU cpu-type/manufacturer/operating-system target machine # specifier. E.g. sparc-sun-solaris2 +# +# Build platform: the platform on which we are doing this build +# Host platform: the platform on which these binaries will run +# Target platform: the platform for which this compiler will generate code +# +# We don't support build & host being different, because the build +# process creates binaries that are run during the build, and also +# installed. +# +# If host & target are different, then we are building a compiler +# which will generate intermediate .hc files to port to the target +# architecture for bootstrapping. The libraries and stage 2 compiler +# will be built as HC files for the target system, and likely won't +# build on this host platform. +# +# Guidelines for when to use HOST vs. TARGET: +# +# - In the build system (Makefile, foo.mk), normally we should test +# $(HOSTPLATFORM). There are some cases (eg. installation), where +# we expect $(HOSTPLATFORM)==$(TARGETPLATFORM), so in those cases it +# doesn't matter which is used. +# +# - In the compiler itself, we should test HOST or TARGET depending +# on whether the conditional relates to the code being generated, or +# the platform on which the compiler is running. For stage 2, +# HOSTPLATFORM should be reset to be TARGETPLATFORM (we currently +# don't do this, but we should). +# +# - In the RTS and library code, we should be testing TARGET only. +# +# NOTE: cross-compiling is not well supported by the build system. +# You have to do a lot of work by hand to cross compile: see the +# section on "Porting GHC" in the Building Guide. HOSTPLATFORM = @HostPlatform@ TARGETPLATFORM = @TargetPlatform@ -BUILDPLATFORM = @HostPlatform@ +BUILDPLATFORM = @BuildPlatform@ # Hack alert: -# in one or two places, we need to get at the OS version (major and perhaps even minor), -# HostOS_Full is the OS name reported by AC_CANONICAL_SYSTEM. +# in one or two places, we need to get at the OS version (major and +# perhaps even minor), HostOS_Full is the OS name reported by +# AC_CANONICAL_SYSTEM. # HostPlatform_CPP = @HostPlatform_CPP@ HostArch_CPP = @HostArch_CPP@ @@ -56,25 +90,31 @@ HostOS_CPP = @HostOS_CPP@ HostOS_Full = @HostOS_Full@ HostVendor_CPP = @HostVendor_CPP@ -# -# ToDo: check if these can be purged now. -- sof -# +TargetPlatform_CPP = @TargetPlatform_CPP@ +TargetArch_CPP = @TargetArch_CPP@ +TargetOS_CPP = @TargetOS_CPP@ +TargetVendor_CPP = @TargetVendor_CPP@ + +BuildPlatform_CPP = @BuildPlatform_CPP@ +BuildArch_CPP = @BuildArch_CPP@ +BuildOS_CPP = @BuildOS_CPP@ +BuildVendor_CPP = @BuildVendor_CPP@ -@HostPlatform_CPP@_HOST = 1 -@HostPlatform_CPP@_TARGET = 1 -@HostPlatform_CPP@_BUILD = 1 +@HostPlatform_CPP@_HOST = 1 +@TargetPlatform_CPP@_TARGET = 1 +@BuildPlatform_CPP@_BUILD = 1 -@HostArch_CPP@_HOST_ARCH = 1 -@HostArch_CPP@_TARGET_ARCH = 1 -@HostArch_CPP@_BUILD_ARCH = 1 +@HostArch_CPP@_HOST_ARCH = 1 +@TargetArch_CPP@_TARGET_ARCH = 1 +@BuildArch_CPP@_BUILD_ARCH = 1 -@HostOS_CPP@_HOST_OS = 1 -@HostOS_CPP@_TARGET_OS = 1 -@HostOS_CPP@_BUILD_OS = 1 +@HostOS_CPP@_HOST_OS = 1 +@TargetOS_CPP@_TARGET_OS = 1 +@BuildOS_CPP@_BUILD_OS = 1 -@HostVendor_CPP@_HOST_VENDOR = 1 -@HostVendor_CPP@_TARGET_VENDOR = 1 -@HostVendor_CPP@_BUILD_VENDOR = 1 +@HostVendor_CPP@_HOST_VENDOR = 1 +@TargetVendor_CPP@_TARGET_VENDOR = 1 +@BuildVendor_CPP@_BUILD_VENDOR = 1 # Leading underscores on symbol names in object files # Valid options: YES/NO @@ -99,11 +139,15 @@ BootingFromHc = @BootingFromHc@ # rather than registerised code, i.e., disable the mangler? BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@ -# build the libs first if we're bootstrapping from .hc files +# 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 libraries hslibs ghc greencard happy hdirect hood nofib haddock alex +AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib else -AllProjects = glafp-utils ghc libraries hslibs greencard happy hdirect hood nofib haddock alex +AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib endif # @@ -124,6 +168,11 @@ ProjectsDontInstall = glafp-utils nofib IncludeTestDirsInBuild=NO # +# Should the various project example directories be built? +# +IncludeExampleDirsInBuild=NO + +# # Which ways should SGML documents be built? # options are: dvi ps pdf html rtf # @@ -181,11 +230,9 @@ GhcStage3HcOpts= # (way 'u') to get unregisterised code, but the default way will be # registerised. # -# NOTE: this is not the same as building the compiler itself -# unregisterised. That's done by either (a) bootstrapping with a -# compiler that was built with GhcUnregisterised=YES, or (b) -# bootstrapping with a compiler that has way 'u' libraries, and the -# flag '-unreg' is added to GhcHcOpts above. +# NOTE: the stage1 compiler will be a registerised binary (assuming +# the compiler you build with is generating registerised binaries), but +# the stage2 compiler will be an unregisterised binary. # GhcUnregisterised=NO @@ -327,7 +374,7 @@ GhcRtsThreaded=@ThreadedRts@ # Build the Haskell Readline bindings? # -GhcLibsWithReadline=@HaveReadlineHeaders@ +GhcLibsWithReadline=@GhcLibsWithReadline@ # Libraries needed for linking with readline LibsReadline=@LibsReadline@ @@ -360,6 +407,10 @@ X_LIBS=@X_LIBS@ # DotnetSupport=@DotnetSupport@ +# Build unix package? +# +GhcLibsWithUnix=@GhcLibsWithUnix@ + ################################################################################ # # happy project