X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Fconfig.mk.in;h=85625e36de70bd2932d13beb0559f0adafaf7e45;hb=d19f868a2fbfb583e57d9c47b97c0cdb3a95ae57;hp=df9e0d27abe3b8d21f1ed7bcd5733cc61534af9b;hpb=e11c0f8efedcd6920bc77b105f6053520f85e3a0;p=ghc-hetmet.git diff --git a/mk/config.mk.in b/mk/config.mk.in index df9e0d2..85625e3 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -32,6 +32,11 @@ # 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))" "" +$(error GNU make version 3.79.1 or later is required.) +endif +endif ################################################################################ # @@ -56,6 +61,13 @@ # will be built as HC files for the target system, and likely won't # build on this host platform. # +# An important invariant is that for any piece of source code, the +# platform on which the code is going to run is the HOST platform, +# and the platform on which we are building is the BUILD platform. +# Additionally for the compiler, the platform this compiler will +# generate code for is the TARGET. TARGET is not meaningful outside +# the compiler sources. +# # Guidelines for when to use HOST vs. TARGET: # # - In the build system (Makefile, foo.mk), normally we should test @@ -65,11 +77,10 @@ # # - 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). +# the platform on which the compiler is running. See the section +# on "Coding Style" in the commentary for more details. # -# - In the RTS and library code, we should be testing TARGET only. +# - In all other code, we should be testing HOST 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 @@ -181,7 +192,7 @@ IncludeExampleDirsInBuild=NO # # Which ways should DocBook XML documents be built? -# options are: dvi ps pdf html +# options are: dvi ps pdf html chm HxS # XMLDocWays= @@ -249,7 +260,11 @@ GhcUnregisterised=NO # Target platforms supported: # i386, powerpc # sparc has bitrotted -ifneq "$(findstring $(HostArch_CPP), i386 powerpc)" "" +# AIX is not supported +ArchSupportsNCG=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc))) +OsSupportsNCG=$(strip $(patsubst $(HostOS_CPP), YES, $(patsubst aix,,$(HostOS_CPP)))) + +ifeq "$(OsSupportsNCG)$(ArchSupportsNCG)" "YESYES" GhcWithNativeCodeGen=YES else GhcWithNativeCodeGen=NO @@ -259,12 +274,14 @@ endif GhcWithJavaGen=NO HaveLibDL = @HaveLibDL@ -HaveRtldNext = @HaveRtldNext@ -HaveRtldLocal = @HaveRtldLocal@ -# Include GHCi in the compiler. Default to NO for the time being. +# Whether to include GHCi in the compiler. Depends on whether the RTS linker +# has support for this OS/ARCH combination. + +OsSupportsGHCi=$(strip $(patsubst $(HostOS_CPP), YES, $(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin))) +ArchSupportsGHCi=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc powerpc64 sparc sparc64))) -ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)" "" +ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES" GhcWithInterpreter=YES else GhcWithInterpreter=NO @@ -296,13 +313,14 @@ endif # thr_p : threaded profiled # debug : debugging (compile with -g for the C compiler, and -DDEBUG) # debug_p : debugging profiled +# debug_u : debugging unregisterised # thr_debug : debugging threaded # thr_debug_p : debugging threaded profiled # ifeq "$(BootingFromHc)" "YES" GhcRTSWays= else -GhcRTSWays=thr thr_p debug +GhcRTSWays=thr thr_p debug thr_debug endif # Option flags to pass to GHC when it's compiling modules in @@ -312,23 +330,17 @@ endif # # -O is pretty desirable, otherwise no inlining of prelude # things (incl "+") happens when compiling with this compiler +# +# -fgenerics 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=-O -Rghc-timing +GhcLibHcOpts=-O -Rghc-timing -fgenerics # Win32 only: Enable the RTS and libraries to be built as DLLs DLLized=@EnableWin32DLLs@ -# Win32 only: are we building a compiler that tries to reduce external -# dependencies? i.e., one that doesn't assume that the user has got -# the cygwin toolchain installed on his/her Win32 box. -# -# GHC is still dependent on GNU tools in the backend (gcc to further process -# .c/.hc/.s/.o files + 'perl' to mangle and split), but using this -# option a GHC distribution can be put together which includes a minimal -# set of these open source tools. -# -MinimalUnixDeps=@MinimalUnixDeps@ - # Strip local symbols from libraries? This can make the libraries smaller, # but makes debugging somewhat more difficult. Doesn't work with all ld's. # @@ -343,11 +355,14 @@ StripLibraries=NO # Don't use -split-objs in in GhcLibHcOpts, because the build # system needs to do other special magic if you are # doing object-file splitting +ifneq "$(findstring $(HostArch_CPP), i386 x86_64 powerpc sparc)" "" +SplitObjs=YES +else +SplitObjs=NO +endif # Don't split object files for libs if we're building DLLs, or booting from # .hc files. -SplitObjs=YES - ifeq "$(DLLized)" "YES" SplitObjs=NO endif @@ -357,7 +372,7 @@ endif ifeq "$(GhcUnregisterised)" "YES" SplitObjs=NO endif -ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux" +ifeq "$(TargetArch_CPP)" "ia64" SplitObjs=NO endif @@ -365,8 +380,8 @@ 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 -package rts_debug to get it). -GhcRtsHcOpts=-O2 +# 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+. @@ -397,27 +412,6 @@ LIBM=@LIBM@ # GhcLibsWithObjectIO=@GhcLibsWithObjectIO@ -# Build the Haskell OpenGL binding? -# -GhcLibsWithOpenGL=@GhcLibsWithOpenGL@ -GLU_CFLAGS=@GLU_CFLAGS@ -GLU_LIBS=@GLU_LIBS@ - -# Build the Haskell OpenAL binding? -# -GhcLibsWithOpenAL=@GhcLibsWithOpenAL@ - -# Build the Haskell GLUT binding? -# -GhcLibsWithGLUT=@GhcLibsWithGLUT@ -GLUT_LIBS=@GLUT_LIBS@ - -# X11 stuff -# -GhcLibsWithX11=@GhcLibsWithX11@ -X_CFLAGS=@X_CFLAGS@ -X_LIBS=@X_LIBS@ - # .NET interop support? # DotnetSupport=@DotnetSupport@ @@ -487,6 +481,9 @@ NoFibWays = $(GhcLibWays) # Haskell compiler options for nofib NoFibHcOpts = -O +# Number of times to run each program +NoFibRuns = 5 + # ============================================================================== # # END OF PROJECT-SPECIFIC STUFF @@ -730,9 +727,6 @@ else GhcCanonVersion = $(GhcMajVersion)$(GhcMinVersion) endif -# Set to YES if $(GHC) has the readline package installed -GhcHasReadline = @GhcHasReadline@ - HBC = @HBC@ NHC = @NHC@ @@ -782,25 +776,14 @@ HaveLibGmp = @HaveLibGmp@ LibGmp = @LibGmp@ #----------------------------------------------------------------------------- -# Mingwex Library +# GMP framework (Mac OS X) # -HaveLibMingwEx = @HaveLibMingwEx@ +HaveFrameworkGMP = @HaveFrameworkGMP@ #----------------------------------------------------------------------------- -# HaskellSupport framework (Mac OS X) -# -HaveFrameworkHaskellSupport = @HaveFrameworkHaskellSupport@ - -#----------------------------------------------------------------------------- -# Regex library -# (if present in libc use that one, otherwise use the one in the tree) +# Mingwex Library # -HavePosixRegex = @HavePosixRegex@ - -#----------------------------------------------------------------------------- -# GTK+ - -GTK_CONFIG = @GTK_CONFIG@ +HaveLibMingwEx = @HaveLibMingwEx@ #----------------------------------------------------------------------------- # Flex (currently unused, could be moved to glafp-utils) @@ -828,6 +811,7 @@ 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 @@ -852,12 +836,17 @@ RM = rm -f SED = @SedCmd@ SHELL = /bin/sh +LD = @LdCmd@ + # Some ld's support the -x flag and some don't, so the configure # script detects which we have and sets LdXFlag to "-x" or "" # respectively. -LD = @LdCmd@ LD_X = @LdXFlag@ +# GNU ld supports input via a linker script, which is useful to avoid +# overflowing command-line length limits. +LdIsGNULd = @LdIsGNULd@ + # # In emergency situations, REAL_SHELL is used to perform shell commands # from within the ghc driver script, by scribbling the command line to @@ -928,7 +917,6 @@ ETAGS = $(ETAGS_PREFIX)etags VERBATIM = $(VERBATIM_PREFIX)verbatim SGMLVERB = $(SGMLVERB_PREFIX)sgmlverb RUNTEST = $(RUNTEST_PREFIX)runstdtest -LX = @LxCmd@ BLD_DLL = dllwrap @@ -1062,7 +1050,7 @@ WAY_u_HC_OPTS=-unreg # Way `s': WAY_s_NAME=threads (for SMP) -WAY_s_HC_OPTS=-smp +WAY_s_HC_OPTS=-smp -optc-DTHREADED_RTS # Way `mp': WAY_mp_NAME=parallel @@ -1092,6 +1080,14 @@ WAY_debug_HC_OPTS=-optc-DDEBUG WAY_debug_p_NAME=debug profiled WAY_debug_p_HC_OPTS=-optc-DDEBUG -prof +# Way 'debug_u': +WAY_debug_u_NAME=debug unregisterised +WAY_debug_u_HC_OPTS=-optc-DDEBUG -unreg + +# Way 'debug_s': +WAY_debug_s_NAME=debug SMP +WAY_debug_s_HC_OPTS=-optc-DDEBUG -optc-DTHREADED_RTS -smp + # Way 'thr_debug': WAY_thr_debug_NAME=threaded WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG