summaryrefslogtreecommitdiff
path: root/solenv/gbuild/ExternalPackage.mk
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2013-05-01 09:46:11 +0200
committerDavid Tardon <dtardon@redhat.com>2013-05-01 16:55:38 +0200
commit61f59c46f6476a5e96fea143bc31d87c7de58ed2 (patch)
treee3d47d826a86ec6f8f8712bc1ceaf1cce1bb658a /solenv/gbuild/ExternalPackage.mk
parent17edefac370b86fb22255e7e92468bb5206d36c8 (diff)
add function for adding runtime libs to ExternalPackage
This allows us to deliver libs needed at runtime to instdir in addition to solver. It could possibly also be used for autoinstalling external libs, just like we can already do for internal libs. Change-Id: I96d314c55581190e129adae8383224535748ac43
Diffstat (limited to 'solenv/gbuild/ExternalPackage.mk')
-rw-r--r--solenv/gbuild/ExternalPackage.mk49
1 files changed, 49 insertions, 0 deletions
diff --git a/solenv/gbuild/ExternalPackage.mk b/solenv/gbuild/ExternalPackage.mk
index 9e0a019bc6b5..858367ddf4f9 100644
--- a/solenv/gbuild/ExternalPackage.mk
+++ b/solenv/gbuild/ExternalPackage.mk
@@ -36,6 +36,9 @@ $(call gb_ExternalPackage_get_clean_target,%) :
$(call gb_Output_announce,$*,$(false),EPK,2)
rm -f $(call gb_ExternalPackage_get_target,$*)
+# Get name of the Package used for delivering files for install to $(INSTDIR).
+gb_ExternalPackage_get_packagename = ExternalPackage/$(1)
+
# Create and register a new ExternalPackage
#
# The base directory of the package is the directory of the unpacked
@@ -60,6 +63,10 @@ define gb_ExternalPackage_ExternalPackage_internal
$(call gb_Package_Package_internal,$(1),$(call gb_UnpackedTarball_get_dir,$(2)))
$(call gb_Package_use_unpacked,$(1),$(2))
+ifneq ($(gb_RUNNABLE_INSTDIR),)
+$(call gb_ExternalPackage__ExternalPackage_package,$(1),$(call gb_ExternalPackage_get_packagename,$(1)),$(2))
+endif
+
$(call gb_ExternalPackage_get_target,$(1)) : $(call gb_Package_get_target,$(1))
$(call gb_ExternalPackage_get_target,$(1)) :| $(dir $(call gb_ExternalPackage_get_target,$(1))).dir
$(call gb_ExternalPackage_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(1))
@@ -68,6 +75,14 @@ gb_ExternalPackage_UNPACKED_$(1) := $(2)
endef
+# gb_ExternalPackage__ExternalPackage_package package inst-package unpacked
+define gb_ExternalPackage__ExternalPackage_package
+$(call gb_Package_Package_internal,$(2),$(call gb_UnpackedTarball_get_dir,$(3)))
+$(call gb_Package_set_outdir,$(2),$(INSTDIR))
+$(call gb_Package_use_unpacked,$(2),$(3))
+
+endef
+
# Set output dir for the package's files.
#
# Default is $(OUTDIR).
@@ -183,9 +198,43 @@ endef
# gb_ExternalPackage_use_external_project package external
define gb_ExternalPackage_use_external_project
$(call gb_Package_use_external_project,$(1),$(2))
+
+ifneq ($(gb_RUNNABLE_INSTDIR),)
+$(call gb_Package_use_external_project,$(call gb_ExternalPackage_get_packagename,$(1)),$(2))
+endif
+
$(if $(gb_ExternalPackage_PROJECT_$(1)),$(call gb_Output_error,gb_ExternalPackage_use_external_project: only one project allowed))
gb_ExternalPackage_PROJECT_$(1) := $(2)
endef
+# Add a (dynamic) library that is a part of the installation.
+#
+# This function is very similar to gb_ExternalPackage_add_file, except
+# that it also allows to deliver the library to its proper place in
+# $(INSTDIR).
+#
+# The last argument is the name under which the library was registered.
+# It is used to determine layer, if the library is not in layer OOO.
+#
+# gb_ExternalPackage_add_library_for_install package dest src library?
+define gb_ExternalPackage_add_library_for_install
+$(call gb_ExternalPackage_add_file,$(1),$(2),$(3))
+
+ifneq ($(gb_RUNNABLE_INSTDIR),)
+$(call gb_ExternalPackage_add_file,$(call gb_ExternalPackage_get_packagename,$(1)),$(if $(4),$(call gb_Library_get_instdir,$(4)),program)/$(notdir $(2)),$(3))
+$(call gb_ExternalPackage_get_target,$(1)) : $(call gb_Package_get_target,$(call gb_ExternalPackage_get_packagename,$(1)))
+$(call gb_ExternalPackage_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(call gb_ExternalPackage_get_packagename,$(1)))
+endif
+
+endef
+
+# Add several libraries for install at once.
+#
+# gb_ExternalPackage_add_libraries_for_install package destdir file(s)
+define gb_ExternalPackage_add_libraries_for_install
+$(foreach file,$(3),$(call gb_ExternalPackage_add_library_for_install,$(1),$(2)/$(notdir $(file)),$(file)))
+
+endef
+
# vim: set noet sw=4 ts=4: