diff --git a/make/defs.mk b/make/defs.mk index eedc2184..39f7429b 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -64,6 +64,7 @@ GPP = $(CROSS_TOOL_BIN_PREFIX)g++ STRIP = $(CROSS_TOOL_BIN_PREFIX)strip LDFLAGS += -lws2_32 USE_GFILTER = false +MS_LD ?= wine $(HOME)/local/mingw/packages/msvcpp/bin/LIB.EXE else GCC = gcc GPP = g++ @@ -197,6 +198,8 @@ SO_SUFFIX = so.$(shell echo $(VERSION) | cut -d- -f1) LIB_SO = $(LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX) else LIB_A = $(LIBDIR)/lib$(LIBNAME)-static.a +LIB_DEF = $(LIBDIR)/$(LIBNAME).def +MSVCPP_IMPLIB = $(LIBDIR)/$(LIBNAME).lib SO_SUFFIX = dll.$(shell echo $(VERSION) | cut -d- -f1) LIB_SO = $(LIBDIR)/$(LIBNAME).dll endif @@ -453,3 +456,4 @@ endif NEW_LD_LIB_PATH = $(shell echo $(LDFLAGS) | sed 's/-[^L][^ ]*//g; s/-L[ ]*\([^ ]*\)[ ]*/\1:/g') + diff --git a/make/rules.mk b/make/rules.mk index 5466adb7..dd69486b 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -71,8 +71,11 @@ $(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ else $(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) - $(CC) -shared -Wl,--whole-archive,--out-implib,$(shell echo $(LIB_A) | sed 's/-static//') $(VERSION_SCRIPT) $(LIB_A) -Wl,--no-whole-archive \ - $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ + $(CC) -shared \ + -Wl,--whole-archive,--out-implib,$(shell echo $(LIB_A) | sed 's/-static//'),--output-def,$(LIB_DEF) \ + $(VERSION_SCRIPT) $(LIB_A) -Wl,--no-whole-archive $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ +$(MSVCPP_IMPLIB): $(LIB_SO) + $(MS_LD) /machine:i386 /def:$(LIB_DEF) endif $(TOPDIR)/include: