X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=mk%2Fconfig.mk.in;h=ea2f5d6dee6de31f88cb4ee8cae68292c69c2bcc;hp=ef0c4795fb8db0683bfb40fd8c7f6e436434b1cb;hb=ec155f69d231ac54f108d417be060b21414ff21d;hpb=3f149d7293f5ce37c8211d8d51ea3665e077272f diff --git a/mk/config.mk.in b/mk/config.mk.in index ef0c479..ea2f5d6 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -56,7 +56,8 @@ endif # random .o-file stuff might change even if the .hi syntax doesn't ProjectName = @ProjectName@ -ProjectVersion = @ProjectVersion@ +ProjectTags = +ProjectVersion = @ProjectVersion@$(ProjectTags) ProjectVersionInt = @ProjectVersionInt@ ProjectPatchLevel = @ProjectPatchLevel@ @@ -162,6 +163,7 @@ LeadingUnderscore=@LeadingUnderscore@ # Pin a suffix on executables? If so, what (Windows only). exeext=@exeext@ +soext=@soext@ # Windows=YES if on a Windows platform ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32)" "" @@ -216,6 +218,9 @@ GhcStage1HcOpts= GhcStage2HcOpts= GhcStage3HcOpts= +GhcProfiled=NO +GhcDebugged=NO + # Build a compiler that will build *unregisterised* libraries and # binaries by default. Unregisterised code is supposed to compile and # run without any support for architecture-specific assembly mangling, @@ -246,11 +251,10 @@ endif 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)$(GhcUnregisterised)" "YESYESNO" -GhcWithNativeCodeGen=YES -else -GhcWithNativeCodeGen=NO -endif +# lazy test, because $(GhcUnregisterised) might be set in build.mk later. +GhcWithNativeCodeGen=$(strip\ + $(if $(filter YESYESNO,\ + $(OsSupportsNCG)$(ArchSupportsNCG)$(GhcUnregisterised)),YES,NO)) # Include support for generating Java GhcWithJavaGen=NO @@ -261,11 +265,8 @@ HaveLibDL = @HaveLibDL@ # includes/SMP.h ArchSupportsSMP=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 sparc powerpc))) -ifeq "$(ArchSupportsSMP)$(GhcUnregisterised)" "YESNO" -GhcWithSMP=YES -else -GhcWithSMP=NO -endif +# lazy test, because $(GhcUnregisterised) might be set in build.mk later. +GhcWithSMP=$(strip $(if $(filter YESNO, $(ArchSupportsSMP)$(GhcUnregisterised)),YES,NO)) # Whether to include GHCi in the compiler. Depends on whether the RTS linker # has support for this OS/ARCH combination. @@ -290,6 +291,18 @@ else GhcEnableTablesNextToCode=YES endif +# On Windows we normally want to make a relocatable bindist, to we +# ignore flags like libdir +ifeq "$(Windows)" "YES" +RelocatableBuild = YES +else +RelocatableBuild = NO +endif + +# When building bindists we set this to yes so that the binaries are as +# portable as possible. +BeConservative = NO + # # Building various ways? # (right now, empty if not). @@ -315,8 +328,7 @@ BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS))) HscIfaceFileVersion=6 -# Building with debugger? -GhciWithDebugger=YES +MakefileDeps=YES #------------------------------------------------------------------------------ # Options for Libraries @@ -341,13 +353,24 @@ endif # debug_u : debugging unregisterised # thr_debug : debugging threaded # thr_debug_p : debugging threaded profiled +# t : ticky-ticky profiling +# debug_t : debugging ticky-ticky profiling # -ifeq "$(BootingFromHc)" "YES" GhcRTSWays= -else -GhcRTSWays=thr thr_p debug thr_debug + +# Usually want the debug version +ifeq "$(BootingFromHc)" "NO" +GhcRTSWays += debug endif +# Want the threaded versions unless we're unregisterised +# Defer the check until later by using $(if..), because GhcUnregisterised might +# be set in build.mk, which hasn't been read yet. +GhcRTSWays += $(if $(findstring NO, $(GhcUnregisterised)),thr thr_p thr_debug,) + +# We can only build GHCi threaded if we have a threaded RTS: +GhcThreaded = $(if $(findstring thr,$(GhcRTSWays)),YES,NO) + # Option flags to pass to GHC when it's compiling modules in # fptools/libraries. Typically these are things like -O or # -dcore-lint or -H32m. The ones that are *essential* are wired into @@ -389,26 +412,15 @@ CorePackages = base Cabal haskell98 readline regex-base regex-compat \ # 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. -ifeq "$(DLLized)" "YES" -SplitObjs=NO -endif -ifeq "$(BootingFromHc)" "YES" -SplitObjs=NO -endif -ifeq "$(GhcUnregisterised)" "YES" -SplitObjs=NO -endif -ifeq "$(TargetArch_CPP)" "ia64" -SplitObjs=NO -endif +# lazy test, so that $(GhcUnregisterised) can be set in build.mk +SplitObjs=$(strip $(if $(filter $(TargetArch_CPP),i386 x86_64 powerpc sparc),\ + $(if $(filter YES,$(BootingFromHC)),\ + NO,\ + $(if $(filter NO,$(GhcUnregisterised)),\ + YES,\ + NO)),\ + NO)) # Math library LIBM=@LIBM@ @@ -497,88 +509,113 @@ ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32" DEFAULT_TMPDIR = /C/TEMP endif -# FPTOOLS_TOP: the top of the fptools hierarchy, absolute path. (POSIX / unix-style path). +# FPTOOLS_TOP: the top of the fptools hierarchy, absolute path. +# On Windows this is a c:/foo/bar style path. FPTOOLS_TOP_ABS = @hardtop@ -# The platform specific version of 'hardtop'. -FPTOOLS_TOP_ABS_PLATFORM = @hardtop_plat@ - -# -# 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. -prefix = @prefix@ -datarootdir = @datarootdir@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -datadir0 = @datadir@ -libdir0 = @libdir@ -includedir = @includedir@ -oldincludedir = @oldincludedir@ -mandir = @mandir@ +BIN_DIST_NAME=ghc-$(ProjectVersion) +BIN_DIST_TOPDIR_REL=$(FPTOOLS_TOP) +BIN_DIST_TOPDIR_ABS=$(FPTOOLS_TOP_ABS) +BIN_DIST_DIR=$(BIN_DIST_TOPDIR_ABS)/$(BIN_DIST_NAME) +BIN_DIST_TARBALL=$(BIN_DIST_TOPDIR_REL)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar.bz2 + +BIN_DIST_INST_DIR = $(FPTOOLS_TOP_ABS)/bindisttest/installed + +# 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@ 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) +datarootdir := $(prefix) +datadir := $(prefix) +libdir := $(prefix) else -# # Unix: override libdir and datadir to put ghc-specific stuff in # a subdirectory with the version number included. -# -libdir = $(libdir0)/ghc-$(ProjectVersion) -datadir = $(datadir0)/ghc-$(ProjectVersion) +datarootdir := $(datadir0) +datadir := $(datadir0)/ghc-$(ProjectVersion) +libdir := $(libdir0)/ghc-$(ProjectVersion) endif # Windows +headerdir := $(libdir)/include + +# 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) + # Default place for putting interface files is $(libdir) # (overriden for packages in package.mk) ifacedir = $(libdir) -# -# Default values for most of the above are only set if -# they weren't configured to anything in particular -# via the configure script. (i.e., we make no assumption -# that the autoconf-generated script will assign defaults -# to all of the above). -# -ifeq "$(strip $(exec_prefix))" "" -exec_prefix = $(prefix) -endif -ifeq "$(strip $(bindir))" "" -bindir = $(exec_prefix)/bin -endif - -# # 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) -ifeq "$(strip $(datadir))" "" -datadir = $(prefix)/share -endif -ifeq "$(strip $(libdir))" "" -libdir = $(exec_prefix)/lib -endif -ifeq "$(strip $(includedir))" "" -includedir = $(prefix)/include -endif -ifeq "$(strip $(oldincludedir))" "" -oldincludedir = /usr/include -endif -ifeq "$(strip $(mandir))" "" -mandir = $(prefix)/man -endif +# This is a bit of a lie, as this is a wrapper rather than the program +# itself. However, it means that we don't have to worry about Windows +# and non-Windows having different extensions. +GHC_PKG_PROG = $(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)/ghc-pkg-inplace #----------------------------------------------------------------------------- # install configuration @@ -601,6 +638,7 @@ 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) @@ -775,6 +813,9 @@ MKDIRHIER = $(GHC_MKDIRHIER_DIR)/$(GHC_MKDIRHIER_PGM) LNDIR = $(GHC_LNDIR_DIR)/$(GHC_LNDIR_PGM) RUNTEST = $(GHC_RUNTEST_DIR)/$(GHC_RUNTEST_PGM) +GENERATED_FILE = chmod a-w +EXECUTABLE_FILE = chmod +x + #----------------------------------------------------------------------------- # Haskell compilers and mkdependHS @@ -817,11 +858,11 @@ GhcPatchLevel = @ProjectPatchLevel@ GhcMajVersion = @GhcMajVersion@ GhcMinVersion = @GhcMinVersion@ -ghc_ge_504 = YES ghc_ge_601 = YES ghc_ge_602 = YES ghc_ge_603 = YES ghc_ge_605 = YES +ghc_ge_607 = YES else # not UseStage1 or BootingFromHc @@ -833,11 +874,11 @@ GhcMajVersion = @GhcMajVersion@ GhcMinVersion = @GhcMinVersion@ # Some useful GHC version predicates: -ghc_ge_504 = $(shell if (test $(GhcCanonVersion) -ge 504); then echo YES; else echo NO; fi) -ghc_ge_601 = $(shell if (test $(GhcCanonVersion) -ge 601); then echo YES; else echo NO; fi) -ghc_ge_602 = $(shell if (test $(GhcCanonVersion) -ge 602); then echo YES; else echo NO; fi) -ghc_ge_603 = $(shell if (test $(GhcCanonVersion) -ge 603); then echo YES; else echo NO; fi) -ghc_ge_605 = $(shell if (test $(GhcCanonVersion) -ge 605); then echo YES; else echo NO; fi) +ghc_ge_601 = @ghc_ge_601@ +ghc_ge_602 = @ghc_ge_602@ +ghc_ge_603 = @ghc_ge_603@ +ghc_ge_605 = @ghc_ge_605@ +ghc_ge_607 = @ghc_ge_607@ endif # Canonicalised ghc version number, used for easy (integer) version @@ -882,6 +923,9 @@ endif HaveLibGmp = @HaveLibGmp@ LibGmp = @LibGmp@ +GMP_INCLUDE_DIRS=@GMP_INCLUDE_DIRS@ +GMP_LIB_DIRS=@GMP_LIB_DIRS@ + #----------------------------------------------------------------------------- # GMP framework (Mac OS X) # @@ -999,6 +1043,10 @@ UNAME = uname # GTK+ GTK_CONFIG = @GTK_CONFIG@ +# Set this if you want to use Inno Setup to build a Windows installer +# when you make a bindist +ISCC = + #----------------------------------------------------------------------------- # DocBook XML stuff @@ -1149,6 +1197,10 @@ WAY_debug_p_HC_OPTS=-optc-DDEBUG -prof WAY_debug_u_NAME=debug unregisterised WAY_debug_u_HC_OPTS=-optc-DDEBUG -unreg +# Way 'debug_t': +WAY_debug_t_NAME=debug ticky-ticky profiling +WAY_debug_t_HC_OPTS= -ticky -optc-DDEBUG + # Way 'thr_debug': WAY_thr_debug_NAME=threaded WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG @@ -1157,6 +1209,23 @@ WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG WAY_thr_debug_p_NAME=threaded WAY_thr_debug_p_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -prof +# 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 +WAY_thr_dyn_HC_OPTS=-fPIC -dynamic -optc-DTHREADED_RTS + +# Way 'thr_debug_dyn': +WAY_thr_debug_dyn_NAME=thr_dyn +WAY_thr_debug_dyn_HC_OPTS=-fPIC -dynamic -optc-DTHREADED_RTS -optc-DDEBUG + +# Way 'debug_dyn': +WAY_debug_dyn_NAME=thr_dyn +WAY_debug_dyn_HC_OPTS=-fPIC -dynamic -optc-DDEBUG + # # Add user-way configurations here: # @@ -1227,3 +1296,11 @@ WAY_o_HC_OPTS= # GhcLibCppOpts += -DWORD_SIZE_IN_BITS=31 # SplitObjs=NO +################################################################################ +# +# Library configure arguments +# +################################################################################ + +CONFIGURE_ARGS = @CONFIGURE_ARGS@ +