X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Ftarget.mk;h=9d1683aa37e2c666f94a158ec6040dff7d8d4d30;hb=35ef279adf79818085e3a2fb407dc52ec723786f;hp=b8c28a67574097841a60f764b0e162b29537a13f;hpb=1c4e5ade463104132c7808e1d520af6d991ab0ff;p=ghc-hetmet.git diff --git a/mk/target.mk b/mk/target.mk index b8c28a6..9d1683a 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -308,6 +308,15 @@ ifneq "$(way)" "" SRC_HC_OPTS += -hisuf $(way_)hi -hcsuf $(way_)hc -osuf $(way_)o endif +# add syslib dependencies and current package name +SRC_HC_OPTS += $(patsubst %, -package %, $(PACKAGE_DEPS)) +ifneq "$(PACKAGE)" "" +SRC_HC_OPTS += -package-name $(PACKAGE) +else +# No library, we are actually building the tools +SRC_HC_OPTS += $(FptoolsHcOpts) +endif + #---------------------------------------- # C programs @@ -323,12 +332,12 @@ endif # Building HsLibs libraries. # # Inputs: -# $(HSLIB) is the name of the library to build +# $(PACKAGE) is the name of the library to build # $(IS_CBITS_LIB) should be "YES" for a "cbits" library # # Outputs: # $(LIBRARY) the name of the library.a -# $(GHIC_LIBRARY) the name of the library.o (for GHCi0 +# $(GHIC_LIBRARY) the name of the library.o (for GHCi) # $(LIBOBJS) objects to put in library # $(STUBOBJS) more objects to put in library # @@ -336,14 +345,19 @@ endif # on whether or not it's a "cbits" library. But you can # override this by setting $(LIBOBJS) yourself -ifneq "$(HSLIB)" "" +ifneq "$(PACKAGE)" "" ifeq "$(IS_CBITS_LIB)" "YES" _cbits := _cbits +STUBOBJS += $(HSC_C_OBJS) +# Add _hsc.c files to the cbits library +SRCS += $(wildcard ../*_hsc.c) +# Make .hsc.h include files from the directory above visible +SRC_CC_OPTS += -I.. endif -LIBRARY = libHS$(HSLIB)$(_cbits)$(_way).a -GHCI_LIBRARY = HS$(HSLIB)$(_cbits)$(_way).o +LIBRARY = libHS$(PACKAGE)$(_cbits)$(_way).a +GHCI_LIBRARY = HS$(PACKAGE)$(_cbits)$(_way).o ifneq "$(IS_CBITS_LIB)" "YES" WAYS=$(GhcLibWays) @@ -357,17 +371,16 @@ ifeq "$(LIBOBJS)" "" endif endif -STUBOBJS += $(HSC_C_OBJS) SRC_CC_OPTS += -I$(GHC_INCLUDE_DIR) -I$(GHC_RUNTIME_DIR) ifeq "$(IS_CBITS_LIB)" "YES" override datadir:=$(libdir)/includes -INSTALL_DATAS += Hs$(shell perl -e 'print ucfirst "$(HSLIB)"').h +INSTALL_DATAS += Hs$(shell perl -e 'print ucfirst "$(PACKAGE)"').h else SRC_CC_OPTS += -Icbits endif -endif # HSLIB +endif # PACKAGE #---------------------------------------- # Libraries/archives @@ -488,11 +501,14 @@ CLEAN_FILES += $(GHCI_LIBRARY) all :: $(GHCI_LIBRARY) -ifneq "$(HSLIB)" "std" +ifneq "$(GHCI_LIBRARY)" "HSstd.o" # An annoying gotcha is that the Prelude is a bit special, # for reasons described in ghc/lib/std/Makefile. # So we only put in this standard rule for packages other than std # The rule for the Prelude is in ghc/lib/std/Makefile +# We check for GHCI_LIBRARY being HSstd.o rather than +# PACKAGE being std, because we want to still use the boilerplate rule +# for cbits. $(GHCI_LIBRARY) :: $(LIBOBJS) ld -r -x -o $@ $(LIBOBJS) $(STUBOBJS) endif @@ -507,30 +523,35 @@ endif # GHCI_LIBRARY # ifeq "$(DLLized)" "YES" +SRC_CC_OPTS += -DDLLized + +ifneq "$(PACKAGE)" "" -ifneq "$(HSLIB)" "" +SRC_BLD_DLL_OPTS += --export-all --output-def=HS$(PACKAGE)$(_cbits)$(_way).def DllVersionInfo.$(way_)o -SRC_BLD_DLL_OPTS += --export-all --output-def=HS$(HSLIB)$(_cbits)$(_way).def DllVersionInfo.$(way_)o -ifneq "$(HSLIB)" "rts" +ifneq "$(PACKAGE) $(IS_CBITS_LIB)" "std YES" +ifneq "$(PACKAGE)" "rts" SRC_BLD_DLL_OPTS += -lHSstd_cbits_imp -L$(GHC_LIB_DIR)/std/cbits SRC_BLD_DLL_OPTS += -lHSrts_$(way_)imp -L$(GHC_RUNTIME_DIR) -ifneq "$(HSLIB)" "std" +ifneq "$(PACKAGE)" "std" ifeq "$(IS_CBITS_LIB)" "" SRC_BLD_DLL_OPTS += -lHSstd_$(way_)imp -L$(GHC_LIB_DIR)/std endif endif endif +endif + SRC_BLD_DLL_OPTS += -lgmp -L. -L$(GHC_RUNTIME_DIR)/gmp ifeq "$(IS_CBITS_LIB)" "" -SRC_BLD_DLL_OPTS += $(patsubst %,-lHS%_$(way_)imp, $(HSLIB_DEPS)) -SRC_BLD_DLL_OPTS += $(patsubst %,-L../%, $(HSLIB_DEPS)) +SRC_BLD_DLL_OPTS += $(patsubst %,-lHS%_$(way_)imp, $(PACKAGE_DEPS)) +SRC_BLD_DLL_OPTS += $(patsubst %,-L../%, $(PACKAGE_DEPS)) endif ifneq "$(HAS_CBITS)" "" -SRC_BLD_DLL_OPTS += -lHS$(HSLIB)_cbits_imp -Lcbits +SRC_BLD_DLL_OPTS += -lHS$(PACKAGE)_cbits_imp -Lcbits endif SRC_BLD_DLL_OPTS += -lwsock32 -lwinmm -endif # HSLIB != "" +endif # PACKAGE != "" SplitObjs = NO