make the smp way RTS-only, normal libraries now work with -smp
[ghc-hetmet.git] / mk / config.mk.in
index e3e0d4e..931c4f5 100644 (file)
 # a section corresponding to each of the main .mk files 
 # included by boilerplate.mk (see boilerplate.mk for a list).
 
+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
 
 ################################################################################
 #
@@ -255,7 +260,11 @@ GhcUnregisterised=NO
 # Target platforms supported:
 #   i386, powerpc
 #   sparc has bitrotted
-ifneq "$(findstring $(HostArch_CPP), i386 x86_64 powerpc)" ""
+#   AIX is not supported 
+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)" "YESYES"
 GhcWithNativeCodeGen=YES
 else
 GhcWithNativeCodeGen=NO
@@ -265,14 +274,12 @@ endif
 GhcWithJavaGen=NO
 
 HaveLibDL = @HaveLibDL@
-HaveRtldNext = @HaveRtldNext@
-HaveRtldLocal = @HaveRtldLocal@
 
 # 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)))
+ArchSupportsGHCi=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc powerpc64 sparc sparc64)))
 
 ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES"
 GhcWithInterpreter=YES
@@ -304,8 +311,10 @@ endif
 # 
 #   thr         : threaded
 #   thr_p       : threaded profiled
+#   s          : smp
 #   debug       : debugging (compile with -g for the C compiler, and -DDEBUG)
 #   debug_p     : debugging profiled
+#   debug_s     : debugging smp
 #   debug_u     : debugging unregisterised
 #   thr_debug   : debugging threaded
 #   thr_debug_p : debugging threaded profiled
@@ -313,7 +322,7 @@ endif
 ifeq "$(BootingFromHc)" "YES"
 GhcRTSWays=
 else
-GhcRTSWays=thr thr_p debug thr_debug
+GhcRTSWays=thr thr_p s debug debug_s thr_debug
 endif
 
 # Option flags to pass to GHC when it's compiling modules in
@@ -374,7 +383,7 @@ endif
 
 # For an optimised RTS (you probably don't want to change these; we build
 # a debugging RTS by default now.  Use -debug to get it).
-GhcRtsHcOpts=-O2
+GhcRtsHcOpts=-optc-O2
 GhcRtsCcOpts=-fomit-frame-pointer
 
 # Include the front panel code?  Needs GTK+.
@@ -1041,10 +1050,6 @@ WAY_t_HC_OPTS= -ticky
 WAY_u_NAME=unregisterized (using portable C only)
 WAY_u_HC_OPTS=-unreg
 
-# Way `s':
-WAY_s_NAME=threads (for SMP)
-WAY_s_HC_OPTS=-smp
-
 # Way `mp': 
 WAY_mp_NAME=parallel
 WAY_mp_HC_OPTS=-parallel
@@ -1065,6 +1070,10 @@ WAY_thr_HC_OPTS=-optc-DTHREADED_RTS
 WAY_thr_p_NAME=threaded profiled
 WAY_thr_p_HC_OPTS=-optc-DTHREADED_RTS -prof
 
+# Way `s':
+WAY_s_NAME=threads (for SMP)
+WAY_s_HC_OPTS=-optc-DSMP -optc-DTHREADED_RTS
+
 # Way 'debug':
 WAY_debug_NAME=debug
 WAY_debug_HC_OPTS=-optc-DDEBUG
@@ -1079,7 +1088,7 @@ WAY_debug_u_HC_OPTS=-optc-DDEBUG -unreg
 
 # Way 'debug_s':
 WAY_debug_s_NAME=debug SMP
-WAY_debug_s_HC_OPTS=-optc-DDEBUG -smp
+WAY_debug_s_HC_OPTS=-optc-DDEBUG -optc-DTHREADED_RTS -optc-DSMP
 
 # Way 'thr_debug':
 WAY_thr_debug_NAME=threaded