X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=mk%2Fconfig.mk.in;h=b10d4037dd6a7da30d1bceb12b19c369238aa950;hp=71aa5149be25e2e623e87c7da9c95ddf399ec33d;hb=395f4b287e9c679f31ef63b9f9bd11734a691776;hpb=c1c1e720a1e42df940c932f789f74bd5bcff4882 diff --git a/mk/config.mk.in b/mk/config.mk.in index 71aa514..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 @@ -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. + +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. # @@ -349,7 +362,7 @@ endif ifeq "$(GhcUnregisterised)" "YES" SplitObjs=NO endif -ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux" +ifeq "$(TargetArch_CPP)" "ia64" SplitObjs=NO endif @@ -389,27 +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 -# -GhcLibsWithX11=@GhcLibsWithX11@ -X_CFLAGS=@X_CFLAGS@ -X_LIBS=@X_LIBS@ - # .NET interop support? # DotnetSupport=@DotnetSupport@ @@ -521,8 +513,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 +522,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 +585,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 +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) # @@ -780,25 +763,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) @@ -826,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 @@ -850,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 @@ -899,25 +877,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 +904,6 @@ ETAGS = $(ETAGS_PREFIX)etags VERBATIM = $(VERBATIM_PREFIX)verbatim SGMLVERB = $(SGMLVERB_PREFIX)sgmlverb RUNTEST = $(RUNTEST_PREFIX)runstdtest -LX = @LxCmd@ BLD_DLL = dllwrap @@ -1095,6 +1067,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