123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- ################################################################################
- # 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-python3 to run waf
- $(2)_DEPENDENCIES += host-python3
- $(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)/bin/waf
- else
- $(2)_WAF ?= ./waf
- endif
- $(2)_BUILD_OPTS ?=
- $(2)_INSTALL_STAGING_OPTS ?=
- $(2)_INSTALL_TARGET_OPTS ?=
- $(2)_WAF_OPTS ?=
- #
- # Configure step. Only define it if not already defined by the package
- # .mk file.
- #
- ifndef $(2)_CONFIGURE_CMDS
- define $(2)_CONFIGURE_CMDS
- cd $$($$(PKG)_SRCDIR) && \
- $$(TARGET_CONFIGURE_OPTS) \
- $$($(2)_CONF_ENV) \
- $$(HOST_DIR)/bin/python3 $$($(2)_WAF) configure \
- --prefix=/usr \
- --libdir=/usr/lib \
- $$($(2)_CONF_OPTS) \
- $$($(2)_WAF_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 $$($$(PKG)_SRCDIR) && \
- $$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(2)_WAF) \
- build -j $$(PARALLEL_JOBS) $$($(2)_BUILD_OPTS) \
- $$($(2)_WAF_OPTS)
- 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 $$($$(PKG)_SRCDIR) && \
- $$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(2)_WAF) \
- install --destdir=$$(STAGING_DIR) \
- $$($(2)_INSTALL_STAGING_OPTS) \
- $$($(2)_WAF_OPTS)
- 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 $$($$(PKG)_SRCDIR) && \
- $$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(2)_WAF) \
- install --destdir=$$(TARGET_DIR) \
- $$($(2)_INSTALL_TARGET_OPTS) \
- $$($(2)_WAF_OPTS)
- 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)
|