From patchwork Tue Mar 3 09:17:35 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Porcedda X-Patchwork-Id: 445612 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id CDD8F1400DE for ; Tue, 3 Mar 2015 20:19:35 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=gmail.com header.i=@gmail.com header.b=ubCuYEnu; dkim-adsp=none (unprotected policy); dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 04446333FE; Tue, 3 Mar 2015 09:19:35 +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 uhF5nshgQmDc; Tue, 3 Mar 2015 09:19:32 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id D39C932E44; Tue, 3 Mar 2015 09:19:31 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id B8F6A1C0B50 for ; Tue, 3 Mar 2015 09:19:30 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id AC29991871 for ; Tue, 3 Mar 2015 09:19:30 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Vdn6Pvh0-Jpt for ; Tue, 3 Mar 2015 09:19:26 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pd0-f182.google.com (mail-pd0-f182.google.com [209.85.192.182]) by whitealder.osuosl.org (Postfix) with ESMTPS id B752491A87 for ; Tue, 3 Mar 2015 09:19:14 +0000 (UTC) Received: by pdbfp1 with SMTP id fp1so9789594pdb.7 for ; Tue, 03 Mar 2015 01:19:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:in-reply-to:references; bh=gZd3YwO2E2kow295n+v+Wa1D6hNUX1o8dMRJDnPy9vs=; b=ubCuYEnuIwFECtlVh4wdMv6vIotAfY2UEAWiVk97hFJ95XcjUu7zMCUSeNM/jxeXs+ NZ3VA6gv0QhN2+TlIafVuuzKy067DcfVyWpMAbjDHGmA2JT4SeKVY/KFgysxIIjDxzV4 phqWiyH11YTcn8MrKyGH0w4XVdhcgBWXIlBggHYrL9wu0q6oQwXRO6ahwXVjZY8kCN4T Z7tb+6429xm5g7lVWIC0B4lBau+gS9YVdBIioowxGX37nRuoqnA1Y38XmJNdSJAYj9oz yTzjOpwZTk8FbcJfVLDGORo2VaM4fqUgSV0dNCcOdT7MLenGm38zhZmHuavGimMFnvFS uUsA== X-Received: by 10.70.123.1 with SMTP id lw1mr54958656pdb.26.1425374354393; Tue, 03 Mar 2015 01:19:14 -0800 (PST) Received: from ld2077.tmt.telital.com ([213.205.6.118]) by mx.google.com with ESMTPSA id fs13sm323638pdb.38.2015.03.03.01.19.12 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Mar 2015 01:19:13 -0800 (PST) From: Fabio Porcedda To: buildroot@uclibc.org Date: Tue, 3 Mar 2015 10:17:35 +0100 Message-Id: <1425374255-6827-31-git-send-email-fabio.porcedda@gmail.com> X-Mailer: git-send-email 2.3.1 In-Reply-To: <1425374255-6827-1-git-send-email-fabio.porcedda@gmail.com> References: <1425374255-6827-1-git-send-email-fabio.porcedda@gmail.com> Subject: [Buildroot] [RFC v3 30/30] pkg-generic: add support for 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" Signed-off-by: Fabio Porcedda --- Makefile | 2 +- package/Makefile.in | 1 + package/pkg-generic.mk | 54 ++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 3723abc..6619bad 100644 --- a/Makefile +++ b/Makefile @@ -832,7 +832,7 @@ printvars: clean: rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \ - $(BUILD_DIR) $(BASE_DIR)/staging \ + $(BUILD_DIR) $(BASE_DIR)/staging $(STAGINGPKG_DIR) \ $(LEGAL_INFO_DIR) distclean: clean diff --git a/package/Makefile.in b/package/Makefile.in index 6cfe3ed..2a21c9d 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -109,6 +109,7 @@ endif STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR) STAGINGNOPKG_DIR := $(STAGING_DIR) +STAGINGPKG_DIR = $(BASE_DIR)/stagingpkg TARGET_OPTIMIZATION := $(call qstrip,$(BR2_TARGET_OPTIMIZATION)) diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 43289d0..c35f801 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -208,7 +208,7 @@ $(BUILD_DIR)/%/.stamp_staging_installed: $(call MESSAGE,"Fixing package configuration files") ;\ $(SED) "s,$(BASE_DIR),@BASE_DIR@,g" \ -e "s,$(STAGING_DIR),@STAGING_DIR@,g" \ - -e "s,^\(exec_\)\?prefix=.*,\1prefix=@STAGING_DIR@/usr,g" \ + -e 's,^\(exec_\)\?prefix=.*,\1prefix=`echo $$0 | sed '"'"'s_/[^/]*/[^/]*$$__'"'"'`,g' \ -e "s,-I/usr/,-I@STAGING_DIR@/usr/,g" \ -e "s,-L/usr/,-L@STAGING_DIR@/usr/,g" \ -e "s,@STAGING_DIR@,$(STAGING_DIR),g" \ @@ -247,7 +247,7 @@ $(BUILD_DIR)/%/.stamp_target_installed: # Remove package sources $(BUILD_DIR)/%/.stamp_dircleaned: - rm -Rf $(@D) + rm -Rf $(@D) $(STAGINGPKG_DIR)/$(call LOWERCASE,$(PKG)) ################################################################################ # virt-provides-single -- check that provider-pkg is the declared provider for @@ -431,6 +431,38 @@ endif # Eliminate duplicates in dependencies $(2)_FINAL_DEPENDENCIES = $$(sort $$($(2)_DEPENDENCIES)) +ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES) + $(2)_STAGING_DIR = $$(STAGINGPKG_DIR)/$(1) + $(2)_TARGET_CPPFLAGS = $$(strip $$(TARGET_CPPFLAGS) -I$$($(2)_STAGING_DIR)/usr/include) + $(2)_TARGET_LDFLAGS = $$(TARGET_LDFLAGS) -L$$($(2)_STAGING_DIR)/usr/lib -Wl,-rpath,$$($(2)_STAGING_DIR)/usr/lib + $(2)_TARGET_CONFIGURE_OPTS = \ + $$(TARGET_CONFIGURE_OPTS) \ + PKG_CONFIG_SYSROOT_DIR="$$($(2)_STAGING_DIR)" \ + PKG_CONFIG_PATH="$$($(2)_STAGING_DIR)/usr/lib/pkgconfig" + $(2)_TARGET_MAKE_ENV = \ + $$(TARGET_MAKE_ENV) \ + PKG_CONFIG_SYSROOT_DIR="$$($(2)_STAGING_DIR)" \ + PKG_CONFIG_PATH="$$($(2)_STAGING_DIR)/usr/lib/pkgconfig" +else + $(2)_STAGING_DIR = $$(STAGING_DIR) + $(2)_TARGET_CONFIGURE_OPTS = $$(TARGET_CONFIGURE_OPTS) + $(2)_TARGET_MAKE_ENV = $$(TARGET_MAKE_ENV) +endif + +ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES) + $(2)_STAGING_DIRS = $$(wildcard $$(foreach dep,\ + $$(filter-out host-% toolchain,$$($(2)_FINAL_DEPENDENCIES)),\ + $$($$(call UPPERCASE,$$(dep))_STAGING_DIR))) + + define $(2)_PREPARE_STAGING_DIR + mkdir -p $$(STAGING_DIR)/usr/include $$(STAGING_DIR)/usr/lib + $$(if $$($(2)_STAGING_DIRS), + cp -rdpf $$(addsuffix /*,$$($(2)_STAGING_DIRS)) \ + $$($(2)_STAGING_DIR)) + endef + $(2)_PRE_CONFIGURE_HOOKS := $(2)_PREPARE_STAGING_DIR $$($(2)_PRE_CONFIGURE_HOOKS) +endif + $(2)_INSTALL_STAGING ?= NO $(2)_INSTALL_IMAGES ?= NO $(2)_INSTALL_TARGET ?= YES @@ -604,11 +636,29 @@ $(1)-reconfigure: $(1)-clean-for-reconfigure $(1) # define the PKG variable for all targets, containing the # uppercase package variable prefix $$($(2)_TARGET_INSTALL_TARGET): PKG=$(2) +$$($(2)_TARGET_INSTALL_TARGET): STAGING_DIR:=$$($(2)_STAGING_DIR) +$$($(2)_TARGET_INSTALL_TARGET): TARGET_CPPFLAGS:=$$($(2)_TARGET_CPPFLAGS) +$$($(2)_TARGET_INSTALL_TARGET): TARGET_LDFLAGS:=$$($(2)_TARGET_LDFLAGS) +$$($(2)_TARGET_INSTALL_TARGET): TARGET_CONFIGURE_OPTS:=$$($(2)_TARGET_CONFIGURE_OPTS) $$($(2)_TARGET_INSTALL_STAGING): PKG=$(2) +$$($(2)_TARGET_INSTALL_STAGING): STAGING_DIR:=$$($(2)_STAGING_DIR) +$$($(2)_TARGET_INSTALL_STAGING): TARGET_CPPFLAGS:=$$($(2)_TARGET_CPPFLAGS) +$$($(2)_TARGET_INSTALL_STAGING): TARGET_LDFLAGS:=$$($(2)_TARGET_LDFLAGS) +$$($(2)_TARGET_INSTALL_STAGING): TARGET_CONFIGURE_OPTS:=$$($(2)_TARGET_CONFIGURE_OPTS) $$($(2)_TARGET_INSTALL_IMAGES): PKG=$(2) $$($(2)_TARGET_INSTALL_HOST): PKG=$(2) +$$($(2)_TARGET_INSTALL_HOST): STAGING_DIR:=$$($(2)_STAGING_DIR) $$($(2)_TARGET_BUILD): PKG=$(2) +$$($(2)_TARGET_BUILD): STAGING_DIR:=$$($(2)_STAGING_DIR) +$$($(2)_TARGET_BUILD): TARGET_CPPFLAGS:=$$($(2)_TARGET_CPPFLAGS) +$$($(2)_TARGET_BUILD): TARGET_LDFLAGS:=$$($(2)_TARGET_LDFLAGS) +$$($(2)_TARGET_BUILD): TARGET_CONFIGURE_OPTS:=$$($(2)_TARGET_CONFIGURE_OPTS) +$$($(2)_TARGET_BUILD): TARGET_MAKE_ENV:=$$($(2)_TARGET_MAKE_ENV) $$($(2)_TARGET_CONFIGURE): PKG=$(2) +$$($(2)_TARGET_CONFIGURE): STAGING_DIR:=$$($(2)_STAGING_DIR) +$$($(2)_TARGET_CONFIGURE): TARGET_CPPFLAGS:=$$($(2)_TARGET_CPPFLAGS) +$$($(2)_TARGET_CONFIGURE): TARGET_LDFLAGS:=$$($(2)_TARGET_LDFLAGS) +$$($(2)_TARGET_CONFIGURE): TARGET_CONFIGURE_OPTS:=$$($(2)_TARGET_CONFIGURE_OPTS) $$($(2)_TARGET_RSYNC): SRCDIR=$$($(2)_OVERRIDE_SRCDIR) $$($(2)_TARGET_RSYNC): PKG=$(2) $$($(2)_TARGET_RSYNC_SOURCE): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)