From patchwork Tue Sep 17 07:59:12 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Porcedda X-Patchwork-Id: 275393 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from fraxinus.osuosl.org (fraxinus.osuosl.org [140.211.166.137]) by ozlabs.org (Postfix) with ESMTP id 56B622C00E0 for ; Tue, 17 Sep 2013 17:59:30 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 2422A8B068; Tue, 17 Sep 2013 07:59:27 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jAUknkjNecAG; Tue, 17 Sep 2013 07:59:26 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 453998B071; Tue, 17 Sep 2013 07:59:26 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id A3ABA1BFA43 for ; Tue, 17 Sep 2013 07:59:24 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 636F3939BE for ; Tue, 17 Sep 2013 08:00:32 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id plOS6GcEck-J for ; Tue, 17 Sep 2013 08:00:31 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pa0-f53.google.com (mail-pa0-f53.google.com [209.85.220.53]) by hemlock.osuosl.org (Postfix) with ESMTPS id DBB2A931A0 for ; Tue, 17 Sep 2013 08:00:31 +0000 (UTC) Received: by mail-pa0-f53.google.com with SMTP id lb1so6423190pab.26 for ; Tue, 17 Sep 2013 00:59:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=reKVJu31faqG0s+dW/4G0TeQjZ9kqLCt0YwcaguQQRY=; b=kZze8iKuGJlD7lmzeB+MRUy4+pm1pPVbqzJc73CpJVJzfWmPxNRniXztiUo3NeyHy/ mL0OKcCt34tK0cDvzPvRo9wtIxcjKMwc9AgepRqr1dwkUtPIhQ9JwMC4q3obPjJhHwjb CN67OnI+4FDevrOlwlNHITuNtnNwB9TwnJ+URKBtdMK0+QyrlkYyxNShB696Lbb8xOxk Ct616xpGFDErFnYtGD7fxAhgXDu6ZNNJglKgMURLU7BtaWRAwU/7RU88Rt67Vd0Z0B85 5jAMYw9M2ciLL0y8yRhZPM7HUdTxQMIwlrWD8qaKUWDRYmXh+gyDXzU2dzZeKxIp3L/Q HgMw== X-Received: by 10.66.163.199 with SMTP id yk7mr7243200pab.136.1379404763846; Tue, 17 Sep 2013 00:59:23 -0700 (PDT) Received: from ld2036.tmt.telital.com ([213.205.6.118]) by mx.google.com with ESMTPSA id ct4sm36371611pbb.41.1969.12.31.16.00.00 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 17 Sep 2013 00:59:23 -0700 (PDT) From: Fabio Porcedda To: buildroot@uclibc.org Date: Tue, 17 Sep 2013 09:59:12 +0200 Message-Id: <1379404753-3471-3-git-send-email-fabio.porcedda@gmail.com> X-Mailer: git-send-email 1.8.4 In-Reply-To: <1379404753-3471-1-git-send-email-fabio.porcedda@gmail.com> References: <1379404753-3471-1-git-send-email-fabio.porcedda@gmail.com> Cc: Thomas Petazzoni Subject: [Buildroot] [PATCH v4 2/3] pkg-generic: fix rules for top-level parallel make X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net To be able to use top-level parallel make we must don't depend in a rule on the order of evaluation of the prerequisites, so instead of reling on the left to right ordering of evaluation of the prerequisites add an explicit rule to describe the dependencies. So add explicit dependencies for the following stamp files: %/.stamp_extracted %/.stamp_patched %/.stamp_configured %/.stamp_built %/.stamp_host_installed %/.stamp_staging_installed %/.stamp_images_installed %/.stamp_target_installed Because the %-build target is not anymore part of the dependcy chain, add a new variable _BUILD_DEPENDENCIES to be used instead. This new variable is used only by the uclibc package for building the toolchain. Signed-off-by: Fabio Porcedda --- package/pkg-generic.mk | 45 +++++++++++++++++++++------------------------ package/uclibc/uclibc.mk | 3 ++- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index d7efcd3..df6fa6f 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -53,7 +53,7 @@ ifeq ($(DL_MODE),DOWNLOAD) endif # Unpack the archive -$(BUILD_DIR)/%/.stamp_extracted: +$(BUILD_DIR)/%/.stamp_extracted: $(BUILD_DIR)/%/.stamp_downloaded @$(call MESSAGE,"Extracting") $(Q)mkdir -p $(@D) $($(PKG)_EXTRACT_CMDS) @@ -88,7 +88,7 @@ endif # prefix of the patches $(BUILD_DIR)/%/.stamp_patched: NAMEVER = $(RAWNAME)-$($(PKG)_VERSION) $(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS = $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(call qstrip,$(BR2_GLOBAL_PATCH_DIR))/$(RAWNAME) -$(BUILD_DIR)/%/.stamp_patched: +$(BUILD_DIR)/%/.stamp_patched: $(BUILD_DIR)/%/.stamp_extracted @$(call MESSAGE,"Patching $($(PKG)_DIR_PREFIX)/$(RAWNAME)") $(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep)) $(foreach p,$($(PKG)_PATCH),support/scripts/apply-patches.sh $(@D) $(DL_DIR) $(notdir $(p))$(sep)) @@ -115,21 +115,21 @@ $(BUILD_DIR)/%/.stamp_configured: $(Q)touch $@ # Build -$(BUILD_DIR)/%/.stamp_built:: +$(BUILD_DIR)/%/.stamp_built: $(BUILD_DIR)/%/.stamp_configured @$(call MESSAGE,"Building") $($(PKG)_BUILD_CMDS) $(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ # Install to host dir -$(BUILD_DIR)/%/.stamp_host_installed: +$(BUILD_DIR)/%/.stamp_host_installed: $(BUILD_DIR)/%/.stamp_built @$(call MESSAGE,"Installing to host directory") $($(PKG)_INSTALL_CMDS) $(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ # Install to staging dir -$(BUILD_DIR)/%/.stamp_staging_installed: +$(BUILD_DIR)/%/.stamp_staging_installed: $(BUILD_DIR)/%/.stamp_built @$(call MESSAGE,"Installing to staging directory") $($(PKG)_INSTALL_STAGING_CMDS) $(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep)) @@ -143,14 +143,14 @@ $(BUILD_DIR)/%/.stamp_staging_installed: $(Q)touch $@ # Install to images dir -$(BUILD_DIR)/%/.stamp_images_installed: +$(BUILD_DIR)/%/.stamp_images_installed: $(BUILD_DIR)/%/.stamp_built @$(call MESSAGE,"Installing to images directory") $($(PKG)_INSTALL_IMAGES_CMDS) $(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ # Install to target dir -$(BUILD_DIR)/%/.stamp_target_installed: +$(BUILD_DIR)/%/.stamp_target_installed: $(BUILD_DIR)/%/.stamp_built @$(call MESSAGE,"Installing to target") $(if $(BR2_INIT_SYSTEMD),\ $($(PKG)_INSTALL_INIT_SYSTEMD)) @@ -312,6 +312,7 @@ $(2)_DEPENDENCIES ?= $(filter-out host-toolchain $(1),\ ifeq ($$($(2)_TYPE),target) $(2)_DEPENDENCIES += toolchain endif +$(2)_BUILD_DEPENDENCIES ?= $(2)_INSTALL_STAGING ?= NO $(2)_INSTALL_IMAGES ?= NO @@ -363,30 +364,29 @@ $(1)-install: $(1)-install-staging $(1)-install-target $(1)-install-images endif ifeq ($$($(2)_INSTALL_TARGET),YES) -$(1)-install-target: $(1)-build \ - $$($(2)_TARGET_INSTALL_TARGET) +$(1)-install-target: $$($(2)_TARGET_INSTALL_TARGET) else $(1)-install-target: endif ifeq ($$($(2)_INSTALL_STAGING),YES) -$(1)-install-staging: $(1)-build \ - $$($(2)_TARGET_INSTALL_STAGING) +$(1)-install-staging: $$($(2)_TARGET_INSTALL_STAGING) else $(1)-install-staging: endif ifeq ($$($(2)_INSTALL_IMAGES),YES) -$(1)-install-images: $(1)-build \ - $$($(2)_TARGET_INSTALL_IMAGES) +$(1)-install-images: $$($(2)_TARGET_INSTALL_IMAGES) else $(1)-install-images: endif -$(1)-install-host: $(1)-build $$($(2)_TARGET_INSTALL_HOST) +$(1)-install-host: $$($(2)_TARGET_INSTALL_HOST) -$(1)-build: $(1)-configure \ - $$($(2)_TARGET_BUILD) +$$($(2)_TARGET_BUILD): | $$($(2)_BUILD_DEPENDENCIES) +$(1)-build: $$($(2)_TARGET_BUILD) + +$(1)-configure: $$($(2)_TARGET_CONFIGURE) ifeq ($$($(2)_OVERRIDE_SRCDIR),) # In the normal case (no package override), the sequence of steps is @@ -395,13 +395,11 @@ ifeq ($$($(2)_OVERRIDE_SRCDIR),) # extract # patch # configure -$(1)-configure: $(1)-patch $(1)-depends \ - $$($(2)_TARGET_CONFIGURE) +$$($(2)_TARGET_CONFIGURE): | $$($(2)_DEPENDENCIES) $$($(2)_TARGET_PATCH) -$(1)-patch: $(1)-extract $$($(2)_TARGET_PATCH) +$(1)-patch: $$($(2)_TARGET_PATCH) -$(1)-extract: $(1)-source \ - $$($(2)_TARGET_EXTRACT) +$(1)-extract: $$($(2)_TARGET_EXTRACT) $(1)-depends: $$($(2)_DEPENDENCIES) @@ -411,10 +409,9 @@ else # source, by rsyncing # depends # configure -$(1)-configure: $(1)-depends \ - $$($(2)_TARGET_CONFIGURE) +$$($(2)_TARGET_CONFIGURE): | $$($(2)_DEPENDENCIES) $$($(2)_TARGET_RSYNC) -$(1)-depends: $(1)-rsync $$($(2)_DEPENDENCIES) +$(1)-depends: $$($(2)_DEPENDENCIES) $(1)-patch: $(1)-rsync $(1)-extract: $(1)-rsync diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index 181a772..8ae0e26 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -24,7 +24,8 @@ UCLIBC_DEPENDENCIES = host-gcc-initial linux-headers # Before uClibc is built, we must have the second stage # cross-compiler, for some gcc versions, and when NPTL is used. -uclibc-build: $(if $(BR2_TOOLCHAIN_NEEDS_THREE_STAGE_BUILD),host-gcc-intermediate) +UCLIBC_BUILD_DEPENDENCIES = \ + $(if $(BR2_TOOLCHAIN_NEEDS_THREE_STAGE_BUILD),host-gcc-intermediate) # specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config # setting.