summaryrefslogtreecommitdiff
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-11-11 12:04:30 (GMT)
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-11-11 12:04:30 (GMT)
commitee96b72a40d6e8f018938dee6d0246f117593199 (patch)
tree205b0702fcdda988058880d5b79a5e06d2a798f8
parent1c250cdbeca49321c8dec8990f184d38306a4e5b (diff)
parentf833f56b913792380ea36a166b33b2b2b168d0fe (diff)
downloadcommon-ee96b72a40d6e8f018938dee6d0246f117593199.zip
common-ee96b72a40d6e8f018938dee6d0246f117593199.tar.gz
common-ee96b72a40d6e8f018938dee6d0246f117593199.tar.bz2
Merge "gki: move internal modules to external for v2.0 requirement [3/4]" into r-tv-dev am: f833f56b91
Original change: undetermined Change-Id: I27c1cb1fe69f9ebaa85e0ef7f29b2243e58d33dd
Diffstat
-rwxr-xr-xkernelbuild/build.sh343
1 files changed, 200 insertions, 143 deletions
diff --git a/kernelbuild/build.sh b/kernelbuild/build.sh
index ae6703c..2021d11 100755
--- a/kernelbuild/build.sh
+++ b/kernelbuild/build.sh
@@ -164,25 +164,25 @@ set -e
# rel_path <to> <from>
# Generate relative directory path to reach directory <to> from <from>
function rel_path() {
- local to=$1
- local from=$2
- local path=
- local stem=
- local prevstem=
- [ -n "$to" ] || return 1
- [ -n "$from" ] || return 1
- to=$(readlink -e "$to")
- from=$(readlink -e "$from")
- [ -n "$to" ] || return 1
- [ -n "$from" ] || return 1
- stem=${from}/
- while [ "${to#$stem}" == "${to}" -a "${stem}" != "${prevstem}" ]; do
- prevstem=$stem
- stem=$(readlink -e "${stem}/..")
- [ "${stem%/}" == "${stem}" ] && stem=${stem}/
- path=${path}../
- done
- echo ${path}${to#$stem}
+ local to=$1
+ local from=$2
+ local path=
+ local stem=
+ local prevstem=
+ [ -n "$to" ] || return 1
+ [ -n "$from" ] || return 1
+ to=$(readlink -e "$to")
+ from=$(readlink -e "$from")
+ [ -n "$to" ] || return 1
+ [ -n "$from" ] || return 1
+ stem=${from}/
+ while [ "${to#$stem}" == "${to}" -a "${stem}" != "${prevstem}" ]; do
+ prevstem=$stem
+ stem=$(readlink -e "${stem}/..")
+ [ "${stem%/}" == "${stem}" ] && stem=${stem}/
+ path=${path}../
+ done
+ echo ${path}${to#$stem}
}
export ROOT_DIR=$(readlink -f $(dirname $0)/../../../..)
@@ -262,12 +262,49 @@ if [ -n "${PRE_DEFCONFIG_CMDS}" ]; then
set +x
fi
+if [ $KERNEL_A32_SUPPORT ]; then
+GKI_EXT_MODULE_CFG=${KERNEL_DIR}/arch/arm/configs/meson32_gki_module_config
+else
+GKI_EXT_MODULE_CFG=${KERNEL_DIR}/arch/arm64/configs/meson64_gki_module_config
+fi
+
+function read_ext_module_config() {
+ ALL_LINE=""
+ while read LINE
+ do
+ if [[ $LINE != \#* && $LINE != "" ]]; then
+ ALL_LINE="$ALL_LINE"" ""$LINE"
+ fi
+ done < $1
+ echo $ALL_LINE
+}
+
+GKI_EXT_MODULE_CONFIG=$(read_ext_module_config $GKI_EXT_MODULE_CFG)
+
+export GKI_EXT_MODULE_CONFIG
+
+function read_ext_module_predefine() {
+ PRE_DEFINE=""
+ while read LINE
+ do
+ if [[ $LINE != \#* && $LINE != "" ]]; then
+ TMP_CFG=${LINE%=*}
+ PRE_DEFINE="$PRE_DEFINE"" -D""$TMP_CFG"
+ fi
+ done < $1
+ echo $PRE_DEFINE
+}
+
+GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine $GKI_EXT_MODULE_CFG)
+
+export GKI_EXT_MODULE_PREDEFINE
+
if [ -z "${SKIP_DEFCONFIG}" ] ; then
set -x
if [ $KERNEL_A32_SUPPORT ]; then
(cd ${KERNEL_DIR} && make "${TOOL_ARGS[@]}" O=${OUT_DIR} ${MAKE_ARGS} meson64_a32_defconfig)
else
-cat ${KERNEL_DIR}/arch/arm64/configs/meson64_gki_defconfig ${KERNEL_DIR}/arch/arm64/configs/meson64_gki.fragment > ${KERNEL_DIR}/arch/arm64/configs/meson64_a64_gki_defconfig
+cat ${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${KERNEL_DIR}/arch/arm64/configs/meson64_gki.fragment > ${KERNEL_DIR}/arch/arm64/configs/meson64_a64_gki_defconfig
(cd ${KERNEL_DIR} && make "${TOOL_ARGS[@]}" O=${OUT_DIR} ${MAKE_ARGS} meson64_a64_gki_defconfig)
fi
set +x
@@ -369,6 +406,12 @@ if [ -n "${BUILD_INITRAMFS}" -o -n "${IN_KERNEL_MODULES}" ]; then
INSTALL_MOD_PATH=${MODULES_STAGING_DIR} ${MAKE_ARGS} modules_install)
fi
+# basic common modules build as extern
+EXT_MODULES+="common/drivers/amlogic
+common/sound/soc/amlogic
+common/sound/soc/codecs/amlogic
+"
+
if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
echo "========================================================"
echo " Building external modules and installing them into staging directory"
@@ -555,101 +598,101 @@ echo "========================================================"
echo " Files copied to ${DIST_DIR}"
if [ ! -z "${BUILD_BOOT_IMG}" ] ; then
- echo "************build boot img***********"
- if [ -z "${BOOT_IMAGE_HEADER_VERSION}" ]; then
- BOOT_IMAGE_HEADER_VERSION="3"
- fi
- MKBOOTIMG_BASE_ADDR=
- MKBOOTIMG_PAGE_SIZE=
- MKBOOTIMG_BOOT_CMDLINE=
- if [ -n "${BASE_ADDRESS}" ]; then
- MKBOOTIMG_BASE_ADDR="--base ${BASE_ADDRESS}"
- fi
- if [ -n "${PAGE_SIZE}" ]; then
- MKBOOTIMG_PAGE_SIZE="--pagesize ${PAGE_SIZE}"
- fi
- if [ -n "${KERNEL_CMDLINE}" ]; then
- MKBOOTIMG_BOOT_CMDLINE="--cmdline \"${KERNEL_CMDLINE}\""
- fi
-
- DTB_FILE_LIST=$(find ${DIST_DIR} -name "*.dtb")
- if [ -z "${DTB_FILE_LIST}" ]; then
- echo "No *.dtb files found in ${DIST_DIR}"
- exit 1
- fi
- cat $DTB_FILE_LIST > ${DIST_DIR}/dtb.img
-
- set -x
- MKBOOTIMG_RAMDISKS=()
- for ramdisk in ${VENDOR_RAMDISK_BINARY} \
- "${MODULES_STAGING_DIR}/initramfs.cpio"; do
- if [ -f "${DIST_DIR}/${ramdisk}" ]; then
- MKBOOTIMG_RAMDISKS+=("${DIST_DIR}/${ramdisk}")
- else
- if [ -f "${ramdisk}" ]; then
- MKBOOTIMG_RAMDISKS+=("${ramdisk}")
- fi
- fi
- done
- set +e # disable exiting of error so gzip -t can be handled properly
- for ((i=0; i<"${#MKBOOTIMG_RAMDISKS[@]}"; i++)); do
- TEST_GZIP=$(gzip -t "${MKBOOTIMG_RAMDISKS[$i]}" 2>&1 > /dev/null)
- if [ "$?" -eq 0 ]; then
- CPIO_NAME=$(echo "${MKBOOTIMG_RAMDISKS[$i]}" | sed -e 's/\(.\+\)\.[a-z]\+$/\1.cpio/')
- gzip -cd "${MKBOOTIMG_RAMDISKS[$i]}" > ${CPIO_NAME}
- MKBOOTIMG_RAMDISKS[$i]=${CPIO_NAME}
- fi
- done
- set -e # re-enable exiting on errors
- if [ "${#MKBOOTIMG_RAMDISKS[@]}" -gt 0 ]; then
- cat ${MKBOOTIMG_RAMDISKS[*]} | gzip - > ${DIST_DIR}/ramdisk.gz
- else
- echo "No ramdisk found. Please provide a GKI and/or a vendor ramdisk."
- exit 1
- fi
- set -x
-
- if [ -z "${MKBOOTIMG_PATH}" ]; then
- MKBOOTIMG_PATH="tools/mkbootimg/mkbootimg.py"
- fi
- if [ ! -f "$MKBOOTIMG_PATH" ]; then
- echo "mkbootimg.py script not found. MKBOOTIMG_PATH = $MKBOOTIMG_PATH"
- exit 1
- fi
-
- if [ ! -f "${DIST_DIR}/$KERNEL_BINARY" ]; then
- echo "kernel binary(KERNEL_BINARY = $KERNEL_BINARY) not present in ${DIST_DIR}"
- exit 1
- fi
-
- VENDOR_BOOT_ARGS=
- MKBOOTIMG_BOOT_RAMDISK="--ramdisk ${DIST_DIR}/ramdisk.gz"
- if [ "${BOOT_IMAGE_HEADER_VERSION}" -eq "3" ]; then
- MKBOOTIMG_VENDOR_CMDLINE=
- if [ -n "${KERNEL_VENDOR_CMDLINE}" ]; then
- MKBOOTIMG_VENDOR_CMDLINE="--vendor_cmdline \"${KERNEL_VENDOR_CMDLINE}\""
- fi
-
- MKBOOTIMG_BOOT_RAMDISK=
- if [ -f "${GKI_RAMDISK_PREBUILT_BINARY}" ]; then
- MKBOOTIMG_BOOT_RAMDISK="--ramdisk ${GKI_RAMDISK_PREBUILT_BINARY}"
- fi
-
- VENDOR_BOOT_ARGS="--vendor_boot ${DIST_DIR}/vendor_boot.img \
- --vendor_ramdisk ${DIST_DIR}/ramdisk.gz ${MKBOOTIMG_VENDOR_CMDLINE}"
- fi
-
- # (b/141990457) Investigate parenthesis issue with MKBOOTIMG_BOOT_CMDLINE when
- # executed outside of this "bash -c".
- (set -x; bash -c "python $MKBOOTIMG_PATH --kernel ${DIST_DIR}/$KERNEL_BINARY \
- ${MKBOOTIMG_BOOT_RAMDISK} \
- --dtb ${DIST_DIR}/dtb.img --header_version $BOOT_IMAGE_HEADER_VERSION \
- ${MKBOOTIMG_BASE_ADDR} ${MKBOOTIMG_PAGE_SIZE} ${MKBOOTIMG_BOOT_CMDLINE} \
- -o ${DIST_DIR}/boot.img ${VENDOR_BOOT_ARGS}"
- )
-
- set +x
- echo "boot image created at ${DIST_DIR}/boot.img"
+ echo "************build boot img***********"
+ if [ -z "${BOOT_IMAGE_HEADER_VERSION}" ]; then
+ BOOT_IMAGE_HEADER_VERSION="3"
+ fi
+ MKBOOTIMG_BASE_ADDR=
+ MKBOOTIMG_PAGE_SIZE=
+ MKBOOTIMG_BOOT_CMDLINE=
+ if [ -n "${BASE_ADDRESS}" ]; then
+ MKBOOTIMG_BASE_ADDR="--base ${BASE_ADDRESS}"
+ fi
+ if [ -n "${PAGE_SIZE}" ]; then
+ MKBOOTIMG_PAGE_SIZE="--pagesize ${PAGE_SIZE}"
+ fi
+ if [ -n "${KERNEL_CMDLINE}" ]; then
+ MKBOOTIMG_BOOT_CMDLINE="--cmdline \"${KERNEL_CMDLINE}\""
+ fi
+
+ DTB_FILE_LIST=$(find ${DIST_DIR} -name "*.dtb")
+ if [ -z "${DTB_FILE_LIST}" ]; then
+ echo "No *.dtb files found in ${DIST_DIR}"
+ exit 1
+ fi
+ cat $DTB_FILE_LIST > ${DIST_DIR}/dtb.img
+
+ set -x
+ MKBOOTIMG_RAMDISKS=()
+ for ramdisk in ${VENDOR_RAMDISK_BINARY} \
+ "${MODULES_STAGING_DIR}/initramfs.cpio"; do
+ if [ -f "${DIST_DIR}/${ramdisk}" ]; then
+ MKBOOTIMG_RAMDISKS+=("${DIST_DIR}/${ramdisk}")
+ else
+ if [ -f "${ramdisk}" ]; then
+ MKBOOTIMG_RAMDISKS+=("${ramdisk}")
+ fi
+ fi
+ done
+ set +e # disable exiting of error so gzip -t can be handled properly
+ for ((i=0; i<"${#MKBOOTIMG_RAMDISKS[@]}"; i++)); do
+ TEST_GZIP=$(gzip -t "${MKBOOTIMG_RAMDISKS[$i]}" 2>&1 > /dev/null)
+ if [ "$?" -eq 0 ]; then
+ CPIO_NAME=$(echo "${MKBOOTIMG_RAMDISKS[$i]}" | sed -e 's/\(.\+\)\.[a-z]\+$/\1.cpio/')
+ gzip -cd "${MKBOOTIMG_RAMDISKS[$i]}" > ${CPIO_NAME}
+ MKBOOTIMG_RAMDISKS[$i]=${CPIO_NAME}
+ fi
+ done
+ set -e # re-enable exiting on errors
+ if [ "${#MKBOOTIMG_RAMDISKS[@]}" -gt 0 ]; then
+ cat ${MKBOOTIMG_RAMDISKS[*]} | gzip - > ${DIST_DIR}/ramdisk.gz
+ else
+ echo "No ramdisk found. Please provide a GKI and/or a vendor ramdisk."
+ exit 1
+ fi
+ set -x
+
+ if [ -z "${MKBOOTIMG_PATH}" ]; then
+ MKBOOTIMG_PATH="tools/mkbootimg/mkbootimg.py"
+ fi
+ if [ ! -f "$MKBOOTIMG_PATH" ]; then
+ echo "mkbootimg.py script not found. MKBOOTIMG_PATH = $MKBOOTIMG_PATH"
+ exit 1
+ fi
+
+ if [ ! -f "${DIST_DIR}/$KERNEL_BINARY" ]; then
+ echo "kernel binary(KERNEL_BINARY = $KERNEL_BINARY) not present in ${DIST_DIR}"
+ exit 1
+ fi
+
+ VENDOR_BOOT_ARGS=
+ MKBOOTIMG_BOOT_RAMDISK="--ramdisk ${DIST_DIR}/ramdisk.gz"
+ if [ "${BOOT_IMAGE_HEADER_VERSION}" -eq "3" ]; then
+ MKBOOTIMG_VENDOR_CMDLINE=
+ if [ -n "${KERNEL_VENDOR_CMDLINE}" ]; then
+ MKBOOTIMG_VENDOR_CMDLINE="--vendor_cmdline \"${KERNEL_VENDOR_CMDLINE}\""
+ fi
+
+ MKBOOTIMG_BOOT_RAMDISK=
+ if [ -f "${GKI_RAMDISK_PREBUILT_BINARY}" ]; then
+ MKBOOTIMG_BOOT_RAMDISK="--ramdisk ${GKI_RAMDISK_PREBUILT_BINARY}"
+ fi
+
+ VENDOR_BOOT_ARGS="--vendor_boot ${DIST_DIR}/vendor_boot.img \
+ --vendor_ramdisk ${DIST_DIR}/ramdisk.gz ${MKBOOTIMG_VENDOR_CMDLINE}"
+ fi
+
+ # (b/141990457) Investigate parenthesis issue with MKBOOTIMG_BOOT_CMDLINE when
+ # executed outside of this "bash -c".
+ (set -x; bash -c "python $MKBOOTIMG_PATH --kernel ${DIST_DIR}/$KERNEL_BINARY \
+ ${MKBOOTIMG_BOOT_RAMDISK} \
+ --dtb ${DIST_DIR}/dtb.img --header_version $BOOT_IMAGE_HEADER_VERSION \
+ ${MKBOOTIMG_BASE_ADDR} ${MKBOOTIMG_PAGE_SIZE} ${MKBOOTIMG_BOOT_CMDLINE} \
+ -o ${DIST_DIR}/boot.img ${VENDOR_BOOT_ARGS}"
+ )
+
+ set +x
+ echo "boot image created at ${DIST_DIR}/boot.img"
fi
echo "========================================================"
@@ -665,9 +708,9 @@ cp ${OUT_DIR}/../vendor_lib/firmware/video/* ${ROOT_DIR}/${PRODUCT_DIRNAME}-kern
cp ${OUT_DIR}/../vendor_lib/optee* ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/lib/
cp ${OUT_DIR}/../vendor_lib/modules/* ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/lib/modules/
if [ $KERNEL_A32_SUPPORT ]; then
- cp ${OUT_DIR}/arch/arm/boot/uImage ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/
+ cp ${OUT_DIR}/arch/arm/boot/uImage ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/
else
- cp ${OUT_DIR}/arch/arm64/boot/Image.gz ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/
+ cp ${OUT_DIR}/arch/arm64/boot/Image.gz ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/
fi
echo "====copy dtb====== ${KERNEL_DEVICETREE}"
@@ -675,39 +718,39 @@ devicenum=$(echo "x${KERNEL_DEVICETREE}x" | awk '{print NF}')
echo "=========devicenum: ${devicenum}"
if [ ${devicenum} == 1 ]; then
- echo "===single dts==="
- if [ $KERNEL_A32_SUPPORT ]; then
- cp -f ${OUT_DIR}/arch/arm/boot/dts/amlogic/${KERNEL_DEVICETREE}.dtb ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb
- else
- cp -f ${OUT_DIR}/arch/arm64/boot/dts/amlogic/${KERNEL_DEVICETREE}.dtb ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb
- fi
+ echo "===single dts==="
+ if [ $KERNEL_A32_SUPPORT ]; then
+ cp -f ${OUT_DIR}/arch/arm/boot/dts/amlogic/${KERNEL_DEVICETREE}.dtb ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb
+ else
+ cp -f ${OUT_DIR}/arch/arm64/boot/dts/amlogic/${KERNEL_DEVICETREE}.dtb ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb
+ fi
else
- echo "===multi dts==="
- mkdir -p ${OUT_DIR}/../multi_dts
- for aDts in ${KERNEL_DEVICETREE}; do
- if [ $KERNEL_A32_SUPPORT ]; then
- cp ${OUT_DIR}/arch/arm/boot/dts/amlogic/$aDts.dtb ${OUT_DIR}/../multi_dts/
- else
- cp ${OUT_DIR}/arch/arm64/boot/dts/amlogic/$aDts.dtb ${OUT_DIR}/../multi_dts/
- fi
- done
- ${DTBTOOL} -o ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb -p ${OUT_DIR}/scripts/dtc/ ${OUT_DIR}/../multi_dts/
- if [ $? -ne 0 ]; then
- echo "build multi dts error"
- exit 1
- fi
+ echo "===multi dts==="
+ mkdir -p ${OUT_DIR}/../multi_dts
+ for aDts in ${KERNEL_DEVICETREE}; do
+ if [ $KERNEL_A32_SUPPORT ]; then
+ cp ${OUT_DIR}/arch/arm/boot/dts/amlogic/$aDts.dtb ${OUT_DIR}/../multi_dts/
+ else
+ cp ${OUT_DIR}/arch/arm64/boot/dts/amlogic/$aDts.dtb ${OUT_DIR}/../multi_dts/
+ fi
+ done
+ ${DTBTOOL} -o ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb -p ${OUT_DIR}/scripts/dtc/ ${OUT_DIR}/../multi_dts/
+ if [ $? -ne 0 ]; then
+ echo "build multi dts error"
+ exit 1
+ fi
fi
echo "===build dtbo==="
if [ $KERNEL_A32_SUPPORT ]; then
- ${DTCTOOL} -@ -O dtb -o ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo common/arch/arm/boot/dts/amlogic/${DTBO_DEVICETREE}.dts
+ ${DTCTOOL} -@ -O dtb -o ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo common/arch/arm/boot/dts/amlogic/${DTBO_DEVICETREE}.dts
else
- ${DTCTOOL} -@ -O dtb -o ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo common/arch/arm64/boot/dts/amlogic/${DTBO_DEVICETREE}.dts
+ ${DTCTOOL} -@ -O dtb -o ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo common/arch/arm64/boot/dts/amlogic/${DTBO_DEVICETREE}.dts
fi
${DTIMGTOOL} create ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/dtbo.img ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo
if [ $? -ne 0 ]; then
- echo "build dtbo error"
- exit 1
+ echo "build dtbo error"
+ exit 1
fi
# No trace_printk use on build server build
@@ -733,8 +776,22 @@ mkdir -p ${RAMDISK_TARGET}/lib/modules/symbols/
for loop in `find ${MODULES_STAGING_DIR}/lib/modules/*/kernel/ -type f | grep "\.ko$"`
do
- cp $loop ${RAMDISK_TARGET}/lib/modules/
- cp $loop ${RAMDISK_TARGET}/lib/modules/symbols/
+ cp $loop ${RAMDISK_TARGET}/lib/modules/
+ cp $loop ${RAMDISK_TARGET}/lib/modules/symbols/
+done
+
+# copy extra ko to ramdisk
+for loop in `find ${COMMON_OUT_DIR}/common/drivers/amlogic/ -type f | grep "\.ko$"`
+do
+ cp $loop ${RAMDISK_TARGET}/lib/modules/
+ cp $loop ${RAMDISK_TARGET}/lib/modules/symbols/
+done
+
+# copy extra ko to ramdisk
+for loop in `find ${COMMON_OUT_DIR}/common/sound/soc/ -type f | grep "\.ko$"`
+do
+ cp $loop ${RAMDISK_TARGET}/lib/modules/
+ cp $loop ${RAMDISK_TARGET}/lib/modules/symbols/
done
${CROSS_COMPILE}strip -d ${RAMDISK_TARGET}/lib/modules/*.ko