Message ID | 1389348368-2509-3-git-send-email-fabio.porcedda@gmail.com |
---|---|
State | Superseded |
Headers | show |
Hi Fabio, all, 2014/1/10 Fabio Porcedda <fabio.porcedda@gmail.com> > This commit makes the dependency from the target toolchain explicit. > This way we can buid from command line a package that use > innger-generic-package right after the configuration phase, example: > s/innger-generic-package/inner-generic-package/ (just nitpicking ;-)) > 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> > Regards,
On Fri, Jan 10, 2014 at 12:01 PM, Samuel Martin <s.martin49@gmail.com> wrote: > Hi Fabio, all, > > > 2014/1/10 Fabio Porcedda <fabio.porcedda@gmail.com> >> >> This commit makes the dependency from the target toolchain explicit. >> This way we can buid from command line a package that use >> innger-generic-package right after the configuration phase, example: > > s/innger-generic-package/inner-generic-package/ > (just nitpicking ;-)) Thanks for fixing the typo. <snip> Regards
On Fri, Jan 10, 2014 at 11:06 AM, Fabio Porcedda <fabio.porcedda@gmail.com> wrote: <snip> > - > -$(2)_DEPENDENCIES ?= $(filter-out $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) > +# 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 host-toolchain $(1),\ > + $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) > +ifeq ($(5),target) This line should be changed to: ifeq ($(4),target) After the recently merged commit 26aef889f1df32d5a15cd70f6b1e316ebb830cb7 (infra: remove unused 4th parameter to package infrastructures (pkgparentdir)) the $(4) must be used instead of $(5). Do you prefer that i send a fixed patch series or i send a new commit to fix that? Which solution do you prefer? If you prefer i can send a new version today. I just don't want to delay anymore the merge of this patch series. Best regards Fabio Porcedda
Dear Fabio Porcedda, On Fri, 7 Feb 2014 13:57:24 +0100, Fabio Porcedda wrote: > This line should be changed to: > > ifeq ($(4),target) > > After the recently merged commit 26aef889f1df32d5a15cd70f6b1e316ebb830cb7 > (infra: remove unused 4th parameter to package infrastructures (pkgparentdir)) > the $(4) must be used instead of $(5). > > Do you prefer that i send a fixed patch series or i send a new commit > to fix that? > Which solution do you prefer? > If you prefer i can send a new version today. > I just don't want to delay anymore the merge of this patch series. I'd say: wait for 2014.02-rc1 to be released, and send a new version. This way, Peter can apply it to the next branch. Thanks! Thomas
On Fri, Feb 7, 2014 at 2:32 PM, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote: > Dear Fabio Porcedda, > > On Fri, 7 Feb 2014 13:57:24 +0100, Fabio Porcedda wrote: > >> This line should be changed to: >> >> ifeq ($(4),target) >> >> After the recently merged commit 26aef889f1df32d5a15cd70f6b1e316ebb830cb7 >> (infra: remove unused 4th parameter to package infrastructures (pkgparentdir)) >> the $(4) must be used instead of $(5). >> >> Do you prefer that i send a fixed patch series or i send a new commit >> to fix that? >> Which solution do you prefer? >> If you prefer i can send a new version today. >> I just don't want to delay anymore the merge of this patch series. > > I'd say: wait for 2014.02-rc1 to be released, and send a new version. > This way, Peter can apply it to the next branch. Ok i will do that. Best regards
diff --git a/Makefile b/Makefile index 7624f59..a054028 100644 --- a/Makefile +++ b/Makefile @@ -391,7 +391,6 @@ TARGETS+=target-post-image TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS)) TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS)) -TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS)) # host-* dependencies have to be handled specially, as those aren't # visible in Kconfig and hence not added to a variable like TARGETS. @@ -414,9 +413,6 @@ HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS))) TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\ $(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) \ $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) @@ -425,11 +421,11 @@ $(BUILD_DIR)/buildroot-config/auto.conf: $(BUILDROOT_CONFIG) prepare: $(BUILD_DIR)/buildroot-config/auto.conf -world: $(BASE_TARGETS) $(TARGETS_ALL) +world: $(TARGETS) .PHONY: all world toolchain dirs clean distclean source outputmakefile \ legal-info legal-info-prepare legal-info-clean printvars \ - $(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \ + $(BASE_TARGETS) $(TARGETS) \ $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) $(TARGETS_LEGAL_INFO) \ $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \ $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) diff --git a/package/glibc/glibc.mk b/package/glibc/glibc.mk index 96de02a..0968f67 100644 --- a/package/glibc/glibc.mk +++ b/package/glibc/glibc.mk @@ -31,6 +31,9 @@ endif GLIBC_LICENSE = GPLv2+ (programs), LGPLv2.1+, BSD-3c, MIT (library) 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 # cross-compiler and the kernel headers GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-gawk diff --git a/package/linux-headers/linux-headers.mk b/package/linux-headers/linux-headers.mk index 30d3076..6dac9e3 100644 --- a/package/linux-headers/linux-headers.mk +++ b/package/linux-headers/linux-headers.mk @@ -17,6 +17,9 @@ LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.xz 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 (cd $(@D); \ $(TARGET_MAKE_ENV) $(MAKE) \ diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk index a66ecd4..8961248 100644 --- a/package/pkg-autotools.mk +++ b/package/pkg-autotools.mk @@ -206,7 +206,8 @@ endef # This must be repeated from inner-generic-package, otherwise we get an empty # _DEPENDENCIES if _AUTORECONF is YES. Also filter the result of _AUTORECONF # 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)))) diff --git a/package/pkg-cmake.mk b/package/pkg-cmake.mk index 463cd63..fe42253 100644 --- a/package/pkg-cmake.mk +++ b/package/pkg-cmake.mk @@ -88,7 +88,7 @@ endif # This must be repeated from inner-generic-package, otherwise we only get # 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 diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index bf547ea..63d3793 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -352,8 +352,18 @@ endif $(2)_REDISTRIBUTE ?= YES - -$(2)_DEPENDENCIES ?= $(filter-out $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) +# 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 host-toolchain $(1),\ + $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))) +ifeq ($(5),target) +ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES) +$(2)_DEPENDENCIES += toolchain +endif +endif $(2)_INSTALL_STAGING ?= NO $(2)_INSTALL_IMAGES ?= NO diff --git a/package/pkg-python.mk b/package/pkg-python.mk index 79e6bcf..ec0577d 100644 --- a/package/pkg-python.mk +++ b/package/pkg-python.mk @@ -143,7 +143,7 @@ endif # be derived automatically from the dependencies of the corresponding # target package. For example, target packages need # 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 # runtime) and the python interpreter on the host (for diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index bf1de05..5cd9a46 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -22,6 +22,9 @@ endif 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 # cross-compiler and the kernel headers UCLIBC_DEPENDENCIES = host-gcc-initial linux-headers diff --git a/toolchain/toolchain-buildroot/toolchain-buildroot.mk b/toolchain/toolchain-buildroot/toolchain-buildroot.mk index f1f07a9..d941854 100644 --- a/toolchain/toolchain-buildroot/toolchain-buildroot.mk +++ b/toolchain/toolchain-buildroot/toolchain-buildroot.mk @@ -14,4 +14,6 @@ BUILDROOT_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC)) TOOLCHAIN_BUILDROOT_DEPENDENCIES = host-gcc-final +TOOLCHAIN_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO + $(eval $(generic-package)) diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk index 1084ee2..d0467a7 100644 --- a/toolchain/toolchain-external/toolchain-external.mk +++ b/toolchain/toolchain-external/toolchain-external.mk @@ -366,6 +366,8 @@ TOOLCHAIN_EXTERNAL_SITE = TOOLCHAIN_EXTERNAL_SOURCE = endif +TOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO + 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) diff --git a/toolchain/toolchain/toolchain.mk b/toolchain/toolchain/toolchain.mk index ce3442b..547aaed 100644 --- a/toolchain/toolchain/toolchain.mk +++ b/toolchain/toolchain/toolchain.mk @@ -12,6 +12,8 @@ else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) TOOLCHAIN_DEPENDENCIES += toolchain-external endif +TOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO + $(eval $(generic-package)) toolchain: $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake