• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2
3# Copyright (c) 2021-2023 HiHope Open Source Organization .
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#     http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16set -e
17
18pushd ${1}
19ROOT_DIR=${5}
20export PRODUCT_PATH=${4}
21export DEVICE_COMPANY=${6}
22export DEVICE_NAME=${7}
23export PRODUCT_COMPANY=${8}
24KERNEL_FORM=${9}
25KERNEL_PROD=${10}
26ENABLE_LTO_O0=${11}
27
28KERNEL_SRC_TMP_PATH=${ROOT_DIR}/out/kernel/src_tmp/linux-5.10
29KERNEL_OBJ_TMP_PATH=${ROOT_DIR}/out/kernel/OBJ/linux-5.10
30KERNEL_SOURCE=${ROOT_DIR}/kernel/linux/linux-5.10
31KERNEL_PATCH_PATH=${ROOT_DIR}/kernel/linux/patches/linux-5.10
32KERNEL_PATCH=${ROOT_DIR}/kernel/linux/patches/linux-5.10/rk3568_patch/kernel.patch
33BUILD_SCRIPT_PATH=${3}
34NEWIP_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/newip/apply_newip.sh
35TZDRIVER_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/tzdriver/apply_tzdriver.sh
36XPM_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/xpm/apply_xpm.sh
37CED_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/container_escape_detection/apply_ced.sh
38HIDEADDR_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/memory_security/apply_hideaddr.sh
39QOS_AUTH_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/qos_auth/apply_qos_auth.sh
40UNIFIED_COLLECTION_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/ucollection/apply_ucollection.sh
41CODE_SIGN_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/code_sign/apply_code_sign.sh
42
43HARMONY_CONFIG_PATH=${ROOT_DIR}/kernel/linux/config/linux-5.10
44DEVICE_CONFIG_PATH=${ROOT_DIR}/kernel/linux/config/linux-5.10/${DEVICE_NAME}
45DEFCONFIG_BASE_FILE=${HARMONY_CONFIG_PATH}/base_defconfig
46DEFCONFIG_TYPE_FILE=${HARMONY_CONFIG_PATH}/type/standard_defconfig
47DEFCONFIG_FORM_FILE=${HARMONY_CONFIG_PATH}/form/${KERNEL_FORM}_defconfig
48DEFCONFIG_ARCH_FILE=${DEVICE_CONFIG_PATH}/arch/arm64_defconfig
49DEFCONFIG_PROC_FILE=${DEVICE_CONFIG_PATH}/product/${KERNEL_PROD}_defconfig
50
51RAMDISK_ARG="disable_ramdisk"
52MAKE_OHOS_ENV="GPUDRIVER=mali"
53export KBUILD_OUTPUT=${KERNEL_OBJ_TMP_PATH}
54
55source ${BUILD_SCRIPT_PATH}/kernel/kernel_source_checker.sh
56
57for i in "$@"
58do
59    case $i in
60        enable_ramdisk)
61            RAMDISK_ARG=enable_ramdisk
62            ;;
63        enable_mesa3d)
64            MAKE_OHOS_ENV="GPUDRIVER=mesa3d"
65            ;;
66    esac
67done
68
69function copy_and_patch_kernel_source()
70{
71    rm -rf ${KERNEL_SRC_TMP_PATH}
72    mkdir -p ${KERNEL_SRC_TMP_PATH}
73
74    rm -rf ${KERNEL_OBJ_TMP_PATH}
75    mkdir -p ${KERNEL_OBJ_TMP_PATH}
76
77    cp -arf ${KERNEL_SOURCE}/* ${KERNEL_SRC_TMP_PATH}/
78
79    cd ${KERNEL_SRC_TMP_PATH}
80
81    #HDF patch
82    bash ${ROOT_DIR}/drivers/hdf_core/adapter/khdf/linux/patch_hdf.sh ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${KERNEL_PATCH_PATH} ${DEVICE_NAME}
83
84    #kernel patch
85    patch -p1 < ${KERNEL_PATCH}
86
87    #newip
88    if [ -f $NEWIP_PATCH_FILE ]; then
89        bash $NEWIP_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
90    fi
91
92    #tzdriver
93    if [ -f $TZDRIVER_PATCH_FILE ]; then
94        bash $TZDRIVER_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
95    fi
96
97    #xpm
98    if [ -f $XPM_PATCH_FILE ]; then
99        bash $XPM_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
100    fi
101
102    #ced
103    if [ -f $CED_PATCH_FILE ]; then
104        bash $CED_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
105    fi
106
107    #qos_auth
108    if [ -f $QOS_AUTH_PATCH_FILE ]; then
109        bash $QOS_AUTH_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
110    fi
111
112    #hideaddr
113    if [ -f $HIDEADDR_PATCH_FILE ]; then
114        bash $HIDEADDR_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
115    fi
116
117    #ucollection
118    if [ -f $UNIFIED_COLLECTION_PATCH_FILE ]; then
119        bash $UNIFIED_COLLECTION_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
120    fi
121
122    #code_sign
123    if [ -f $CODE_SIGN_PATCH_FILE ]; then
124	bash $CODE_SIGN_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
125    fi
126
127    cp -rf ${BUILD_SCRIPT_PATH}/kernel/logo* ${KERNEL_SRC_TMP_PATH}/
128
129    #config
130    if [ ! -f "$DEFCONFIG_FORM_FILE" ]; then
131        DEFCONFIG_FORM_FILE=
132        echo "warning no form config file $(DEFCONFIG_FORM_FILE)"
133    fi
134    if [ ! -f "$DEFCONFIG_PROC_FILE" ]; then
135        DEFCONFIG_PROC_FILE=
136        echo "warning no prod config file $(DEFCONFIG_PROC_FILE)"
137    fi
138    bash ${ROOT_DIR}/kernel/linux/linux-5.10/scripts/kconfig/merge_config.sh -O ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/ -m ${DEFCONFIG_TYPE_FILE} ${DEFCONFIG_FORM_FILE} ${DEFCONFIG_ARCH_FILE} ${DEFCONFIG_PROC_FILE} ${DEFCONFIG_BASE_FILE}
139    mv ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/.config ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/rockchip_linux_defconfig
140
141    #selinux config patch
142    for arg in "$@"; do
143        if [ "$arg" = "is_release" ]; then
144            echo "close selinux kernel config CONFIG_SECURITY_SELINUX_DEVELOP in release version"
145            ${KERNEL_SOURCE}/scripts/config --file ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/rockchip_linux_defconfig -d SECURITY_SELINUX_DEVELOP
146        fi
147    done
148
149    if [ $MAKE_OHOS_ENV == "GPUDRIVER=mesa3d" ]; then
150        python ${ROOT_DIR}/third_party/mesa3d/ohos/modifyDtsi.py ${KERNEL_SRC_TMP_PATH}/arch/arm64/boot/dts/rockchip/rk3568.dtsi
151    fi
152}
153
154set +e
155is_kernel_change ${ROOT_DIR}
156KERNEL_SOURCE_CHANGED=$?
157set -e
158if [ ${KERNEL_SOURCE_CHANGED}  -ne 0 ]; then
159    echo "kernel or it's deps changed, start source update."
160    copy_and_patch_kernel_source
161else
162    echo "no changes to kernel, skip source copy."
163fi
164
165cd ${KERNEL_SRC_TMP_PATH}
166
167eval $MAKE_OHOS_ENV ./make-ohos.sh TB-RK3568X0 $RAMDISK_ARG ${ENABLE_LTO_O0}
168
169mkdir -p ${2}
170
171if [ "enable_ramdisk" != "${12}" ]; then
172    cp ${KERNEL_OBJ_TMP_PATH}/boot_linux.img ${2}/boot_linux.img
173fi
174cp ${KERNEL_OBJ_TMP_PATH}/resource.img ${2}/resource.img
175cp ${3}/loader/MiniLoaderAll.bin ${2}/MiniLoaderAll.bin
176cp ${3}/loader/uboot.img ${2}/uboot.img
177
178if [ "enable_absystem" == "${14}" ]; then
179    cp ${3}/loader/parameter_ab.txt ${2}/parameter_ab.txt
180    cp ${3}/loader/config_ab.cfg ${2}/config_ab.cfg
181else
182    cp ${3}/loader/parameter.txt ${2}/parameter.txt
183    cp ${3}/loader/config.cfg ${2}/config.cfg
184fi
185
186popd
187
188../kernel/src_tmp/linux-5.10/make-boot.sh ..
189
190if [ ${KERNEL_SOURCE_CHANGED} -ne 0 ]; then
191    cp ${ROOT_DIR}/out/kernel/checkpoint/last_build.info ${ROOT_DIR}/out/kernel/checkpoint/last_build.backup
192    cp ${ROOT_DIR}/out/kernel/checkpoint/current_build.info ${ROOT_DIR}/out/kernel/checkpoint/last_build.info
193    echo "kernel compile finish, save build info."
194else
195    echo "kernel compile finish."
196fi
197