diff options
author | Lubos Lunak <l.lunak@suse.cz> | 2012-10-19 16:27:35 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2012-10-22 14:56:20 +0200 |
commit | 84b4293e3dc6edd59e7d09383320361aaeed9e87 (patch) | |
tree | 85f7e4f39aa98a91701546d56848e8ab05aa327c | |
parent | 3c00ff3a4501d1b4164373c5f6e15b464df6854b (diff) |
allow LDFLAGS from gbuild to be selective too
Just like CXXFLAGS can be controlled using --enable-selective-debuginfo.
Non-debug libraries can be debug-stripped this way, which can save quite
some disk space with those cppunittests which just include all .o's from sw/sc.
Change-Id: Ib947f76f535161e4eef1421a5539df5e25fa4042
-rw-r--r-- | solenv/gbuild/CppunitTest.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/Executable.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/Library.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/LinkTarget.mk | 9 | ||||
-rw-r--r-- | solenv/gbuild/StaticLibrary.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/platform/unxgcc.mk | 2 |
6 files changed, 14 insertions, 5 deletions
diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk index f4145dc297bc..3267696c753b 100644 --- a/solenv/gbuild/CppunitTest.mk +++ b/solenv/gbuild/CppunitTest.mk @@ -102,7 +102,7 @@ $(call gb_CppunitTest__CppunitTest_impl,$(1),$(call gb_CppunitTest__get_linktarg endef define gb_CppunitTest__CppunitTest_impl -$(call gb_LinkTarget_LinkTarget,$(2)) +$(call gb_LinkTarget_LinkTarget,$(2),CppunitTest_$(1)) $(call gb_LinkTarget_set_targettype,$(2),CppunitTest) $(call gb_LinkTarget_add_libs,$(2),$(gb_STDLIBS)) $(call gb_LinkTarget_add_defs,$(2),\ diff --git a/solenv/gbuild/Executable.mk b/solenv/gbuild/Executable.mk index 8c178175ad4f..7517e1621013 100644 --- a/solenv/gbuild/Executable.mk +++ b/solenv/gbuild/Executable.mk @@ -52,7 +52,7 @@ $(call gb_Executable__Executable_impl,$(1),Executable/$(1)$(gb_Executable_EXT)) endef define gb_Executable__Executable_impl -$(call gb_LinkTarget_LinkTarget,$(2)) +$(call gb_LinkTarget_LinkTarget,$(2),Executable_$(1)) $(call gb_LinkTarget_set_targettype,$(2),Executable) $(call gb_LinkTarget_add_libs,$(2),$(gb_STDLIBS)) $(call gb_Executable_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2)) \ diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk index d07fe24292e0..924a2549ebbf 100644 --- a/solenv/gbuild/Library.mk +++ b/solenv/gbuild/Library.mk @@ -66,7 +66,7 @@ $(call gb_Library__Library_impl,$(1),$(call gb_Library_get_linktargetname,$(1))) endef define gb_Library__Library_impl -$(call gb_LinkTarget_LinkTarget,$(2)) +$(call gb_LinkTarget_LinkTarget,$(2),Library_$(1)) $(call gb_LinkTarget_set_targettype,$(2),Library) $(call gb_LinkTarget_add_libs,$(2),$(gb_STDLIBS)) $(call gb_LinkTarget_add_defs,$(2),\ diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk index a87ecf4dbf12..69b9ee0ecf7a 100644 --- a/solenv/gbuild/LinkTarget.mk +++ b/solenv/gbuild/LinkTarget.mk @@ -47,12 +47,19 @@ gb_LinkTarget__debug_enabled = \ gb_LinkTarget__get_debugcflags=$(if $(call gb_LinkTarget__debug_enabled,$(1)),$(gb_COMPILERNOOPTFLAGS) $(gb_DEBUG_CFLAGS),$(gb_COMPILEROPTFLAGS)) gb_LinkTarget__get_debugcxxflags=$(if $(call gb_LinkTarget__debug_enabled,$(1)),$(gb_COMPILERNOOPTFLAGS) $(gb_DEBUG_CFLAGS) $(gb_DEBUG_CXXFLAGS),$(gb_COMPILEROPTFLAGS)) +# similar for LDFLAGS, use linker optimization flags in non-debug case, +# but moreover strip debug from libraries for which debuginfo is not wanted +# (some libraries reuse .o files from other libraries, notably unittests) +gb_LinkTarget__get_stripldflags=$(if $(call gb_LinkTarget__debug_enabled,$(1)),,$(gb_LINKERSTRIPDEBUGFLAGS)) +gb_LinkTarget__get_debugldflags=$(if $(call gb_LinkTarget__debug_enabled,$(1)),,$(gb_LINKEROPTFLAGS) $(call gb_LinkTarget__get_stripldflags,$(1))) + # generic cflags/cxxflags to use (optimization flags, debug flags) # user supplied CFLAGS/CXXFLAGS override default debug/optimization flags gb_LinkTarget__get_cflags=$(if $(CFLAGS),$(CFLAGS),$(call gb_LinkTarget__get_debugcflags,$(1))) gb_LinkTarget__get_objcflags=$(if $(OBJCFLAGS),$(OBJCFLAGS),$(call gb_LinkTarget__get_debugcflags,$(1))) gb_LinkTarget__get_cxxflags=$(if $(CXXFLAGS),$(CXXFLAGS),$(call gb_LinkTarget__get_debugcxxflags,$(1))) gb_LinkTarget__get_objcxxflags=$(if $(OBJCXXFLAGS),$(OBJCXXFLAGS),$(call gb_LinkTarget__get_debugcxxflags,$(1))) +gb_LinkTarget__get_ldflags=$(if $(LDFLAGS),$(LDFLAGS),$(call gb_LinkTarget__get_debugldflags,$(1))) # Overview of dependencies and tasks of LinkTarget # @@ -508,7 +515,7 @@ $(call gb_LinkTarget_get_headers_target,$(1)) \ $(call gb_LinkTarget_get_target,$(1)) : INCLUDE := $$(gb_LinkTarget_INCLUDE) $(call gb_LinkTarget_get_headers_target,$(1)) \ $(call gb_LinkTarget_get_target,$(1)) : INCLUDE_STL := $$(gb_LinkTarget_INCLUDE_STL) -$(call gb_LinkTarget_get_target,$(1)) : T_LDFLAGS := $$(gb_LinkTarget_LDFLAGS) $(if $(LDFLAGS),$(LDFLAGS),$(gb_LINKEROPTFLAGS)) +$(call gb_LinkTarget_get_target,$(1)) : T_LDFLAGS := $$(gb_LinkTarget_LDFLAGS) $(call gb_LinkTarget__get_ldflags,$(2)) $(call gb_LinkTarget_get_target,$(1)) : LINKED_LIBS := $(call gb_LinkTarget_get_target,$(1)) : LINKED_STATIC_LIBS := $(call gb_LinkTarget_get_target,$(1)) : LIBS := diff --git a/solenv/gbuild/StaticLibrary.mk b/solenv/gbuild/StaticLibrary.mk index a09f720db995..fdebb6aaa2ea 100644 --- a/solenv/gbuild/StaticLibrary.mk +++ b/solenv/gbuild/StaticLibrary.mk @@ -59,7 +59,7 @@ $(call gb_StaticLibrary__StaticLibrary_impl,$(1),$(call gb_StaticLibrary_get_lin endef define gb_StaticLibrary__StaticLibrary_impl -$(call gb_LinkTarget_LinkTarget,$(2)) +$(call gb_LinkTarget_LinkTarget,$(2),StaticLibrary_$(1)) $(call gb_LinkTarget_set_targettype,$(2),StaticLibrary) $(call gb_StaticLibrary_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2)) \ | $(dir $(call gb_StaticLibrary_get_target,$(1))).dir diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk index f44951a78cba..c5c7a30b7b71 100644 --- a/solenv/gbuild/platform/unxgcc.mk +++ b/solenv/gbuild/platform/unxgcc.mk @@ -156,6 +156,8 @@ endif gb_COMPILEROPTFLAGS := $(gb_COMPILERDEFAULTOPTFLAGS) gb_COMPILERNOOPTFLAGS := -O0 +gb_LINKERSTRIPDEBUGFLAGS := -Wl,-S + # LinkTarget class define gb_LinkTarget__get_rpath_for_layer |