X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=mk%2Fconfig.mk.in;h=18e60e793b166530f6ae37bf6e9660a1c58d8613;hp=a640c3e2add56c925d192504f9ab0bbbe80def8a;hb=e5c3b478b3cd1707cf122833822f44b2ac09b8e9;hpb=624e821201ed68425c906358f8d45a69f4e61093 diff --git a/mk/config.mk.in b/mk/config.mk.in index a640c3e..18e60e7 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -97,15 +97,35 @@ GhcStage1HcOpts= GhcStage2HcOpts=-O2 GhcStage3HcOpts=-O2 -GhcProfiled=NO +# These options modify whether or not a built compiler for a bootstrap +# stage defaults to using the new code generation path. The new +# code generation path is a bit slower, so for development just +# GhcStage2DefaultNewCodegen=YES, but it's also a good idea to try +# building all libraries and the stage2 compiler with the +# new code generator, which involves GhcStage1DefaultNewCodegen=YES. +GhcStage1DefaultNewCodegen=NO +GhcStage2DefaultNewCodegen=NO +GhcStage3DefaultNewCodegen=NO + GhcDebugged=NO -GhcLibProfiled=$(if $(filter p,$(GhcLibWays)),YES,NO) +GhcDynamic=NO + +# GhcProfiled=YES means compile a profiled stage-2 compiler +GhcProfiled=NO # Do we support shared libs? -PlatformSupportsSharedLibs = $(if $(filter $(TARGETPLATFORM),i386-unknown-linux x86_64-unknown-linux i386-unknown-freebsd amd64-unknown-freebsd i386-unknown-mingw32),YES,NO) +SharedLibsPlatformList = i386-unknown-linux x86_64-unknown-linux \ + i386-unknown-freebsd x86_64-unknown-freebsd \ + i386-unknown-openbsd x86_64-unknown-openbsd \ + i386-unknown-mingw32 \ + i386-apple-darwin powerpc-apple-darwin + +ifeq "$(SOLARIS_BROKEN_SHLD)" "NO" +SharedLibsPlatformList += i386-unknown-solaris2 +endif -# ToDo later: -# BuildStaticLibs=@BuildStaticLibs@ +PlatformSupportsSharedLibs = $(if $(filter $(TARGETPLATFORM),\ + $(SharedLibsPlatformList)),YES,NO) # Build a compiler that will build *unregisterised* libraries and # binaries by default. Unregisterised code is supposed to compile and @@ -176,7 +196,7 @@ endif # Whether to use libffi for adjustors (foreign import "wrapper") or # not. If we have built-in support (rts/Adjustor.c) then we use that, # otherwise we fall back on libffi, which is slightly slower. -ArchHasAdjustorSupport=$(strip $(if $(findstring $(HostArch_CPP),i386 x86_64 alpha powerpc ia64,),YES,NO)) +ArchHasAdjustorSupport = $(if $(findstring $(HostArch_CPP),i386 x86_64),YES,NO) ifeq "$(ArchHasAdjustorSupport)" "YES" UseLibFFIForAdjustors=NO else @@ -262,13 +282,8 @@ GhcThreaded = $(if $(findstring thr,$(GhcRTSWays)),YES,NO) # # -O(2) is pretty desirable, otherwise no inlining of prelude # things (incl "+") happens when compiling with this compiler -# -# -XGenerics switches on generation of support code for -# derivable type classes. This is now off by default, -# but we switch it on for the libraries so that we generate -# the code in case someone importing wants it -GhcLibHcOpts=-O2 -XGenerics +GhcLibHcOpts=-O2 # Strip local symbols from libraries? This can make the libraries smaller, # but makes debugging somewhat more difficult. Doesn't work with all ld's. @@ -289,27 +304,31 @@ PackageSourceURL = http://darcs.haskell.org/packages/$(PACKAGE)/%{FILE} # doing object-file splitting ArchSupportsSplitObjs=$(strip $(if $(filter $(TargetArch_CPP),i386 x86_64 powerpc sparc),YES,NO)) +OsSupportsSplitObjs=$(strip $(if $(filter $(TargetOS_CPP),mingw32 cygwin32 linux darwin solaris2 freebsd dragonfly netbsd openbsd),YES,NO)) +SplitObjsBroken = @SplitObjsBroken@ # lazy test, so that $(GhcUnregisterised) can be set in build.mk -SupportsSplitObjs=$(strip $(if $(filter YES,$(ArchSupportsSplitObjs)),\ - $(if $(filter NO,$(BootingFromHc)),\ - $(if $(filter NO,$(GhcUnregisterised)),\ - YES,\ - NO),\ - NO),\ - NO)) +SupportsSplitObjs=$(strip \ + $(if $(and $(filter YES,$(ArchSupportsSplitObjs)),\ + $(filter YES,$(OsSupportsSplitObjs)),\ + $(filter NO,$(SplitObjsBroken)),\ + $(filter NO,$(BootingFromHc)),\ + $(filter NO,$(GhcUnregisterised))),\ + YES,NO)) # By default, enable SplitObjs for the libraries if this build supports it SplitObjs=$(SupportsSplitObjs) -# .NET interop support? -# -DotnetSupport=NO +# ---------------------------------------------------------------------------- +# Package-related things -# Build unix package? -# -GhcLibsWithUnix=@GhcLibsWithUnix@ +# Extra packages to add to the build, in dependency order +EXTRA_PACKAGES = +# Whether to install $(EXTRA_PACKAGES) +InstallExtraPackages = NO + +# Run "ghc-pkg check" on each package CHECK_PACKAGES = NO # ---------------------------------------------------------------------------- @@ -376,6 +395,23 @@ WINDOWS_INSTALLER = $(WINDOWS_INSTALLER_BASE)$(exeext) # # SRC_HC_OPTS += -O + +# SRC_HC_OPTS includes flags to be added to *every* Haskell +# compilation. Setting SRC_HC_OPTS is a good way to set the default +# optimisation level (-O) and heap size (-H). +# +# SRC_HC_OPTS is *not* for adding flags that are required to make your +# build work. Examples: +# +# - instead of using -pgmc/-pgma-/-pgml, use the --with-gcc option to configure +# +# - if you need -optc, -opta, or -optl flags, the CONF_CC_* and CONF_LD_* +# variables are more appropriate (set via configure) +# +# Note that SRC_HC_OPTS are added to every Haskell compilation, +# including when using the bootstrapping compiler (stage 0), So don't +# put options here that are only supported by very recent GHCs. +# SRC_HC_OPTS += -H32m -O # These flags make flex 8-bit @@ -399,7 +435,6 @@ GHC_HP2PS_PGM = hp2ps$(exeext) GHC_GHCTAGS_PGM = ghctags$(exeext) GHC_HSC2HS_PGM = hsc2hs$(exeext) GHC_TOUCHY_PGM = touchy$(exeext) -GHC_MANGLER_PGM = ghc-asm GHC_SPLIT_PGM = ghc-split GHC_SYSMAN_PGM = SysMan GHC_GENPRIMOP_PGM = genprimopcode$(exeext) @@ -409,7 +444,6 @@ GHC_PKG_PGM = ghc-pkg$(exeext) GHC_LTX_PGM = ltx$(exeext) GHC_MKDIRHIER_PGM = mkdirhier GHC_LNDIR_PGM = lndir -GHC_DUMMY_GHC_PGM = dummy-ghc$(exeext) ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32" GHC_CP = "xcopy /y" @@ -420,7 +454,6 @@ GHC_PERL = $(PERL) endif HP2PS = $(GHC_HP2PS_DIR)/$(GHC_HP2PS_PGM) -MANGLER = $(INPLACE_LIB)/$(GHC_MANGLER_PGM) SPLIT = $(INPLACE_LIB)/$(GHC_SPLIT_PGM) SYSMAN = $(GHC_SYSMAN_DIR)/$(GHC_SYSMAN_PGM) LTX = $(GHC_LTX_DIR)/$(GHC_LTX_PGM) @@ -435,19 +468,14 @@ GHC_PKG_INPLACE = $(INPLACE_BIN)/$(GHC_PKG_PGM) GHCTAGS_INPLACE = $(INPLACE_BIN)/$(GHC_GHCTAGS_PGM) HSC2HS_INPLACE = $(INPLACE_BIN)/$(GHC_HSC2HS_PGM) GENPRIMOP_INPLACE = $(INPLACE_BIN)/$(GHC_GENPRIMOP_PGM) -DUMMY_GHC_INPLACE = $(INPLACE_BIN)/$(GHC_DUMMY_GHC_PGM) GENERATED_FILE = chmod a-w EXECUTABLE_FILE = chmod +x #----------------------------------------------------------------------------- -# Haskell compilers and mkdependHS +# Installed GHC -# $(GHC), $(HBC) and $(NHC) point to installed versions of the relevant -# compilers, if available. -# -# $(HC) is a generic Haskell 98 compiler, set to $(GHC) by default. -# $(MKDEPENDHS) is the Haskell dependency generator (ghc -M). +# $(GHC) points to installed version of the compiler. # # NOTE: Don't override $(GHC) in build.mk, use configure --with-ghc instead # (because the version numbers have to be calculated). @@ -460,14 +488,6 @@ ifneq "$(wildcard $(GHC).exe)" "" GHC := $(GHC).exe endif -GhcDir = $(dir $(GHC)) - -# Set to YES if $(GHC) has the editline package installed -GhcHasEditline = @GhcHasEditline@ - -HBC = @HBC@ -NHC = @NHC@ - # Sometimes we want to invoke ghc from the build tree in different # 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): @@ -497,9 +517,6 @@ GhcMajVersion = @GhcMajVersion@ GhcMinVersion = @GhcMinVersion@ # Keep this in sync with the variables in package-config.mk -ghc_ge_609 = @ghc_ge_609@ -ghc_ge_6102 = @ghc_ge_6102@ -ghc_ge_611 = @ghc_ge_611@ ghc_ge_613 = @ghc_ge_613@ # Canonicalised ghc version number, used for easy (integer) version @@ -518,29 +535,47 @@ endif # the flag --with-gcc= instead. The reason is that the configure script # needs to know which gcc you're using in order to perform its tests. -HaveGcc = @HaveGcc@ -UseGcc = YES WhatGccIsCalled = @WhatGccIsCalled@ GccVersion = @GccVersion@ -GccLT34 = @GccLT34@ -ifeq "$(strip $(HaveGcc))" "YES" -ifneq "$(strip $(UseGcc))" "YES" - CC = cc -else - CC = $(WhatGccIsCalled) -endif -endif +GccLT34 = @GccLT34@ +CC = $(WhatGccIsCalled) +CC_STAGE0 = @CC_STAGE0@ +CC_STAGE1 = $(CC) +CC_STAGE2 = $(CC) +CC_STAGE3 = $(CC) +AS = $(WhatGccIsCalled) +AS_STAGE0 = @CC_STAGE0@ +AS_STAGE1 = $(AS) +AS_STAGE2 = $(AS) +AS_STAGE3 = $(AS) # C compiler and linker flags from configure (e.g. -m to select -# correct C compiler backend). -CONF_CC_OPTS = @CONF_CC_OPTS@ -CONF_LD_OPTS = @CONF_LD_OPTS@ +# correct C compiler backend). The stage number is the stage of GHC +# that is being used to compile with. +CONF_CC_OPTS_STAGE0 = @CONF_CC_OPTS_STAGE0@ +CONF_CC_OPTS_STAGE1 = @CONF_CC_OPTS_STAGE1@ +CONF_CC_OPTS_STAGE2 = @CONF_CC_OPTS_STAGE2@ +CONF_GCC_LINKER_OPTS_STAGE0 = @CONF_GCC_LINKER_OPTS_STAGE0@ +CONF_GCC_LINKER_OPTS_STAGE1 = @CONF_GCC_LINKER_OPTS_STAGE1@ +CONF_GCC_LINKER_OPTS_STAGE2 = @CONF_GCC_LINKER_OPTS_STAGE2@ +CONF_LD_LINKER_OPTS_STAGE0 = @CONF_LD_LINKER_OPTS_STAGE0@ +CONF_LD_LINKER_OPTS_STAGE1 = @CONF_LD_LINKER_OPTS_STAGE1@ +CONF_LD_LINKER_OPTS_STAGE2 = @CONF_LD_LINKER_OPTS_STAGE2@ +CONF_CPP_OPTS_STAGE0 = @CONF_CPP_OPTS_STAGE0@ +CONF_CPP_OPTS_STAGE1 = @CONF_CPP_OPTS_STAGE1@ +CONF_CPP_OPTS_STAGE2 = @CONF_CPP_OPTS_STAGE2@ ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux" CONF_CC_OPTS += -G0 endif -SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS) $(CONF_CC_OPTS))) +# The .hsc files aren't currently safe for cross-compilation on Windows: +# libraries\haskeline\.\System\Console\Haskeline\Backend\Win32.hsc:160 +# directive "let" is not safe for cross-compilation +ifneq "$(Windows)" "YES" +SRC_HSC2HS_OPTS += --cross-safe +endif +SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS) $(CONF_CC_OPTS_STAGE0))) SRC_HSC2HS_OPTS += $(foreach d,$(GMP_INCLUDE_DIRS),-I$(d)) #----------------------------------------------------------------------------- @@ -562,9 +597,24 @@ DLLTOOL = inplace/mingw/bin/dlltool.exe AR = @ArCmd@ AR_OPTS = @ArArgs@ -ArSupportsInput = @ArSupportsInput@ -# Yuckage: for ghc/utils/parallel -- todo: nuke this dependency!! -BASH = /usr/local/bin/bash +ArSupportsAtFile = @ArSupportsAtFile@ + +AR_STAGE0 = @AR_STAGE0@ +AR_STAGE1 = $(AR) +AR_STAGE2 = $(AR) +AR_STAGE3 = $(AR) +AR_OPTS_STAGE0 = @AR_OPTS_STAGE0@ +AR_OPTS_STAGE1 = $(AR_OPTS) +AR_OPTS_STAGE2 = $(AR_OPTS) +AR_OPTS_STAGE3 = $(AR_OPTS) +EXTRA_AR_ARGS_STAGE0 = $(EXTRA_AR_ARGS) +EXTRA_AR_ARGS_STAGE1 = $(EXTRA_AR_ARGS) +EXTRA_AR_ARGS_STAGE2 = $(EXTRA_AR_ARGS) +EXTRA_AR_ARGS_STAGE3 = $(EXTRA_AR_ARGS) +ArSupportsAtFile_STAGE0 = @ArSupportsAtFile_STAGE0@ +ArSupportsAtFile_STAGE1 = $(ArSupportsAtFile) +ArSupportsAtFile_STAGE2 = $(ArSupportsAtFile) +ArSupportsAtFile_STAGE3 = $(ArSupportsAtFile) CONTEXT_DIFF = @ContextDiffCmd@ CP = cp @@ -579,33 +629,31 @@ CTAGS = $(ETAGS) RAWCPP_FLAGS = -undef -traditional FIND = @FindCmd@ SORT = @SortCmd@ -INSTALL = @INSTALL@ + # # Sigh - the autoconf macro for INSTALL will subst a relative path to the fallback # install-sh script (if chosen). This not terribly useful to us, so we convert # it into an abs. path. # +INSTALL = @INSTALL@ INSTALL := $(subst .././install-sh,$(TOP)/install-sh,$(INSTALL)) + LATEX = latex -PDFLATEX = pdflatex -BIBTEX = bibtex -HEVEA = hevea -HACHA = hacha +PDFLATEX = pdflatex +BIBTEX = bibtex LN_S = @LN_S@ -MANMACROS = -man -MSMACROS = -ms MV = mv NROFF = nroff PERL = @PerlCmd@ PYTHON = @PythonCmd@ PIC = pic -PREPROCESSCMD = $(CC) -E RANLIB = @RANLIB@ SED = @SedCmd@ TR = tr SHELL = /bin/sh HaveDtrace = @HaveDtrace@ +USE_DTRACE = $(HaveDtrace) DTRACE = @DtraceCmd@ LD = @LdCmd@ @@ -620,13 +668,19 @@ LD_X = @LdXFlag@ # overflowing command-line length limits. LdIsGNULd = @LdIsGNULd@ +# Set to YES if ld has the --build-id flag. Sometimes we need to +# disable it with --build-id=none. +LdHasBuildId = @LdHasBuildId@ + # On MSYS, building with SplitObjs=YES fails with # ar: Bad file number # see #3201. We need to specify a smaller max command-line size -# to work around it. 32767 doesn't work; 30000 does. +# to work around it. 32767 doesn't work; 30000 does, but says +# xargs: value for -s option should be < 28153 +# so we now use 20000 to be comfortably below this bound XARGS = xargs ifeq "$(Windows)" "YES" -XARGS_OPTS = -s 30000 +XARGS_OPTS = -s 20000 endif # @@ -651,37 +705,24 @@ endif # with REAL_SHELL set to something else than /bin/sh, for instance, your favourite # command shell. # -REAL_SHELL=$(SHELL) -SIZE = size -STRIP = strip -PATCH = @PatchCmd@ -TAR = @TarCmd@ -BZIP2 = bzip2 -GZIP = gzip -ZIP = zip +REAL_SHELL = $(SHELL) -HSCOLOUR = @HSCOLOUR@ +STRIP_CMD = strip +PATCH_CMD = @PatchCmd@ +TAR_CMD = @TarCmd@ +BZIP2_CMD = bzip2 +GZIP_CMD = gzip -# -# This is special to literate/, ToDo: add literate-specific -# configure setup to literate/. -# -TBL = tbl -TEX = tex -TGRIND = tgrind -TGRIND_HELPER = /usr/local/lib/tgrind/tfontedpr # XXX -TIB = tib +HSCOLOUR_CMD = @HSCOLOUR@ -TIME = @TimeCmd@ -TROFF = troff -UNAME = uname +TIME_CMD = @TimeCmd@ # GTK+ -GTK_CONFIG = @GTK_CONFIG@ +GTK_CONFIG_CMD = @GTK_CONFIG@ # Set this if you want to use Inno Setup to build a Windows installer # when you make a bindist -ISCC = +ISCC_CMD = #----------------------------------------------------------------------------- # DocBook XML stuff @@ -709,12 +750,6 @@ BLD_DLL = dllwrap GHC_PKG = @GhcPkgCmd@ # -# GreenCard -# -GREENCARD = @GreenCardCmd@ -GREENCARD_VERSION = @GreenCardVersion@ - -# # Happy # HAPPY = @HappyCmd@ @@ -724,10 +759,6 @@ HAPPY_VERSION = @HappyVersion@ # SRC_HAPPY_OPTS = -agc --strict -# Temp. to work around performance problems in the HEAD around 8/12/2003, -# A Happy compiled with this compiler needs more stack. -SRC_HAPPY_OPTS += +RTS -K2m -RTS - # # Alex # @@ -738,12 +769,10 @@ ALEX_VERSION = @AlexVersion@ # SRC_ALEX_OPTS = -g -HSTAGS = @HstagsCmd@ - # Should we build haddock docs? -HADDOCK_DOCS = $(GhcWithInterpreter) +HADDOCK_DOCS = YES # And HsColour the sources? -ifeq "$(HSCOLOUR)" "" +ifeq "$(HSCOLOUR_CMD)" "" HSCOLOUR_SRCS = NO else HSCOLOUR_SRCS = YES @@ -785,12 +814,5 @@ CONFIGURE_ARGS = @CONFIGURE_ARGS@ ICONV_INCLUDE_DIRS = @ICONV_INCLUDE_DIRS@ ICONV_LIB_DIRS = @ICONV_LIB_DIRS@ -################################################################################ -# -# Bindist testing directory -# -################################################################################ - -BIN_DIST_INST_SUBDIR = "install dir" -BIN_DIST_INST_DIR = $(TOP)/bindisttest/$(BIN_DIST_INST_SUBDIR) - +GMP_INCLUDE_DIRS = @GMP_INCLUDE_DIRS@ +GMP_LIB_DIRS = @GMP_LIB_DIRS@