summaryrefslogtreecommitdiffstats
path: root/solenv/gbuild/LinkTarget.mk
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-05-07 16:25:04 +0200
committerMichael Stahl <mstahl@redhat.com>2012-05-08 11:27:48 +0200
commit0cd589cb5f57242b320530920db33b720110d619 (patch)
tree7331e6505fabfa2c2857eae38d69a2d77b752770 /solenv/gbuild/LinkTarget.mk
parentgbuild: refactor the selective symbols support (diff)
downloadcore-0cd589cb5f57242b320530920db33b720110d619.tar.gz
core-0cd589cb5f57242b320530920db33b720110d619.zip
gbuild: refactor selective symbols again:
The previous commit works but results in a ~0.4 second slowdown on tail_build, which is completely unacceptable; seems that at the cost of another ugly global variable in Module.mk we can get the performance back and then some, so refactor this again...
Diffstat (limited to 'solenv/gbuild/LinkTarget.mk')
-rw-r--r--solenv/gbuild/LinkTarget.mk43
1 files changed, 7 insertions, 36 deletions
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index e851dd564659..b71a13b2d1b5 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -36,46 +36,17 @@
# OBJCXXFLAGS
# LDFLAGS
-
-# convert ENABLE_SYMBOLS_FOR from "all -sc/" syntax to a list of target names
-
-# all targets
-gb_Symbols_get_all = \
- $(foreach module,$(gb_Module_ALLMODULES),$(gb_Module_DEBUG_$(module)))
-
-# all targets in a module
-gb_Symbols_expand_module = $(gb_Module_DEBUG_$(1))
-
-# expand one item: all->all targets, foo/ -> all targets in foo/, otherwise the item itself
-define gb_Symbols_expand_item
-$(if $(filter all,$(1)),$(call gb_Symbols_get_all),
- $(if $(findstring /,$(1)),$(call gb_Symbols_expand_module,$(1)),
- $(if $(findstring _,$(1)),$(1),
- $(error no _ or / in --enable-debug item, prepend target type such as Library_ or append / for directory))))
-endef
-
-# list of items to enable debug for
-define gb_Symbols_expand_debug
-$(foreach item,$(1),$(if $(findstring -,$(item)),,$(call gb_Symbols_expand_item,$(item))))
-endef
-
-# list of items to not enable debug for
-define gb_Symbols_expand_nodebug
-$(foreach item,$(1),$(if $(findstring -,$(item)),$(call gb_Symbols_expand_item,$(patsubst -%,%,$(item))),))
-endef
-
-# add items to enable debug for, remove items to not enable debug for
-# note that there is not ordering and removing takes precedence
-gb_Symbols_create_debugfor=$(filter-out $(call gb_Symbols_expand_nodebug,$(1)),$(call gb_Symbols_expand_debug,$(1)))
-
-# convert the value
-gb_ENABLE_SYMBOLS_FOR=$(call gb_Symbols_create_debugfor,$(ENABLE_SYMBOLS_FOR))
+# enable if: no "-TARGET" defined AND [module is enabled OR "TARGET" defined]
+gb_LinkTarget__symbols_enabled = \
+ $(and $(if $(filter -$(1),$(ENABLE_SYMBOLS_FOR)),,$(true)),\
+ $(or $(gb_Module_CURRENTMODULE_DEBUG_ENABLED),\
+ $(filter $(1),$(ENABLE_SYMBOLS_FOR))))
# debug flags, if ENABLE_SYMBOLS is set and the LinkTarget is named
# in the list of libraries of ENABLE_SYMBOLS_FOR
ifeq ($(gb_SYMBOL),$(true))
-gb_LinkTarget__get_symbolscflags=$(if $(filter $(1),$(gb_ENABLE_SYMBOLS_FOR)),$(gb_DEBUG_CFLAGS))
-gb_LinkTarget__get_symbolscxxflags=$(if $(filter $(1),$(gb_ENABLE_SYMBOLS_FOR)),$(gb_DEBUG_CFLAGS) $(gb_DEBUG_CXXFLAGS))
+gb_LinkTarget__get_symbolscflags=$(if $(call gb_LinkTarget__symbols_enabled,$(1)),$(gb_DEBUG_CFLAGS))
+gb_LinkTarget__get_symbolscxxflags=$(if $(call gb_LinkTarget__symbols_enabled,$(1)),$(gb_DEBUG_CFLAGS) $(gb_DEBUG_CXXFLAGS))
else
gb_LinkTarget__get_symbolscflags=
gb_LinkTarget__get_symbolscxxflags=