From 0cd589cb5f57242b320530920db33b720110d619 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Mon, 7 May 2012 16:25:04 +0200 Subject: 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... --- solenv/gbuild/LinkTarget.mk | 43 +++++++------------------------------------ 1 file changed, 7 insertions(+), 36 deletions(-) (limited to 'solenv/gbuild/LinkTarget.mk') 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= -- cgit