gbuild: gcc platforms: link with C compiler if no C++ files

In 5589c72b88 a problem due to linking
pyuno_wrapper with g++ was fixed: the library should not have a
dependency on libstdc++.  It's possible to implement this in gbuild
directly by checking whether there are any C++ input files.

(apparently on GNU/Linux g++ implicitly links in libm too...)

Change-Id: I04dce06f796e20047ce7f5eab65e6110c0244445
This commit is contained in:
Michael Stahl
2013-05-10 17:56:24 +02:00
parent 09373d4583
commit c007292ec3
7 changed files with 14 additions and 7 deletions
+6
View File
@@ -55,6 +55,12 @@ $(eval $(call gb_Executable_use_externals,oosplash,\
endif
ifeq ($(OS),LINUX)
$(eval $(call gb_Executable_add_libs,oosplash,\
-lm \
))
endif
ifeq ($(OS),SOLARIS)
$(eval $(call gb_Executable_add_libs,oosplash,\
+1 -1
View File
@@ -112,7 +112,7 @@ endef
define gb_LinkTarget__command_dynamiclink
$(if $(filter Library CppunitTest,$(TARGETTYPE)),@echo No dynamic libraries should be built for iOS && exit 1, \
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(CXXOBJECTS)$(OBJCXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) \
$(gb_Executable_TARGETTYPEFLAGS) \
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
+2 -2
View File
@@ -126,7 +126,7 @@ gb_LinkTarget_INCLUDE +=\
define gb_LinkTarget__command_dynamiclinkexecutable
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) $(strip \
$(if $(CXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) $(strip \
$(gb_Executable_TARGETTYPEFLAGS) \
$(if $(filter YES,$(TARGETGUI)), -mwindows, -mconsole) \
$(T_LDFLAGS) \
@@ -147,7 +147,7 @@ endef
define gb_LinkTarget__command_dynamiclinklibrary
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) $(strip \
$(if $(CXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) $(strip \
$(gb_Library_TARGETTYPEFLAGS) \
$(T_LDFLAGS) \
$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+1 -1
View File
@@ -36,7 +36,7 @@ gb_LinkTarget_LDFLAGS += \
define gb_LinkTarget__command_dynamiclink
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(CXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) \
-shared \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
$(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
+1 -1
View File
@@ -138,7 +138,7 @@ endef
define gb_LinkTarget__command_dynamiclink
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(CXXOBJECTS)$(OBJCXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) \
$(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \
$(if $(filter Bundle,$(TARGETTYPE)),$(gb_Bundle_TARGETTYPEFLAGS)) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+1 -1
View File
@@ -188,7 +188,7 @@ endif
define gb_LinkTarget__command_dynamiclink
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(CXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
$(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
$(subst \d,$$,$(RPATH)) \
+2 -1
View File
@@ -184,10 +184,11 @@ endif
# note that `cat $(extraobjectlist)` is needed to build with older gcc versions, e.g. 4.1.2 on SLED10
# we want to use @$(extraobjectlist) in the long run
# link with C compiler if there are no C++ files (pyuno_wrapper depends on this)
define gb_LinkTarget__command_dynamiclink
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(CXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
$(if $(filter-out $(foreach lib,frm scfilt wpftdraw,$(call gb_Library_get_linktargetname,$(lib))),$*),$(gb_LTOFLAGS)) \
$(if $(SOVERSION),-Wl$(COMMA)--soname=$(notdir $(1)).$(SOVERSION)) \