From cf37abf4b59405c730af52373631c8e819e1693b Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sun, 19 May 2019 20:54:02 +0300 Subject: Move cross compiler configuration to separate config.sh file Signed-off-by: Laurent Pinchart --- arch/arm.sh | 1 - arch/arm64.sh | 1 - arch/x86.sh | 1 - config.sh | 7 +++++++ kbuild.sh | 37 ++++++++++++++++++++++--------------- 5 files changed, 29 insertions(+), 18 deletions(-) create mode 100644 config.sh diff --git a/arch/arm.sh b/arch/arm.sh index 53462fb..4995c00 100644 --- a/arch/arm.sh +++ b/arch/arm.sh @@ -1,3 +1,2 @@ arch_dir=arm32 -cross_compile=arm-buildroot-linux-uclibcgnueabihf- image_kernel=zImage diff --git a/arch/arm64.sh b/arch/arm64.sh index a4b4b87..e5fbed3 100644 --- a/arch/arm64.sh +++ b/arch/arm64.sh @@ -1,3 +1,2 @@ arch_dir=arm64 -cross_compile=aarch64-buildroot-linux-gnu- image_kernel=Image diff --git a/arch/x86.sh b/arch/x86.sh index 50edef3..249a8f7 100644 --- a/arch/x86.sh +++ b/arch/x86.sh @@ -1,3 +1,2 @@ arch_dir=x86 -cross_compile= image_kernel=bzImage diff --git a/config.sh b/config.sh new file mode 100644 index 0000000..cedf643 --- /dev/null +++ b/config.sh @@ -0,0 +1,7 @@ +# +# Cross-compilers +# +# Variable name: cross_compile[] +# +cross_compile[arm]=arm-buildroot-linux-uclibcgnueabihf- +cross_compile[arm64]=aarch64-buildroot-linux-gnu- diff --git a/kbuild.sh b/kbuild.sh index 98a59bc..15e1dc7 100755 --- a/kbuild.sh +++ b/kbuild.sh @@ -1,10 +1,16 @@ -#!/bin/sh +#!/bin/bash # SPDX-License-Identifier: GPL-2.0+ set -e kbuild_root=$(dirname $(readlink -f "$0")) +declare -A cross_compile + +if [[ -r $kbuild_root/config.sh ]] ; then + source $kbuild_root/config.sh || exit 1 +fi + #kbuild_options='CONFIG_DEBUG_SECTION_MISMATCH=y' #kbuild_options='C=1' kbuild_options="KALLSYMS_EXTRA_PASS=0" @@ -113,17 +119,16 @@ fi source "${kbuild_root}/arch/$arch.sh" || exit 1 -target_dir=${target_dir:-$nfs_root/$arch_dir} +target_dir=${target_dir:-${target_root[$arch]}} output_dir=$PWD/output/$arch_dir # -# Parallelize make with twice as many jobs as CPUs +# Build environment and tools # num_cpus=$(cat /proc/cpuinfo | grep '^processor\b' | wc -l) -pmake="make -j$((num_cpus*2))" - -kbuild_options="$kbuild_options KCFLAGS='$kcflags'" +make="make ARCH=$arch O=$output_dir CROSS_COMPILE=${cross_compile[$arch]}" +pmake="$make -j$((num_cpus*2))" echo "Compiling for platform $platform with $num_cpus CPUs" @@ -132,12 +137,12 @@ mkdir -p $output_dir/ if [[ -n "$opt_defconfig" ]] ; then mkdir -p $output_dir/arch/$arch/configs/ cp $opt_defconfig $output_dir/arch/$arch/configs/build_defconfig - make ARCH=$arch O=$output_dir build_defconfig + $make build_defconfig rm $output_dir/arch/$arch/configs/build_defconfig fi if [[ $do_menu_config = 1 ]] ; then - make ARCH=$arch O=$output_dir menuconfig + $make menuconfig exit 0 fi @@ -146,7 +151,7 @@ fi # if [[ $do_compile_doc = 1 ]] ; then - $pmake ARCH=$arch O=$output_dir DOCBOOKS='' htmldocs + $pmake DOCBOOKS='' htmldocs fi # @@ -159,13 +164,11 @@ for dtb in $dtbs ; do kernel_dtbs="$kernel_dtbs $dtb" done -eval $pmake ARCH=$arch O=$output_dir CROSS_COMPILE=$cross_compile $kbuild_options \ - $image_kernel $kernel_dtbs +$pmake $kbuild_options KCFLAGS="$kcflags" $image_kernel $kernel_dtbs grep 'CONFIG_MODULES=y' $output_dir/.config > /dev/null && modules=modules if [[ x$modules == xmodules ]] ; then - eval $pmake ARCH=$arch O=$output_dir CROSS_COMPILE=$cross_compile $kbuild_options \ - $modules + $pmake $kbuild_options KCFLAGS="$kcflags" $modules fi version=$(cat $output_dir/include/generated/utsrelease.h | cut -d '"' -f 2) @@ -206,11 +209,15 @@ if [[ $image != FIT && $image != CrOS ]] ; then fi if [[ x$modules = xmodules ]] ; then - $pmake ARCH=$arch O=$output_dir CROSS_COMPILE=$cross_compile INSTALL_MOD_PATH=$target_dir modules_install + $pmake INSTALL_MOD_PATH=$target_dir modules_install fi +# +# Create the Debian package if requested +# + if [[ $do_package_deb = 1 ]] ; then - $pmake ARCH=$arch O=$output_dir CROSS_COMPILE=$cross_compile bindeb-pkg + $pmake bindeb-pkg fi # -- cgit v1.2.3