|
@@ -0,0 +1,113 @@
|
|
|
+################################################################################
|
|
|
+# WAF package infrastructure
|
|
|
+#
|
|
|
+# This file implements an infrastructure that eases development of package
|
|
|
+# .mk files for WAF packages. It should be used for all packages that use
|
|
|
+# WAF as their build system.
|
|
|
+#
|
|
|
+# See the Buildroot documentation for details on the usage of this
|
|
|
+# infrastructure
|
|
|
+#
|
|
|
+# In terms of implementation, this WAF infrastructure requires the .mk file
|
|
|
+# to only specify metadata information about the package: name, version,
|
|
|
+# download URL, etc.
|
|
|
+#
|
|
|
+# We still allow the package .mk file to override what the different steps
|
|
|
+# are doing, if needed. For example, if <PKG>_BUILD_CMDS is already defined,
|
|
|
+# it is used as the list of commands to perform to build the package,
|
|
|
+# instead of the default WAF behaviour. The package can also define some
|
|
|
+# post operation hooks.
|
|
|
+#
|
|
|
+################################################################################
|
|
|
+
|
|
|
+################################################################################
|
|
|
+# inner-waf-package -- defines how the configuration, compilation and
|
|
|
+# installation of a waf package should be done, implements a few hooks
|
|
|
+# to tune the build process for waf specifities and calls the generic
|
|
|
+# package infrastructure to generate the necessary make targets
|
|
|
+#
|
|
|
+# argument 1 is the lowercase package name
|
|
|
+# argument 2 is the uppercase package name, including a HOST_ prefix
|
|
|
+# for host packages
|
|
|
+# argument 3 is the uppercase package name, without the HOST_ prefix
|
|
|
+# for host packages
|
|
|
+# argument 4 is the type (target or host)
|
|
|
+################################################################################
|
|
|
+
|
|
|
+define inner-waf-package
|
|
|
+
|
|
|
+# We need host-python to run waf
|
|
|
+$(2)_DEPENDENCIES += host-python
|
|
|
+
|
|
|
+$(2)_NEEDS_EXTERNAL_WAF ?= NO
|
|
|
+
|
|
|
+# If the package does not have its own waf, use our own.
|
|
|
+ifeq ($$($(2)_NEEDS_EXTERNAL_WAF),YES)
|
|
|
+$(2)_DEPENDENCIES += host-waf
|
|
|
+$(2)_WAF = $(HOST_DIR)/usr/bin/waf
|
|
|
+else
|
|
|
+$(2)_WAF = ./waf
|
|
|
+endif
|
|
|
+
|
|
|
+#
|
|
|
+# Configure step. Only define it if not already defined by the package
|
|
|
+# .mk file.
|
|
|
+#
|
|
|
+ifndef $(2)_CONFIGURE_CMDS
|
|
|
+define $(2)_CONFIGURE_CMDS
|
|
|
+ cd $$(@D) && \
|
|
|
+ $$(TARGET_CONFIGURE_OPTS) \
|
|
|
+ $$($(2)_CONF_ENV) \
|
|
|
+ $$(HOST_DIR)/usr/bin/python2 $$($(2)_WAF) configure \
|
|
|
+ --prefix=/usr \
|
|
|
+ --libdir=/usr/lib \
|
|
|
+ $$($(2)_CONF_OPTS)
|
|
|
+endef
|
|
|
+endif
|
|
|
+
|
|
|
+#
|
|
|
+# Build step. Only define it if not already defined by the package .mk
|
|
|
+# file.
|
|
|
+#
|
|
|
+ifndef $(2)_BUILD_CMDS
|
|
|
+define $(2)_BUILD_CMDS
|
|
|
+ cd $$(@D) && \
|
|
|
+ $$(TARGET_MAKE_ENV) $$(HOST_DIR)/usr/bin/python2 $$($(2)_WAF) build -j $$(PARALLEL_JOBS)
|
|
|
+endef
|
|
|
+endif
|
|
|
+
|
|
|
+#
|
|
|
+# Staging installation step. Only define it if not already defined by
|
|
|
+# the package .mk file.
|
|
|
+#
|
|
|
+ifndef $(2)_INSTALL_STAGING_CMDS
|
|
|
+define $(2)_INSTALL_STAGING_CMDS
|
|
|
+ cd $$(@D) && \
|
|
|
+ $$(TARGET_MAKE_ENV) $$(HOST_DIR)/usr/bin/python2 $$($(2)_WAF) \
|
|
|
+ install --destdir=$$(STAGING_DIR)
|
|
|
+endef
|
|
|
+endif
|
|
|
+
|
|
|
+#
|
|
|
+# Target installation step. Only define it if not already defined by
|
|
|
+# the package .mk file.
|
|
|
+#
|
|
|
+ifndef $(2)_INSTALL_TARGET_CMDS
|
|
|
+define $(2)_INSTALL_TARGET_CMDS
|
|
|
+ cd $$(@D) && \
|
|
|
+ $$(TARGET_MAKE_ENV) $$(HOST_DIR)/usr/bin/python2 $$($(2)_WAF) \
|
|
|
+ install --destdir=$$(TARGET_DIR)
|
|
|
+endef
|
|
|
+endif
|
|
|
+
|
|
|
+# Call the generic package infrastructure to generate the necessary
|
|
|
+# make targets
|
|
|
+$(call inner-generic-package,$(1),$(2),$(3),$(4))
|
|
|
+
|
|
|
+endef
|
|
|
+
|
|
|
+################################################################################
|
|
|
+# waf-package -- the target generator macro for WAF packages
|
|
|
+################################################################################
|
|
|
+
|
|
|
+waf-package = $(call inner-waf-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)
|