-
Notifications
You must be signed in to change notification settings - Fork 0
/
nvbuild.sh
executable file
·125 lines (109 loc) · 3.77 KB
/
nvbuild.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/bash
# SPDX-FileCopyrightText: Copyright (c) 2019-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: BSD-3-Clause
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# This script builds kernel sources in this directory.
# Usage: ./${SCRIPT_NAME}.sh [OPTIONS]
set -e
# shellcheck disable=SC2046
SCRIPT_DIR="$(dirname $(readlink -f "${0}"))"
SCRIPT_NAME="$(basename "${0}")"
source "${SCRIPT_DIR}/nvcommon_build.sh"
function usage {
cat <<EOM
Usage: ./${SCRIPT_NAME} [OPTIONS]
This script builds kernel sources in this directory.
It supports following options.
OPTIONS:
-h Displays this help
-o <outdir> Creates kernel build output in <outdir>
EOM
}
# parse input parameters
function parse_input_param {
while [ $# -gt 0 ]; do
case ${1} in
-h)
usage
exit 0
;;
-o)
KERNEL_OUT_DIR="${2}"
shift 2
;;
*)
echo "Error: Invalid option ${1}"
usage
exit 1
;;
esac
done
}
function build_arm64_kernel_sources {
kernel_version="${1}"
echo "Building kernel-${kernel_version} sources"
# execute building steps
source_dir="${SCRIPT_DIR}/kernel/kernel-${kernel_version}/"
config_file="tegra_defconfig"
tegra_kernel_out="${source_dir}"
# shellcheck disable=SC2236
if [ ! -z "${KERNEL_OUT_DIR}" ] ; then
O_OPT=(O="${KERNEL_OUT_DIR}")
tegra_kernel_out="${KERNEL_OUT_DIR}"
else
O_OPT=()
fi
"${MAKE_BIN}" -C "${source_dir}" ARCH=arm64 \
LOCALVERSION="-tegra" \
CROSS_COMPILE="${CROSS_COMPILE_AARCH64}" \
"${O_OPT[@]}" "${config_file}"
"${MAKE_BIN}" -C "${source_dir}" ARCH=arm64 \
LOCALVERSION="-tegra" \
CROSS_COMPILE="${CROSS_COMPILE_AARCH64}" \
"${O_OPT[@]}" -j"${NPROC}" \
--output-sync=target Image
"${MAKE_BIN}" -C "${source_dir}" ARCH=arm64 \
LOCALVERSION="-tegra" \
CROSS_COMPILE="${CROSS_COMPILE_AARCH64}" \
"${O_OPT[@]}" -j"${NPROC}" \
--output-sync=target dtbs
"${MAKE_BIN}" -C "${source_dir}" ARCH=arm64 \
LOCALVERSION="-tegra" \
CROSS_COMPILE="${CROSS_COMPILE_AARCH64}" \
"${O_OPT[@]}" -j"${NPROC}" \
--output-sync=target modules
image="${tegra_kernel_out}/arch/arm64/boot/Image"
if [ ! -f "${image}" ]; then
echo "Error: Missing kernel image ${image}"
exit 1
fi
echo "Kernel sources compiled successfully."
}
# shellcheck disable=SC2068
parse_input_param $@
# Compile kernel sources for "arm64"
build_arm64_kernel_sources "5.10"