Fix up logic to decide whether shared libs are being built or not
[ghc-hetmet.git] / mk / config.mk.in
index 8c33bb2..813a912 100644 (file)
@@ -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
@@ -28,6 +26,7 @@
 TOP            = @hardtop@
 
 include $(TOP)/mk/project.mk
+include $(TOP)/mk/install.mk
 
 ################################################################################
 #
@@ -36,12 +35,9 @@ include $(TOP)/mk/project.mk
 ################################################################################
 
 # BootingFromHc - build GHC and the libraries from .hc files?
+# (unregisterised only)
 BootingFromHc = @BootingFromHc@
 
-# BootingFromUnregisterisedHc - treat .hc files as containing unregisterised
-# rather than registerised code, i.e., disable the mangler?
-BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@
-
 NO_INCLUDE_DEPS = NO
 NO_INCLUDE_PKGDATA = NO
 
@@ -106,8 +102,9 @@ GhcProfiled=NO
 GhcDebugged=NO
 GhcLibProfiled=$(if $(filter p,$(GhcLibWays)),YES,NO)
 
-# Build shared and/or static libs?
-BuildSharedLibs=@BuildSharedLibs@
+# Do we support shared libs?
+PlatformSupportsSharedLibs = $(if $(filter $(TARGETPLATFORM),i386-unknown-linux x86_64-unknown-linux),YES,NO)
+
 # ToDo later:
 # BuildStaticLibs=@BuildStaticLibs@
 
@@ -148,7 +145,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.
@@ -220,10 +217,13 @@ ifneq "$(BootingFromHc)" "YES"
 GhcLibWays += p
 endif
 
-ifeq "$(BuildSharedLibs)" "YES"
+ifeq "$(PlatformSupportsSharedLibs)" "YES"
 GhcLibWays += dyn
 endif
 
+# Handy way to test whether we're building shared libs or not.
+BuildSharedLibs=$(strip $(if $(findstring dyn,$(GhcLibWays)),YES,NO))
+
 # In addition, the RTS is built in some further variations.  Ways that
 # make sense here:
 # 
@@ -237,7 +237,6 @@ endif
 #   debug_t    : debugging ticky-ticky profiling
 #   l           : event logging
 #   thr_l       : threaded and event logging
-#   thr_debug_l        : threaded and debugging and event logging
 #
 GhcRTSWays=l
 
@@ -246,15 +245,12 @@ ifeq "$(BootingFromHc)" "NO"
 GhcRTSWays += debug 
 endif
 
-ifeq "$(BuildSharedLibs)" "YES"
-GhcRTSWays += dyn debug_dyn thr_dyn thr_debug_dyn
-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_debug thr_l,)
 GhcRTSWays += $(if $(findstring p, $(GhcLibWays)),$(if $(findstring NO, $(GhcUnregisterised)),thr_p,),)
+GhcRTSWays += $(if $(findstring dyn, $(GhcLibWays)), dyn debug_dyn $(if $(findstring NO, $(GhcUnregisterised)),thr_dyn thr_debug_dyn),)
 
 # We can only build GHCi threaded if we have a threaded RTS:
 GhcThreaded = $(if $(findstring thr,$(GhcRTSWays)),YES,NO)
@@ -320,6 +316,8 @@ DotnetSupport=NO
 #
 GhcLibsWithUnix=@GhcLibsWithUnix@
 
+CHECK_PACKAGES = NO
+
 # ----------------------------------------------------------------------------
 # Options for GHC's RTS
 
@@ -374,147 +372,6 @@ BIN_DIST_LIST=$(TOP)/bindist-list
 WINDOWS_INSTALLER_BASE = ghc-$(ProjectVersion)-i386-windows
 WINDOWS_INSTALLER = $(WINDOWS_INSTALLER_BASE)$(exeext)
 
-# 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.
-
 # -----------------------------------------------------------------------------
 # Utilities programs: flags 
 
@@ -672,6 +529,7 @@ HaveGcc     = @HaveGcc@
 UseGcc         = YES
 WhatGccIsCalled = @WhatGccIsCalled@
 GccVersion      = @GccVersion@
+GccLT34                = @GccLT34@
 ifeq "$(strip $(HaveGcc))" "YES"
 ifneq "$(strip $(UseGcc))"  "YES"
   CC   = cc
@@ -680,12 +538,13 @@ else
 endif
 endif
 
-# default C compiler and linker flags
-SRC_CC_OPTS = @SRC_CC_OPTS@
-SRC_LD_OPTS = @SRC_LD_OPTS@
+# C compiler and linker flags from configure (e.g. -m<blah> to select
+# correct C compiler backend).
+CONF_CC_OPTS = @CONF_CC_OPTS@
+CONF_LD_OPTS = @CONF_LD_OPTS@
 
 ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
-SRC_CC_OPTS += -G0
+CONF_CC_OPTS += -G0
 endif
 
 SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS)))
@@ -909,8 +768,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 debug_p thr_debug_p
-USER_WAYS=a b c d e f g h j k l m n o A B
+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 debug_p thr_debug_p
 
 #
 # The following ways currently have treated specially, p t mg,
@@ -980,14 +838,9 @@ WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG
 WAY_thr_debug_p_NAME=threaded debug profiling
 WAY_thr_debug_p_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -prof
 
-# Way 'thr_debug_l':
-WAY_thr_debug_l_NAME=threaded debug event logging
-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
@@ -1001,57 +854,6 @@ WAY_thr_debug_dyn_HC_OPTS=-fPIC -dynamic -optc-DTHREADED_RTS -optc-DDEBUG
 WAY_debug_dyn_NAME=thr_dyn
 WAY_debug_dyn_HC_OPTS=-fPIC -dynamic -optc-DDEBUG
 
-#
-# Add user-way configurations here:
-#
-WAY_A_NAME=
-WAY_A_HC_OPTS=
-
-WAY_B_NAME=
-WAY_B_HC_OPTS=
-
-WAY_a_NAME=
-WAY_a_HC_OPTS=
-
-WAY_b_NAME=
-WAY_b_HC_OPTS=
-
-WAY_c_NAME=
-WAY_c_HC_OPTS=
-
-WAY_d_NAME=
-WAY_d_HC_OPTS=
-
-WAY_e_NAME=
-WAY_e_HC_OPTS=
-
-WAY_f_NAME=
-WAY_f_HC_OPTS=
-
-WAY_g_NAME=
-WAY_g_HC_OPTS=
-
-WAY_h_NAME=
-WAY_h_HC_OPTS=
-
-WAY_j_NAME=
-WAY_j_HC_OPTS=
-
-WAY_k_NAME=
-WAY_k_HC_OPTS=
-
-WAY_l_NAME=
-WAY_l_HC_OPTS=
-
-WAY_m_NAME=
-WAY_m_HC_OPTS=
-
-WAY_n_NAME=
-WAY_n_HC_OPTS=
-
-WAY_o_NAME=
-WAY_o_HC_OPTS=
-
 ################################################################################
 #
 #              31-bit-Int Core files
@@ -1081,6 +883,15 @@ CONFIGURE_ARGS = @CONFIGURE_ARGS@
 
 ################################################################################
 #
+#    To be passed to sub-builds
+#
+################################################################################
+
+ICONV_INCLUDE_DIRS = @ICONV_INCLUDE_DIRS@
+ICONV_LIB_DIRS = @ICONV_LIB_DIRS@
+
+################################################################################
+#
 #    Bindist testing directory
 #
 ################################################################################