X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fghc.mk;h=76b393f04bc6a0e2ce1dd0d7243ae0748c68a6b5;hp=5387c8bcfc959e1dc959119b5629f50b9e442e2c;hb=16b9e80dc14db24509f051f294b5b51943285090;hpb=1caf694c7d5ea3699cfb988b25f0c850cedcd3e4 diff --git a/compiler/ghc.mk b/compiler/ghc.mk index 5387c8b..76b393f 100644 --- a/compiler/ghc.mk +++ b/compiler/ghc.mk @@ -38,25 +38,63 @@ compiler_stage3_MKDEPENDC_OPTS = -DMAKING_GHC_BUILD_SYSTEM_DEPENDENCIES compiler_stage1_C_FILES_NODEPS = compiler/parser/cutils.c ifneq "$(BINDIST)" "YES" -compiler/stage1/package-data.mk : $(compiler_CONFIG_HS) -compiler/stage2/package-data.mk : $(compiler_CONFIG_HS) -compiler/stage3/package-data.mk : $(compiler_CONFIG_HS) +compiler/stage1/package-data.mk : compiler/stage1/build/Config.hs +compiler/stage2/package-data.mk : compiler/stage2/build/Config.hs +compiler/stage3/package-data.mk : compiler/stage3/build/Config.hs endif -$(compiler_CONFIG_HS) : mk/config.mk mk/project.mk +compiler/stage%/build/Config.hs : mk/config.mk mk/project.mk | $$(dir $$@)/. "$(RM)" $(RM_OPTS) $@ @echo 'Creating $@ ... ' @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 >> $@ @echo 'cProjectName :: String' >> $@ @echo 'cProjectName = "$(ProjectName)"' >> $@ @@ -70,16 +108,20 @@ $(compiler_CONFIG_HS) : mk/config.mk mk/project.mk @echo 'cBooterVersion = "$(GhcVersion)"' >> $@ @echo 'cStage :: String' >> $@ @echo 'cStage = show (STAGE :: Int)' >> $@ + @echo 'cCcOpts :: [String]' >> $@ + @echo 'cCcOpts = words "$(CONF_CC_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' >> $@ @@ -92,12 +134,12 @@ $(compiler_CONFIG_HS) : mk/config.mk mk/project.mk @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' >> $@ @@ -110,10 +152,6 @@ $(compiler_CONFIG_HS) : mk/config.mk mk/project.mk @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' >> $@ @@ -122,8 +160,6 @@ $(compiler_CONFIG_HS) : mk/config.mk mk/project.mk @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' >> $@ @@ -140,7 +176,8 @@ else endif @echo done. -$(eval $(call clean-target,compiler,config_hs,$(compiler_CONFIG_HS))) +# XXX 2010-08-19: This is a legacy clean. Remove later. +$(eval $(call clean-target,compiler,config_hs,compiler/main/Config.hs)) # ----------------------------------------------------------------------------- # Create platform includes @@ -352,39 +389,20 @@ compiler_CONFIGURE_OPTS += --ghc-option=-DNO_REGS 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 -compiler_stage2_CONFIGURE_OPTS += --disable-library-vanilla -compiler_stage2_CONFIGURE_OPTS += --disable-library-for-ghci +# We seem to still build the vanilla libraries even if we say +# --disable-library-vanilla, but installation then fails, as Cabal +# doesn't copy the vanilla .hi files, but ghc-pkg complains about +# 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 += --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='""' \ - --ghc-option='-\#include' \ - --ghc-option='""' -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 @@ -456,11 +474,33 @@ $(eval $(call build-package,compiler,stage1,0)) $(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 @@ -503,7 +543,9 @@ compiler/stage1/inplace-pkg-config-munged: compiler/stage1/inplace-pkg-config < $< > $@ "$(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