diff options
author | Matúš Kukan <matus.kukan@gmail.com> | 2011-08-24 12:17:31 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@novell.com> | 2011-08-24 14:23:43 +0100 |
commit | 75fac9839793f73c9833489f1d70bf4136881cbf (patch) | |
tree | 30c20c8b5924f84439e1b3b122cde6b8193831e6 /solenv | |
parent | 9ba447cec165946ed8b9e719c4a9ee318f9b051b (diff) |
Add support for creating merged library.
This commit allows to set which libraries to merge
and creates merged library in tail_build if enabled.
This should save time when loading libraries in application
and also makes more sense for link-time optimization.
Signed-off-by: Michael Meeks <michael.meeks@novell.com>
Diffstat (limited to 'solenv')
-rw-r--r-- | solenv/gbuild/Library.mk | 4 | ||||
-rw-r--r-- | solenv/gbuild/LinkTarget.mk | 21 |
2 files changed, 21 insertions, 4 deletions
diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk index 798af8b5854b..db6d961ef27e 100644 --- a/solenv/gbuild/Library.mk +++ b/solenv/gbuild/Library.mk @@ -80,7 +80,8 @@ $(call gb_Deliver_add_deliverable,$(call gb_Library_get_target,$(1)),$(call gb_L endef define gb_Library_set_componentfile -$(call gb_ComponentTarget_ComponentTarget,$(or $(strip $(3)),$(strip $(2))),$(call gb_Library__get_componentprefix,$(1)),$(call gb_Library_get_runtime_filename,$(1)),$(2)) +$(call gb_ComponentTarget_ComponentTarget,$(or $(strip $(3)),$(strip $(2))),$(call gb_Library__get_componentprefix,$(1)),\ + $(call gb_Library_get_runtime_filename,$(if $(MERGELIBS),$(if $(filter $(gb_MERGED_LIBS),$(1)),merged,$(1)),$(1))),$(2)) $(call gb_Library_get_target,$(1)) : $(call gb_ComponentTarget_get_outdir_target,$(2)) $(call gb_ComponentTarget_get_outdir_inbuild_target,$(2)) $(call gb_Library_get_clean_target,$(1)) : $(call gb_ComponentTarget_get_clean_target,$(or $(strip $(3)),$(strip $(2)))) @@ -120,6 +121,7 @@ $(eval $(foreach method,\ add_generated_cobjects \ add_generated_cxxobjects \ add_generated_exception_objects \ + add_library_objects \ add_grammar \ add_grammars \ add_cflags \ diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk index 990f4bedede6..325a37d0ee5b 100644 --- a/solenv/gbuild/LinkTarget.mk +++ b/solenv/gbuild/LinkTarget.mk @@ -44,6 +44,15 @@ CXXFLAGS ?= $(gb_COMPILEROPTFLAGS) OBJCXXFLAGS ?= $(gb_COMPILEROPTFLAGS) endif +# if enabled we can create one library instead of more smaller +ifeq ($(MERGELIBS),YES) +# list of libraries which are always loaded, thus we can merge them into one +# they have to be from tail_build, so we could link against merged library +gb_CORE_LIBS := \ + uui \ + +endif + # Overview of dependencies and tasks of LinkTarget # # target task depends on @@ -724,11 +733,17 @@ $$(eval $$(call gb_Output_info,currently known libraries are: $(sort $(gb_Librar $$(eval $$(call gb_Output_error,Cannot link against library/libraries $$(filter-out $(gb_Library_KNOWNLIBS),$(2)). Libraries must be registered in Repository.mk)) endif -$(call gb_LinkTarget_get_target,$(1)) : LINKED_LIBS += $(2) +ifeq ($(MERGELIBS),YES) +gb_LINKED_LIBS := $(if $(filter $(gb_CORE_LIBS),$(2)),merged $(filter-out $(gb_CORE_LIBS),$(2)),$(2)) +else +gb_LINKED_LIBS := $(2) +endif + +$(call gb_LinkTarget_get_target,$(1)) : LINKED_LIBS += $$(gb_LINKED_LIBS) -$(call gb_LinkTarget_get_target,$(1)) : $$(foreach lib,$(2),$$(call gb_Library_get_target,$$(lib))) +$(call gb_LinkTarget_get_target,$(1)) : $$(foreach lib,$$(gb_LINKED_LIBS),$$(call gb_Library_get_target,$$(lib))) $(call gb_LinkTarget_get_external_headers_target,$(1)) : \ -$$(foreach lib,$(2),$$(call gb_Library_get_headers_target,$$(lib))) +$$(foreach lib,$$(gb_LINKED_LIBS),$$(call gb_Library_get_headers_target,$$(lib))) endef |