X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=mk%2Fconfig.mk.in;h=3e63d84cfe302fcfe160789cfa16d854018f3746;hp=552a27e62f432f0b65861970996954c9dc600e83;hb=cf54be43468e9f0b540268b9c3751e969703c106;hpb=36cef1ea7f7e2dd68063598cdc23c4d1456f38ca diff --git a/mk/config.mk.in b/mk/config.mk.in index 552a27e..3e63d84 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -12,9 +12,7 @@ # DO NOT EDIT THIS FILE! # # - config.mk is auto-generated from config.mk.in by configure. -# This may be triggered automatically by the build system (say -# if config.mk.in has changed more recently than config.mk), -# so if you edit config.mk your changes will be spammed. +# If you edit config.mk your changes will be spammed. # # - Settings in this file may be overriden by giving replacement # definitions in build.mk. See build.mk.sample for a good @@ -22,21 +20,13 @@ # # If you don't have a build.mk file then you get defaults for everything. # The defaults should provide a reasonable vanilla build. -# -# This is one of only two files that configure generates (the other is config.h) -# - -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 # TOP: the top of the fptools hierarchy, absolute path. # On Windows this is a c:/foo/bar style path. TOP = @hardtop@ include $(TOP)/mk/project.mk +include $(TOP)/mk/install.mk ################################################################################ # @@ -54,12 +44,6 @@ BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@ NO_INCLUDE_DEPS = NO NO_INCLUDE_PKGDATA = NO -# -# Which ways should DocBook XML documents be built? -# options are: dvi ps pdf html chm HxS -# -XMLDocWays= - # Should we build latex docs? LATEX_DOCS = NO @@ -122,7 +106,12 @@ GhcDebugged=NO GhcLibProfiled=$(if $(filter p,$(GhcLibWays)),YES,NO) # Build shared and/or static libs? -BuildSharedLibs=@BuildSharedLibs@ +PlatformSupportsSharedLibs = $(if $(filter $(TARGETPLATFORM),i386-unknown-linux x86_64-unknown-linux),YES,NO) +ifeq "$(PlatformSupportsSharedLibs)" "YES" +BuildSharedLibs = YES +else +BuildSharedLibs = NO +endif # ToDo later: # BuildStaticLibs=@BuildStaticLibs@ @@ -163,7 +152,7 @@ GhcWithNativeCodeGen=$(strip\ HaveLibDL = @HaveLibDL@ # ArchSupportsSMP should be set iff there is support for that arch in -# includes/SMP.h +# includes/stg/SMP.h ArchSupportsSMP=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 sparc powerpc))) # lazy test, because $(GhcUnregisterised) might be set in build.mk later. @@ -192,6 +181,16 @@ else GhcEnableTablesNextToCode=YES 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)) +ifeq "$(ArchHasAdjustorSupport)" "YES" +UseLibFFIForAdjustors=NO +else +UseLibFFIForAdjustors=YES +endif + # On Windows we normally want to make a relocatable bindist, to we # ignore flags like libdir ifeq "$(Windows)" "YES" @@ -210,25 +209,6 @@ BeConservative = NO BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS))) BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS))) -# Interface file version (hi-boot files only) -# -# A GHC built with HscIfaceFileVersion=n will look for -# M.hi-boot-n, and only then for -# M.hi-boot. -# (It'll be happy with the latter if the former doesn't exist.) -# -# -# This variable is used ONLY for hi-boot files. Its only purpose is -# to allow you to have a single directory with multiple .hi-boot files -# for the same module, each corresponding to a different version of -# GHC. -# -# HscIfaceFileVersion is propagated to hsc via -# compiler/main/Config.hs, which is automatically generated by -# compiler/Makefile. - -HscIfaceFileVersion=6 - #------------------------------------------------------------------------------ # Options for Libraries @@ -271,7 +251,7 @@ GhcRTSWays += debug endif ifeq "$(BuildSharedLibs)" "YES" -GhcRTSWays += dyn debug_dyn thr_dyn thr_debug_dyn +GhcRTSWays += dyn debug_dyn $(if $(findstring NO, $(GhcUnregisterised)),thr_dyn thr_debug_dyn) endif # Want the threaded versions unless we're unregisterised @@ -344,6 +324,8 @@ DotnetSupport=NO # GhcLibsWithUnix=@GhcLibsWithUnix@ +CHECK_PACKAGES = NO + # ---------------------------------------------------------------------------- # Options for GHC's RTS @@ -395,146 +377,8 @@ BIN_DIST_PREP_DIR=$(TOP)/bindist-prep BIN_DIST_PREP=$(BIN_DIST_PREP_DIR)/$(BIN_DIST_NAME) BIN_DIST_LIST=$(TOP)/bindist-list -# Definition of installation directories, we don't use half of these, but since -# the configure script has them on offer while passing through, we might as well -# set them. Note that we have to be careful, because the GNU coding standards -# have changed a bit over the course of time, and autoconf development reflects -# this. -# -# A little bit of history regarding autoconf and GNU coding standards, use this -# as a cheat-sheet for the stuff below: -# -# variable | default < 2.60 | default >= 2.60 -# ------------+--------------------+-------------------------------------- -# exec_prefix | ${prefix} | ${prefix} -# libdir | ${exec_prefix}/lib | ${exec_prefix}/lib -# datarootdir | NONE! | ${prefix}/share -# datadir | ${prefix}/share | ${datarootdir} -# infodir | ${prefix}/info | ${datarootdir}/info -# mandir | ${prefix}/man | ${datarootdir}/man -# docdir | NONE! | ${datarootdir}/doc/${PACKAGE_TARNAME} -# htmldir | NONE! | ${docdir} -# dvidir | NONE! | ${docdir} -# pdfdir | NONE! | ${docdir} -# psdir | NONE! | ${docdir} -# -# NOTE: The default e.g. ${docdir} above means that autoconf substitutes the -# string "${docdir}", not the value of docdir! This is crucial for the GNU -# coding standards. - -# This gets used in the default docdir when autoconf >= 2.60 is used -PACKAGE_TARNAME := @PACKAGE_TARNAME@ - -prefix := @prefix@ - -# New autoconf (>= 2.60?) make a configure with a --datarootdir=DIR flag. -# However, in order to support older autoconf's we don't use it. -# datarootdir is set lower down instead. -# But, as datadir is defined in terms of datarootdir, we also need to -# set it to the value (if any) that configure gives it here. -datarootdir := @datarootdir@ - -exec_prefix := @exec_prefix@ -bindir := @bindir@ -datadir0 := @datadir@ -libdir0 := @libdir@ -includedir := @includedir@ -mandir := @mandir@ -dynlibdir := @libdir@ - -ifeq "$(RelocatableBuild)" "YES" - -# Hack: our directory layouts tend to be different on Windows, so -# hack around configure's bogus assumptions here. -datarootdir := $(prefix) -datadir := $(prefix)/lib -libdir := $(prefix)/lib - -docdir := $(prefix)/doc -htmldir := $(docdir) -dvidir := $(docdir) -pdfdir := $(docdir) -psdir := $(docdir) - -else - -# Unix: override libdir and datadir to put ghc-specific stuff in -# a subdirectory with the version number included. -# -# datadir is set to libdir here as GHC needs package.conf and unlit -# to be in the same place (and things like ghc-pkg need to agree on -# where package.conf is, so we just set it globally). -# -datarootdir := $(datadir0) -libdir := $(libdir0)/ghc-$(ProjectVersion) -datadir := $(libdir) - -# New autoconf (>= 2.60?) make a configure with --docdir=DIR etc flags. -# However, in order to support older autoconf's we don't use them. - -#docdir := @docdir@ -#htmldir := @htmldir@ -#dvidir := @dvidir@ -#pdfdir := @pdfdir@ -#psdir := @psdir@ - -docdir := $(datarootdir)/doc/ghc -htmldir := $(docdir) -dvidir := $(docdir) -pdfdir := $(docdir) -psdir := $(docdir) - -endif # Windows - -headerdir := $(libdir)/include - -# Default place for putting interface files is $(libdir) -# (overriden for packages in package.mk) -ifacedir = $(libdir) - -# NOTE: by intention, libexecdir and libdir point to -# the same place. -# => Only way to override this is to set libexecdir= on the command line. -# (NOTE: configure script setting is ignored). -libexecdir = $(libdir) - -#----------------------------------------------------------------------------- -# install configuration - -# -# 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_HEADER = $(INSTALL) -m 644 -INSTALL_MAN = $(INSTALL) -m 644 -INSTALL_DIR = $(MKDIRHIER) - -# -# runhaskell and hsc2hs are special, in that other compilers besides -# GHC might provide them. Systems with a package manager often come -# with tools to manage this kind of clash, e.g. RPM's -# update-alternatives. When building a distribution for such a system, -# we recommend setting both of the following to 'YES'. -# -# NO_INSTALL_RUNHASKELL = YES -# NO_INSTALL_HSC2HS = YES -# -# NB. we use negative tests here because for binary-distributions we cannot -# test build-time variables at install-time, so they must default to on. +WINDOWS_INSTALLER_BASE = ghc-$(ProjectVersion)-i386-windows +WINDOWS_INSTALLER = $(WINDOWS_INSTALLER_BASE)$(exeext) # ----------------------------------------------------------------------------- # Utilities programs: flags @@ -561,43 +405,6 @@ SRC_BLD_DLL_OPTS += --target=i386-mingw32 GC_CPP_OPTS += -P -E -x c -traditional -D__GLASGOW_HASKELL__ -################################################################################ -# -# Layout of the source tree -# -################################################################################ - -# Here we provide defines for the various directories in the source tree, -# so we can move things around more easily. A define $(GHC_FOO_DIR) -# indicates a directory relative to the top of the source tree. - -GHC_UTILS_DIR = utils -GHC_INCLUDE_DIR = includes -GHC_COMPILER_DIR = compiler -GHC_PROG_DIR = ghc -GHC_RTS_DIR = rts -GHC_DRIVER_DIR = driver -GHC_COMPAT_DIR = compat - -GHC_MKDEPENDC_DIR = $(GHC_UTILS_DIR)/mkdependC -GHC_LTX_DIR = $(GHC_UTILS_DIR)/ltx -GHC_LNDIR_DIR = $(GHC_UTILS_DIR)/lndir -GHC_MKDIRHIER_DIR = $(GHC_UTILS_DIR)/mkdirhier -GHC_DOCBOOK_DIR = $(GHC_UTILS_DIR)/docbook -GHC_UNLIT_DIR = $(GHC_UTILS_DIR)/unlit -GHC_HP2PS_DIR = $(GHC_UTILS_DIR)/hp2ps -GHC_HSTAGS_DIR = $(GHC_UTILS_DIR)/hasktags -GHC_GHCTAGS_DIR = $(GHC_UTILS_DIR)/ghctags -GHC_HSC2HS_DIR = $(GHC_UTILS_DIR)/hsc2hs -GHC_TOUCHY_DIR = $(GHC_UTILS_DIR)/touchy -GHC_PKG_DIR = $(GHC_UTILS_DIR)/ghc-pkg -GHC_GENPRIMOP_DIR = $(GHC_UTILS_DIR)/genprimopcode -GHC_GENAPPLY_DIR = $(GHC_UTILS_DIR)/genapply -GHC_CABAL_DIR = $(GHC_UTILS_DIR)/ghc-cabal -GHC_MANGLER_DIR = $(GHC_DRIVER_DIR)/mangler -GHC_SPLIT_DIR = $(GHC_DRIVER_DIR)/split -GHC_SYSMAN_DIR = $(GHC_RTS_DIR)/parallel - # ----------------------------------------------------------------------------- # Names of programs in the GHC tree # @@ -606,7 +413,6 @@ GHC_SYSMAN_DIR = $(GHC_RTS_DIR)/parallel GHC_UNLIT_PGM = unlit$(exeext) GHC_HP2PS_PGM = hp2ps$(exeext) -GHC_HSTAGS_PGM = hasktags$(exeext) GHC_GHCTAGS_PGM = ghctags$(exeext) GHC_HSC2HS_PGM = hsc2hs$(exeext) GHC_TOUCHY_PGM = touchy$(exeext) @@ -632,18 +438,12 @@ GHC_PERL = $(PERL) endif HP2PS = $(GHC_HP2PS_DIR)/$(GHC_HP2PS_PGM) -HSTAGS = $(GHC_HSTAGS_DIR)/$(GHC_HSTAGS_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) LNDIR = $(GHC_LNDIR_DIR)/$(GHC_LNDIR_PGM) -INPLACE = inplace -INPLACE_BIN = $(INPLACE)/bin -INPLACE_LIB = $(INPLACE)/lib -INPLACE_MINGW = $(INPLACE)/mingw - UNLIT = $(INPLACE_LIB)/$(GHC_UNLIT_PGM) TOUCHY = $(INPLACE_LIB)/$(GHC_TOUCHY_PGM) MKDIRHIER = $(INPLACE_BIN)/$(GHC_MKDIRHIER_PGM) @@ -715,7 +515,6 @@ GhcPatchLevel = @GhcPatchLevel@ GhcMajVersion = @GhcMajVersion@ GhcMinVersion = @GhcMinVersion@ -ghc_ge_607 = @ghc_ge_607@ ghc_ge_609 = @ghc_ge_609@ # Canonicalised ghc version number, used for easy (integer) version @@ -746,8 +545,9 @@ else endif endif -# default C compiler flags +# default C compiler and linker flags SRC_CC_OPTS = @SRC_CC_OPTS@ +SRC_LD_OPTS = @SRC_LD_OPTS@ ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux" SRC_CC_OPTS += -G0 @@ -757,20 +557,6 @@ SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS))) SRC_HSC2HS_OPTS += $(foreach d,$(GMP_INCLUDE_DIRS),-I$(d)) #----------------------------------------------------------------------------- -# GMP Library (version 2.0.x or above) -# -HaveLibGmp = @HaveLibGmp@ -LibGmp = @LibGmp@ - -GMP_INCLUDE_DIRS=@GMP_INCLUDE_DIRS@ -GMP_LIB_DIRS=@GMP_LIB_DIRS@ - -#----------------------------------------------------------------------------- -# GMP framework (Mac OS X) -# -HaveFrameworkGMP = @HaveFrameworkGMP@ - -#----------------------------------------------------------------------------- # Mingwex Library # HaveLibMingwEx = @HaveLibMingwEx@ @@ -822,7 +608,6 @@ PYTHON = @PythonCmd@ PIC = pic PREPROCESSCMD = $(CC) -E RANLIB = @RANLIB@ -RM = rm -f SED = @SedCmd@ SHELL = /bin/sh @@ -837,6 +622,16 @@ LD_X = @LdXFlag@ # overflowing command-line length limits. LdIsGNULd = @LdIsGNULd@ +# 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. +ifeq "$(Windows)" "YES" +XARGS = xargs -s 30000 +else +XARGS = xargs +endif + # # In emergency situations, REAL_SHELL is used to perform shell commands # from within the ghc driver script, by scribbling the command line to @@ -892,18 +687,17 @@ ISCC = #----------------------------------------------------------------------------- # DocBook XML stuff -BUILD_DOCBOOK_HTML = @BUILD_DOCBOOK_HTML@ -BUILD_DOCBOOK_PS = @BUILD_DOCBOOK_PS@ -BUILD_DOCBOOK_PDF = @BUILD_DOCBOOK_PDF@ -DBLATEX = @DblatexCmd@ -XSLTPROC = @XsltprocCmd@ -XMLLINT = @XmllintCmd@ - -DIR_DOCBOOK_XSL = @DIR_DOCBOOK_XSL@ - -XSLTPROC_LABEL_OPTS = --stringparam toc.section.depth 3 \ - --stringparam section.autolabel 1 \ - --stringparam section.label.includes.component.label 1 +BUILD_DOCBOOK_HTML = @BUILD_DOCBOOK_HTML@ +BUILD_DOCBOOK_PS = @BUILD_DOCBOOK_PS@ +BUILD_DOCBOOK_PDF = @BUILD_DOCBOOK_PDF@ +DBLATEX = @DblatexCmd@ +XSLTPROC = @XsltprocCmd@ +XMLLINT = @XmllintCmd@ +HAVE_DOCBOOK_XSL = @HAVE_DOCBOOK_XSL@ +XSLTPROC_HTML_STYLESHEET = http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl +XSLTPROC_LABEL_OPTS = --stringparam toc.section.depth 3 \ + --stringparam section.autolabel 1 \ + --stringparam section.label.includes.component.label 1 #----------------------------------------------------------------------------- # FPtools support software @@ -945,6 +739,8 @@ ALEX_VERSION = @AlexVersion@ # SRC_ALEX_OPTS = -g +HSTAGS = @HstagsCmd@ + # Should we build haddock docs? HADDOCK_DOCS = YES # And HsColour the sources? @@ -978,7 +774,7 @@ endif # # The ways currently defined. # -ALL_WAYS=v p t l s mp mg debug dyn thr thr_l debug_dyn thr_dyn thr_debug_dyn thr_p thr_debug thr_debug_l +ALL_WAYS=v p t l s mp mg debug dyn thr thr_l debug_dyn thr_dyn thr_debug_dyn thr_p thr_debug thr_debug_l debug_p thr_debug_p USER_WAYS=a b c d e f g h j k l m n o A B # @@ -1056,7 +852,6 @@ WAY_thr_debug_l_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -eventlog # Way 'dyn': build dynamic shared libraries WAY_dyn_NAME=dyn WAY_dyn_HC_OPTS=-fPIC -dynamic -WAY_dyn_LIB_TARGET=libHSrts-gcc661.so # Way 'thr_dyn': WAY_thr_dyn_NAME=thr_dyn