X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Fconfig.mk.in;h=07ebbba1dc49dc2efc1190e9e2ed6927677fe2a0;hb=451365f9af74f40d403906e113b733e42187aa1d;hp=66c18c1256e26ca00c28a9b41b650079760b8d8c;hpb=c7b6fe940417b8ff6200c85690c6ee2c613767c8;p=ghc-hetmet.git diff --git a/mk/config.mk.in b/mk/config.mk.in index 66c18c1..07ebbba 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 chm HxS # -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. + +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))) -ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)" "" +ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES" GhcWithInterpreter=YES else GhcWithInterpreter=NO @@ -288,6 +306,7 @@ 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 # @@ -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. # @@ -335,11 +348,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 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 @@ -349,7 +365,7 @@ endif ifeq "$(GhcUnregisterised)" "YES" SplitObjs=NO endif -ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux" +ifeq "$(TargetArch_CPP)" "ia64" SplitObjs=NO endif @@ -357,7 +373,7 @@ 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). +# a debugging RTS by default now. Use -debug to get it). GhcRtsHcOpts=-O2 GhcRtsCcOpts=-fomit-frame-pointer @@ -389,27 +405,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@ @@ -479,6 +474,9 @@ NoFibWays = $(GhcLibWays) # Haskell compiler options for nofib NoFibHcOpts = -O +# Number of times to run each program +NoFibRuns = 5 + # ============================================================================== # # END OF PROJECT-SPECIFIC STUFF @@ -521,8 +519,6 @@ FPTOOLS_TOP_ABS_PLATFORM = @hardtop_plat@ # but since the configure script has them on offer while # passing through, we might as well set them. -ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32" - prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ @@ -532,52 +528,31 @@ includedir = @includedir@ oldincludedir = @oldincludedir@ mandir = @mandir@ +ifeq "$(Windows)" "YES" + ifeq "$(strip $(prefix))" "" prefix = c:/ghc endif -ifacedir = $(libdir) - -ifeq "$(strip $(exec_prefix))" "" -exec_prefix = $(prefix) -endif -ifeq "$(strip $(bindir))" "" -bindir = $(exec_prefix)/bin -endif - -libexecdir = $(libdir) - -ifeq "$(strip $(datadir))" "" -datadir = $(prefix)/imports -endif -ifeq "$(strip $(libdir))" "" +# Hack: our directory layouts tend to be different on Windows, so +# hack around configure's bogus assumptions here. +datadir = $(prefix) libdir = $(prefix) -endif -ifeq "$(strip $(includedir))" "" -includedir = $(prefix)/include -endif else -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -datadir0 = @datadir@ -libdir0 = @libdir@ -includedir = @includedir@ -oldincludedir = @oldincludedir@ -mandir = @mandir@ - # -# 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 @@ -616,14 +591,31 @@ ifeq "$(strip $(mandir))" "" mandir = $(prefix)/man endif -endif # i386-unknown-mingw32 +#----------------------------------------------------------------------------- +# install configuration +# +# Set this to have files installed with a specific owner +# +INSTALL_OWNER = -################################################################################ +# +# Set this to have files installed with a specific group # -# Utilities programs: flags +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 @@ -770,9 +762,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) # @@ -780,25 +769,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) @@ -826,6 +804,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 @@ -850,12 +829,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 @@ -899,25 +883,20 @@ TROFF = troff UNAME = uname #----------------------------------------------------------------------------- -# SGML stuff - -JADE = @JadeCmd@ +# DocBook XML stuff -SGML2DVI = $(DOCBOOK_PREFIX)db2dvi -SGML2HTML = $(DOCBOOK_PREFIX)db2html -SGML2PS = $(DOCBOOK_PREFIX)db2ps -SGML2PDF = $(DOCBOOK_PREFIX)db2pdf -SGML2RTF = $(DOCBOOK_PREFIX)db2rtf +XSLTPROC = @XsltprocCmd@ +XMLLINT = @XmllintCmd@ +FOP = @FopCmd@ +XMLTEX = @XmltexCmd@ +PDFXMLTEX = @PdfxmltexCmd@ +DVIPS = @DvipsCmd@ -SGMLSTYLESHEET = $(FPTOOLS_TOP_ABS)/docs/fptools-both.dsl +DIR_DOCBOOK_XSL = @DIR_DOCBOOK_XSL@ -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) - -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 @@ -931,7 +910,6 @@ ETAGS = $(ETAGS_PREFIX)etags VERBATIM = $(VERBATIM_PREFIX)verbatim SGMLVERB = $(SGMLVERB_PREFIX)sgmlverb RUNTEST = $(RUNTEST_PREFIX)runstdtest -LX = @LxCmd@ BLD_DLL = dllwrap @@ -1095,6 +1073,10 @@ 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