Facilitate multiple platform co-installation of shared lib

This resolves issue #58 and replaces pull request #59.
This commit is contained in:
katjav 2020-03-08 20:14:19 +01:00
parent a6975e9104
commit e2cf0bdce3

View file

@ -723,9 +723,15 @@ all.objects = $(classes.objects) $(common.objects) $(shared.objects) \
# construct class executable names from class names # construct class executable names from class names
classes.executables := $(addsuffix .$(extension), $(classes)) classes.executables := $(addsuffix .$(extension), $(classes))
# construct shared lib executable name if shared sources are defined # Construct shared lib executable name if shared sources are defined. If
# extension and shared extension are not identical, use both to facilitate co-
# installation for different platforms, like .m_i386.dll and .m_amd64.dll.
ifdef shared.sources ifdef shared.sources
shared.lib := lib$(lib.name).$(shared.extension) ifeq ($(extension), $(shared.extension))
shared.lib = lib$(lib.name).$(shared.extension)
else
shared.lib = lib$(lib.name).$(extension).$(shared.extension)
endif
else else
shared.lib := shared.lib :=
endif endif
@ -915,13 +921,13 @@ endif
define link-shared define link-shared
$(compile-$1) \ $(compile-$1) \
$(shared.ldflags) \ $(shared.ldflags) \
-o lib$(lib.name).$(shared.extension) $(shared.objects) \ -o $(shared.lib) $(shared.objects) \
$($1.ldlibs) $(shared.ldlibs) $($1.ldlibs) $(shared.ldlibs)
endef endef
# rule for linking objects in shared executable # rule for linking objects in shared executable
# build recipe is in macro 'link-shared' # build recipe is in macro 'link-shared'
lib$(lib.name).$(shared.extension): $(shared.objects) $(shared.lib): $(shared.objects)
$(info ++++ info: linking objects in shared lib $@) $(info ++++ info: linking objects in shared lib $@)
$(if $(filter %.cc %.cpp, $(shared.sources)), \ $(if $(filter %.cc %.cpp, $(shared.sources)), \
$(call link-shared,cxx), \ $(call link-shared,cxx), \