X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=mk%2Fconfig.mk.in;h=b10d4037dd6a7da30d1bceb12b19c369238aa950;hp=776703f4ea23232fb1722a40edf445d4cdc7178f;hb=395f4b287e9c679f31ef63b9f9bd11734a691776;hpb=ae8e4261799358bfbb88dfd251b2e9e25dc39182 diff --git a/mk/config.mk.in b/mk/config.mk.in index 776703f..b10d403 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -56,6 +56,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 +72,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 @@ -124,6 +130,13 @@ LeadingUnderscore=@LeadingUnderscore@ # Pin a suffix on executables? If so, what (Windows only). exeext=@exeext@ +# Windows=YES if on a Windows platform +ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32)" "" +Windows=YES +else +Windows=NO +endif + ################################################################################ # # project-wide flags @@ -145,9 +158,9 @@ BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@ # # Build the libs first if we're bootstrapping from .hc files. ifeq "$(BootingFromHc)" "YES" -AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib +AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib docs else -AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib +AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib docs endif # @@ -173,10 +186,10 @@ IncludeTestDirsInBuild=NO IncludeExampleDirsInBuild=NO # -# Which ways should SGML documents be built? -# options are: dvi ps pdf html rtf +# Which ways should DocBook XML documents be built? +# options are: dvi ps pdf html # -SGMLDocWays= +XMLDocWays= ################################################################################ # @@ -240,8 +253,9 @@ GhcUnregisterised=NO # (as well as a C backend) # # Target platforms supported: -# i386, sparc & powerpc -ifneq "$(findstring $(HostArch_CPP), i386 sparc powerpc)" "" +# i386, powerpc +# sparc has bitrotted +ifneq "$(findstring $(HostArch_CPP), i386 x86_64 powerpc)" "" GhcWithNativeCodeGen=YES else GhcWithNativeCodeGen=NO @@ -254,9 +268,13 @@ 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. -ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)" "" +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 powerpc powerpc64 sparc sparc64))) + +ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES" GhcWithInterpreter=YES else GhcWithInterpreter=NO @@ -288,8 +306,9 @@ endif # thr_p : threaded profiled # debug : debugging (compile with -g for the C compiler, and -DDEBUG) # debug_p : debugging profiled -# debug_thr : debugging threaded -# debug_thr_p : debugging threaded profiled +# debug_u : debugging unregisterised +# thr_debug : debugging threaded +# thr_debug_p : debugging threaded profiled # ifeq "$(BootingFromHc)" "YES" GhcRTSWays= @@ -304,23 +323,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. # @@ -349,7 +362,7 @@ endif ifeq "$(GhcUnregisterised)" "YES" SplitObjs=NO endif -ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux" +ifeq "$(TargetArch_CPP)" "ia64" SplitObjs=NO endif @@ -364,11 +377,6 @@ GhcRtsCcOpts=-fomit-frame-pointer # Include the front panel code? Needs GTK+. GhcRtsWithFrontPanel = NO -# DEPRECATED: -# This option is no longer used. We now always build the threaded RTS, -# add the flag '-threaded' to GHC to get it. -GhcRtsThreaded=@ThreadedRts@ - ################################################################################ # # libraries project @@ -394,26 +402,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 -# -X_CFLAGS=@X_CFLAGS@ -X_LIBS=@X_LIBS@ - # .NET interop support? # DotnetSupport=@DotnetSupport@ @@ -529,28 +517,36 @@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ datadir0 = @datadir@ - -#sysconfdir = @datadir@ -#sharedstatedir = @sharedstatedir@ -#localstatedir = @localstatedir@ libdir0 = @libdir@ includedir = @includedir@ oldincludedir = @oldincludedir@ mandir = @mandir@ -#UNUSED:infodir = @infodir@ -#UNUSED:srcdir = @srcdir@ +ifeq "$(Windows)" "YES" + +ifeq "$(strip $(prefix))" "" +prefix = c:/ghc +endif + +# Hack: our directory layouts tend to be different on Windows, so +# hack around configure's bogus assumptions here. +datadir = $(prefix) +libdir = $(prefix) + +else # -# override libdir and datadir to put project-specific stuff in +# Unix: override libdir and datadir to put project-specific stuff in # a subdirectory with the version number included. # libdir = $(if $(ProjectNameShort),$(libdir0)/$(ProjectNameShort)-$(ProjectVersion),$(libdir0)) datadir = $(if $(ProjectNameShort),$(datadir0)/$(ProjectNameShort)-$(ProjectVersion),$(datadir0)) +endif # Windows + # Default place for putting interface files is $(libdir) # (overriden for packages in package.mk) -ifacedir = $(libdir) +ifacedir = $(libdir) # # Default values for most of the above are only set if @@ -589,11 +585,31 @@ ifeq "$(strip $(mandir))" "" mandir = $(prefix)/man endif -################################################################################ +#----------------------------------------------------------------------------- +# install configuration + # -# Utilities programs: flags +# Set this to have files installed with a specific owner # -################################################################################ +INSTALL_OWNER = + +# +# Set this to have files installed with a specific group +# +INSTALL_GROUP = + +# +# Invocations of `install' for the four different classes +# of targets: +# +INSTALL_PROGRAM = $(INSTALL) -m 755 +INSTALL_SCRIPT = $(INSTALL) -m 755 +INSTALL_SHLIB = $(INSTALL) -m 755 +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_DIR = $(MKDIRHIER) + +# ----------------------------------------------------------------------------- +# Utilities programs: flags # If you want to give any standard flags to pretty much any utility # (see utils.mk for a complete list), by adding a line here @@ -683,6 +699,7 @@ HSC2HS_PREFIX = $(FPTOOLS_TOP)/ghc/utils/hsc2hs/ # (because the version numbers have to be calculated). GHC = @WithGhc@ +GhcDir = $(dir $(GHC)) GhcVersion = @GhcVersion@ GhcMajVersion = @GhcMajVersion@ GhcMinVersion = @GhcMinVersion@ @@ -722,11 +739,13 @@ GHC_STAGE3 = $(FPTOOLS_TOP)/ghc/compiler/stage3/ghc-inplace HaveGcc = @HaveGcc@ UseGcc = YES WhatGccIsCalled = @WhatGccIsCalled@ +GccVersion = @GccVersion@ ifeq "$(strip $(HaveGcc))" "YES" ifneq "$(strip $(UseGcc))" "YES" CC = cc else CC = $(WhatGccIsCalled) + GccDir = $(dir $(WhatGccIsCalled)) endif endif @@ -737,9 +756,6 @@ ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux" SRC_CC_OPTS += -G0 endif -# Solaris2 strikes again. -unix_SRC_HSC2HS_OPTS += @unix_SRC_HSC2HS_OPTS@ - #----------------------------------------------------------------------------- # GMP Library (version 2.0.x or above) # @@ -747,25 +763,14 @@ HaveLibGmp = @HaveLibGmp@ LibGmp = @LibGmp@ #----------------------------------------------------------------------------- -# Mingwex Library -# -HaveLibMingwEx = @HaveLibMingwEx@ - -#----------------------------------------------------------------------------- -# HaskellSupport framework (Mac OS X) +# GMP framework (Mac OS X) # -HaveFrameworkHaskellSupport = @HaveFrameworkHaskellSupport@ +HaveFrameworkGMP = @HaveFrameworkGMP@ #----------------------------------------------------------------------------- -# 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) @@ -793,6 +798,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 @@ -817,12 +823,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 @@ -866,25 +877,20 @@ TROFF = troff UNAME = uname #----------------------------------------------------------------------------- -# SGML stuff - -JADE = @JadeCmd@ - -SGML2DVI = $(DOCBOOK_PREFIX)db2dvi -SGML2HTML = $(DOCBOOK_PREFIX)db2html -SGML2PS = $(DOCBOOK_PREFIX)db2ps -SGML2PDF = $(DOCBOOK_PREFIX)db2pdf -SGML2RTF = $(DOCBOOK_PREFIX)db2rtf +# DocBook XML stuff -SGMLSTYLESHEET = $(FPTOOLS_TOP_ABS)/docs/fptools-both.dsl +XSLTPROC = @XsltprocCmd@ +XMLLINT = @XmllintCmd@ +FOP = @FopCmd@ +XMLTEX = @XmltexCmd@ +PDFXMLTEX = @PdfxmltexCmd@ +DVIPS = @DvipsCmd@ -SRC_SGML2DVI_OPTS = -d $(SGMLSTYLESHEET) -SRC_SGML2HTML_OPTS = -d $(SGMLSTYLESHEET) -SRC_SGML2PS_OPTS = -d $(SGMLSTYLESHEET) -SRC_SGML2RTF_OPTS = -d $(SGMLSTYLESHEET) -SRC_SGML2PDF_OPTS = -d $(SGMLSTYLESHEET) +DIR_DOCBOOK_XSL = @DIR_DOCBOOK_XSL@ -DOCBOOK_CATALOG = @Catalog@ +XSLTPROC_LABEL_OPTS = --stringparam toc.section.depth 3 \ + --stringparam section.autolabel 1 \ + --stringparam section.label.includes.component.label 1 #----------------------------------------------------------------------------- # FPtools support software @@ -898,7 +904,6 @@ ETAGS = $(ETAGS_PREFIX)etags VERBATIM = $(VERBATIM_PREFIX)verbatim SGMLVERB = $(SGMLVERB_PREFIX)sgmlverb RUNTEST = $(RUNTEST_PREFIX)runstdtest -LX = @LxCmd@ BLD_DLL = dllwrap @@ -1062,6 +1067,18 @@ 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 'thr_debug': +WAY_thr_debug_NAME=threaded +WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG + +# Way 'thr_debug_p': +WAY_thr_debug_p_NAME=threaded +WAY_thr_debug_p_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -prof + # # Add user-way configurations here: #