package: add toolchain dependency to every target package
This commit makes the dependency from the target toolchain explicit. This way we can buid from command line a package that use inner-generic-package right after the configuration phase, example: make clean <package-name> Also remove TARGETS_ALL because the only purpose was to add toolchain dependency so it's superseded by this commit. To prevent circular dependency add the new variable <pkgname>_ADD_TOOLCHAIN_DEPENDENCY to avoid adding the toolchain dependency for toolchain packages. This is also a step forward supporting top-level parallel make. Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
6f13130ac9
commit
b2fd9f90e2
8
Makefile
8
Makefile
@ -399,7 +399,6 @@ TARGETS+=target-post-image
|
|||||||
|
|
||||||
TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
|
TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
|
||||||
TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
|
TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
|
||||||
TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
|
|
||||||
|
|
||||||
# host-* dependencies have to be handled specially, as those aren't
|
# host-* dependencies have to be handled specially, as those aren't
|
||||||
# visible in Kconfig and hence not added to a variable like TARGETS.
|
# visible in Kconfig and hence not added to a variable like TARGETS.
|
||||||
@ -422,9 +421,6 @@ HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS)))
|
|||||||
TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\
|
TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\
|
||||||
$(TARGETS) $(BASE_TARGETS) $(TARGETS_HOST_DEPS) $(HOST_DEPS))))
|
$(TARGETS) $(BASE_TARGETS) $(TARGETS_HOST_DEPS) $(HOST_DEPS))))
|
||||||
|
|
||||||
# all targets depend on the crosscompiler and it's prerequisites
|
|
||||||
$(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
|
|
||||||
|
|
||||||
dirs: $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
|
dirs: $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
|
||||||
$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
|
$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
|
||||||
|
|
||||||
@ -433,11 +429,11 @@ $(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG)
|
|||||||
|
|
||||||
prepare: $(BUILD_DIR)/buildroot-config/auto.conf
|
prepare: $(BUILD_DIR)/buildroot-config/auto.conf
|
||||||
|
|
||||||
world: $(BASE_TARGETS) $(TARGETS_ALL)
|
world: $(TARGETS)
|
||||||
|
|
||||||
.PHONY: all world toolchain dirs clean distclean source outputmakefile \
|
.PHONY: all world toolchain dirs clean distclean source outputmakefile \
|
||||||
legal-info legal-info-prepare legal-info-clean printvars \
|
legal-info legal-info-prepare legal-info-clean printvars \
|
||||||
$(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
|
$(BASE_TARGETS) $(TARGETS) \
|
||||||
$(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) $(TARGETS_LEGAL_INFO) \
|
$(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) $(TARGETS_LEGAL_INFO) \
|
||||||
$(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
|
$(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
|
||||||
$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
|
$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
|
||||||
|
@ -31,6 +31,9 @@ endif
|
|||||||
GLIBC_LICENSE = GPLv2+ (programs), LGPLv2.1+, BSD-3c, MIT (library)
|
GLIBC_LICENSE = GPLv2+ (programs), LGPLv2.1+, BSD-3c, MIT (library)
|
||||||
GLIBC_LICENSE_FILES = $(addprefix $(GLIBC_SRC_SUBDIR)/,COPYING COPYING.LIB LICENSES)
|
GLIBC_LICENSE_FILES = $(addprefix $(GLIBC_SRC_SUBDIR)/,COPYING COPYING.LIB LICENSES)
|
||||||
|
|
||||||
|
# glibc is part of the toolchain so disable the toolchain dependency
|
||||||
|
GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
|
||||||
|
|
||||||
# Before (e)glibc is configured, we must have the first stage
|
# Before (e)glibc is configured, we must have the first stage
|
||||||
# cross-compiler and the kernel headers
|
# cross-compiler and the kernel headers
|
||||||
GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-gawk
|
GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-gawk
|
||||||
|
@ -17,6 +17,9 @@ LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.xz
|
|||||||
|
|
||||||
LINUX_HEADERS_INSTALL_STAGING = YES
|
LINUX_HEADERS_INSTALL_STAGING = YES
|
||||||
|
|
||||||
|
# linux-headers is part of the toolchain so disable the toolchain dependency
|
||||||
|
LINUX_HEADERS_ADD_TOOLCHAIN_DEPENDENCY = NO
|
||||||
|
|
||||||
define LINUX_HEADERS_INSTALL_STAGING_CMDS
|
define LINUX_HEADERS_INSTALL_STAGING_CMDS
|
||||||
(cd $(@D); \
|
(cd $(@D); \
|
||||||
$(TARGET_MAKE_ENV) $(MAKE) \
|
$(TARGET_MAKE_ENV) $(MAKE) \
|
||||||
|
@ -210,7 +210,8 @@ 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 $(1),\
|
$(2)_DEPENDENCIES ?= $(filter-out host-automake host-autoconf host-libtool \
|
||||||
|
host-toolchain $(1),\
|
||||||
$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
|
$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ 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 $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
|
$(2)_DEPENDENCIES ?= $(filter-out host-toolchain $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
|
||||||
|
|
||||||
$(2)_DEPENDENCIES += host-cmake
|
$(2)_DEPENDENCIES += host-cmake
|
||||||
|
|
||||||
|
@ -351,8 +351,18 @@ endif
|
|||||||
|
|
||||||
$(2)_REDISTRIBUTE ?= YES
|
$(2)_REDISTRIBUTE ?= YES
|
||||||
|
|
||||||
|
# When a target package is a toolchain dependency set this variable to
|
||||||
|
# 'NO' so the 'toolchain' dependency is not added to prevent a circular
|
||||||
|
# dependency
|
||||||
|
$(2)_ADD_TOOLCHAIN_DEPENDENCY ?= YES
|
||||||
|
|
||||||
$(2)_DEPENDENCIES ?= $(filter-out $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
|
$(2)_DEPENDENCIES ?= $(filter-out host-toolchain $(1),\
|
||||||
|
$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
|
||||||
|
ifeq ($(4),target)
|
||||||
|
ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES)
|
||||||
|
$(2)_DEPENDENCIES += toolchain
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
$(2)_INSTALL_STAGING ?= NO
|
$(2)_INSTALL_STAGING ?= NO
|
||||||
$(2)_INSTALL_IMAGES ?= NO
|
$(2)_INSTALL_IMAGES ?= NO
|
||||||
|
@ -142,7 +142,7 @@ endif
|
|||||||
# be derived automatically from the dependencies of the corresponding
|
# be derived automatically from the dependencies of the corresponding
|
||||||
# target package. For example, target packages need
|
# target package. For example, target packages need
|
||||||
# host-python-distutilscross, but not host packages.
|
# host-python-distutilscross, but not host packages.
|
||||||
$(2)_DEPENDENCIES ?= $(filter-out host-python host-python-setuptools host-python-distutilscross $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
|
$(2)_DEPENDENCIES ?= $(filter-out host-python host-python-setuptools host-python-distutilscross host-toolchain $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
|
||||||
|
|
||||||
# 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
|
||||||
|
@ -22,6 +22,9 @@ endif
|
|||||||
|
|
||||||
UCLIBC_INSTALL_STAGING = YES
|
UCLIBC_INSTALL_STAGING = YES
|
||||||
|
|
||||||
|
# uclibc is part of the toolchain so disable the toolchain dependency
|
||||||
|
UCLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
|
||||||
|
|
||||||
# Before uClibc is configured, we must have the first stage
|
# Before uClibc is configured, we must have the first stage
|
||||||
# cross-compiler and the kernel headers
|
# cross-compiler and the kernel headers
|
||||||
UCLIBC_DEPENDENCIES = host-gcc-initial linux-headers
|
UCLIBC_DEPENDENCIES = host-gcc-initial linux-headers
|
||||||
|
@ -14,4 +14,6 @@ BR_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC))
|
|||||||
|
|
||||||
TOOLCHAIN_BUILDROOT_DEPENDENCIES = host-gcc-final
|
TOOLCHAIN_BUILDROOT_DEPENDENCIES = host-gcc-final
|
||||||
|
|
||||||
|
TOOLCHAIN_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO
|
||||||
|
|
||||||
$(eval $(generic-package))
|
$(eval $(generic-package))
|
||||||
|
@ -366,6 +366,8 @@ TOOLCHAIN_EXTERNAL_SITE =
|
|||||||
TOOLCHAIN_EXTERNAL_SOURCE =
|
TOOLCHAIN_EXTERNAL_SOURCE =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
TOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO
|
||||||
|
|
||||||
TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES
|
TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES
|
||||||
|
|
||||||
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1)$(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2)$(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2013R1),y)
|
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1)$(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2)$(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2013R1),y)
|
||||||
|
@ -12,6 +12,8 @@ else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
|
|||||||
TOOLCHAIN_DEPENDENCIES += toolchain-external
|
TOOLCHAIN_DEPENDENCIES += toolchain-external
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
TOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO
|
||||||
|
|
||||||
$(eval $(generic-package))
|
$(eval $(generic-package))
|
||||||
|
|
||||||
toolchain: $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
|
toolchain: $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
|
||||||
|
Loading…
Reference in New Issue
Block a user