diff options
author | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2013-02-13 23:38:59 +0100 |
---|---|---|
committer | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2013-02-15 19:31:40 +0100 |
commit | c743324292a9994e20353734846b5045199d8e93 (patch) | |
tree | 503e4194dcf0f017b229babdfc0136dac1687adc | |
parent | 1b13c952f50aab2b907dab13395ab23d0955c238 (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
-rw-r--r-- | Repository.mk | 7 | ||||
-rw-r--r-- | scp2/AutoInstallLibs_ooo.mk | 12 | ||||
-rw-r--r-- | scp2/InstallModule_ooo.mk | 2 | ||||
-rw-r--r-- | scp2/Module_scp2.mk | 1 | ||||
-rw-r--r-- | scp2/source/ooo/file_library_ooo.scp | 3 | ||||
-rw-r--r-- | scp2/source/ooo/module_hidden_ooo.scp | 2 | ||||
-rw-r--r-- | solenv/gbuild/AutoInstallLibs.mk | 38 | ||||
-rw-r--r-- | solenv/gbuild/Helper.mk | 13 | ||||
-rw-r--r-- | solenv/gbuild/InstallModule.mk | 5 | ||||
-rw-r--r-- | solenv/gbuild/InstallModuleTarget.mk | 7 | ||||
-rw-r--r-- | solenv/gbuild/TargetLocations.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/gbuild.mk | 1 |
12 files changed, 88 insertions, 5 deletions
diff --git a/Repository.mk b/Repository.mk index d0307f5eb011..a488a46cfd36 100644 --- a/Repository.mk +++ b/Repository.mk @@ -222,6 +222,12 @@ $(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \ endif +ifeq ($(DISABLE_SCRIPTING),) +$(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,OOO, \ + basctl \ +)) +endif + $(eval $(call gb_Helper_register_libraries,OOOLIBS, \ abp \ acc \ @@ -231,7 +237,6 @@ $(eval $(call gb_Helper_register_libraries,OOOLIBS, \ agg \ analysis \ animcore \ - basctl \ $(if $(filter $(OS),ANDROID),, \ basebmp \ ) \ diff --git a/scp2/AutoInstallLibs_ooo.mk b/scp2/AutoInstallLibs_ooo.mk new file mode 100644 index 000000000000..c3544c24ebba --- /dev/null +++ b/scp2/AutoInstallLibs_ooo.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,ooo,OOO,STD_LIB_FILE(gid_File_Lib_$$(1)_auto_installed,$$(1)))) + +# vim: set noet sw=4 ts=4: diff --git a/scp2/InstallModule_ooo.mk b/scp2/InstallModule_ooo.mk index 985865bebdf3..c1915b69bc24 100644 --- a/scp2/InstallModule_ooo.mk +++ b/scp2/InstallModule_ooo.mk @@ -27,6 +27,8 @@ $(eval $(call gb_InstallModule_InstallModule,scp2/ooo)) +$(eval $(call gb_InstallModule_use_auto_install_libs,scp2/ooo,ooolibs)) + $(eval $(call gb_InstallModule_define_if_set,scp2/ooo,\ DISABLE_ATL \ DISABLE_NEON \ diff --git a/scp2/Module_scp2.mk b/scp2/Module_scp2.mk index 0339ec379495..8052b91090c2 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_ooo \ 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 8feb75d46328..2859a32b6295 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/ooo" #if defined SOLAR_JAVA && defined WNT File gid_File_Lib_Accessbridge @@ -41,8 +42,6 @@ STD_LIB_FILE( gid_File_Lib_Ado, ado) #ifndef DISABLE_SCRIPTING -STD_LIB_FILE( gid_File_Lib_Basctl, basctl) - File gid_File_Lib_Basprov LIB_FILE_BODY; Styles = (PACKED); diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp index 195a3fde562c..41124fc22eff 100644 --- a/scp2/source/ooo/module_hidden_ooo.scp +++ b/scp2/source/ooo/module_hidden_ooo.scp @@ -180,6 +180,7 @@ Module gid_Module_Root_Files_4 gid_File_Filter_Ira, gid_File_Filter_Itg, gid_File_Filter_Iti, + gid_File_Lib_basctl_auto_installed, gid_File_Lib_Bib, gid_File_Lib_Chartcore, gid_File_Lib_Chartcontroller, @@ -255,7 +256,6 @@ Module gid_Module_Root_Files_4 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_Fwm, 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)) |