@echo '{-# LANGUAGE CPP #-}' >> $@
@echo 'module Config where' >> $@
@echo >> $@
+ @echo 'import Distribution.System' >> $@
+ @echo >> $@
@echo '#include "ghc_boot_platform.h"' >> $@
@echo >> $@
- @echo 'cBuildPlatform :: String' >> $@
- @echo 'cBuildPlatform = BuildPlatform_NAME' >> $@
- @echo 'cHostPlatform :: String' >> $@
- @echo 'cHostPlatform = HostPlatform_NAME' >> $@
- @echo 'cTargetPlatform :: String' >> $@
- @echo 'cTargetPlatform = TargetPlatform_NAME' >> $@
+ @echo 'cBuildPlatformString :: String' >> $@
+ @echo 'cBuildPlatformString = BuildPlatform_NAME' >> $@
+ @echo 'cHostPlatformString :: String' >> $@
+ @echo 'cHostPlatformString = HostPlatform_NAME' >> $@
+ @echo 'cTargetPlatformString :: String' >> $@
+ @echo 'cTargetPlatformString = TargetPlatform_NAME' >> $@
+ @echo >> $@
+# Sync this with checkArch in configure.ac
+ @echo 'cTargetArch :: Arch' >> $@
+ @echo '#if i386_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = I386' >> $@
+ @echo '#elif x86_64_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = X86_64' >> $@
+ @echo '#elif powerpc_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = PPC' >> $@
+ @echo '#elif powerpc64_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = PPC64' >> $@
+ @echo '#elif sparc_TARGET_ARCH || sparc64_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = Sparc' >> $@
+ @echo '#elif arm_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = Arm' >> $@
+ @echo '#elif mips_TARGET_ARCH || mipseb_TARGET_ARCH || mipsel_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = Mips' >> $@
+ @echo '#elif 0' >> $@
+ @echo 'cTargetArch = SH' >> $@
+ @echo '#elif ia64_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = IA64' >> $@
+ @echo '#elif s390_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = S390' >> $@
+ @echo '#elif alpha_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = Alpha' >> $@
+ @echo '#elif hppa_TARGET_ARCH || hppa1_1_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = Hppa' >> $@
+ @echo '#elif rs6000_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = Rs6000' >> $@
+ @echo '#elif m68k_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = M68k' >> $@
+ @echo '#elif vax_TARGET_ARCH' >> $@
+ @echo 'cTargetArch = Vax' >> $@
+ @echo '#else' >> $@
+ @echo '#error Unknown target arch' >> $@
+ @echo '#endif' >> $@
+ @echo >> $@
+# Sync this with checkOS in configure.ac
+ @echo 'cTargetOS :: OS' >> $@
+ @echo '#if linux_TARGET_OS' >> $@
+ @echo 'cTargetOS = Linux' >> $@
+ @echo '#elif freebsd_TARGET_OS' >> $@
+ @echo 'cTargetOS = FreeBSD' >> $@
+ @echo '#elif netbsd_TARGET_OS' >> $@
+ @echo 'cTargetOS = NetBSD' >> $@
+ @echo '#elif openbsd_TARGET_OS' >> $@
+ @echo 'cTargetOS = OpenBSD' >> $@
+ @echo '#elif dragonfly_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "dragonfly"' >> $@
+ @echo '#elif osf1_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "osf"' >> $@
+ @echo '#elif osf3_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "osf"' >> $@
+ @echo '#elif hpux_TARGET_OS' >> $@
+ @echo 'cTargetOS = HPUX' >> $@
+ @echo '#elif linuxaout_TARGET_OS' >> $@
+ @echo 'cTargetOS = Linux' >> $@
+ @echo '#elif kfreebsdgnu_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "kfreebsdgnu"' >> $@
+ @echo '#elif freebsd2_TARGET_OS' >> $@
+ @echo 'cTargetOS = FreeBSD' >> $@
+ @echo '#elif solaris2_TARGET_OS' >> $@
+ @echo 'cTargetOS = Solaris' >> $@
+ @echo '#elif cygwin32_TARGET_OS' >> $@
+ @echo 'cTargetOS = Windows' >> $@
+ @echo '#elif mingw32_TARGET_OS' >> $@
+ @echo 'cTargetOS = Windows' >> $@
+ @echo '#elif darwin_TARGET_OS' >> $@
+ @echo 'cTargetOS = OSX' >> $@
+ @echo '#elif gnu_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "gnu"' >> $@
+ @echo '#elif nextstep2_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "nextstep"' >> $@
+ @echo '#elif nextstep3_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "nextstep"' >> $@
+ @echo '#elif sunos4_TARGET_OS' >> $@
+ @echo 'cTargetOS = Solaris' >> $@
+ @echo '#elif ultrix_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "ultrix"' >> $@
+ @echo '#elif irix_TARGET_OS' >> $@
+ @echo 'cTargetOS = IRIX' >> $@
+ @echo '#elif aix_TARGET_OS' >> $@
+ @echo 'cTargetOS = AIX' >> $@
+ @echo '#elif haiku_TARGET_OS' >> $@
+ @echo 'cTargetOS = OtherOS "haiku"' >> $@
+ @echo '#else' >> $@
+ @echo '#error Unknown target OS' >> $@
+ @echo '#endif' >> $@
@echo >> $@
@echo 'cProjectName :: String' >> $@
@echo 'cProjectName = "$(ProjectName)"' >> $@
@echo 'cBooterVersion = "$(GhcVersion)"' >> $@
@echo 'cStage :: String' >> $@
@echo 'cStage = show (STAGE :: Int)' >> $@
- @echo 'cCcOpts :: [String]' >> $@
- @echo 'cCcOpts = words "$(CONF_CC_OPTS_STAGE$*)"' >> $@
- @echo 'cLdOpts :: [String]' >> $@
- @echo 'cLdOpts = words "$(CONF_LD_OPTS_STAGE$*)"' >> $@
+ @echo 'cGccLinkerOpts :: [String]' >> $@
+ @echo 'cGccLinkerOpts = words "$(CONF_GCC_LINKER_OPTS_STAGE$*)"' >> $@
+ @echo 'cLdLinkerOpts :: [String]' >> $@
+ @echo 'cLdLinkerOpts = words "$(CONF_LD_LINKER_OPTS_STAGE$*)"' >> $@
@echo 'cIntegerLibrary :: String' >> $@
@echo 'cIntegerLibrary = "$(INTEGER_LIBRARY)"' >> $@
- @echo 'cSplitObjs :: String' >> $@
- @echo 'cSplitObjs = "$(SupportsSplitObjs)"' >> $@
+ @echo 'cSupportsSplitObjs :: String' >> $@
+ @echo 'cSupportsSplitObjs = "$(SupportsSplitObjs)"' >> $@
@echo 'cGhcWithInterpreter :: String' >> $@
@echo 'cGhcWithInterpreter = "$(GhcWithInterpreter)"' >> $@
@echo 'cGhcWithNativeCodeGen :: String' >> $@
@echo 'cGhcWithNativeCodeGen = "$(GhcWithNativeCodeGen)"' >> $@
- @echo 'cGhcWithLlvmCodeGen :: String' >> $@
- @echo 'cGhcWithLlvmCodeGen = "YES"' >> $@
@echo 'cGhcWithSMP :: String' >> $@
@echo 'cGhcWithSMP = "$(GhcWithSMP)"' >> $@
@echo 'cGhcRTSWays :: String' >> $@
@echo 'cLeadingUnderscore = "$(LeadingUnderscore)"' >> $@
@echo 'cRAWCPP_FLAGS :: String' >> $@
@echo 'cRAWCPP_FLAGS = "$(RAWCPP_FLAGS)"' >> $@
- @echo 'cGCC :: String' >> $@
- @echo 'cGCC = "$(WhatGccIsCalled)"' >> $@
@echo 'cMKDLL :: String' >> $@
@echo 'cMKDLL = "$(BLD_DLL)"' >> $@
@echo 'cLdIsGNULd :: String' >> $@
@echo 'cLdIsGNULd = "$(LdIsGNULd)"' >> $@
+ @echo 'cLdHasBuildId :: String' >> $@
+ @echo 'cLdHasBuildId = "$(LdHasBuildId)"' >> $@
@echo 'cLD_X :: String' >> $@
@echo 'cLD_X = "$(LD_X)"' >> $@
@echo 'cGHC_DRIVER_DIR :: String' >> $@
@echo 'cGHC_UNLIT_PGM = "$(GHC_UNLIT_PGM)"' >> $@
@echo 'cGHC_UNLIT_DIR :: String' >> $@
@echo 'cGHC_UNLIT_DIR = "$(GHC_UNLIT_DIR)"' >> $@
- @echo 'cGHC_MANGLER_PGM :: String' >> $@
- @echo 'cGHC_MANGLER_PGM = "$(GHC_MANGLER_PGM)"' >> $@
- @echo 'cGHC_MANGLER_DIR :: String' >> $@
- @echo 'cGHC_MANGLER_DIR = "$(GHC_MANGLER_DIR)"' >> $@
@echo 'cGHC_SPLIT_PGM :: String' >> $@
@echo 'cGHC_SPLIT_PGM = "$(GHC_SPLIT_PGM)"' >> $@
@echo 'cGHC_SPLIT_DIR :: String' >> $@
@echo 'cGHC_SYSMAN_PGM = "$(GHC_SYSMAN)"' >> $@
@echo 'cGHC_SYSMAN_DIR :: String' >> $@
@echo 'cGHC_SYSMAN_DIR = "$(GHC_SYSMAN_DIR)"' >> $@
- @echo 'cGHC_PERL :: String' >> $@
- @echo 'cGHC_PERL = "$(GHC_PERL)"' >> $@
@echo 'cDEFAULT_TMPDIR :: String' >> $@
@echo 'cDEFAULT_TMPDIR = "$(DEFAULT_TMPDIR)"' >> $@
@echo 'cRelocatableBuild :: Bool' >> $@
else
@echo 'cRelocatableBuild = False' >> $@
endif
- @echo 'cUseArchivesForGhci :: Bool' >> $@
-ifeq "$(UseArchivesForGhci)" "YES"
- @echo 'cUseArchivesForGhci = True' >> $@
-else
- @echo 'cUseArchivesForGhci = False' >> $@
-endif
@echo 'cLibFFI :: Bool' >> $@
ifeq "$(UseLibFFIForAdjustors)" "YES"
@echo 'cLibFFI = True' >> $@
endif
-ifeq "$(GhcWithNativeCodeGen)" "NO"
-# XXX This should logically be a CPP option, but there doesn't seem to
-# be a flag for that
-compiler_CONFIGURE_OPTS += --ghc-option=-DOMIT_NATIVE_CODEGEN
-endif
-
ifeq "$(TargetOS_CPP)" "openbsd"
compiler_CONFIGURE_OPTS += --ld-options=-E
endif
endif
# If we're profiling GHC then we want lots of SCCs, so -auto-all
-# We also don't want to waste time building the non-profiling library,
-# either normally or for ghci. Unfortunately this means that we have to
-# tell ghc-pkg --force as it gets upset when libHSghc-6.9.a doesn't
-# exist.
+# We also don't want to waste time building the non-profiling library.
+# Unfortunately this means that we have to tell ghc-pkg --force as it
+# gets upset when libHSghc-6.9.a doesn't exist.
ifeq "$(GhcProfiled)" "YES"
compiler_stage2_CONFIGURE_OPTS += --ghc-option=-auto-all
# We seem to still build the vanilla libraries even if we say
# their absence when we register the package. So for now, we just
# leave the vanilla libraries enabled.
# compiler_stage2_CONFIGURE_OPTS += --disable-library-vanilla
-compiler_stage2_CONFIGURE_OPTS += --disable-library-for-ghci
compiler_stage2_CONFIGURE_OPTS += --ghc-pkg-option=--force
endif
-ifeq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
-# The #include is vital for the via-C route with older compilers, else the C
-# compiler doesn't realise that the stcall foreign imports are indeed
-# stdcall, and doesn't generate the Foo@8 name for them
-# It's only important for older compilers, and in fact newer compilers
-# will give a warning if the -#include flag is used. We therefore only
-# do it for stage1, and only for < 6.11.
-ifeq "$(ghc_ge_611)" "NO"
-compiler_stage1_CONFIGURE_OPTS += --ghc-option='-\#include' \
- --ghc-option='"<windows.h>"' \
- --ghc-option='-\#include' \
- --ghc-option='"<process.h>"'
-endif
-endif
-
-# ghc_strlen percolates through so many modules that it is easier to get its
-# prototype via a global option instead of a myriad of per-file OPTIONS.
-# Again, this is only done for older compilers.
-ifeq "$(ghc_ge_611)" "NO"
-compiler_stage1_CONFIGURE_OPTS += --ghc-options='-\#include "cutils.h"'
-endif
-
compiler_stage3_CONFIGURE_OPTS := $(compiler_stage2_CONFIGURE_OPTS)
compiler_stage1_CONFIGURE_OPTS += --ghc-option=-DSTAGE=1
$(eval $(call build-package,compiler,stage2,1))
$(eval $(call build-package,compiler,stage3,2))
+# after build-package, because that adds --enable-library-for-ghci
+# to compiler_stage*_CONFIGURE_OPTS:
+# We don't build the GHCi library for the ghc package. We can load it
+# the .a file instead, and as object splitting isn't on for the ghc
+# package this isn't much slower.However, not building the package saves
+# a significant chunk of disk space.
+compiler_stage1_CONFIGURE_OPTS += --disable-library-for-ghci
+compiler_stage2_CONFIGURE_OPTS += --disable-library-for-ghci
+compiler_stage3_CONFIGURE_OPTS += --disable-library-for-ghci
+
# after build-package, because that sets compiler_stage1_HC_OPTS:
compiler_stage1_HC_OPTS += $(GhcStage1HcOpts)
compiler_stage2_HC_OPTS += $(GhcStage2HcOpts)
compiler_stage3_HC_OPTS += $(GhcStage3HcOpts)
+ifeq "$(GhcStage1DefaultNewCodegen)" "YES"
+compiler_stage1_HC_OPTS += -DGHC_DEFAULT_NEW_CODEGEN
+endif
+
+ifeq "$(GhcStage2DefaultNewCodegen)" "YES"
+compiler_stage2_HC_OPTS += -DGHC_DEFAULT_NEW_CODEGEN
+endif
+
+ifeq "$(GhcStage3DefaultNewCodegen)" "YES"
+compiler_stage3_HC_OPTS += -DGHC_DEFAULT_NEW_CODEGEN
+endif
+
ifneq "$(BINDIST)" "YES"
compiler_stage2_TAGS_HC_OPTS = -package ghc
< $< > $@
"$(compiler_stage1_GHC_PKG)" update --force $(compiler_stage1_GHC_PKG_OPTS) $@
-$(compiler_stage1_v_LIB) : compiler/stage1/inplace-pkg-config-munged
+# We need to make sure the munged config is in the database before we
+# try to configure ghc-bin
+ghc/stage1/package-data.mk : compiler/stage1/inplace-pkg-config-munged
endif
endif