Optionally use libffi to implement 'foreign import "wrapper"' (#793)
[ghc-hetmet.git] / compiler / Makefile
index 414b355..04c7778 100644 (file)
@@ -271,12 +271,16 @@ endif
        @echo "cUSER_WAY_NAMES       = \"$(USER_WAY_NAMES)\"" >> $(CONFIG_HS)
        @echo "cUSER_WAY_OPTS        = \"$(USER_WAY_OPTS)\"" >> $(CONFIG_HS)
        @echo "cDEFAULT_TMPDIR       = \"$(DEFAULT_TMPDIR)\"" >> $(CONFIG_HS)
-       @echo "cDocDir               = \"$(docdir)\""         >> $(CONFIG_HS)
 ifeq "$(RelocatableBuild)" "YES"
        @echo "cRelocatableBuild     = True"                  >> $(CONFIG_HS)
 else
        @echo "cRelocatableBuild     = False"                 >> $(CONFIG_HS)
 endif
+ifeq "$(UseLibFFI)" "YES"
+       @echo "cLibFFI               = True"                  >> $(CONFIG_HS)
+else
+       @echo "cLibFFI               = False"                 >> $(CONFIG_HS)
+endif
        @echo done.
 
 CLEAN_FILES += $(CONFIG_HS)
@@ -493,10 +497,7 @@ SRC_HC_OPTS += -package readline -DUSE_READLINE
 PKG_DEPENDS += readline
 endif
 else
--include $(FPTOOLS_TOP_ABS)/libraries/readline/config.mk
-# readline's config.mk sets PACKAGE, which we don't want here
-PACKAGE=
-ifeq "$(READLINE_BUILD_PACKAGE)" "yes"
+ifeq "$(wildcard $(FPTOOLS_TOP_ABS)/libraries/readline/unbuildable)" ""
 SRC_HC_OPTS += -package readline -DUSE_READLINE
 PKG_DEPENDS += readline
 endif
@@ -846,7 +847,10 @@ PACKAGE = ghc
 HIERARCHICAL_LIB = NO
 VERSION = $(ProjectVersion)
 PKG_DEPENDS += base haskell98
-PACKAGE_CPP_OPTS += -DPKG_DEPENDS='$(PKG_DEPENDS)'
+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)))'
 PACKAGE_CPP_OPTS += -DSTAGE='"$(stage)"'
 
 # Omit Main from the library, the client will want to plug their own Main in
@@ -929,7 +933,7 @@ WRONG_GHCTAGS_HS_SRCS = $(filter-out $(DERIVED_SRCS) main/Config.hs parser/Parse
 
 GHCTAGS_HS_SRCS = $(HS_SRCS)
 GHCTAGS_HC_OPTS = $(patsubst -i$(odir)/%, -i%, $(HC_OPTS))
-
+GHCTAGS_HC_OPTS += -DSTAGE='"$(stage)"'
 
 #------------------------------------------------------------
 #                      Tags
@@ -943,8 +947,8 @@ ghctags :: $(GHCTAGS_HS_SRCS) $(TAGS_C_SRCS)
        @echo SOURCES ARE "$(GHCTAGS_HS_SRCS)"
        : ifneq "$(GHCTAGS_HS_SRCS)" ""
        @echo TIME TO ROCK AND ROLL
-       # $(GHCTAGS) -- $(MKDEPENDHS_OPTS) $(filter-out -split-objs, $(MKDEPENDHS_HC_OPTS)) -- $(GHCTAGS_HS_SRCS)
-       $(GHCTAGS) -- $(GHCTAGS_HC_OPTS) -- $(GHCTAGS_HS_SRCS)
+       # $(GHCTAGS_INPLACE) -- $(MKDEPENDHS_OPTS) $(filter-out -split-objs, $(MKDEPENDHS_HC_OPTS)) -- $(GHCTAGS_HS_SRCS)
+       $(GHCTAGS_INPLACE) -- $(GHCTAGS_HC_OPTS) -- $(GHCTAGS_HS_SRCS)
        : endif
 ifneq "$(TAGS_C_SRCS)" ""
        etags -a $(TAGS_C_SRCS)