From 375ec54aa2cbd4098257f0a4eb0a9cf24bfb17f0 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sat, 8 Aug 2009 09:23:23 +0000 Subject: [PATCH] defs.mk, lib.mk, rules.mk: Add version information into windows dlls --- make/defs.mk | 8 ++++++++ make/lib.mk | 21 +++++++++++++++++++++ make/rules.mk | 4 ++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/make/defs.mk b/make/defs.mk index 299834a3..315081b9 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -49,6 +49,9 @@ DIST_WINVERSION = $(shell echo $(WINVERSION) | sed -e "s/-dev//") LOCAL_DIST_VERSION = $(shell echo $(LOCAL_VERSION) | sed -e "s/-dev//") LOCAL_DIST_WINVERSION = $(shell echo $(LOCAL_WINVERSION) | sed -e "s/-dev//") MAJOR_MINOR_RELEASE = $(shell echo $(DIST_VERSION) | cut -d- -f1) +MAJOR_VERSION = $(shell echo $(MAJOR_MINOR_RELEASE) | cut -d. -f1) +MINOR_VERSION = $(shell echo $(MAJOR_MINOR_RELEASE) | cut -d. -f2) +RELEASE_VERSION = $(shell echo $(MAJOR_MINOR_RELEASE) | cut -d. -f3) BUILD_NUMBER = $(shell echo $(DIST_VERSION) | cut -d- -f2) CVS_RSH ?= /usr/bin/ssh ifneq ($(TARGET),mingw) @@ -135,6 +138,7 @@ GPP = $(CROSS_TOOL_BIN_PREFIX)g++ STRIP = $(CROSS_TOOL_BIN_PREFIX)strip RANLIB = $(CROSS_TOOL_BIN_PREFIX)ranlib AR = $(CROSS_TOOL_BIN_PREFIX)ar +WINDRES = $(CROSS_TOOL_BIN_PREFIX)windres LDFLAGS += -lws2_32 USE_GFILTER = false MS_LD ?= wine $(HOME)/local/mingw/packages/msvcpp/bin/LIB.EXE @@ -278,6 +282,10 @@ INSTALLED_LINKS_SO += $(shell echo $(INSTALLED_LIB_SO) | sed -e "s/\.so\..*$$ INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a else LIB_A = $(BUILD_LIBDIR)/lib$(LIBNAME)-static.a +#WINRES_RC_TMPL = $(MODDIR)/make/winres-minimal.rc.tmpl +WINRES_RC_TMPL = $(MODDIR)/make/winres.rc.tmpl +WINRES_RC = $(BUILD_LIBDIR)/$(PROJECT).rc +WINRES_O = $(WINRES_RC).o SO_SUFFIX = dll SO_PREFIX ?= LIB_DEF = $(BUILD_LIBDIR)/$(LIBNAME).def diff --git a/make/lib.mk b/make/lib.mk index 8e9135e4..f2e914d8 100644 --- a/make/lib.mk +++ b/make/lib.mk @@ -70,3 +70,24 @@ $(foreach p,$(CONTRIB_LIBS_PATH),$(eval $(call contrib_lib_search_rules,$(p)))) echo.contrib-libs: @echo CONTRIB_LIBS_PATH = $(CONTRIB_LIBS_PATH) @echo CONTRIB_LIBS = $(CONTRIB_LIBS) + +ifeq ($(TARGET),mingw) +$(WINRES_RC): $(WINRES_RC_TMPL) + cat $< | sed " \ + s/__VER_FILEVERSION__/$(MAJOR_VERSION),$(MINOR_VERSION),$(RELEASE_VERSION),$(BUILD_NUMBER)/; \ + s/__VER_FILEVERSION_STR__/$(MAJOR_VERSION).$(MINOR_VERSION).$(RELEASE_VERSION).$(BUILD_NUMBER)/; \ + s/__VER_DESCRIPTION__/\"$(PROJECT_DESCR)\"/; \ + s/__VER_COMPANY_NAME__/\"$(CUSTOMER)\"/; \ + " > $@.tmp + mv $@.tmp $@ + +$(WINRES_O): $(WINRES_RC) + $(WINDRES) $^ -o $@ + +clean.winres: + rm -f $(WINRES_RC) $(WINRES_O) *.tmp + +clean: clean.winres +#%.o : %.rc +# $(WINDRES) $^ -o $@ +endif diff --git a/make/rules.mk b/make/rules.mk index e438942f..2bc8223b 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -213,9 +213,9 @@ $(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) $(TOPDIR)/dir_build_LIB.done $(LD) -shared -Wl,--whole-archive,-soname=$(notdir $@) $(VERSION_SCRIPT) $(LIB_A) -Wl,--no-whole-archive \ $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ else -$(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) $(TOPDIR)/dir_build_LIB.done +$(LIB_SO): $(VERSION_SCRIPT) $(WINRES_O) $(LIB_A) $(TOPDIR)/dir_build_LIB.done $(LD) -shared -Wl,--whole-archive,--out-implib,$(shell echo $(LIB_A) | \ - sed 's/-static//'),--output-def,$(LIB_DEF) $(VERSION_SCRIPT) $(LIB_A) \ + sed 's/-static//'),--output-def,$(LIB_DEF) $(VERSION_SCRIPT) $(LIB_A) $(WINRES_O) \ -Wl,--no-whole-archive $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ $(MSVCPP_IMPLIB): $(LIB_SO) $(MS_LD) /machine:i386 /def:$(LIB_DEF)