Implemented versioning of DLLs in a way that works exactly in the same way as it works under Unix

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@24833 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Nicola Pero 2007-03-09 11:42:00 +00:00
parent 1b46123b05
commit 5264b5d3d6
4 changed files with 31 additions and 14 deletions

View file

@ -1,3 +1,13 @@
2007-03-09 Nicola Pero <nicola.pero@meta-innovation.com>
Implemented versioning of Microsoft Windows DLLs. Every DLL now
has got the interface version in their name, and applications are
linked to a DLL including the interface version.
* Instance/library.make (INTERFACE_VERSION): Compute even if
building DLLs, using the same rules used on other platforms.
(LIB_LINK_DLL_FILE): Include the INTERFACE_VERSION in the name.
* Instance/framework.make (LIB_LINK_DLL_FILE): Same change.
2007-03-08 Nicola Pero <nicola.pero@meta-innovation.com>
You can now start up applications on the command line by just

View file

@ -225,10 +225,6 @@ FRAMEWORK_LIBRARY_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME)
FRAMEWORK_CURRENT_LIBRARY_DIR_NAME = $(FRAMEWORK_CURRENT_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)
FRAMEWORK_CURRENT_LIBRARY_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)
ifneq ($(BUILD_DLL), yes)
FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(SHARED_LIBEXT)
VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE).$(VERSION)
# By setting xxx_INTERFACE_VERSION you can change the soversion used
# when linking the library. See comments in library.make for the
# variables with the same name for libraries.
@ -238,6 +234,11 @@ ifeq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),)
else
INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION)
endif
ifneq ($(BUILD_DLL), yes)
FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(SHARED_LIBEXT)
VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE).$(VERSION)
SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE).$(INTERFACE_VERSION)
else # BUILD_DLL
@ -267,8 +268,11 @@ FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(DLL_LIBEXT)$(LIBEXT)
VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE)
SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE)
# LIB_LINK_DLL_FILE is the DLL library, Renaissance.dll
LIB_LINK_DLL_FILE = $(GNUSTEP_INSTANCE)$(DLL_LIBEXT)
# LIB_LINK_DLL_FILE is the DLL library, Renaissance-0.dll. Include
# the INTERFACE_VERSION in the DLL library name. Applications are
# linked explicitly to this INTERFACE_VERSION of the library; this
# works exactly in the same way as under Unix.
LIB_LINK_DLL_FILE = $(GNUSTEP_INSTANCE)-$(subst .,_,$(INTERFACE_VERSION))$(DLL_LIBEXT)
FRAMEWORK_OBJ_EXT = $(DLL_LIBEXT)
endif # BUILD_DLL

View file

@ -125,11 +125,6 @@ INTERNAL_LIBRARIES_DEPEND_UPON = \
ifeq ($(shared), yes)
ifneq ($(BUILD_DLL),yes)
LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(SHARED_LIBEXT)
VERSION_LIBRARY_FILE = $(LIBRARY_FILE).$(VERSION)
# Allow the user GNUmakefile to define xxx_INTERFACE_VERSION to
# replace the default INTERFACE_VERSION for this library.
@ -183,6 +178,11 @@ ifeq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),)
else
INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION)
endif
ifneq ($(BUILD_DLL),yes)
LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(SHARED_LIBEXT)
VERSION_LIBRARY_FILE = $(LIBRARY_FILE).$(VERSION)
SONAME_LIBRARY_FILE = $(LIBRARY_FILE).$(INTERFACE_VERSION)
else # BUILD_DLL
@ -212,8 +212,11 @@ LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(DLL_LIBEXT)$(LIBEXT)
VERSION_LIBRARY_FILE = $(LIBRARY_FILE)
SONAME_LIBRARY_FILE = $(LIBRARY_FILE)
# LIB_LINK_DLL_FILE is the DLL library, gnustep-base.dll
LIB_LINK_DLL_FILE = $(LIBRARY_NAME_WITHOUT_LIB)$(DLL_LIBEXT)
# LIB_LINK_DLL_FILE is the DLL library, gnustep-base-1.dll. Include
# the INTERFACE_VERSION in the DLL library name. Applications are
# linked explicitly to this INTERFACE_VERSION of the library; this
# works exactly in the same way as under Unix.
LIB_LINK_DLL_FILE = $(LIBRARY_NAME_WITHOUT_LIB)-$(subst .,_,$(INTERFACE_VERSION))$(DLL_LIBEXT)
endif # BUILD_DLL
else # following code for static libs

View file

@ -873,7 +873,7 @@ ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
shared = yes
HAVE_SHARED_LIBS = yes
# This command links the library, generates automatically the list of
# symbols to export, creates the DLL (eg, obj/gnustep-base.dll) and
# symbols to export, creates the DLL (eg, obj/gnustep-base-1_13.dll) and
# the import library (eg, obj/libgnustep-base.dll.a).
SHARED_LIB_LINK_CMD = \
$(CC) $(SHARED_LD_PREFLAGS) -shared \