From 871c7cca5deca09025b17343e719d903d5961fa4 Mon Sep 17 00:00:00 2001 From: Konrad Sztyber Date: Wed, 8 Sep 2021 16:55:37 +0200 Subject: [PATCH] make: use CXX to build libraries with C++ code If a library contains C++ code, use a C++ compiler when creating a shared object. This ensures that the standard C++ libraries are listed as dependencies. Signed-off-by: Konrad Sztyber Change-Id: Icc5321a628682e6dbdab0c053784e0750ebd29c2 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9448 Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu Reviewed-by: Aleksey Marchuk --- mk/spdk.common.mk | 8 ++++---- mk/spdk.lib.mk | 8 +++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/mk/spdk.common.mk b/mk/spdk.common.mk index a4ad05bc1..bac10b0c6 100644 --- a/mk/spdk.common.mk +++ b/mk/spdk.common.mk @@ -343,12 +343,12 @@ LINK_CXX=\ # Provide function to ease build of a shared lib define spdk_build_realname_shared_lib - $(CC) -o $@ -shared $(CPPFLAGS) $(LDFLAGS) \ + $(1) -o $@ -shared $(CPPFLAGS) $(LDFLAGS) \ -Wl,-rpath=$(DESTDIR)/$(libdir) \ -Wl,--soname,$(notdir $@) \ - -Wl,--whole-archive $(1) -Wl,--no-whole-archive \ - -Wl,--version-script=$(2) \ - $(3) -Wl,--no-as-needed $(4) -Wl,--as-needed + -Wl,--whole-archive $(2) -Wl,--no-whole-archive \ + -Wl,--version-script=$(3) \ + $(4) -Wl,--no-as-needed $(5) -Wl,--as-needed endef BUILD_LINKERNAME_LIB=\ diff --git a/mk/spdk.lib.mk b/mk/spdk.lib.mk index 54992ba64..2cd7f2bbf 100644 --- a/mk/spdk.lib.mk +++ b/mk/spdk.lib.mk @@ -85,6 +85,12 @@ ifeq ($(SPDK_NO_LIB_DEPS),) SPDK_DEP_LIBS = $(call spdk_lib_list_to_shared_libs,$(DEPDIRS-$(LIBNAME))) endif +ifeq ($(CXX_SRCS),) +COMPILER=$(CC) +else +COMPILER=$(CXX) +endif + MODULES-bdev = spdk_bdev_modules MODULES-sock = spdk_sock_modules MODULES-accel = spdk_accel_modules @@ -106,7 +112,7 @@ $(SHARED_LINKED_LIB): $(SHARED_REALNAME_LIB) $(SHARED_REALNAME_LIB): $(LIB) $(Q)echo " SO $(notdir $@)"; \ - $(call spdk_build_realname_shared_lib,$^,$(SPDK_MAP_FILE),$(LOCAL_SYS_LIBS),$(SPDK_DEP_LIBS)) + $(call spdk_build_realname_shared_lib,$(COMPILER),$^,$(SPDK_MAP_FILE),$(LOCAL_SYS_LIBS),$(SPDK_DEP_LIBS)) define pkgconfig_create $(Q)$(SPDK_ROOT_DIR)/scripts/pc.sh $(1) $(LIBNAME) $(SO_SUFFIX) \