infra: consistently use double dollar signs inside inner-xxx-targets

The inner-xxx-targets in the buildroot package infrastructures are
evaluated using $(eval) which causes variable references to be a bit
different than in regular make code. As we want most references to be
expanded only at the time of the $(eval) we should not use standard
references $(VAR) but rather use double dollar signs $$(VAR). This includes
function references like $(call), $(subst), etc. The only exception is the
reference to pkgdir/pkgname and numbered variables, which are parameters to
the inner block: $(1), $(2), etc.

This patch introduces consistent usage of double-dollar signs throughout the
different inner-xxx-targets blocks.

In some cases, this would potentially cause circular references, in
particular when the value of HOST_FOO_VAR would be obtained from the
corresponding FOO_VAR if HOST_FOO_VAR is not defined. In these cases, a test
is added to check for a host package (the only case where such constructions
are relevant; these are not circular).

Benefits of these changes are:
- behavior of variables is now again as expected. For example, setting
  $(2)_VERSION = virtual in pkg-virtual.mk will effectively work, while
  originally it would cause very odd results.

- The output of 'make printvars' is now much more useful. This target shows
  the value of all variables, and the expression that led to that value.
  However, if the expression was coming from an inner-xxx-targets block, and
  was using single dollar signs, it would show in printvars as
    VAR = value (value)
  while if double dollar signs are used, it would effectively look like
    VAR = value (actual expression)
  as is intended.
  This improvement is for example effective for FOO_DL_VERSION, FOO_RAWNAME,
  FOO_SITE_METHOD and FOO_MAKE.

The correctness of this patch has been verified using 'make printvars',
'make manual' and 'make legal-info' before and after applying this patch,
and comparing the output.

Insight-provided-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Thomas De Schampheleire 2014-06-11 21:12:24 +02:00 committed by Thomas Petazzoni
parent e00c631ef4
commit 54456cc698
9 changed files with 151 additions and 137 deletions

View File

@ -33,8 +33,8 @@ manual-check-dependencies-lists:
fi fi
################################################################################ ################################################################################
# GENDOC -- generates the make targets needed to build a specific type of # GENDOC_INNER -- generates the make targets needed to build a specific type of
# asciidoc documentation. # asciidoc documentation.
# #
# argument 1 is the name of the document and must be a subdirectory of docs/; # argument 1 is the name of the document and must be a subdirectory of docs/;
# the top-level asciidoc file must have the same name # the top-level asciidoc file must have the same name
@ -45,6 +45,9 @@ manual-check-dependencies-lists:
# argument 6 (optional) are extra arguments for a2x # argument 6 (optional) are extra arguments for a2x
# #
# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies. # The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
#
# Since this function will be called from within an $(eval ...)
# all variable references except the arguments must be $$-quoted.
################################################################################ ################################################################################
define GENDOC_INNER define GENDOC_INNER
$(1): $(1)-$(3) $(1): $(1)-$(3)
@ -54,16 +57,16 @@ $(1)-$(3): $$(O)/docs/$(1)/$(1).$(4)
manual-check-dependencies-$(3): manual-check-dependencies-$(3):
$$(O)/docs/$(1)/$(1).$(4): docs/$(1)/$(1).txt \ $$(O)/docs/$(1)/$(1).$(4): docs/$(1)/$(1).txt \
$$($(call UPPERCASE,$(1))_SOURCES) \ $$($$(call UPPERCASE,$(1))_SOURCES) \
manual-check-dependencies \ manual-check-dependencies \
manual-check-dependencies-$(3) \ manual-check-dependencies-$(3) \
manual-update-lists manual-update-lists
$(Q)$(call MESSAGE,"Generating $(5) $(1)...") $$(Q)$$(call MESSAGE,"Generating $(5) $(1)...")
$(Q)mkdir -p $$(@D)/.build $$(Q)mkdir -p $$(@D)/.build
$(Q)rsync -au docs/$(1)/*.txt $$(@D)/.build $$(Q)rsync -au docs/$(1)/*.txt $$(@D)/.build
$(Q)a2x $(6) -f $(2) -d book -L -r $(TOPDIR)/docs/images \ $$(Q)a2x $(6) -f $(2) -d book -L -r $$(TOPDIR)/docs/images \
-D $$(@D) $$(@D)/.build/$(1).txt -D $$(@D) $$(@D)/.build/$(1).txt
-$(Q)rm -rf $$(@D)/.build -$$(Q)rm -rf $$(@D)/.build
endef endef
################################################################################ ################################################################################
@ -82,7 +85,7 @@ $(call GENDOC_INNER,$(1),text,text,text,text)
$(call GENDOC_INNER,$(1),epub,epub,epub,ePUB) $(call GENDOC_INNER,$(1),epub,epub,epub,ePUB)
clean: $(1)-clean clean: $(1)-clean
$(1)-clean: $(1)-clean:
$(Q)$(RM) -rf $(O)/docs/$(1) $$(Q)$$(RM) -rf $$(O)/docs/$(1)
.PHONY: $(1) $(1)-clean manual-update-lists .PHONY: $(1) $(1)-clean manual-update-lists
endef endef

View File

@ -35,11 +35,13 @@ ROOTFS_DEVICE_TABLES = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE) \
USERS_TABLE = $(BUILD_DIR)/_users_table.txt USERS_TABLE = $(BUILD_DIR)/_users_table.txt
ROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES)) ROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES))
# Since this function will be called from within an $(eval ...)
# all variable references except the arguments must be $$-quoted.
define ROOTFS_TARGET_INTERNAL define ROOTFS_TARGET_INTERNAL
# extra deps # extra deps
ROOTFS_$(2)_DEPENDENCIES += host-fakeroot host-makedevs \ ROOTFS_$(2)_DEPENDENCIES += host-fakeroot host-makedevs \
$(if $(PACKAGES_USERS),host-mkpasswd) $$(if $$(PACKAGES_USERS),host-mkpasswd)
ifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y) ifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y)
ROOTFS_$(2)_COMPRESS_EXT = .gz ROOTFS_$(2)_COMPRESS_EXT = .gz
@ -69,7 +71,7 @@ $$(BINARIES_DIR)/rootfs.$(1): target-finalize $$(ROOTFS_$(2)_DEPENDENCIES)
$$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),$$(call $$(hook))$$(sep)) $$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),$$(call $$(hook))$$(sep))
rm -f $$(FAKEROOT_SCRIPT) rm -f $$(FAKEROOT_SCRIPT)
rm -f $$(TARGET_DIR_WARNING_FILE) rm -f $$(TARGET_DIR_WARNING_FILE)
rm -f $(USERS_TABLE) rm -f $$(USERS_TABLE)
echo "chown -h -R 0:0 $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) echo "chown -h -R 0:0 $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT)
ifneq ($$(ROOTFS_DEVICE_TABLES),) ifneq ($$(ROOTFS_DEVICE_TABLES),)
cat $$(ROOTFS_DEVICE_TABLES) > $$(FULL_DEVICE_TABLE) cat $$(ROOTFS_DEVICE_TABLES) > $$(FULL_DEVICE_TABLE)
@ -80,17 +82,17 @@ endif
echo "$$(HOST_DIR)/usr/bin/makedevs -d $$(FULL_DEVICE_TABLE) $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) echo "$$(HOST_DIR)/usr/bin/makedevs -d $$(FULL_DEVICE_TABLE) $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT)
endif endif
ifneq ($$(ROOTFS_USERS_TABLES),) ifneq ($$(ROOTFS_USERS_TABLES),)
cat $$(ROOTFS_USERS_TABLES) >> $(USERS_TABLE) cat $$(ROOTFS_USERS_TABLES) >> $$(USERS_TABLE)
endif endif
printf '$(subst $(sep),\n,$(PACKAGES_USERS))' >> $(USERS_TABLE) printf '$$(subst $$(sep),\n,$$(PACKAGES_USERS))' >> $$(USERS_TABLE)
PATH=$(BR_PATH) $(TOPDIR)/support/scripts/mkusers $(USERS_TABLE) $(TARGET_DIR) >> $(FAKEROOT_SCRIPT) PATH=$$(BR_PATH) $$(TOPDIR)/support/scripts/mkusers $$(USERS_TABLE) $$(TARGET_DIR) >> $$(FAKEROOT_SCRIPT)
echo "$$(ROOTFS_$(2)_CMD)" >> $$(FAKEROOT_SCRIPT) echo "$$(ROOTFS_$(2)_CMD)" >> $$(FAKEROOT_SCRIPT)
chmod a+x $$(FAKEROOT_SCRIPT) chmod a+x $$(FAKEROOT_SCRIPT)
PATH=$(BR_PATH) $$(HOST_DIR)/usr/bin/fakeroot -- $$(FAKEROOT_SCRIPT) PATH=$$(BR_PATH) $$(HOST_DIR)/usr/bin/fakeroot -- $$(FAKEROOT_SCRIPT)
$(INSTALL) -m 0644 support/misc/target-dir-warning.txt $$(TARGET_DIR_WARNING_FILE) $$(INSTALL) -m 0644 support/misc/target-dir-warning.txt $$(TARGET_DIR_WARNING_FILE)
-@rm -f $$(FAKEROOT_SCRIPT) $$(FULL_DEVICE_TABLE) -@rm -f $$(FAKEROOT_SCRIPT) $$(FULL_DEVICE_TABLE)
ifneq ($$(ROOTFS_$(2)_COMPRESS_CMD),) ifneq ($$(ROOTFS_$(2)_COMPRESS_CMD),)
PATH=$(BR_PATH) $$(ROOTFS_$(2)_COMPRESS_CMD) $$@ > $$@$$(ROOTFS_$(2)_COMPRESS_EXT) PATH=$$(BR_PATH) $$(ROOTFS_$(2)_COMPRESS_CMD) $$@ > $$@$$(ROOTFS_$(2)_COMPRESS_EXT)
endif endif
rootfs-$(1)-show-depends: rootfs-$(1)-show-depends:

View File

@ -65,7 +65,7 @@ define inner-autotools-package
ifndef $(2)_LIBTOOL_PATCH ifndef $(2)_LIBTOOL_PATCH
ifdef $(3)_LIBTOOL_PATCH ifdef $(3)_LIBTOOL_PATCH
$(2)_LIBTOOL_PATCH = $($(3)_LIBTOOL_PATCH) $(2)_LIBTOOL_PATCH = $$($(3)_LIBTOOL_PATCH)
else else
$(2)_LIBTOOL_PATCH ?= YES $(2)_LIBTOOL_PATCH ?= YES
endif endif
@ -73,25 +73,28 @@ endif
ifndef $(2)_MAKE ifndef $(2)_MAKE
ifdef $(3)_MAKE ifdef $(3)_MAKE
$(2)_MAKE = $($(3)_MAKE) $(2)_MAKE = $$($(3)_MAKE)
else else
$(2)_MAKE ?= $(MAKE) $(2)_MAKE ?= $$(MAKE)
endif endif
endif endif
ifndef $(2)_AUTORECONF ifndef $(2)_AUTORECONF
ifdef $(3)_AUTORECONF ifdef $(3)_AUTORECONF
$(2)_AUTORECONF = $($(3)_AUTORECONF) $(2)_AUTORECONF = $$($(3)_AUTORECONF)
else else
$(2)_AUTORECONF ?= NO $(2)_AUTORECONF ?= NO
endif endif
endif endif
ifeq ($(4),host)
$(2)_AUTORECONF_OPT ?= $$($(3)_AUTORECONF_OPT)
endif
$(2)_CONF_ENV ?= $(2)_CONF_ENV ?=
$(2)_CONF_OPT ?= $(2)_CONF_OPT ?=
$(2)_MAKE_ENV ?= $(2)_MAKE_ENV ?=
$(2)_MAKE_OPT ?= $(2)_MAKE_OPT ?=
$(2)_AUTORECONF_OPT ?= $($(3)_AUTORECONF_OPT)
$(2)_INSTALL_OPT ?= install $(2)_INSTALL_OPT ?= install
$(2)_INSTALL_STAGING_OPT ?= DESTDIR=$$(STAGING_DIR) install $(2)_INSTALL_STAGING_OPT ?= DESTDIR=$$(STAGING_DIR) install
$(2)_INSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) install $(2)_INSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) install
@ -175,7 +178,7 @@ $(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
# #
define LIBTOOL_PATCH_HOOK define LIBTOOL_PATCH_HOOK
@$$(call MESSAGE,"Patching libtool") @$$(call MESSAGE,"Patching libtool")
$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES" \ $$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES" \
-a "$$($$(PKG)_AUTORECONF)" != "YES"; then \ -a "$$($$(PKG)_AUTORECONF)" != "YES"; then \
for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \ for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | \ ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | \
@ -201,8 +204,8 @@ endif
# #
define AUTORECONF_HOOK define AUTORECONF_HOOK
@$$(call MESSAGE,"Autoreconfiguring") @$$(call MESSAGE,"Autoreconfiguring")
$(Q)cd $$($$(PKG)_SRCDIR) && $(AUTORECONF) $$($$(PKG)_AUTORECONF_OPT) $$(Q)cd $$($$(PKG)_SRCDIR) && $$(AUTORECONF) $$($$(PKG)_AUTORECONF_OPT)
$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES"; then \ $$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES"; then \
for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \ for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | \ ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | \
sed -e 's/\([0-9].[0-9]*\).*/\1/' -e 's/\"//'`; \ sed -e 's/\([0-9].[0-9]*\).*/\1/' -e 's/\"//'`; \
@ -220,10 +223,11 @@ endef
# This must be repeated from inner-generic-package, otherwise we get an empty # This must be repeated from inner-generic-package, otherwise we get an empty
# _DEPENDENCIES if _AUTORECONF is YES. Also filter the result of _AUTORECONF # _DEPENDENCIES if _AUTORECONF is YES. Also filter the result of _AUTORECONF
# away from the non-host rule # away from the non-host rule
$(2)_DEPENDENCIES ?= $(filter-out host-automake host-autoconf host-libtool \ ifeq ($(4),host)
$(2)_DEPENDENCIES ?= $$(filter-out host-automake host-autoconf host-libtool \
host-toolchain $(1),\ host-toolchain $(1),\
$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES))))
endif
ifeq ($$($(2)_AUTORECONF),YES) ifeq ($$($(2)_AUTORECONF),YES)
$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK $(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK
@ -263,9 +267,9 @@ endif
ifndef $(2)_INSTALL_STAGING_CMDS ifndef $(2)_INSTALL_STAGING_CMDS
define $(2)_INSTALL_STAGING_CMDS define $(2)_INSTALL_STAGING_CMDS
$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_SRCDIR) $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_SRCDIR)
for i in $$$$(find $(STAGING_DIR)/usr/lib* -name "*.la"); do \ for i in $$$$(find $$(STAGING_DIR)/usr/lib* -name "*.la"); do \
cp -f $$$$i $$$$i~; \ cp -f $$$$i $$$$i~; \
$$(SED) "s:\(['= ]\)/usr:\\1$(STAGING_DIR)/usr:g" $$$$i; \ $$(SED) "s:\(['= ]\)/usr:\\1$$(STAGING_DIR)/usr:g" $$$$i; \
done done
endef endef
endif endif

View File

@ -38,14 +38,14 @@ define inner-cmake-package
$(2)_CONF_ENV ?= $(2)_CONF_ENV ?=
$(2)_CONF_OPT ?= $(2)_CONF_OPT ?=
$(2)_MAKE ?= $(MAKE) $(2)_MAKE ?= $$(MAKE)
$(2)_MAKE_ENV ?= $(2)_MAKE_ENV ?=
$(2)_MAKE_OPT ?= $(2)_MAKE_OPT ?=
$(2)_INSTALL_HOST_OPT ?= install $(2)_INSTALL_HOST_OPT ?= install
$(2)_INSTALL_STAGING_OPT ?= DESTDIR=$$(STAGING_DIR) install $(2)_INSTALL_STAGING_OPT ?= DESTDIR=$$(STAGING_DIR) install
$(2)_INSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) install $(2)_INSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) install
$(2)_SRCDIR = $$($(2)_DIR)/$($(2)_SUBDIR) $(2)_SRCDIR = $$($(2)_DIR)/$$($(2)_SUBDIR)
$(2)_BUILDDIR = $$($(2)_SRCDIR) $(2)_BUILDDIR = $$($(2)_SRCDIR)
# #
@ -60,15 +60,15 @@ ifeq ($(4),target)
define $(2)_CONFIGURE_CMDS define $(2)_CONFIGURE_CMDS
(cd $$($$(PKG)_BUILDDIR) && \ (cd $$($$(PKG)_BUILDDIR) && \
rm -f CMakeCache.txt && \ rm -f CMakeCache.txt && \
PATH=$(BR_PATH) \ PATH=$$(BR_PATH) \
$$($$(PKG)_CONF_ENV) $(HOST_DIR)/usr/bin/cmake $$($$(PKG)_SRCDIR) \ $$($$(PKG)_CONF_ENV) $$(HOST_DIR)/usr/bin/cmake $$($$(PKG)_SRCDIR) \
-DCMAKE_TOOLCHAIN_FILE="$$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake" \ -DCMAKE_TOOLCHAIN_FILE="$$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake" \
-DCMAKE_BUILD_TYPE=$(if $(BR2_ENABLE_DEBUG),Debug,Release) \ -DCMAKE_BUILD_TYPE=$$(if $$(BR2_ENABLE_DEBUG),Debug,Release) \
-DCMAKE_INSTALL_PREFIX="/usr" \ -DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_COLOR_MAKEFILE=OFF \ -DCMAKE_COLOR_MAKEFILE=OFF \
-DBUILD_TESTING=OFF \ -DBUILD_TESTING=OFF \
-DBUILD_SHARED_LIBS=$(if $(BR2_PREFER_STATIC_LIB),OFF,ON) \ -DBUILD_SHARED_LIBS=$$(if $$(BR2_PREFER_STATIC_LIB),OFF,ON) \
-DUSE_CCACHE=$(if $(BR2_CCACHE),ON,OFF) \ -DUSE_CCACHE=$$(if $$(BR2_CCACHE),ON,OFF) \
$$($$(PKG)_CONF_OPT) \ $$($$(PKG)_CONF_OPT) \
) )
endef endef
@ -78,15 +78,15 @@ else
define $(2)_CONFIGURE_CMDS define $(2)_CONFIGURE_CMDS
(cd $$($$(PKG)_BUILDDIR) && \ (cd $$($$(PKG)_BUILDDIR) && \
rm -f CMakeCache.txt && \ rm -f CMakeCache.txt && \
PATH=$(BR_PATH) \ PATH=$$(BR_PATH) \
$(HOST_DIR)/usr/bin/cmake $$($$(PKG)_SRCDIR) \ $$(HOST_DIR)/usr/bin/cmake $$($$(PKG)_SRCDIR) \
-DCMAKE_INSTALL_SO_NO_EXE=0 \ -DCMAKE_INSTALL_SO_NO_EXE=0 \
-DCMAKE_FIND_ROOT_PATH="$$(HOST_DIR)" \ -DCMAKE_FIND_ROOT_PATH="$$(HOST_DIR)" \
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="BOTH" \ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="BOTH" \
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY="BOTH" \ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY="BOTH" \
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE="BOTH" \ -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE="BOTH" \
-DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)/usr" \ -DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)/usr" \
-DUSE_CCACHE=$(if $(BR2_CCACHE),ON,OFF) \ -DUSE_CCACHE=$$(if $$(BR2_CCACHE),ON,OFF) \
-DBUILD_TESTING=OFF \ -DBUILD_TESTING=OFF \
$$($$(PKG)_CONF_OPT) \ $$($$(PKG)_CONF_OPT) \
) )
@ -96,7 +96,9 @@ endif
# This must be repeated from inner-generic-package, otherwise we only get # This must be repeated from inner-generic-package, otherwise we only get
# host-cmake in _DEPENDENCIES because of the following line # host-cmake in _DEPENDENCIES because of the following line
$(2)_DEPENDENCIES ?= $(filter-out host-toolchain $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) ifeq ($(4),host)
$(2)_DEPENDENCIES ?= $$(filter-out host-toolchain $(1),$$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES))))
endif
$(2)_DEPENDENCIES += host-cmake $(2)_DEPENDENCIES += host-cmake
@ -107,11 +109,11 @@ $(2)_DEPENDENCIES += host-cmake
ifndef $(2)_BUILD_CMDS ifndef $(2)_BUILD_CMDS
ifeq ($(4),target) ifeq ($(4),target)
define $(2)_BUILD_CMDS define $(2)_BUILD_CMDS
$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_BUILDDIR) $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_BUILDDIR)
endef endef
else else
define $(2)_BUILD_CMDS define $(2)_BUILD_CMDS
$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_BUILDDIR) $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_BUILDDIR)
endef endef
endif endif
endif endif
@ -122,7 +124,7 @@ endif
# #
ifndef $(2)_INSTALL_CMDS ifndef $(2)_INSTALL_CMDS
define $(2)_INSTALL_CMDS define $(2)_INSTALL_CMDS
$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_HOST_OPT) -C $$($$(PKG)_BUILDDIR) $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_HOST_OPT) -C $$($$(PKG)_BUILDDIR)
endef endef
endif endif
@ -132,7 +134,7 @@ endif
# #
ifndef $(2)_INSTALL_STAGING_CMDS ifndef $(2)_INSTALL_STAGING_CMDS
define $(2)_INSTALL_STAGING_CMDS define $(2)_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_BUILDDIR) $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_BUILDDIR)
endef endef
endif endif
@ -142,7 +144,7 @@ endif
# #
ifndef $(2)_INSTALL_TARGET_CMDS ifndef $(2)_INSTALL_TARGET_CMDS
define $(2)_INSTALL_TARGET_CMDS define $(2)_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_TARGET_OPT) -C $$($$(PKG)_BUILDDIR) $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_TARGET_OPT) -C $$($$(PKG)_BUILDDIR)
endef endef
endif endif

View File

@ -282,7 +282,7 @@ define inner-generic-package
$(2)_TYPE = $(4) $(2)_TYPE = $(4)
$(2)_NAME = $(1) $(2)_NAME = $(1)
$(2)_RAWNAME = $(patsubst host-%,%,$(1)) $(2)_RAWNAME = $$(patsubst host-%,%,$(1))
# Keep the package version that may contain forward slashes in the _DL_VERSION # Keep the package version that may contain forward slashes in the _DL_VERSION
# variable, then replace all forward slashes ('/') by underscores ('_') to # variable, then replace all forward slashes ('/') by underscores ('_') to
@ -291,15 +291,15 @@ $(2)_RAWNAME = $(patsubst host-%,%,$(1))
# version control system branch or tag, for example remotes/origin/1_10_stable. # version control system branch or tag, for example remotes/origin/1_10_stable.
ifndef $(2)_VERSION ifndef $(2)_VERSION
ifdef $(3)_VERSION ifdef $(3)_VERSION
$(2)_DL_VERSION = $($(3)_VERSION) $(2)_DL_VERSION = $$($(3)_VERSION)
$(2)_VERSION = $(subst /,_,$($(3)_VERSION)) $(2)_VERSION := $$(subst /,_,$$($(3)_VERSION))
else else
$(2)_VERSION = undefined $(2)_VERSION = undefined
$(2)_DL_VERSION = undefined $(2)_DL_VERSION = undefined
endif endif
else else
$(2)_DL_VERSION = $($(2)_VERSION) $(2)_DL_VERSION = $$($(2)_VERSION)
$(2)_VERSION = $(subst /,_,$($(2)_VERSION)) $(2)_VERSION := $$(subst /,_,$$($(2)_VERSION))
endif endif
$(2)_BASE_NAME = $(1)-$$($(2)_VERSION) $(2)_BASE_NAME = $(1)-$$($(2)_VERSION)
@ -323,7 +323,7 @@ endif
ifndef $(2)_SOURCE ifndef $(2)_SOURCE
ifdef $(3)_SOURCE ifdef $(3)_SOURCE
$(2)_SOURCE = $($(3)_SOURCE) $(2)_SOURCE = $$($(3)_SOURCE)
else else
$(2)_SOURCE ?= $$($(2)_RAWNAME)-$$($(2)_VERSION).tar.gz $(2)_SOURCE ?= $$($(2)_RAWNAME)-$$($(2)_VERSION).tar.gz
endif endif
@ -331,22 +331,22 @@ endif
ifndef $(2)_PATCH ifndef $(2)_PATCH
ifdef $(3)_PATCH ifdef $(3)_PATCH
$(2)_PATCH = $($(3)_PATCH) $(2)_PATCH = $$($(3)_PATCH)
endif endif
endif endif
ifndef $(2)_SITE ifndef $(2)_SITE
ifdef $(3)_SITE ifdef $(3)_SITE
$(2)_SITE = $($(3)_SITE) $(2)_SITE = $$($(3)_SITE)
endif endif
endif endif
ifndef $(2)_SITE_METHOD ifndef $(2)_SITE_METHOD
ifdef $(3)_SITE_METHOD ifdef $(3)_SITE_METHOD
$(2)_SITE_METHOD = $($(3)_SITE_METHOD) $(2)_SITE_METHOD = $$($(3)_SITE_METHOD)
else else
# Try automatic detection using the scheme part of the URI # Try automatic detection using the scheme part of the URI
$(2)_SITE_METHOD = $(call geturischeme,$($(2)_SITE)) $(2)_SITE_METHOD = $$(call geturischeme,$$($(2)_SITE))
endif endif
endif endif
@ -358,7 +358,7 @@ endif
ifndef $(2)_LICENSE ifndef $(2)_LICENSE
ifdef $(3)_LICENSE ifdef $(3)_LICENSE
$(2)_LICENSE = $($(3)_LICENSE) $(2)_LICENSE = $$($(3)_LICENSE)
endif endif
endif endif
@ -366,13 +366,13 @@ $(2)_LICENSE ?= unknown
ifndef $(2)_LICENSE_FILES ifndef $(2)_LICENSE_FILES
ifdef $(3)_LICENSE_FILES ifdef $(3)_LICENSE_FILES
$(2)_LICENSE_FILES = $($(3)_LICENSE_FILES) $(2)_LICENSE_FILES = $$($(3)_LICENSE_FILES)
endif endif
endif endif
ifndef $(2)_REDISTRIBUTE ifndef $(2)_REDISTRIBUTE
ifdef $(3)_REDISTRIBUTE ifdef $(3)_REDISTRIBUTE
$(2)_REDISTRIBUTE = $($(3)_REDISTRIBUTE) $(2)_REDISTRIBUTE = $$($(3)_REDISTRIBUTE)
endif endif
endif endif
@ -383,8 +383,10 @@ $(2)_REDISTRIBUTE ?= YES
# dependency # dependency
$(2)_ADD_TOOLCHAIN_DEPENDENCY ?= YES $(2)_ADD_TOOLCHAIN_DEPENDENCY ?= YES
$(2)_DEPENDENCIES ?= $(filter-out host-toolchain $(1),\ ifeq ($(4),host)
$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) $(2)_DEPENDENCIES ?= $$(filter-out host-toolchain $(1),\
$$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES))))
endif
ifeq ($(4),target) ifeq ($(4),target)
ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES) ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES)
$(2)_DEPENDENCIES += toolchain $(2)_DEPENDENCIES += toolchain
@ -414,8 +416,8 @@ $(2)_TARGET_DIRCLEAN = $$($(2)_DIR)/.stamp_dircleaned
# default extract command # default extract command
$(2)_EXTRACT_CMDS ?= \ $(2)_EXTRACT_CMDS ?= \
$$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \ $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $$(DL_DIR)/$$($(2)_SOURCE) | \
$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -) $$(TAR) $$(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $$(TAR_OPTIONS) -)
# pre/post-steps hooks # pre/post-steps hooks
$(2)_PRE_DOWNLOAD_HOOKS ?= $(2)_PRE_DOWNLOAD_HOOKS ?=
@ -489,7 +491,7 @@ $(1)-configure: $$($(2)_TARGET_CONFIGURE)
$$($(2)_TARGET_CONFIGURE): | $$($(2)_FINAL_DEPENDENCIES) $$($(2)_TARGET_CONFIGURE): | $$($(2)_FINAL_DEPENDENCIES)
$$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dirs prepare $$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dirs prepare
ifeq ($(filter $(1),$(DEPENDENCIES_HOST_PREREQ)),) ifeq ($$(filter $(1),$$(DEPENDENCIES_HOST_PREREQ)),)
$$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dependencies $$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dependencies
endif endif
@ -532,11 +534,11 @@ $(1)-show-depends:
@echo $$($(2)_FINAL_DEPENDENCIES) @echo $$($(2)_FINAL_DEPENDENCIES)
$(1)-graph-depends: $(1)-graph-depends:
@$(INSTALL) -d $(O)/graphs @$$(INSTALL) -d $$(O)/graphs
@cd "$(CONFIG_DIR)"; \ @cd "$$(CONFIG_DIR)"; \
$(TOPDIR)/support/scripts/graph-depends -p $(1) $(BR2_GRAPH_DEPS_OPTS) \ $$(TOPDIR)/support/scripts/graph-depends -p $(1) $$(BR2_GRAPH_DEPS_OPTS) \
|tee $(O)/graphs/$$(@).dot \ |tee $$(O)/graphs/$$(@).dot \
|dot $(BR2_GRAPH_DOT_OPTS) -T$(BR_GRAPH_OUT) -o $(O)/graphs/$$(@).$(BR_GRAPH_OUT) |dot $$(BR2_GRAPH_DOT_OPTS) -T$$(BR_GRAPH_OUT) -o $$(O)/graphs/$$(@).$$(BR_GRAPH_OUT)
$(1)-dirclean: $$($(2)_TARGET_DIRCLEAN) $(1)-dirclean: $$($(2)_TARGET_DIRCLEAN)
@ -570,7 +572,7 @@ $$($(2)_TARGET_RSYNC): PKG=$(2)
$$($(2)_TARGET_RSYNC_SOURCE): SRCDIR=$$($(2)_OVERRIDE_SRCDIR) $$($(2)_TARGET_RSYNC_SOURCE): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
$$($(2)_TARGET_RSYNC_SOURCE): PKG=$(2) $$($(2)_TARGET_RSYNC_SOURCE): PKG=$(2)
$$($(2)_TARGET_PATCH): PKG=$(2) $$($(2)_TARGET_PATCH): PKG=$(2)
$$($(2)_TARGET_PATCH): RAWNAME=$(patsubst host-%,%,$(1)) $$($(2)_TARGET_PATCH): RAWNAME=$$(patsubst host-%,%,$(1))
$$($(2)_TARGET_PATCH): PKGDIR=$(pkgdir) $$($(2)_TARGET_PATCH): PKGDIR=$(pkgdir)
$$($(2)_TARGET_EXTRACT): PKG=$(2) $$($(2)_TARGET_EXTRACT): PKG=$(2)
$$($(2)_TARGET_SOURCE): PKG=$(2) $$($(2)_TARGET_SOURCE): PKG=$(2)
@ -581,9 +583,9 @@ $$($(2)_TARGET_DIRCLEAN): PKG=$(2)
# kernel case, the bootloaders case, and the normal packages case. # kernel case, the bootloaders case, and the normal packages case.
ifeq ($(1),linux) ifeq ($(1),linux)
$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL $(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
else ifneq ($(filter boot/%,$(pkgdir)),) else ifneq ($$(filter boot/%,$(pkgdir)),)
$(2)_KCONFIG_VAR = BR2_TARGET_$(2) $(2)_KCONFIG_VAR = BR2_TARGET_$(2)
else ifneq ($(filter toolchain/%,$(pkgdir)),) else ifneq ($$(filter toolchain/%,$(pkgdir)),)
$(2)_KCONFIG_VAR = BR2_$(2) $(2)_KCONFIG_VAR = BR2_$(2)
else else
$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2) $(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
@ -599,7 +601,7 @@ ifeq ($$($(2)_REDISTRIBUTE),YES)
ifneq ($$($(2)_SITE_METHOD),local) ifneq ($$($(2)_SITE_METHOD),local)
ifneq ($$($(2)_SITE_METHOD),override) ifneq ($$($(2)_SITE_METHOD),override)
# Packages that have a tarball need it downloaded and extracted beforehand # Packages that have a tarball need it downloaded and extracted beforehand
$(1)-legal-info: $(1)-extract $(REDIST_SOURCES_DIR_$(call UPPERCASE,$(4))) $(1)-legal-info: $(1)-extract $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))
$(2)_MANIFEST_TARBALL = $$($(2)_SOURCE) $(2)_MANIFEST_TARBALL = $$($(2)_SOURCE)
endif endif
endif endif
@ -609,40 +611,37 @@ $(2)_MANIFEST_TARBALL ?= not saved
# legal-info: produce legally relevant info. # legal-info: produce legally relevant info.
$(1)-legal-info: $(1)-legal-info:
# Packages without a source are assumed to be part of Buildroot, skip them. # Packages without a source are assumed to be part of Buildroot, skip them.
$(foreach hook,$($(2)_PRE_LEGAL_INFO_HOOKS),$(call $(hook))$(sep)) $$(foreach hook,$$($(2)_PRE_LEGAL_INFO_HOOKS),$$(call $$(hook))$$(sep))
ifneq ($(call qstrip,$$($(2)_SOURCE)),) ifneq ($$(call qstrip,$$($(2)_SOURCE)),)
ifeq ($$($(2)_SITE_METHOD),local) ifeq ($$($(2)_SITE_METHOD),local)
# Packages without a tarball: don't save and warn # Packages without a tarball: don't save and warn
@$(call legal-warning-pkg-savednothing,$$($(2)_RAWNAME),local) @$$(call legal-warning-pkg-savednothing,$$($(2)_RAWNAME),local)
else ifneq ($$($(2)_OVERRIDE_SRCDIR),) else ifneq ($$($(2)_OVERRIDE_SRCDIR),)
@$(call legal-warning-pkg-savednothing,$$($(2)_RAWNAME),override) @$$(call legal-warning-pkg-savednothing,$$($(2)_RAWNAME),override)
else else
# Other packages # Other packages
# Save license files if defined # Save license files if defined
ifeq ($(call qstrip,$$($(2)_LICENSE_FILES)),) ifeq ($$(call qstrip,$$($(2)_LICENSE_FILES)),)
@$(call legal-license-nofiles,$$($(2)_RAWNAME),$(call UPPERCASE,$(4))) @$$(call legal-license-nofiles,$$($(2)_RAWNAME),$$(call UPPERCASE,$(4)))
@$(call legal-warning-pkg,$$($(2)_RAWNAME),cannot save license ($(2)_LICENSE_FILES not defined)) @$$(call legal-warning-pkg,$$($(2)_RAWNAME),cannot save license ($(2)_LICENSE_FILES not defined))
else else
# Double dollar signs are really needed here, to catch host packages @$$(foreach F,$$($(2)_LICENSE_FILES),$$(call legal-license-file,$$($(2)_RAWNAME),$$(F),$$($(2)_DIR)/$$(F),$$(call UPPERCASE,$(4)))$$(sep))
# without explicit HOST_FOO_LICENSE_FILES assignment, also in case they
# have multiple license files.
@$$(foreach F,$$($(2)_LICENSE_FILES),$$(call legal-license-file,$$($(2)_RAWNAME),$$(F),$$($(2)_DIR)/$$(F),$(call UPPERCASE,$(4)))$$(sep))
endif # license files endif # license files
ifeq ($$($(2)_REDISTRIBUTE),YES) ifeq ($$($(2)_REDISTRIBUTE),YES)
# Copy the source tarball (just hardlink if possible) # Copy the source tarball (just hardlink if possible)
@cp -l $(DL_DIR)/$$($(2)_SOURCE) $(REDIST_SOURCES_DIR_$(call UPPERCASE,$(4))) 2>/dev/null || \ @cp -l $$(DL_DIR)/$$($(2)_SOURCE) $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4))) 2>/dev/null || \
cp $(DL_DIR)/$$($(2)_SOURCE) $(REDIST_SOURCES_DIR_$(call UPPERCASE,$(4))) cp $$(DL_DIR)/$$($(2)_SOURCE) $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))
endif # redistribute endif # redistribute
endif # other packages endif # other packages
@$(call legal-manifest,$$($(2)_RAWNAME),$$($(2)_VERSION),$$($(2)_LICENSE),$$($(2)_MANIFEST_LICENSE_FILES),$$($(2)_MANIFEST_TARBALL),$(call UPPERCASE,$(4))) @$$(call legal-manifest,$$($(2)_RAWNAME),$$($(2)_VERSION),$$($(2)_LICENSE),$$($(2)_MANIFEST_LICENSE_FILES),$$($(2)_MANIFEST_TARBALL),$$(call UPPERCASE,$(4)))
endif # ifneq ($(call qstrip,$$($(2)_SOURCE)),) endif # ifneq ($$(call qstrip,$$($(2)_SOURCE)),)
$(foreach hook,$($(2)_POST_LEGAL_INFO_HOOKS),$(call $(hook))$(sep)) $$(foreach hook,$$($(2)_POST_LEGAL_INFO_HOOKS),$$(call $$(hook))$$(sep))
# add package to the general list of targets if requested by the buildroot # add package to the general list of targets if requested by the buildroot
# configuration # configuration
@ -685,8 +684,8 @@ endif # SITE_METHOD
# ZCAT="gzip -d -c", and to check for the dependency we only want 'gzip'. # ZCAT="gzip -d -c", and to check for the dependency we only want 'gzip'.
# Do not add xzcat to the list of required dependencies, as it gets built # Do not add xzcat to the list of required dependencies, as it gets built
# automatically if it isn't found. # automatically if it isn't found.
ifneq ($(call suitable-extractor,$($(2)_SOURCE)),$(XZCAT)) ifneq ($$(call suitable-extractor,$$($(2)_SOURCE)),$$(XZCAT))
DL_TOOLS_DEPENDENCIES += $(firstword $(call suitable-extractor,$($(2)_SOURCE))) DL_TOOLS_DEPENDENCIES += $$(firstword $$(call suitable-extractor,$$($(2)_SOURCE)))
endif endif
endif # $(2)_KCONFIG_VAR endif # $(2)_KCONFIG_VAR

View File

@ -34,10 +34,10 @@
define inner-luarocks-package define inner-luarocks-package
$(2)_BUILD_OPT ?= $(2)_BUILD_OPT ?=
$(2)_SUBDIR ?= $(1)-$(shell echo "$($(3)_VERSION)" | sed -e "s/-[0-9]$$//") $(2)_SUBDIR ?= $(1)-$$(shell echo "$$($(3)_VERSION)" | sed -e "s/-[0-9]$$$$//")
$(2)_ROCKSPEC ?= $(1)-$($(3)_VERSION).rockspec $(2)_ROCKSPEC ?= $(1)-$$($(3)_VERSION).rockspec
$(2)_SOURCE ?= $(1)-$($(3)_VERSION).src.rock $(2)_SOURCE ?= $(1)-$$($(3)_VERSION).src.rock
$(2)_SITE ?= $(call qstrip,$(BR2_LUAROCKS_MIRROR)) $(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR))
# Since we do not support host-luarocks-package, we know this is # Since we do not support host-luarocks-package, we know this is
# a target package, and can just add the required dependencies # a target package, and can just add the required dependencies
@ -49,7 +49,7 @@ $(2)_DEPENDENCIES += host-luarocks luainterpreter
ifndef $(2)_EXTRACT_CMDS ifndef $(2)_EXTRACT_CMDS
define $(2)_EXTRACT_CMDS define $(2)_EXTRACT_CMDS
cd $$($(2)_DIR)/.. && \ cd $$($(2)_DIR)/.. && \
$$(LUAROCKS_RUN) unpack --force $(DL_DIR)/$$($(2)_SOURCE) $$(LUAROCKS_RUN) unpack --force $$(DL_DIR)/$$($(2)_SOURCE)
endef endef
endif endif

View File

@ -51,18 +51,18 @@ define $(2)_CONFIGURE_CMDS
cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
PERL_MM_USE_DEFAULT=1 \ PERL_MM_USE_DEFAULT=1 \
perl Build.PL \ perl Build.PL \
--config ar="$(TARGET_AR)" \ --config ar="$$(TARGET_AR)" \
--config full_ar="$(TARGET_AR)" \ --config full_ar="$$(TARGET_AR)" \
--config cc="$(TARGET_CC)" \ --config cc="$$(TARGET_CC)" \
--config ccflags="$(TARGET_CFLAGS)" \ --config ccflags="$$(TARGET_CFLAGS)" \
--config ld="$(TARGET_CC)" \ --config ld="$$(TARGET_CC)" \
--config lddlflags="-shared $(TARGET_LDFLAGS)" \ --config lddlflags="-shared $$(TARGET_LDFLAGS)" \
--config ldflags="$(TARGET_LDFLAGS)" \ --config ldflags="$$(TARGET_LDFLAGS)" \
--include_dirs $$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$(PERL_ARCHNAME)/CORE \ --include_dirs $$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$$(PERL_ARCHNAME)/CORE \
--destdir $$(TARGET_DIR) \ --destdir $$(TARGET_DIR) \
--installdirs vendor \ --installdirs vendor \
--install_path lib=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \ --install_path lib=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \
--install_path arch=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$(PERL_ARCHNAME) \ --install_path arch=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \
--install_path bin=/usr/bin \ --install_path bin=/usr/bin \
--install_path script=/usr/bin \ --install_path script=/usr/bin \
--install_path bindoc=/usr/share/man/man1 \ --install_path bindoc=/usr/share/man/man1 \
@ -72,17 +72,17 @@ define $(2)_CONFIGURE_CMDS
PERL_MM_USE_DEFAULT=1 \ PERL_MM_USE_DEFAULT=1 \
PERL_AUTOINSTALL=--skipdeps \ PERL_AUTOINSTALL=--skipdeps \
perl Makefile.PL \ perl Makefile.PL \
AR="$(TARGET_AR)" \ AR="$$(TARGET_AR)" \
FULL_AR="$(TARGET_AR)" \ FULL_AR="$$(TARGET_AR)" \
CC="$(TARGET_CC)" \ CC="$$(TARGET_CC)" \
CCFLAGS="$(TARGET_CFLAGS)" \ CCFLAGS="$$(TARGET_CFLAGS)" \
LD="$(TARGET_CC)" \ LD="$$(TARGET_CC)" \
LDDLFLAGS="-shared $(TARGET_LDFLAGS)" \ LDDLFLAGS="-shared $$(TARGET_LDFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \ LDFLAGS="$$(TARGET_LDFLAGS)" \
DESTDIR=$$(TARGET_DIR) \ DESTDIR=$$(TARGET_DIR) \
INSTALLDIRS=vendor \ INSTALLDIRS=vendor \
INSTALLVENDORLIB=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \ INSTALLVENDORLIB=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \
INSTALLVENDORARCH=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$(PERL_ARCHNAME) \ INSTALLVENDORARCH=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \
INSTALLVENDORBIN=/usr/bin \ INSTALLVENDORBIN=/usr/bin \
INSTALLVENDORSCRIPT=/usr/bin \ INSTALLVENDORSCRIPT=/usr/bin \
INSTALLVENDORMAN1DIR=/usr/share/man/man1 \ INSTALLVENDORMAN1DIR=/usr/share/man/man1 \
@ -125,8 +125,8 @@ define $(2)_BUILD_CMDS
cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
perl Build $$($(2)_BUILD_OPT) build; \ perl Build $$($(2)_BUILD_OPT) build; \
else \ else \
$(MAKE1) \ $$(MAKE1) \
PERL_INC=$$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$(PERL_ARCHNAME)/CORE \ PERL_INC=$$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$$(PERL_ARCHNAME)/CORE \
$$($(2)_BUILD_OPT) pure_all; \ $$($(2)_BUILD_OPT) pure_all; \
fi fi
endef endef
@ -137,7 +137,7 @@ define $(2)_BUILD_CMDS
cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
perl Build $$($(2)_BUILD_OPT) build; \ perl Build $$($(2)_BUILD_OPT) build; \
else \ else \
$(MAKE1) $$($(2)_BUILD_OPT) pure_all; \ $$(MAKE1) $$($(2)_BUILD_OPT) pure_all; \
fi fi
endef endef
endif endif
@ -152,7 +152,7 @@ define $(2)_INSTALL_CMDS
cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
perl Build $$($(2)_INSTALL_TARGET_OPT) install; \ perl Build $$($(2)_INSTALL_TARGET_OPT) install; \
else \ else \
$(MAKE1) $$($(2)_INSTALL_TARGET_OPT) pure_install; \ $$(MAKE1) $$($(2)_INSTALL_TARGET_OPT) pure_install; \
fi fi
endef endef
endif endif
@ -166,7 +166,7 @@ define $(2)_INSTALL_TARGET_CMDS
cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
perl Build $$($(2)_INSTALL_TARGET_OPT) install; \ perl Build $$($(2)_INSTALL_TARGET_OPT) install; \
else \ else \
$(MAKE1) $$($(2)_INSTALL_TARGET_OPT) pure_install; \ $$(MAKE1) $$($(2)_INSTALL_TARGET_OPT) pure_install; \
fi fi
endef endef
endif endif

View File

@ -82,7 +82,7 @@ HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPT = \
define inner-python-package define inner-python-package
$(2)_SRCDIR = $$($(2)_DIR)/$($(2)_SUBDIR) $(2)_SRCDIR = $$($(2)_DIR)/$$($(2)_SUBDIR)
$(2)_BUILDDIR = $$($(2)_SRCDIR) $(2)_BUILDDIR = $$($(2)_SRCDIR)
$(2)_ENV ?= $(2)_ENV ?=
@ -91,7 +91,7 @@ $(2)_INSTALL_OPT ?=
ifndef $(2)_SETUP_TYPE ifndef $(2)_SETUP_TYPE
ifdef $(3)_SETUP_TYPE ifdef $(3)_SETUP_TYPE
$(2)_SETUP_TYPE = $($(3)_SETUP_TYPE) $(2)_SETUP_TYPE = $$($(3)_SETUP_TYPE)
else else
$$(error "$(2)_SETUP_TYPE must be set") $$(error "$(2)_SETUP_TYPE must be set")
endif endif
@ -138,7 +138,9 @@ endif
# depending on the package characteristics, and shouldn't be derived # depending on the package characteristics, and shouldn't be derived
# automatically from the dependencies of the corresponding target # automatically from the dependencies of the corresponding target
# package. # package.
$(2)_DEPENDENCIES ?= $(filter-out host-python host-python3 host-python-setuptools host-toolchain $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) ifeq ($(4),host)
$(2)_DEPENDENCIES ?= $$(filter-out host-python host-python3 host-python-setuptools host-toolchain $(1),$$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES))))
endif
# Target packages need both the python interpreter on the target (for # Target packages need both the python interpreter on the target (for
# runtime) and the python interpreter on the host (for # runtime) and the python interpreter on the host (for
@ -155,19 +157,19 @@ $(2)_DEPENDENCIES ?= $(filter-out host-python host-python3 host-python-setuptool
# - otherwise, we depend on the one requested by *_NEEDS_HOST_PYTHON. # - otherwise, we depend on the one requested by *_NEEDS_HOST_PYTHON.
# #
ifeq ($(4),target) ifeq ($(4),target)
$(2)_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),host-python3 python3,host-python python) $(2)_DEPENDENCIES += $$(if $$(BR2_PACKAGE_PYTHON3),host-python3 python3,host-python python)
else else
ifeq ($($(2)_NEEDS_HOST_PYTHON),) ifeq ($$($(2)_NEEDS_HOST_PYTHON),)
$(2)_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) $(2)_DEPENDENCIES += $$(if $$(BR2_PACKAGE_PYTHON3),host-python3,host-python)
else else
ifeq ($($(2)_NEEDS_HOST_PYTHON),python2) ifeq ($$($(2)_NEEDS_HOST_PYTHON),python2)
$(2)_DEPENDENCIES += host-python $(2)_DEPENDENCIES += host-python
else ifeq ($($(2)_NEEDS_HOST_PYTHON),python3) else ifeq ($$($(2)_NEEDS_HOST_PYTHON),python3)
$(2)_DEPENDENCIES += host-python3 $(2)_DEPENDENCIES += host-python3
else else
$$(error Incorrect value '$($(2)_NEEDS_HOST_PYTHON)' for $(2)_NEEDS_HOST_PYTHON) $$(error Incorrect value '$$($(2)_NEEDS_HOST_PYTHON)' for $(2)_NEEDS_HOST_PYTHON)
endif endif
endif # ($($(2)_NEEDS_HOST_PYTHON),) endif # ($$($(2)_NEEDS_HOST_PYTHON),)
endif # ($(4),target) endif # ($(4),target)
# Setuptools based packages will need host-python-setuptools (both # Setuptools based packages will need host-python-setuptools (both
@ -196,12 +198,12 @@ endif
# - otherwise, we use the one requested by *_NEEDS_HOST_PYTHON. # - otherwise, we use the one requested by *_NEEDS_HOST_PYTHON.
# #
ifeq ($(4),target) ifeq ($(4),target)
$(2)_PYTHON_INTERPRETER = $(HOST_DIR)/usr/bin/python $(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/usr/bin/python
else else
ifeq ($($(2)_NEEDS_HOST_PYTHON),) ifeq ($$($(2)_NEEDS_HOST_PYTHON),)
$(2)_PYTHON_INTERPRETER = $(HOST_DIR)/usr/bin/python $(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/usr/bin/python
else else
$(2)_PYTHON_INTERPRETER = $(HOST_DIR)/usr/bin/$($(2)_NEEDS_HOST_PYTHON) $(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/usr/bin/$$($(2)_NEEDS_HOST_PYTHON)
endif endif
endif endif

View File

@ -35,8 +35,8 @@
define inner-virtual-package define inner-virtual-package
# Ensure the virtual package has an implementation defined. # Ensure the virtual package has an implementation defined.
ifeq ($(BR2_PACKAGE_HAS_$(2)),y) ifeq ($$(BR2_PACKAGE_HAS_$(2)),y)
ifeq ($(call qstrip,$(BR2_PACKAGE_PROVIDES_$(2))),) ifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),)
$$(error No implementation selected for virtual package $(1). Configuration error) $$(error No implementation selected for virtual package $(1). Configuration error)
endif endif
endif endif
@ -50,11 +50,13 @@ HOST_$(3)_VERSION = virtual
# This must be repeated from inner-generic-package, otherwise we get an empty # This must be repeated from inner-generic-package, otherwise we get an empty
# _DEPENDENCIES # _DEPENDENCIES
$(2)_DEPENDENCIES ?= $(filter-out host-toolchain $(1),\ ifeq ($(4),host)
$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) $(2)_DEPENDENCIES ?= $$(filter-out host-toolchain $(1),\
$$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES))))
endif
# Add dependency against the provider # Add dependency against the provider
$(2)_DEPENDENCIES += $(call qstrip,$(BR2_PACKAGE_PROVIDES_$(2))) $(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2)))
# Call the generic package infrastructure to generate the necessary # Call the generic package infrastructure to generate the necessary
# make targets # make targets