From e2cf0bdce3738846376842e44a13d6ddc14b4bec Mon Sep 17 00:00:00 2001 From: katjav Date: Sun, 8 Mar 2020 20:14:19 +0100 Subject: [PATCH] Facilitate multiple platform co-installation of shared lib This resolves issue #58 and replaces pull request #59. --- Makefile.pdlibbuilder | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Makefile.pdlibbuilder b/Makefile.pdlibbuilder index 2f0c536..3cd379f 100644 --- a/Makefile.pdlibbuilder +++ b/Makefile.pdlibbuilder @@ -723,9 +723,15 @@ all.objects = $(classes.objects) $(common.objects) $(shared.objects) \ # construct class executable names from class names 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 - 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 shared.lib := endif @@ -915,13 +921,13 @@ endif define link-shared $(compile-$1) \ $(shared.ldflags) \ - -o lib$(lib.name).$(shared.extension) $(shared.objects) \ + -o $(shared.lib) $(shared.objects) \ $($1.ldlibs) $(shared.ldlibs) endef # rule for linking objects in shared executable # 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 $@) $(if $(filter %.cc %.cpp, $(shared.sources)), \ $(call link-shared,cxx), \