From patchwork Fri Jan 30 07:17:44 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Porcedda X-Patchwork-Id: 434744 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 2B0831402AE for ; Fri, 30 Jan 2015 18:17:56 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 44843A1374; Fri, 30 Jan 2015 07:17:55 +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 ZYNDVjQc38JA; Fri, 30 Jan 2015 07:17:54 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 8924FA13A9; Fri, 30 Jan 2015 07:17:54 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id CC7631C2678 for ; Fri, 30 Jan 2015 07:17:52 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id B9A0632E02 for ; Fri, 30 Jan 2015 07:17:52 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MvFokJg9liwW for ; Fri, 30 Jan 2015 07:17:51 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pa0-f48.google.com (mail-pa0-f48.google.com [209.85.220.48]) by silver.osuosl.org (Postfix) with ESMTPS id DB69432DFB for ; Fri, 30 Jan 2015 07:17:51 +0000 (UTC) Received: by mail-pa0-f48.google.com with SMTP id ey11so49095180pad.7 for ; Thu, 29 Jan 2015 23:17:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=xBGSKVaxWvVtCdvjIVUIBgAOPC3fg/FjYGHnLg8SJiw=; b=fFSlRsgmN/QDF+impBF0zgSkriqUgBgDetaKGvKCeh73XekB4BKl5GTA21U47+5RdR BPOIyHyazM92pgV+UN0ulMenmsDYZ0TgsB+nEmRL6962C6zZ3URlnioLYsccWBwxwR6G 5PVQmq1HSomR63b7FlSfRqdI3nbgYu70ZDZ1Jcg7cIdVwpC60RRt256k/WE2UAfbFsSn ZtCMRTlHqGvm+/MZRU+FCT+us7Wc99gzov/Dcfm/P1Quq2+t0rRni4muoCyrb6rH/pTO DuUiGY4dWZuV7BXAXn46ZeM5NgNYgDIA6BPKitNQYJgjM1XB04r9tbEGGeQZ3NXLW+6V TRgQ== X-Received: by 10.66.139.167 with SMTP id qz7mr7097635pab.50.1422602271571; Thu, 29 Jan 2015 23:17:51 -0800 (PST) Received: from ld2077.tmt.telital.com ([213.205.6.118]) by mx.google.com with ESMTPSA id bc1sm9893657pad.12.2015.01.29.23.17.49 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Jan 2015 23:17:50 -0800 (PST) From: Fabio Porcedda X-Google-Original-From: Fabio Porcedda To: buildroot@uclibc.org Date: Fri, 30 Jan 2015 08:17:44 +0100 Message-Id: <1422602264-4725-1-git-send-email-Fabio.Porcedda@gmail.com> X-Mailer: git-send-email 2.1.0 Subject: [Buildroot] [RFC] pkg-generic: add per-package staging directory X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 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" This commit add a per-package staging directory under output/stagingof/ to improve build reproducibility, because it prevents that a unspecified dependency affects the build. It also help to enable default top-level parallel make. TODO: Do more testing like testing "allyespackageconfig". --- Makefile | 2 +- package/Makefile.in | 1 + package/pkg-generic.mk | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index daf341c..c61e3c3 100644 --- a/Makefile +++ b/Makefile @@ -829,7 +829,7 @@ printvars: clean: rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \ - $(BUILD_DIR) $(BASE_DIR)/staging \ + $(BUILD_DIR) $(BASE_DIR)/staging $(STAGINGOF_DIR) \ $(LEGAL_INFO_DIR) distclean: clean diff --git a/package/Makefile.in b/package/Makefile.in index 2055f00..634dc54 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -108,6 +108,7 @@ endif STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR) +STAGINGOF_DIR = $(BASE_DIR)/stagingof TARGET_OPTIMIZATION := $(call qstrip,$(BR2_TARGET_OPTIMIZATION)) diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 9643a30..e17620e 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -428,6 +428,13 @@ endif # Eliminate duplicates in dependencies $(2)_FINAL_DEPENDENCIES = $$(sort $$($(2)_DEPENDENCIES)) +$(2)_TARGET_CPPFLAGS += $(foreach dep,$($(2)_DEPENDENCIES),\ + -I$(STAGINGOF_DIR)/$(dep)/usr/include) + +$(2)_TARGET_LDFLAGS += $(foreach dep,$($(2)_DEPENDENCIES),\ + -L$(STAGINGOF_DIR)/$(dep)/usr/lib \ + $($(call UPPERCASE,$(dep))_TARGET_LDFLAGS)) + $(2)_INSTALL_STAGING ?= NO $(2)_INSTALL_IMAGES ?= NO $(2)_INSTALL_TARGET ?= YES @@ -598,10 +605,19 @@ $(1)-reconfigure: $(1)-clean-for-reconfigure $(1) # uppercase package variable prefix $$($(2)_TARGET_INSTALL_TARGET): PKG=$(2) $$($(2)_TARGET_INSTALL_STAGING): PKG=$(2) +ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES) +$$($(2)_TARGET_INSTALL_STAGING): STAGING_DIR=$$(STAGINGOF_DIR)/$(1) +else +$$($(2)_TARGET_INSTALL_STAGING): STAGING_DIR:=$$(STAGING_DIR) +endif $$($(2)_TARGET_INSTALL_IMAGES): PKG=$(2) $$($(2)_TARGET_INSTALL_HOST): PKG=$(2) $$($(2)_TARGET_BUILD): PKG=$(2) +$$($(2)_TARGET_BUILD): TARGET_CPPFLAGS=$$($(2)_TARGET_CPPFLAGS) +$$($(2)_TARGET_BUILD): TARGET_LDFLAGS=$$($(2)_TARGET_LDFLAGS) $$($(2)_TARGET_CONFIGURE): PKG=$(2) +$$($(2)_TARGET_CONFIGURE): TARGET_CPPFLAGS=$$($(2)_TARGET_CPPFLAGS) +$$($(2)_TARGET_CONFIGURE): TARGET_LDFLAGS=$$($(2)_TARGET_LDFLAGS) $$($(2)_TARGET_RSYNC): SRCDIR=$$($(2)_OVERRIDE_SRCDIR) $$($(2)_TARGET_RSYNC): PKG=$(2) $$($(2)_TARGET_RSYNC_SOURCE): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)