• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 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
23[ -n "$ENVSETUP_SH_INCLUDED" ] && return || export ENVSETUP_SH_INCLUDED=1
24
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
31export 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
35echo "========================================================"
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
47"
48
49for PREBUILT_BIN in ${PREBUILTS_PATHS}; do
50    PREBUILT_BIN=\${${PREBUILT_BIN}}
51    eval PREBUILT_BIN="${PREBUILT_BIN}"
52    if [ -n "${PREBUILT_BIN}" ]; then
53        # Mitigate dup paths
54        PATH=${PATH//"${ROOT_DIR}/${PREBUILT_BIN}:"}
55        PATH=${ROOT_DIR}/${PREBUILT_BIN}:${PATH}
56    fi
57done
58export PATH
59
60echo
61echo "PATH=${PATH}"
62echo
63
64export $(sed -n -e 's/\([^=]\)=.*/\1/p' ${ROOT_DIR}/${BUILD_CONFIG})
65
66# verifies that defconfig matches the DEFCONFIG
67function check_defconfig() {
68    (cd ${OUT_DIR} && \
69     make O=${OUT_DIR} savedefconfig)
70    [ "$ARCH" = "x86_64" -o "$ARCH" = "i386" ] && local ARCH=x86
71    echo Verifying that savedefconfig matches ${KERNEL_DIR}/arch/${ARCH}/configs/${DEFCONFIG}
72    RES=0
73    diff ${OUT_DIR}/defconfig ${KERNEL_DIR}/arch/${ARCH}/configs/${DEFCONFIG} ||
74      RES=$?
75    if [ ${RES} -ne 0 ]; then
76        echo ERROR: savedefconfig does not match ${KERNEL_DIR}/arch/${ARCH}/configs/${DEFCONFIG}
77    fi
78    return ${RES}
79}
80