X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FMakefile;h=19a7a2288f3182fae22dfa07e4f73deb002524ce;hb=9d03becc597e5b1ab6c8466209a1263bf8ba6f29;hp=74a37fdcb9692b41d9b6c1d9bd044c3cb5ce12c9;hpb=5123ae93cfc5cdfcecc84340a9517580ad900d64;p=ghc-hetmet.git diff --git a/rts/Makefile b/rts/Makefile index 74a37fd..19a7a22 100644 --- a/rts/Makefile +++ b/rts/Makefile @@ -36,7 +36,7 @@ endif # ----------------------------------------------------------------------------- # RTS ways -WAYS=$(GhcLibWays) $(GhcRTSWays) +WAYS=$(strip $(GhcLibWays) $(GhcRTSWays)) ifneq "$(findstring debug, $(way))" "" GhcRtsHcOpts= @@ -93,6 +93,15 @@ endif EXCLUDED_SRCS += parallel/SysMan.c +EXCLUDED_SRCS += dyn-wrapper.c + +# compile generatic patchable dyn-wrapper + +DYNWRAPPER_SRC = dyn-wrapper.c +DYNWRAPPER_PROG = dyn-wrapper$(exeext) +$(DYNWRAPPER_PROG): $(DYNWRAPPER_SRC) + $(HC) -cpp -optc-include -optcdyn-wrapper-patchable-behaviour.h $(INPLACE_EXTRA_FLAGS) $< -o $@ + # The build system doesn't give us these CMM_SRCS = $(filter-out AutoApply%.cmm, $(wildcard *.cmm)) $(EXTRA_CMM_SRCS) CMM_OBJS = $(patsubst %.cmm,%.$(way_)o, $(CMM_SRCS)) @@ -143,14 +152,15 @@ SRC_CC_OPTS += $(STANDARD_OPTS) SRC_CC_OPTS += $(GhcRtsCcOpts) SRC_HC_OPTS += $(GhcRtsHcOpts) $(STANDARD_OPTS) -package-name rts +SRC_HC_OPTS += -fvia-C + ifneq "$(GhcWithSMP)" "YES" SRC_CC_OPTS += -DNOSMP SRC_HC_OPTS += -optc-DNOSMP endif -ifeq "$(UseLibFFI)" "YES" -SRC_CC_OPTS += -DUSE_LIBFFI -PACKAGE_CPP_OPTS += -DUSE_LIBFFI +ifeq "$(UseLibFFIForAdjustors)" "YES" +SRC_CC_OPTS += -DUSE_LIBFFI_FOR_ADJUSTORS endif ifneq "$(DYNAMIC_RTS)" "YES" @@ -168,13 +178,13 @@ LIB_LD_OPTS = -L$(shell $(GHC_PKG_INPLACE) field base library-dirs | sed -e 's/l endif endif -ifeq "$(Windows)" "YES" -# On Windows GHC does its own commandline parsing, so we need extra -# doublequote protection. Sigh. -DQ = \\\" -else +# Mac OS X: make sure we compile for the right OS version +SRC_CC_OPTS += $(MACOSX_DEPLOYMENT_CC_OPTS) +SRC_HC_OPTS += $(addprefix -optc, $(MACOSX_DEPLOYMENT_CC_OPTS)) +LIB_LD_OPTS += $(addprefix -optl, $(MACOSX_DEPLOYMENT_LD_OPTS)) + +# XXX DQ is now the same on all platforms, so get rid of it DQ = \" -endif # If Main.c is built with optimisation then the SEH exception stuff on # Windows gets confused. @@ -191,6 +201,10 @@ RtsUtils_CC_OPTS += -DTargetPlatform=$(DQ)$(TARGETPLATFORM)$(DQ) RtsUtils_CC_OPTS += -DGhcUnregisterised=$(DQ)$(GhcUnregisterised)$(DQ) RtsUtils_CC_OPTS += -DGhcEnableTablesNextToCode=$(DQ)$(GhcEnableTablesNextToCode)$(DQ) +# ffi.h triggers prototype warnings, so disable them here: +Interpreter_CC_OPTS += -Wno-strict-prototypes +Adjustor_CC_OPTS += -Wno-strict-prototypes + StgCRun_CC_OPTS += -w Typeable_CC_OPTS += -w RetainerProfile_CC_OPTS += -w @@ -301,12 +315,6 @@ CLEAN_FILES += $(AUTO_APPLY_CMM) endif # ----------------------------------------------------------------------------- -# Compile GMP only if we don't have it already -# -# We use GMP's own configuration stuff, because it's all rather hairy -# and not worth re-implementing in our Makefile framework. - -CLEAN_FILES += gmp/libgmp.a # Need to get the GMP vars in through CPP to package.conf.in, and put # quotes around each element. @@ -332,6 +340,14 @@ SRC_HSC2HS_OPTS += -I../gmp/gmpbuild SRC_LD_OPTS += -L../gmp/gmpbuild #----------------------------------------------------------------------------- +# libffi stuff + +SRC_CC_OPTS += -I../libffi/build/include +SRC_HC_OPTS += -I../libffi/build/include +SRC_HSC2HS_OPTS += -I../libffi/build/include +SRC_LD_OPTS += -L../libffi/build/include + +#----------------------------------------------------------------------------- # # Building the GUM SysMan # @@ -357,13 +373,7 @@ endif # Compiling the cmm files # ToDo: should we really include Rts.h here? Required for GNU_ATTRIBUTE(). -SRC_HC_OPTS += -I. -\#include HCIncludes.h - -ifeq "$(Windows)" "YES" -PrimOps_HC_OPTS += -\#include '' -\#include win32/AsyncIO.h -else -PrimOps_HC_OPTS += -\#include posix/Itimer.h -endif +SRC_HC_OPTS += -I. # Otherwise the stack-smash handler gets triggered. ifeq "$(TargetOS_CPP)" "openbsd" @@ -424,7 +434,6 @@ endif binary-dist: $(INSTALL_DIR) $(BIN_DIST_DIR)/rts - $(INSTALL_DIR) $(BIN_DIST_DIR)/rts/gmp $(INSTALL_DATA) Makefile $(BIN_DIST_DIR)/rts/ $(INSTALL_DATA) package.conf.in $(BIN_DIST_DIR)/rts/ ifneq "$(INSTALL_LIBS)" ""