Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/2144
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/44/2144/1
WiP: Remove the need to manually register libs in scp2
- we have all the needed information in gbuild
- reduce the amount of double and triple bookkeeping
- hopefully the generated files for scp2 are only a intermediate step
and we can do whatever perl voodoo scp2 does directly in gbuild
- currently using basctl as an example
- this also means we have to me more strict in Repository.mk with what
we register:
- if we dont build a libs, it shouldnt be registered (otherwise scp2
will want the nonexisting lib)
- in the end, this is a Good Thing(tm): we dont want anyone trying to
e.g. link against a lib we dont build
- TODO: the OOOLIBSINSTALLED group is currently only added on unxgcc,
needs to be done for other platforms too (and probably be renamed)
- TODO: the same can likely be done for other stuff: executables,
other files ...
Change-Id: I241ca67edbfabae83859274f9aa35d2d26165ef6
---
M Repository.mk
A scp2/AutoInstallLibs_ooolibs.mk
M scp2/Module_scp2.mk
M scp2/source/ooo/file_library_ooo.scp
M scp2/source/ooo/module_hidden_ooo.scp
A solenv/gbuild/AutoInstallLibs.mk
M solenv/gbuild/Helper.mk
M solenv/gbuild/InstallModuleTarget.mk
M solenv/gbuild/TargetLocations.mk
M solenv/gbuild/gbuild.mk
M solenv/gbuild/platform/unxgcc.mk
11 files changed, 71 insertions(+), 4 deletions(-)
diff --git a/Repository.mk b/Repository.mk
index 6f62ae2..3f15847 100755
--- a/Repository.mk
+++ b/Repository.mk
@@ -218,6 +218,12 @@
endif
+ifeq ($(DISABLE_SCRIPTING),)
+$(eval $(call gb_Helper_register_libraries,OOOLIBSINSTALLED, \
+ basctl \
+))
+endif
+
$(eval $(call gb_Helper_register_libraries,OOOLIBS, \
abp \
acc \
@@ -227,7 +233,6 @@
agg \
analysis \
animcore \
- basctl \
$(if $(filter $(OS),ANDROID),, \
basebmp \
) \
diff --git a/scp2/AutoInstallLibs_ooolibs.mk b/scp2/AutoInstallLibs_ooolibs.mk
new file mode 100644
index 0000000..6dd6372
--- /dev/null
+++ b/scp2/AutoInstallLibs_ooolibs.mk
@@ -0,0 +1,12 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call
gb_AutoInstallLibs_AutoInstallLibs,ooolibs,OOOLIBSINSTALLED,STD_LIB_FILE(gid_File_Lib_$$(1),$$(1))))
+
+# vim: set noet sw=4 ts=4:
diff --git a/scp2/Module_scp2.mk b/scp2/Module_scp2.mk
index c4f8145..62dcc14 100644
--- a/scp2/Module_scp2.mk
+++ b/scp2/Module_scp2.mk
@@ -28,6 +28,7 @@
$(eval $(call gb_Module_Module,scp2))
$(eval $(call gb_Module_add_targets,scp2,\
+ AutoInstallLibs_ooolibs \
CustomTarget_langmacros \
InstallModule_accessories \
InstallModule_base \
diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
index a804041..39e6ebf 100644
--- a/scp2/source/ooo/file_library_ooo.scp
+++ b/scp2/source/ooo/file_library_ooo.scp
@@ -25,6 +25,7 @@
*
************************************************************************/
#include "macros.inc"
+#include "AutoInstallLibs/ooolibs"
#if defined SOLAR_JAVA && defined WNT
File gid_File_Lib_Accessbridge
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
index 13bb7b7..6cab9a4 100644
--- a/scp2/source/ooo/module_hidden_ooo.scp
+++ b/scp2/source/ooo/module_hidden_ooo.scp
@@ -204,6 +204,7 @@
gid_File_Filter_Ira,
gid_File_Filter_Itg,
gid_File_Filter_Iti,
+ gid_File_Lib_basctl,
gid_File_Lib_Bib,
gid_File_Lib_Chartcore,
gid_File_Lib_Chartcontroller,
@@ -284,7 +285,6 @@
gid_File_Lib_Vclplug_Kde,
gid_File_Lib_Vclplug_Kde4,
gid_File_Lib_Vclplug_Svp,
- gid_File_Lib_Basctl,
gid_File_Lib_CanvasTools,
gid_File_Lib_CppCanvas,
gid_File_Lib_Agg,
diff --git a/solenv/gbuild/AutoInstallLibs.mk b/solenv/gbuild/AutoInstallLibs.mk
new file mode 100644
index 0000000..02b54ca
--- /dev/null
+++ b/solenv/gbuild/AutoInstallLibs.mk
@@ -0,0 +1,38 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+
+# AutoInstallLibs class
+
+$(dir $(call gb_AutoInstallLibs_get_target,%)).dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(call gb_AutoInstallLibs_get_target,%) :
+ $(call gb_Output_announce,$*,$(true),AIL,3)
+ echo "/* autogenerated library installs for group $(GROUP) */" > $@
+ echo "group: $(GROUP) contents: $(gb_Library_$(GROUP)) template: $(SCP2TEMPLATE)"
+ $(foreach lib,$(gb_Library_$(GROUP)),\
+ echo "$(call SCP2TEMPLATE,$(lib))" >> $@)
+
+
+$(call gb_AutoInstallLibs_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),AIL,3)
+ rm -f $(call gb_AutoInstallLibs_get_target,$*)
+
+define gb_AutoInstallLibs_AutoInstallLibs
+$(call gb_AutoInstallLibs_get_target,$(1)) : $(gb_Helper_PHONY) | $(dir $(call
gb_AutoInstallLibs_get_target,$(1))).dir
+$(call gb_AutoInstallLibs_get_target,$(1)) : GROUP = $(2)
+$(call gb_AutoInstallLibs_get_target,$(1)) : SCP2TEMPLATE = $(3)
+
+$$(eval $$(call gb_Module_register_target,$(call gb_AutoInstallLibs_get_target,$(1)),$(call
gb_AutoInstallLibs_get_clean_target,$(1))))
+$(call gb_Helper_make_userfriendly_targets,$(1),AutoInstallLibs)
+
+endef
+
+# vim: set shiftwidth=4 tabstop=4 noexpandtab:
diff --git a/solenv/gbuild/Helper.mk b/solenv/gbuild/Helper.mk
index f81a6b4d..9693830 100644
--- a/solenv/gbuild/Helper.mk
+++ b/solenv/gbuild/Helper.mk
@@ -104,7 +104,7 @@
define gb_Helper_init_registries
gb_Executable_VALIDGROUPS := UREBIN SDK OOO NONE
-gb_Library_VALIDGROUPS := OOOLIBS PLAINLIBS_NONE PLAINLIBS_URE PLAINLIBS_OOO RTLIBS RTVERLIBS
UNOLIBS_URE UNOLIBS_OOO UNOVERLIBS EXTENSIONLIBS
+gb_Library_VALIDGROUPS := OOOLIBSINSTALLED OOOLIBS PLAINLIBS_NONE PLAINLIBS_URE PLAINLIBS_OOO
RTLIBS RTVERLIBS UNOLIBS_URE UNOLIBS_OOO UNOVERLIBS EXTENSIONLIBS
gb_StaticLibrary_VALIDGROUPS := PLAINLIBS
gb_Jar_VALIDGROUPS := URE OOO OXT
diff --git a/solenv/gbuild/InstallModuleTarget.mk b/solenv/gbuild/InstallModuleTarget.mk
index a150f26..717752f 100644
--- a/solenv/gbuild/InstallModuleTarget.mk
+++ b/solenv/gbuild/InstallModuleTarget.mk
@@ -282,7 +282,7 @@
$(call gb_InstallModuleTarget_get_target,$(1)) : SCP_FILES :=
$(call gb_InstallModuleTarget_get_target,$(1)) : SCP_DEFS :=
-$(call gb_InstallModuleTarget_get_target,$(1)) : SCP_INCLUDE := -I$(SRCDIR)/scp2/inc
+$(call gb_InstallModuleTarget_get_target,$(1)) : SCP_INCLUDE := -I$(SRCDIR)/scp2/inc -I$(WORKDIR)
$(call gb_InstallModuleTarget_get_target,$(1)) : SCP_TEMPLATE_INCLUDE :=
$(call gb_InstallModuleTarget_use_custom_headers,$(1),scp2/macros)
@@ -316,6 +316,11 @@
endef
+define gb_InstallModuleTarget_use_auto_install_libs
+$(call gb_InstallModuleTarget_get_external_target,$(1)) : $(call
gb_AutoInstallLibs_get_target,$(2))
+
+endef
+
define gb_InstallModuleTarget_use_custom_header
$(call gb_InstallModuleTarget_get_external_target,$(1)) :| $(call gb_CustomTarget_get_target,$(2))
$(call gb_InstallModuleTarget_get_target,$(1)) : SCP_INCLUDE += -I$(call
gb_CustomTarget_get_workdir,$(2)) \
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index a32c997..9d72082 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -78,6 +78,7 @@
# workdir target patterns
+gb_AutoInstallLibs_get_target = $(WORKDIR)/AutoInstallLibs/$(1)
gb_AllLangResTarget_get_target = $(WORKDIR)/AllLangRes/$(1)
gb_AllLangZip_get_target = $(WORKDIR)/AllLangZip/$(1)
gb_AsmObject_get_target = $(WORKDIR)/AsmObject/$(1).o
@@ -230,6 +231,7 @@
endef
$(eval $(call gb_Helper_make_clean_targets,\
+ AutoInstallLibs \
AllLangResTarget \
AllLangZip \
CliAssembly \
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 9e621cd..7e3feae 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -336,6 +336,7 @@
InstallModuleTarget \
InstallModule \
InstallScript \
+ AutoInstallLibs \
,$(GBUILDDIR)/$(class).mk)
# optional extensions that should never be essential
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index d6b67be..2391c78 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -244,6 +244,7 @@
gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
gb_Library_FILENAMES := \
+ $(foreach
lib,$(gb_Library_OOOLIBSINSTALLED),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
$(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
$(foreach
lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
$(foreach
lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
@@ -257,6 +258,7 @@
gb_Library_LAYER := \
+ $(foreach lib,$(gb_Library_OOOLIBSINSTALLED),$(lib):OOO) \
$(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
$(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):URELIB) \
$(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
--
To view, visit https://gerrit.libreoffice.org/2144
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I241ca67edbfabae83859274f9aa35d2d26165ef6
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Björn Michaelsen <bjoern.michaelsen@canonical.com>
Context
- [PATCH] WiP: Remove the need to manually register libs in scp2 · via Code Review
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.