• 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_VERSION=${9}
25KERNEL_FORM=${10}
26KERNEL_PROD=${11}
27ENABLE_LTO_O0=${12}
28
29KERNEL_SRC_TMP_PATH=${ROOT_DIR}/out/kernel/src_tmp/${KERNEL_VERSION}
30KERNEL_OBJ_TMP_PATH=${ROOT_DIR}/out/kernel/OBJ/${KERNEL_VERSION}
31KERNEL_SOURCE=${ROOT_DIR}/kernel/linux/${KERNEL_VERSION}
32KERNEL_PATCH_PATH=${ROOT_DIR}/kernel/linux/patches/${KERNEL_VERSION}
33KERNEL_PATCH=${ROOT_DIR}/kernel/linux/patches/${KERNEL_VERSION}/rk3568_patch/kernel.patch
34BUILD_SCRIPT_PATH=${3}
35NEWIP_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/newip/apply_newip.sh
36TZDRIVER_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/tzdriver/apply_tzdriver.sh
37XPM_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/xpm/apply_xpm.sh
38CED_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/container_escape_detection/apply_ced.sh
39HIDEADDR_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/memory_security/apply_hideaddr.sh
40QOS_AUTH_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/qos_auth/apply_qos_auth.sh
41UNIFIED_COLLECTION_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/ucollection/apply_ucollection.sh
42CODE_SIGN_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/code_sign/apply_code_sign.sh
43
44HARMONY_CONFIG_PATH=${ROOT_DIR}/kernel/linux/config/${KERNEL_VERSION}
45DEVICE_CONFIG_PATH=${ROOT_DIR}/kernel/linux/config/${KERNEL_VERSION}/${DEVICE_NAME}
46DEFCONFIG_BASE_FILE=${HARMONY_CONFIG_PATH}/base_defconfig
47DEFCONFIG_TYPE_FILE=${HARMONY_CONFIG_PATH}/type/standard_defconfig
48DEFCONFIG_FORM_FILE=${HARMONY_CONFIG_PATH}/form/${KERNEL_FORM}_defconfig
49DEFCONFIG_ARCH_FILE=${DEVICE_CONFIG_PATH}/arch/arm64_defconfig
50DEFCONFIG_PROC_FILE=${DEVICE_CONFIG_PATH}/product/${KERNEL_PROD}_defconfig
51
52RAMDISK_ARG="disable_ramdisk"
53MAKE_OHOS_ENV="GPUDRIVER=mali"
54export KBUILD_OUTPUT=${KERNEL_OBJ_TMP_PATH}
55
56source ${BUILD_SCRIPT_PATH}/kernel/kernel_source_checker.sh
57
58for i in "$@"
59do
60    case $i in
61        enable_ramdisk)
62            RAMDISK_ARG=enable_ramdisk
63            ;;
64        enable_mesa3d)
65            MAKE_OHOS_ENV="GPUDRIVER=mesa3d"
66            ;;
67    esac
68done
69
70function copy_and_patch_kernel_source()
71{
72    rm -rf ${KERNEL_SRC_TMP_PATH}
73    mkdir -p ${KERNEL_SRC_TMP_PATH}
74
75    rm -rf ${KERNEL_OBJ_TMP_PATH}
76    mkdir -p ${KERNEL_OBJ_TMP_PATH}
77
78    cp -arf ${KERNEL_SOURCE}/* ${KERNEL_SRC_TMP_PATH}/
79
80    cd ${KERNEL_SRC_TMP_PATH}
81
82    #HDF patch
83    bash ${ROOT_DIR}/drivers/hdf_core/adapter/khdf/linux/patch_hdf.sh ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${KERNEL_PATCH_PATH} ${DEVICE_NAME}
84
85    #update linux-6.6 kernel stdarg.h path to linux/stdarg.h
86    if [ ${KERNEL_VERSION} == "linux-6.6" ]
87    then
88      sed -i 's/<stdarg.h>/<linux\/stdarg.h>/' ${KERNEL_SRC_TMP_PATH}/bounds_checking_function/include/securec.h
89      sed -i 's/"stdarg.h"/"linux\/stdarg.h"/' ${ROOT_DIR}/drivers/hdf_core/framework/support/platform/src/fwk/platform_device.c
90    fi
91
92    #kernel patch
93    patch -p1 < ${KERNEL_PATCH}
94
95    #newip
96    if [ -f $NEWIP_PATCH_FILE ]; then
97        bash $NEWIP_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} ${KERNEL_VERSION}
98    fi
99
100    #tzdriver
101    if [ -f $TZDRIVER_PATCH_FILE ]; then
102        bash $TZDRIVER_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} ${KERNEL_VERSION}
103    fi
104
105    #xpm
106    if [ -f $XPM_PATCH_FILE ]; then
107        bash $XPM_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} ${KERNEL_VERSION}
108    fi
109
110    #ced
111    if [ -f $CED_PATCH_FILE ]; then
112        bash $CED_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} ${KERNEL_VERSION}
113    fi
114
115    #qos_auth
116    if [ -f $QOS_AUTH_PATCH_FILE ]; then
117        bash $QOS_AUTH_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} ${KERNEL_VERSION}
118    fi
119
120    #hideaddr
121    if [ -f $HIDEADDR_PATCH_FILE ]; then
122        bash $HIDEADDR_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} ${KERNEL_VERSION}
123    fi
124
125    #ucollection
126    if [ -f $UNIFIED_COLLECTION_PATCH_FILE ]; then
127        bash $UNIFIED_COLLECTION_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} ${KERNEL_VERSION}
128    fi
129
130    #code_sign
131    if [ -f $CODE_SIGN_PATCH_FILE ]; then
132        bash $CODE_SIGN_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} ${KERNEL_VERSION}
133    fi
134
135    cp -rf ${BUILD_SCRIPT_PATH}/kernel/logo* ${KERNEL_SRC_TMP_PATH}/
136
137    #config
138    if [ ! -f "$DEFCONFIG_FORM_FILE" ]; then
139        DEFCONFIG_FORM_FILE=
140        echo "warning no form config file $(DEFCONFIG_FORM_FILE)"
141    fi
142    if [ ! -f "$DEFCONFIG_PROC_FILE" ]; then
143        DEFCONFIG_PROC_FILE=
144        echo "warning no prod config file $(DEFCONFIG_PROC_FILE)"
145    fi
146    bash ${ROOT_DIR}/kernel/linux/${KERNEL_VERSION}/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}
147    mv ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/.config ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/rockchip_linux_defconfig
148
149    #selinux config patch
150    for arg in "$@"; do
151        if [ "$arg" = "is_release" ]; then
152            echo "close selinux kernel config CONFIG_SECURITY_SELINUX_DEVELOP in release version"
153            ${KERNEL_SOURCE}/scripts/config --file ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/rockchip_linux_defconfig -d SECURITY_SELINUX_DEVELOP
154        fi
155    done
156
157    if [ $MAKE_OHOS_ENV == "GPUDRIVER=mesa3d" ]; then
158        python ${ROOT_DIR}/third_party/mesa3d/ohos/modifyDtsi.py ${KERNEL_SRC_TMP_PATH}/arch/arm64/boot/dts/rockchip/rk3568.dtsi
159    fi
160}
161
162set +e
163is_kernel_change ${ROOT_DIR}
164KERNEL_SOURCE_CHANGED=$?
165set -e
166if [ ${KERNEL_SOURCE_CHANGED}  -ne 0 ]; then
167    echo "kernel or it's deps changed, start source update."
168    copy_and_patch_kernel_source
169else
170    echo "no changes to kernel, skip source copy."
171fi
172
173cd ${KERNEL_SRC_TMP_PATH}
174
175eval $MAKE_OHOS_ENV ./make-ohos.sh TB-RK3568X0 $RAMDISK_ARG ${ENABLE_LTO_O0}
176
177# revert linux-6.6 hdf stdarg.h path
178if [ ${KERNEL_VERSION} == "linux-6.6" ]
179then
180  sed -i 's/"linux\/stdarg.h"/"stdarg.h"/' ${ROOT_DIR}/drivers/hdf_core/framework/support/platform/src/fwk/platform_device.c
181fi
182
183mkdir -p ${2}
184
185if [ "enable_ramdisk" != "${13}" ]; then
186    cp ${KERNEL_OBJ_TMP_PATH}/boot_linux.img ${2}/boot_linux.img
187fi
188cp ${KERNEL_OBJ_TMP_PATH}/resource.img ${2}/resource.img
189cp ${3}/loader/MiniLoaderAll.bin ${2}/MiniLoaderAll.bin
190cp ${3}/loader/uboot.img ${2}/uboot.img
191
192if [ "enable_absystem" == "${15}" ]; then
193    cp ${3}/loader/parameter_ab.txt ${2}/parameter_ab.txt
194    cp ${3}/loader/config_ab.cfg ${2}/config_ab.cfg
195else
196    cp ${3}/loader/parameter.txt ${2}/parameter.txt
197    cp ${3}/loader/config.cfg ${2}/config.cfg
198fi
199
200popd
201
202../kernel/src_tmp/${KERNEL_VERSION}/make-boot.sh ..
203
204if [ ${KERNEL_SOURCE_CHANGED} -ne 0 ]; then
205    cp ${ROOT_DIR}/out/kernel/checkpoint/last_build.info ${ROOT_DIR}/out/kernel/checkpoint/last_build.backup
206    cp ${ROOT_DIR}/out/kernel/checkpoint/current_build.info ${ROOT_DIR}/out/kernel/checkpoint/last_build.info
207    echo "kernel compile finish, save build info."
208else
209    echo "kernel compile finish."
210fi
211