Patch for shared libraries support on FreeBSD
[ghc-hetmet.git] / mk / config.mk.in
index 93b5555..ea3c1ff 100644 (file)
@@ -102,7 +102,7 @@ GhcDebugged=NO
 GhcLibProfiled=$(if $(filter p,$(GhcLibWays)),YES,NO)
 
 # Do we support shared libs?
-PlatformSupportsSharedLibs = $(if $(filter $(TARGETPLATFORM),i386-unknown-linux x86_64-unknown-linux),YES,NO)
+PlatformSupportsSharedLibs = $(if $(filter $(TARGETPLATFORM),i386-unknown-linux x86_64-unknown-linux i386-unknown-freebsd amd64-unknown-freebsd),YES,NO)
 
 # ToDo later:
 # BuildStaticLibs=@BuildStaticLibs@
@@ -153,7 +153,7 @@ GhcWithSMP=$(strip $(if $(filter YESNO, $(ArchSupportsSMP)$(GhcUnregisterised)),
 # 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)))
+OsSupportsGHCi=$(strip $(patsubst $(HostOS_CPP), YES, $(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd dragonfly netbsd openbsd darwin)))
 ArchSupportsGHCi=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc sparc sparc64)))
 
 ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES"
@@ -235,8 +235,6 @@ BuildSharedLibs=$(strip $(if $(findstring dyn,$(GhcLibWays)),YES,NO))
 #   debug_p     : debugging profiled
 #   thr_debug   : debugging threaded
 #   thr_debug_p : debugging threaded profiled
-#   t          : ticky-ticky profiling
-#   debug_t    : debugging ticky-ticky profiling
 #   l           : event logging
 #   thr_l       : threaded and event logging
 #
@@ -272,9 +270,6 @@ GhcThreaded = $(if $(findstring thr,$(GhcRTSWays)),YES,NO)
 
 GhcLibHcOpts=-O2 -XGenerics
 
-# Win32 only: Enable the RTS and libraries to be built as DLLs
-DLLized=@EnableWin32DLLs@
-
 # Strip local symbols from libraries?  This can make the libraries smaller,
 # but makes debugging somewhat more difficult.  Doesn't work with all ld's.
 #
@@ -307,9 +302,6 @@ SupportsSplitObjs=$(strip $(if $(filter YES,$(ArchSupportsSplitObjs)),\
 # By default, enable SplitObjs for the libraries if this build supports it
 SplitObjs=$(SupportsSplitObjs)
 
-# Math library
-LIBM=@LIBM@
-
 # .NET interop support?
 #
 DotnetSupport=NO
@@ -361,15 +353,12 @@ ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
 DEFAULT_TMPDIR         = /C/TEMP
 endif
 
-BIN_DIST_TOPDIR_ABS=$(TOP)
-BIN_DIST_DIR=$(BIN_DIST_TOPDIR_ABS)/$(BIN_DIST_NAME)
-
-BIN_DIST_NAME=ghc-$(ProjectVersion)
-BIN_DIST_TAR=$(TOP)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar
-BIN_DIST_TAR_BZ2=$(BIN_DIST_TAR).bz2
-BIN_DIST_PREP_DIR=$(TOP)/bindist-prep
-BIN_DIST_PREP=$(BIN_DIST_PREP_DIR)/$(BIN_DIST_NAME)
-BIN_DIST_LIST=$(TOP)/bindist-list
+BIN_DIST_NAME         = ghc-$(ProjectVersion)
+BIN_DIST_PREP_DIR     = bindistprep/$(BIN_DIST_NAME)
+BIN_DIST_PREP_TAR     = bindistprep/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar
+BIN_DIST_PREP_TAR_BZ2 = $(BIN_DIST_PREP_TAR).bz2
+BIN_DIST_TAR_BZ2      = $(BIN_DIST_NAME)-$(TARGETPLATFORM).tar.bz2
+BIN_DIST_LIST         = bindist-list
 
 WINDOWS_INSTALLER_BASE = ghc-$(ProjectVersion)-i386-windows
 WINDOWS_INSTALLER = $(WINDOWS_INSTALLER_BASE)$(exeext)
@@ -417,7 +406,6 @@ GHC_GENPRIMOP_PGM       = genprimopcode$(exeext)
 GHC_GENAPPLY_PGM        = genapply$(exeext)
 GHC_CABAL_PGM           = ghc-cabal$(exeext)
 GHC_PKG_PGM             = ghc-pkg$(exeext)
-GHC_MKDEPENDC_PGM       = mkdependC
 GHC_LTX_PGM             = ltx$(exeext)
 GHC_MKDIRHIER_PGM       = mkdirhier
 GHC_LNDIR_PGM           = lndir
@@ -441,7 +429,6 @@ LNDIR                       = $(GHC_LNDIR_DIR)/$(GHC_LNDIR_PGM)
 UNLIT                  = $(INPLACE_LIB)/$(GHC_UNLIT_PGM)
 TOUCHY                  = $(INPLACE_LIB)/$(GHC_TOUCHY_PGM)
 MKDIRHIER              = $(INPLACE_BIN)/$(GHC_MKDIRHIER_PGM)
-MKDEPENDC              = $(INPLACE_BIN)/$(GHC_MKDEPENDC_PGM)
 GHC_CABAL_INPLACE      = $(INPLACE_BIN)/$(GHC_CABAL_PGM)
 GENAPPLY_INPLACE       = $(INPLACE_BIN)/$(GHC_GENAPPLY_PGM)
 GHC_PKG_INPLACE                = $(INPLACE_BIN)/$(GHC_PKG_PGM)
@@ -551,13 +538,14 @@ ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
 CONF_CC_OPTS += -G0
 endif
 
-SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS)))
+SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS) $(CONF_CC_OPTS)))
 SRC_HSC2HS_OPTS += $(foreach d,$(GMP_INCLUDE_DIRS),-I$(d))
 
 #-----------------------------------------------------------------------------
 # Mingwex Library
 #
 HaveLibMingwEx = @HaveLibMingwEx@
+DLLTOOL                        = inplace/mingw/bin/dlltool.exe
 
 #-----------------------------------------------------------------------------
 # Flex (currently unused, could be moved to glafp-utils)
@@ -571,12 +559,15 @@ HaveLibMingwEx    = @HaveLibMingwEx@
 # Other standard (ha!) Unix utilities
 
 AR                     = @ArCmd@
+AR_OPTS                        = @ArArgs@
 ArSupportsInput                = @ArSupportsInput@
 # Yuckage: for ghc/utils/parallel -- todo: nuke this dependency!!
 BASH                    = /usr/local/bin/bash
 
 CONTEXT_DIFF           = @ContextDiffCmd@
 CP                     = cp
+# It's not easy to separate the CPP program from its flags, as
+# AC_PROG_CPP defines CPP as "/usr/bin/gcc -E"
 CPP                    = @CPP@ @CPPFLAGS@
 CTAGS                  = $(ETAGS)
 #
@@ -607,9 +598,14 @@ PIC                        = pic
 PREPROCESSCMD          = $(CC) -E
 RANLIB                 = @RANLIB@
 SED                    = @SedCmd@
+TR                     = tr
 SHELL                  = /bin/sh
 
-LD                     = @LdCmd@
+HaveDtrace             = @HaveDtrace@
+DTRACE                 = @DtraceCmd@
+
+LD = @LdCmd@
+NM = @NmCmd@
 
 # 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 ""
@@ -624,10 +620,9 @@ LdIsGNULd          = @LdIsGNULd@
 #   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
+ifeq "$(Windows)" "YES"
+XARGS_OPTS = -s 30000
 endif
 
 #
@@ -740,7 +735,7 @@ SRC_ALEX_OPTS               = -g
 HSTAGS = @HstagsCmd@
 
 # Should we build haddock docs?
-HADDOCK_DOCS = YES
+HADDOCK_DOCS = $(GhcWithInterpreter)
 # And HsColour the sources?
 ifeq "$(HSCOLOUR)" ""
 HSCOLOUR_SRCS = NO
@@ -748,116 +743,6 @@ else
 HSCOLOUR_SRCS = YES
 endif
 
-#
-# Options for compiling in different `ways'. 
-# 
-# To configure up your own way, have a look at some of the standard ways
-# such as profiling, and create your own set of WAY_*_OPTS defs below.
-# After having done that, add your way string to WAYS, and after having
-# run the configure script, the different projects will add the new way
-# to the list of ways they support.
-#
-
-#
-# Definitions of the different ways:
-#   
-#   * their name:
-#          - tag, e.g., p
-#          - description, e.g., profiling
-#   * what they mean to the driver:
-#          - WAY_p_HC_OPTS gives the list of command-line options
-#            to the driver.
-#
-
-#
-# 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 debug_p thr_debug_p
-
-#
-# The following ways currently have treated specially, p t mg,
-# as the driver script treats these guys specially and needs to carefully be told
-# about the options for these. Hence, we hide the required command line options
-# for these in the driver, as this is the only place they are needed.
-# 
-# If you want to add to these default options, fill in the variables below:
-
-# Way 'v':
-WAY_v_NAME=vanilla
-WAY_v_HC_OPTS= 
-
-# Way 'p':
-WAY_p_NAME=profiling
-WAY_p_HC_OPTS= -prof
-
-# Way 't':
-WAY_t_NAME=ticky-ticky profiling
-WAY_t_HC_OPTS= -ticky
-
-# Way 'l':
-WAY_l_NAME=event logging
-WAY_l_HC_OPTS= -eventlog
-
-# Way `mp': 
-WAY_mp_NAME=parallel
-WAY_mp_HC_OPTS=-parallel
-
-# Way `mg': 
-WAY_mg_NAME=GranSim
-WAY_mg_HC_OPTS=-gransim
-
-#
-# These ways apply to the RTS only:
-#
-
-# Way 'thr':
-WAY_thr_NAME=threaded
-WAY_thr_HC_OPTS=-optc-DTHREADED_RTS
-
-# Way 'thr_p':
-WAY_thr_p_NAME=threaded profiled
-WAY_thr_p_HC_OPTS=-optc-DTHREADED_RTS -prof
-
-# Way 'thr_l':
-WAY_thr_l_NAME=threaded event logging
-WAY_thr_l_HC_OPTS=-optc-DTHREADED_RTS -eventlog
-
-# Way 'debug':
-WAY_debug_NAME=debug
-WAY_debug_HC_OPTS=-optc-DDEBUG
-
-# Way 'debug_p':
-WAY_debug_p_NAME=debug profiled
-WAY_debug_p_HC_OPTS=-optc-DDEBUG -prof
-
-# 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
-
-# Way 'thr_debug_p':
-WAY_thr_debug_p_NAME=threaded debug profiling
-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 '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
-
 ################################################################################
 #
 #              31-bit-Int Core files
@@ -900,12 +785,6 @@ ICONV_LIB_DIRS = @ICONV_LIB_DIRS@
 #
 ################################################################################
 
-ifeq "$(Windows)" "YES"
 BIN_DIST_INST_SUBDIR = "install dir"
-else
-# I very much doubt that paths with spaces will work on Unix
-BIN_DIST_INST_SUBDIR = installed
-endif
-
 BIN_DIST_INST_DIR = $(TOP)/bindisttest/$(BIN_DIST_INST_SUBDIR)