X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2Fghc.mk;h=0e7650eca56829507b227117a4a3398277280ab7;hp=25a264924f83c3667c5f5040c470e16961b0554b;hb=2b7f450a6dbc2f78f99101560f82be20fa80833d;hpb=c59c053f0b8613dd128297ee0b6eef31f001c498 diff --git a/rts/ghc.mk b/rts/ghc.mk index 25a2649..0e7650e 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 @@ -69,6 +70,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 +85,8 @@ define cmm-suffix-rules # .cmm files depend on all the .h files, to a first approximation. +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 +105,14 @@ $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 $$@ + endef @@ -119,7 +135,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 +143,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 +282,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 +405,9 @@ endif $(eval $(call manual-package-config,rts)) +ifneq "$(BootingFromHc)" "YES" rts/package.conf.inplace : $(includes_H_CONFIG) $(includes_H_PLATFORM) +endif # ----------------------------------------------------------------------------- # installing