Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753223AbbHSGse (ORCPT ); Wed, 19 Aug 2015 02:48:34 -0400 Received: from mga03.intel.com ([134.134.136.65]:23081 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753065AbbHSGsD (ORCPT ); Wed, 19 Aug 2015 02:48:03 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,708,1432623600"; d="scan'208";a="544562676" From: Daniel Baluta To: mmarek@suse.com, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org Cc: daniel.baluta@intel.com, octavian.purdila@intel.com, bogdan.m.davidoaia@intel.com Subject: [PATCH] scripts: Extract kernel headers for out of tree modules build Date: Wed, 19 Aug 2015 09:50:36 +0300 Message-Id: <1439967036-18297-1-git-send-email-daniel.baluta@intel.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3845 Lines: 100 scripts/package/builddeb already creates a linux-keader .deb package, but we need this feature also for non-Debian distros (e.g. Android or LFS). Signed-off-by: Daniel Baluta --- Makefile | 10 +++++++++- scripts/modules_headers_install.sh | 40 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100755 scripts/modules_headers_install.sh diff --git a/Makefile b/Makefile index 35b4c19..839416d 100644 --- a/Makefile +++ b/Makefile @@ -1042,6 +1042,7 @@ firmware_install: FORCE #Default location for installed headers export INSTALL_HDR_PATH = $(objtree)/usr +export INSTALL_MODULES_HDR_PATH = $(objtree)/usr/src # If we do an all arch process set dst to asm-$(hdr-arch) hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm) @@ -1076,6 +1077,10 @@ headers_check: headers_install $(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1 $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) HDRCHECK=1 +PHONY += modules_headers_install +modules_headers_install: + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules_headers_install.sh + # --------------------------------------------------------------------------- # Kernel selftest @@ -1274,7 +1279,10 @@ help: @echo ' kernelversion - Output the version stored in Makefile (use with make -s)' @echo ' image_name - Output the image name (use with make -s)' @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \ - echo ' (default: $(INSTALL_HDR_PATH))'; \ + echo ' (default: $(INSTALL_HDR_PATH))'; + @echo ' modules_headers_install - Install kernel headers to INSTALL_MODULES_HDR_PATH'; \ + echo ' to be used for out of tree modules build'; \ + echo ' (default: $(INSTALL_MODULES_HDR_PATH))'; \ echo '' @echo 'Static analysers' @echo ' checkstack - Generate a list of stack hogs' diff --git a/scripts/modules_headers_install.sh b/scripts/modules_headers_install.sh new file mode 100755 index 0000000..ebced17 --- /dev/null +++ b/scripts/modules_headers_install.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +# modules_headers_install.sh +# +# Simple script to extract linux headers and friends needed to build +# out of tree modules without having the all source tree around. +# +# Inspired from scripts/package/builddeb + +HDR_SRC_FILES=$objtree/hdrsrcfiles +HDR_OBJ_FILES=$objtree/hdrobjfiles +DEST_DIR=linux-modules-headers + +if [ -n "$INSTALL_MODULES_HDR_PATH" ]; then + DEST_DIR="$INSTALL_MODULES_HDR_PATH" +fi + +#fresh start +rm -f $HDR_SRC_FILES +rm -f $HDR_OBJ_FILES + +#build list of headers and friends +(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) \ + > "$HDR_SRC_FILES" +(cd $srctree; find arch/$SRCARCH/include include scripts -type f) \ + >> "$HDR_SRC_FILES" +(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms \ + -o -name Platform) >> "$HDR_SRC_FILES" +(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts \ + -type d) -type f) >> "$HDR_SRC_FILES" +(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts \ + -type f) >> "$HDR_OBJ_FILES" + +mkdir -p "$DEST_DIR" + +(cd $srctree; tar -c -f - -T -) < "$HDR_SRC_FILES" | (cd $DEST_DIR; tar -xf -) +(cd $objtree; tar -c -f - -T -) < "$HDR_OBJ_FILES" | (cd $DEST_DIR; tar -xf -) + +# copy .config manually to be where it's expected to be +(cd $objtree; cp $KCONFIG_CONFIG $DEST_DIR/.config) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/