blob: eb37f1e7605c6f05641f4e48aa4ad798896f2436 [file] [log] [blame]
Matthias Maennich6652d742019-02-01 22:20:44 +00001# source this file. Don't run it.
2
3# Copyright (C) 2019 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17# Usage:
18# source build/envsetup.sh
19# to setup your path and cross compiler so that a kernel build command is
20# just:
21# make -j24
22
Matthias Maennichccb70fa2019-03-29 08:31:39 +000023[ -n "$ENVSETUP_SH_INCLUDED" ] && return || export ENVSETUP_SH_INCLUDED=1
Matthias Maennich6652d742019-02-01 22:20:44 +000024
25# TODO: Use a $(gettop) style method.
26export ROOT_DIR=$PWD
27
28export BUILD_CONFIG=${BUILD_CONFIG:-build.config}
29. ${ROOT_DIR}/${BUILD_CONFIG}
30
Matthias Maennichccb70fa2019-03-29 08:31:39 +000031export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out/${BRANCH}})
32export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
33export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
34
Matthias Maennich6652d742019-02-01 22:20:44 +000035echo "========================================================"
36echo "= build config: ${ROOT_DIR}/${BUILD_CONFIG}"
37cat ${ROOT_DIR}/${BUILD_CONFIG}
38
39# List of prebuilt directories shell variables to incorporate into PATH
40PREBUILTS_PATHS="
41LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN
42LINUX_GCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN
43CLANG_PREBUILT_BIN
44LZ4_PREBUILTS_BIN
45DTC_PREBUILTS_BIN
46LIBUFDT_PREBUILTS_BIN
Matthias Maennich2ee76c82019-06-24 17:58:14 +010047BUILDTOOLS_PREBUILT_BIN
Matthias Maennich6652d742019-02-01 22:20:44 +000048"
49
50for PREBUILT_BIN in ${PREBUILTS_PATHS}; do
51 PREBUILT_BIN=\${${PREBUILT_BIN}}
52 eval PREBUILT_BIN="${PREBUILT_BIN}"
53 if [ -n "${PREBUILT_BIN}" ]; then
54 # Mitigate dup paths
55 PATH=${PATH//"${ROOT_DIR}/${PREBUILT_BIN}:"}
56 PATH=${ROOT_DIR}/${PREBUILT_BIN}:${PATH}
57 fi
58done
59export PATH
60
61echo
62echo "PATH=${PATH}"
63echo
64
65export $(sed -n -e 's/\([^=]\)=.*/\1/p' ${ROOT_DIR}/${BUILD_CONFIG})
66
67# verifies that defconfig matches the DEFCONFIG
68function check_defconfig() {
69 (cd ${OUT_DIR} && \
Alistair Strachan898f1e42019-05-20 16:17:41 -070070 make ${CC_LD_ARG} O=${OUT_DIR} savedefconfig)
Matthias Maennich6652d742019-02-01 22:20:44 +000071 [ "$ARCH" = "x86_64" -o "$ARCH" = "i386" ] && local ARCH=x86
72 echo Verifying that savedefconfig matches ${KERNEL_DIR}/arch/${ARCH}/configs/${DEFCONFIG}
73 RES=0
74 diff ${OUT_DIR}/defconfig ${KERNEL_DIR}/arch/${ARCH}/configs/${DEFCONFIG} ||
75 RES=$?
76 if [ ${RES} -ne 0 ]; then
77 echo ERROR: savedefconfig does not match ${KERNEL_DIR}/arch/${ARCH}/configs/${DEFCONFIG}
78 fi
79 return ${RES}
80}