Improve External Core syntax for newtypes
[ghc-hetmet.git] / compiler / Makefile
index 0095419..216e5f8 100644 (file)
@@ -308,7 +308,7 @@ else
        @echo "cRelocatableBuild     = False"                 >> $(CONFIG_HS)
 endif
        @echo "cLibFFI               :: Bool"                 >> $(CONFIG_HS)
-ifeq "$(UseLibFFI)" "YES"
+ifeq "$(UseLibFFIForAdjustors)" "YES"
        @echo "cLibFFI               = True"                  >> $(CONFIG_HS)
 else
        @echo "cLibFFI               = False"                 >> $(CONFIG_HS)
@@ -433,7 +433,7 @@ SRC_HC_OPTS += -Istage$(stage)
 ALL_DIRS = \
   utils basicTypes types hsSyn prelude rename typecheck deSugar coreSyn \
   vectorise specialise simplCore stranal stgSyn simplStg codeGen main \
-  profiling parser cprAnalysis ndpFlatten iface cmm
+  profiling parser cprAnalysis iface cmm
 
 # Make sure we include Config.hs even if it doesn't exist yet...
 ALL_SRCS += $(CONFIG_HS)
@@ -457,11 +457,6 @@ ALL_DIRS += javaGen
 SRC_HC_OPTS += -DJAVA
 endif
 
-ifeq ($(UseLibFFI),YES)
-SRC_HC_OPTS += -DUSE_LIBFFI
-SRC_HSC2HS_OPTS += -DUSE_LIBFFI
-endif
-
 ifeq "$(BootingFromHc)" "YES"
 # HC files are always from a self-booted compiler
 bootstrapped = YES
@@ -473,6 +468,15 @@ bootstrapped = NO
 endif
 endif
 
+# Beyond stage 1, honour any Mac OS X depolyment target options.  If we use 
+# these options in stage 1 we get a linker error if the bootstrap compiler is
+#  for a more recent OS version
+ifneq "$(findstring $(stage), 2 3)" ""
+SRC_CC_OPTS += $(MACOSX_DEPLOYMENT_CC_OPTS)
+SRC_HC_OPTS += $(addprefix -optc, $(MACOSX_DEPLOYMENT_CC_OPTS))
+SRC_LD_OPTS += $(addprefix -optl, $(MACOSX_DEPLOYMENT_LD_OPTS))
+endif
+
 # -----------------------------------------------------------------------------
 # Building a compiler with interpreter support
 #
@@ -508,6 +512,9 @@ ifeq "$(GhcDebugged)" "YES"
 SRC_LD_OPTS += -debug
 endif
 
+SRC_HC_OPTS     += -I$(FPTOOLS_TOP)/libffi/build/include
+SRC_HSC2HS_OPTS += -I$(FPTOOLS_TOP)/libffi/build/include
+
 ALL_DIRS += ghci
 
 # If we are going to use dynamic libraries instead of .o files for ghci,
@@ -520,23 +527,23 @@ else
 EXCLUDED_SRCS += ghci/keepCAFsForGHCi.c
 endif
 
-# Enable readline if either:
-#   - we're building stage 1 and $(GhcHasReadline)="YES"
-#   - we're building stage 2/3, and we have built the readline package
+# Enable editline if either:
+#   - we're building stage 1 and $(GhcHasEditline)="YES"
+#   - we're building stage 2/3, and we have built the editline package
 #
-# But we don't enable readline on Windows, because readline is fairly
-# broken there.
+# But we don't enable editline on Windows, as Windows terminals have
+# editline-like support builtin.
 #
 ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
 ifeq "$(stage)" "1"
-ifeq "$(GhcHasReadline)" "YES"
-SRC_HC_OPTS += -package readline -DUSE_READLINE
-PKG_DEPENDS += readline
+ifeq "$(GhcHasEditline)" "YES"
+SRC_HC_OPTS += -package editline -DUSE_EDITLINE
+PKG_DEPENDS += editline
 endif
 else
-ifeq "$(wildcard $(FPTOOLS_TOP_ABS)/libraries/readline/unbuildable)" ""
-SRC_HC_OPTS += -package readline -DUSE_READLINE
-PKG_DEPENDS += readline
+ifeq "$(wildcard $(FPTOOLS_TOP_ABS)/libraries/editline/unbuildable)" ""
+SRC_HC_OPTS += -package editline -DUSE_EDITLINE
+PKG_DEPENDS += editline
 endif
 endif # stage=1
 endif # not windows
@@ -762,6 +769,13 @@ endif
 
 SRC_LD_OPTS += -no-link-chk
 
+ifeq "$(GhcUnregisterised)" "NO"
+ifeq "$(HOSTPLATFORM)" "ia64-unknown-linux"
+# needed for generating proper relocation in large binaries: trac #856
+SRC_LD_OPTS += -optl-Wl,--relax
+endif
+endif
+
 # -----------------------------------------------------------------------------
 # create ghc-inplace, a convenient way to run ghc from the build tree...
 # See comments in $(FPTOOLS_TOP)/utils/ghc-pkg/Makefile for why we use
@@ -872,6 +886,8 @@ LIB_LD_OPTS += $(foreach pkg,$(PKG_DEPENDS),-package $(pkg))
 # We have to expand each package dependency with its version, which we
 # can do by calling "ghc-pkg list $pkg --simple-output".
 PACKAGE_CPP_OPTS += -DPKG_DEPENDS='$(foreach pkg,$(PKG_DEPENDS),$(shell $(GHC_PKG_INPLACE) latest --global $(pkg)))'
+# We want to define STAGE to be like "2" in the Haskell code, so we need
+# to quote the "s so that they don't get interpreted by the shell.
 PACKAGE_CPP_OPTS += -DSTAGE='"$(stage)"'
 
 # Omit Main from the library, the client will want to plug their own Main in