X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2Fghc.mk;h=169e4b1dfd4acbd806f9a9b181a8c3cc4e6cb319;hp=25a264924f83c3667c5f5040c470e16961b0554b;hb=11d4f6867b6a1088eeb809c4520ea1e40b1e68f4;hpb=c59c053f0b8613dd128297ee0b6eef31f001c498 diff --git a/rts/ghc.mk b/rts/ghc.mk index 25a2649..169e4b1 100644 --- a/rts/ghc.mk +++ b/rts/ghc.mk @@ -16,9 +16,10 @@ # We build the RTS with stage 1 rts_dist_HC = $(GHC_STAGE1) -rts_WAYS = $(strip $(GhcLibWays) $(GhcRTSWays)) +# merge GhcLibWays and GhcRTSWays but strip out duplicates +rts_WAYS = $(GhcLibWays) $(filter-out $(GhcLibWays),$(GhcRTSWays)) -ALL_RTS_LIBS = $(foreach way,$(rts_WAYS),rts/dist/build/libHSrts$($(way)__way).a) +ALL_RTS_LIBS = $(foreach way,$(rts_WAYS),rts/dist/build/libHSrts$($(way)_libsuf)) all_rts : $(ALL_RTS_LIBS) # The per-dir options @@ -27,7 +28,7 @@ $(eval $(call distdir-opts,rts,dist)) # ----------------------------------------------------------------------------- # Defining the sources -ALL_DIRS = hooks parallel sm +ALL_DIRS = hooks parallel sm eventlog ifeq "$(HOSTPLATFORM)" "i386-unknown-mingw32" ALL_DIRS += win32 @@ -42,6 +43,8 @@ EXCLUDED_SRCS += $(wildcard rts/Vis*.c) rts_C_SRCS = $(filter-out $(EXCLUDED_SRCS),$(wildcard rts/*.c $(foreach dir,$(ALL_DIRS),rts/$(dir)/*.c))) rts_CMM_SRCS = $(wildcard rts/*.cmm) +# Don't compile .S files when bootstrapping a new arch +ifeq "$(TARGETPLATFORM)" "$(HOSTPLATFORM)" ifneq "$(findstring $(TargetArch_CPP), powerpc powerpc64)" "" rts_S_SRCS += rts/AdjustorAsm.S else @@ -49,6 +52,7 @@ ifneq "$(findstring $(TargetOS_CPP), darwin)" "" rts_S_SRCS += rts/AdjustorAsm.S endif endif +endif ifeq "$(GhcUnregisterised)" "YES" GENAPPLY_OPTS = -u @@ -69,6 +73,11 @@ rts/dist/build/sm/Scav_thr.c : rts/sm/Scav.c rts_H_FILES = $(wildcard $(GHC_INCLUDE_DIR)/*.h) $(wildcard rts/*.h) +# collect the -l flags that we need to link the rts dyn lib. +rts/libs.depend : $(GHC_PKG_INPLACE) + $(GHC_PKG_INPLACE) field rts extra-libraries \ + | sed -e 's/^extra-libraries: //' -e 's/\([a-z]*\)/-l\1/g' > $@ + #----------------------------------------------------------------------------- # Building one way @@ -79,6 +88,10 @@ define cmm-suffix-rules # .cmm files depend on all the .h files, to a first approximation. +ifneq "$$(CLEANING)" "YES" + +ifneq "$$(BootingFromHc)" "YES" + $1/$2/build/%.$$($3_way_)o : $1/%.cmm $$(rts_H_FILES) $$($1_$2_HC) $$($1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@ @@ -97,6 +110,16 @@ $1/$2/build/%.$$($3_way_)s : $1/%.cmm $$(rts_H_FILES) $$($1_$2_HC) $1/$2/build/%.$$($3_way_)s : $1/$2/build/%.cmm $$(rts_H_FILES) $$($1_$2_HC) $$($1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@ +endif + +$1/$2/build/%.$$($3_way_)o : $1/%.hc + $$(CC) $$($1_$2_$3_ALL_CC_OPTS) -Iincludes -x c -c $$< -o $$@ + +$1/$2/build/%.$$($3_way_)o : $1/$2/build/%.hc + $$(CC) $$($1_$2_$3_ALL_CC_OPTS) -Iincludes -x c -c $$< -o $$@ + +endif + endef @@ -119,7 +142,7 @@ $(call distdir-way-opts,rts,dist,$1) $(call c-suffix-rules,rts,dist,$1,YES) $(call cmm-suffix-rules,rts,dist,$1) -rts_$1_LIB = rts/dist/build/libHSrts$$($1__way).a +rts_$1_LIB = rts/dist/build/libHSrts$$($1_libsuf) rts_$1_C_OBJS = $$(patsubst rts/%.c,rts/dist/build/%.$$($1_osuf),$$(rts_C_SRCS)) $$(patsubst %.c,%.$$($1_osuf),$$(rts_$1_EXTRA_C_SRCS)) rts_$1_S_OBJS = $$(patsubst rts/%.S,rts/dist/build/%.$$($1_osuf),$$(rts_S_SRCS)) @@ -127,9 +150,15 @@ rts_$1_CMM_OBJS = $$(patsubst rts/%.cmm,rts/dist/build/%.$$($1_osuf),$$(rts_CMM_ rts_$1_OBJS = $$(rts_$1_C_OBJS) $$(rts_$1_S_OBJS) $$(rts_$1_CMM_OBJS) +ifneq "$$(findstring dyn, $1)" "" +$$(rts_$1_LIB) : $$(rts_$1_OBJS) rts/libs.depend + $$(RM) $$@ + $$(rts_dist_HC) -shared -dynamic -no-auto-link-packages `cat rts/libs.depend` $$(rts_$1_OBJS) -o $$@ +else $$(rts_$1_LIB) : $$(rts_$1_OBJS) $$(RM) $$@ echo $$(rts_$1_OBJS) | xargs $$(AR) $$(EXTRA_AR_ARGS) $$@ +endif endef @@ -260,6 +289,7 @@ sm/Storage_CC_OPTS += -Wno-strict-prototypes StgCRun_CC_OPTS += -w Typeable_CC_OPTS += -w RetainerProfile_CC_OPTS += -w +RetainerSet_CC_OPTS += -Wno-format sm/Compact_CC_OPTS += -w # On Windows: win32/ConsoleHandler_CC_OPTS += -w @@ -382,7 +412,9 @@ endif $(eval $(call manual-package-config,rts)) +ifneq "$(BootingFromHc)" "YES" rts/package.conf.inplace : $(includes_H_CONFIG) $(includes_H_PLATFORM) +endif # ----------------------------------------------------------------------------- # installing