summaryrefslogtreecommitdiff
path: root/solenv
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@canonical.com>2013-02-13 23:38:59 +0100
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2013-02-15 19:31:40 +0100
commitc743324292a9994e20353734846b5045199d8e93 (patch)
tree503e4194dcf0f017b229babdfc0136dac1687adc /solenv
parent1b13c952f50aab2b907dab13395ab23d0955c238 (diff)
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 be 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 - should now hopefully work on all platforms - added module bookkeeping to gbuild Change-Id: I241ca67edbfabae83859274f9aa35d2d26165ef6
Diffstat (limited to 'solenv')
-rw-r--r--solenv/gbuild/AutoInstallLibs.mk38
-rw-r--r--solenv/gbuild/Helper.mk13
-rw-r--r--solenv/gbuild/InstallModule.mk5
-rw-r--r--solenv/gbuild/InstallModuleTarget.mk7
-rw-r--r--solenv/gbuild/TargetLocations.mk2
-rw-r--r--solenv/gbuild/gbuild.mk1
6 files changed, 65 insertions, 1 deletions
diff --git a/solenv/gbuild/AutoInstallLibs.mk b/solenv/gbuild/AutoInstallLibs.mk
new file mode 100644
index 000000000000..d1b67f12d265
--- /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 $(INSTALLMODULE) */" > $@
+ $(call gb_Output_info,install module: $(INSTALLMODULE) contents: $(gb_Library_MODULE_$(INSTALLMODULE)))
+ $(foreach lib,$(gb_Library_MODULE_$(INSTALLMODULE)),\
+ 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)) : INSTALLMODULE = $(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 d013d140f5b1..8f49e20d2151 100644
--- a/solenv/gbuild/Helper.mk
+++ b/solenv/gbuild/Helper.mk
@@ -115,6 +115,7 @@ endef
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_VALIDINSTALLMODULES := OOO
gb_StaticLibrary_VALIDGROUPS := PLAINLIBS
gb_Jar_VALIDGROUPS := URE OOO OXT
@@ -171,6 +172,18 @@ gb_Library_$(1) += $(2)
endef
+# the first argument is the group, which sets rpaths etc.
+# the second argument is the install module, which describes in which distro package/msi a lib should show up
+define gb_Helper_register_libraries_for_install
+ifeq ($$(filter $(2),$$(gb_Library_VALIDINSTALLMODULES)),)
+$$(eval $$(call gb_Output_error,$(2) is not a valid install module for libraries. Valid groups are: $$(gb_Library_VALIDINSTALLMODULES)))
+endif
+$(call gb_Helper_register_libraries,$(1),$(3))
+
+gb_Library_MODULE_$(2) += $(3)
+
+endef
+
define gb_Helper_register_static_libraries
ifeq ($$(filter $(1),$$(gb_StaticLibrary_VALIDGROUPS)),)
$$(eval $$(call gb_Output_error,$(1) is not a valid group for static libraries. Valid groups are: $$(gb_StaticLibrary_VALIDGROUPS)))
diff --git a/solenv/gbuild/InstallModule.mk b/solenv/gbuild/InstallModule.mk
index e172156ac5ac..803511a91c95 100644
--- a/solenv/gbuild/InstallModule.mk
+++ b/solenv/gbuild/InstallModule.mk
@@ -50,6 +50,11 @@ $(call gb_Helper_make_userfriendly_targets,$(1),InstallModule)
endef
+define gb_InstallModule_use_auto_install_libs
+$(call gb_InstallModuleTarget_use_auto_install_libs,$(1),$(2))
+
+endef
+
define gb_InstallModule_add_defs
$(call gb_InstallModuleTarget_add_defs,$(1),$(2))
diff --git a/solenv/gbuild/InstallModuleTarget.mk b/solenv/gbuild/InstallModuleTarget.mk
index fca80c1481a0..dbdd1d7c8782 100644
--- a/solenv/gbuild/InstallModuleTarget.mk
+++ b/solenv/gbuild/InstallModuleTarget.mk
@@ -281,7 +281,7 @@ $(call gb_InstallModuleTarget_get_external_target,$(1)) :| \
$(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)
@@ -315,6 +315,11 @@ $(call gb_InstallModuleTarget_add_defs,$(1),\
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 3887b536fbc4..0dbb6c1892c8 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -83,6 +83,7 @@ endef
# 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
@@ -237,6 +238,7 @@ $(patsubst $(1):%,$(WORKDIR)/Headers/StaticLibrary/%,$(filter $(1):%,$(gb_Static
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 090f5c3faeb3..9ef8d5322c8b 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -336,6 +336,7 @@ include $(foreach class, \
InstallModuleTarget \
InstallModule \
InstallScript \
+ AutoInstallLibs \
,$(GBUILDDIR)/$(class).mk)
$(eval $(call gb_Helper_process_executable_registrations))