diff options
-rw-r--r-- | Module_tail_build.mk | 6 | ||||
-rw-r--r-- | Repository.mk | 1 | ||||
-rwxr-xr-x | configure.in | 17 | ||||
-rw-r--r-- | scp2/source/ooo/file_library_ooo.scp | 2 | ||||
-rw-r--r-- | scp2/source/ooo/module_hidden_ooo.scp | 1 | ||||
-rwxr-xr-x | set_soenv.in | 1 | ||||
-rw-r--r-- | solenv/gbuild/Library.mk | 4 | ||||
-rw-r--r-- | solenv/gbuild/LinkTarget.mk | 21 |
8 files changed, 49 insertions, 4 deletions
diff --git a/Module_tail_build.mk b/Module_tail_build.mk index 2cf5cdba0d3a..8408cd875544 100644 --- a/Module_tail_build.mk +++ b/Module_tail_build.mk @@ -51,4 +51,10 @@ $(eval $(call gb_Module_add_moduledirs,tail_end,\ writerperfect \ )) +ifeq ($(MERGELIBS),YES) +$(eval $(call gb_Module_add_targets,tail_end,\ + Library_merged \ +)) +endif + # vim: set noet sw=4 ts=4: diff --git a/Repository.mk b/Repository.mk index 38a777e879d2..eaa4ed1d80b2 100644 --- a/Repository.mk +++ b/Repository.mk @@ -89,6 +89,7 @@ $(eval $(call gb_Helper_register_libraries,OOOLIBS, \ i18nregexp \ lng \ lwpft \ + merged \ msfilter \ msword \ msworks \ diff --git a/configure.in b/configure.in index 47758331e31b..ad5f63f8101f 100755 --- a/configure.in +++ b/configure.in @@ -116,6 +116,11 @@ AC_ARG_ENABLE(ext-wiki-publisher, dnl ---------- *** ---------- +AC_ARG_ENABLE(mergelibs, + AS_HELP_STRING([--enable-mergelibs], + [Enables linking of big merged library used for better performance.]), +,) + AC_ARG_ENABLE(graphite, AS_HELP_STRING([--enable-graphite], [Enables the compilation of Graphite smart font rendering.]), @@ -9063,6 +9068,18 @@ fi AC_MSG_RESULT([$BUILD_NCPUS]) AC_SUBST(BUILD_NCPUS) +# =================================================================== +# Creating bigger shared library to link against +# =================================================================== +AC_MSG_CHECKING([whether to create a big library for better performance]) +if test "$enable_mergelibs" != "no"; then + MERGELIBS="YES" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(MERGELIBS) + dnl =================================================================== dnl Number of parallel jobs to be executed by dmake dnl =================================================================== diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp index f9376715c31b..975ec1598dbd 100644 --- a/scp2/source/ooo/file_library_ooo.scp +++ b/scp2/source/ooo/file_library_ooo.scp @@ -1292,6 +1292,8 @@ STD_LIB_FILE( gid_File_Lib_Swui, swui) STD_LIB_FILE( gid_File_Lib_Msword, msword ) +STD_LIB_FILE( gid_File_Lib_Merged, merged ) + #if ! defined UNX File gid_File_Lib_Sysdtrans TXT_FILE_BODY; diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp index 1f79ee31a6a3..b718738776a4 100644 --- a/scp2/source/ooo/module_hidden_ooo.scp +++ b/scp2/source/ooo/module_hidden_ooo.scp @@ -253,6 +253,7 @@ Module gid_Module_Root_Files_4 gid_File_Lib_AVMediaWin, gid_File_Lib_AVMediaGStreamer, gid_File_Lib_BaseGfx, + gid_File_Lib_Merged, gid_File_Lib_Sysdtrans, gid_File_Lib_Sw, gid_File_Lib_TextConversionDlgs, diff --git a/set_soenv.in b/set_soenv.in index 53ef4ce2838e..a54c351e0e7d 100755 --- a/set_soenv.in +++ b/set_soenv.in @@ -2062,6 +2062,7 @@ ToFile( "SYSTEM_LIBTEXTCAT_DATA","@SYSTEM_LIBTEXTCAT_DATA@","e" ); ToFile( "XAU_LIBS", "@XAU_LIBS@", "e" ); ToFile( "GXX_INCLUDE_PATH", PathFormat("@GXX_INCLUDE_PATH@"), "e" ); ToFile( "COMMON_BUILD_TOOLS",$COMMON_BUILD_TOOLS, "e" ); +ToFile( "MERGELIBS", "@MERGELIBS@", "e" ); if ($platform !~ m/cygwin/) { if ( !defined $ENV{"TMPDIR"} || $ENV{"TMPDIR"} eq "" ) { 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 |