--- ghc-7.5.20120505-orig/ghc.mk 2012-05-06 03:01:29.000000000 +1000 +++ ghc-7.5.20120505/ghc.mk 2012-05-06 17:22:01.023416003 +1000 @@ -584,7 +584,6 @@ $(MAYBE_GHCI) \ driver/ghc \ driver/haddock \ - libffi \ includes \ rts --- ghc-7.5.20120505-orig/rts/ghc.mk 2012-05-06 03:01:30.000000000 +1000 +++ ghc-7.5.20120505/rts/ghc.mk 2012-05-06 17:28:31.925897226 +1000 @@ -171,12 +171,12 @@ # Making a shared library for the RTS. ifneq "$$(findstring dyn, $1)" "" ifeq "$$(HostOS_CPP)" "mingw32" -$$(rts_$1_LIB) : $$(rts_$1_OBJS) $$(ALL_RTS_DEF_LIBS) rts/libs.depend rts/dist/build/$$(LIBFFI_DLL) +$$(rts_$1_LIB) : $$(rts_$1_OBJS) $$(ALL_RTS_DEF_LIBS) rts/libs.depend "$$(RM)" $$(RM_OPTS) $$@ "$$(rts_dist_HC)" -package-name rts -shared -dynamic -dynload deploy \ -no-auto-link-packages -Lrts/dist/build -l$(LIBFFI_WINDOWS_LIB) `cat rts/libs.depend` $$(rts_$1_OBJS) $$(ALL_RTS_DEF_LIBS) -o $$@ else -$$(rts_$1_LIB) : $$(rts_$1_OBJS) $$(rts_$1_DTRACE_OBJS) rts/libs.depend rts/dist/build/libffi$$(soext) +$$(rts_$1_LIB) : $$(rts_$1_OBJS) $$(rts_$1_DTRACE_OBJS) rts/libs.depend "$$(RM)" $$(RM_OPTS) $$@ "$$(rts_dist_HC)" -package-name rts -shared -dynamic -dynload deploy \ -no-auto-link-packages -Lrts/dist/build -lffi `cat rts/libs.depend` $$(rts_$1_OBJS) \ @@ -187,9 +187,9 @@ endif endif else -$$(rts_$1_LIB) : $$(rts_$1_OBJS) $$(rts_$1_DTRACE_OBJS) $$(rts_ffi_objs_stamp) +$$(rts_$1_LIB) : $$(rts_$1_OBJS) $$(rts_$1_DTRACE_OBJS) "$$(RM)" $$(RM_OPTS) $$@ - echo $$(rts_ffi_objs) $$(rts_$1_OBJS) $$(rts_$1_DTRACE_OBJS) | "$$(XARGS)" $$(XARGS_OPTS) "$$(AR_STAGE1)" \ + echo $$(rts_$1_OBJS) $$(rts_$1_DTRACE_OBJS) | "$$(XARGS)" $$(XARGS_OPTS) "$$(AR_STAGE1)" \ $$(AR_OPTS_STAGE1) $$(EXTRA_AR_ARGS_STAGE1) $$@ endif @@ -407,6 +407,12 @@ rts/dist/build/sm/Evac_thr_CC_OPTS += -DPARALLEL_GC -Irts/sm rts/dist/build/sm/Scav_thr_CC_OPTS += -DPARALLEL_GC -Irts/sm +# Use system libffi +libffi_include_flags:=$(shell pkg-config --cflags-only-I libffi) +rts/Adjustor_CC_OPTS += $(libffi_include_flags) +rts/Interpreter_CC_OPTS += $(libffi_include_flags) +rts/sm/Storage_CC_OPTS += $(libffi_include_flags) + #----------------------------------------------------------------------------- # Add PAPI library if needed @@ -508,10 +514,8 @@ # installing INSTALL_LIBS += $(ALL_RTS_LIBS) -INSTALL_LIBS += $(wildcard rts/dist/build/libffi$(soext)*) -INSTALL_LIBS += $(wildcard rts/dist/build/$(LIBFFI_DLL)) -install: install_libffi_headers +install: .PHONY: install_libffi_headers install_libffi_headers : --- ghc-7.5.20120505-orig/rts/package.conf.in 2012-05-06 03:01:30.000000000 +1000 +++ ghc-7.5.20120505/rts/package.conf.in 2012-05-06 17:22:01.025416056 +1000 @@ -24,8 +24,9 @@ hs-libraries: "HSrts" extra-libraries: + "ffi" #ifdef HAVE_LIBM - "m" /* for ldexp() */ + , "m" /* for ldexp() */ #endif #ifdef HAVE_LIBRT , "rt" --- ghc-7.5.20120505-orig/compiler/ghc.mk 2012-05-06 03:01:29.000000000 +1000 +++ ghc-7.5.20120505/compiler/ghc.mk 2012-05-06 17:22:01.026416083 +1000 @@ -260,6 +260,8 @@ compiler_CPP_OPTS += $(addprefix -I,$(GHC_INCLUDE_DIRS)) compiler_CPP_OPTS += ${GhcCppOpts} +libffi_include_flags := $(shell pkg-config --cflags-only-I libffi) +compiler/ghci/LibFFI_HSC2HS_OPTS += $(addprefix --cflag=,$(libffi_include_flags)) $(PRIMOPS_TXT) compiler/parser/Parser.y: %: %.pp compiler/stage1/$(PLATFORM_H) $(CPP) $(RAWCPP_FLAGS) -P $(compiler_CPP_OPTS) -x c $< | grep -v '^#pragma GCC' > $@