Skip to content

Instantly share code, notes, and snippets.

@RisenID
Last active August 29, 2025 11:33
Show Gist options
  • Select an option

  • Save RisenID/7fdb50fbd71fa3b047b35e6d5e6d700f to your computer and use it in GitHub Desktop.

Select an option

Save RisenID/7fdb50fbd71fa3b047b35e6d5e6d700f to your computer and use it in GitHub Desktop.
sm7125 build script
#!/bin/bash
#
# Ascendia Build Script - sm7125
# Coded by BlackMesa123 @2023
# Modified and adapted by RisenID @2024
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
set -e
# Change this according to what you need
DATE=`date +%Y%m%d`
ANDROID_VERSION="15"
ASC_VERSION="v4.1"
ASC_VERSION1="v4"
ASC_VERSION2="4.1"
# Clang 11 r383902b1 is suggested
TC_DIR=/home/risen/android/toolchains/clang/clang-r487747c
# ! DON'T CHANGE THESE !
SRC_DIR=$(pwd)/sm7125
OUT_DIR=/home/risen/android/builds/ascendia/sm7125
MAIN_DIR=$(pwd)
JOBS=32
MAKE_PARAMS="-j$JOBS -C $SRC_DIR O=$SRC_DIR/out \
ARCH=arm64 AR="llvm-ar" NM="llvm-nm" LD="ld.lld" AS="llvm-as" STRIP="llvm-strip" \
OBJCOPY="llvm-objcopy" OBJDUMP="llvm-objdump" CLANG_TRIPLE=aarch64-linux-gnu- \
CROSS_COMPILE=aarch64-linux-gnu- CROSS_COMPILE_ARM32=arm-linux-gnueabi-"
export PATH="$TC_DIR/bin:$PATH"
# ! DON'T CHANGE THESE !
## Now let's handle this ourselves
CLEAN_SOURCE()
{
echo "----------------------------------------------"
echo "Cleaning up sources..."
rm -rf $SRC_DIR/out
}
BUILD_KERNEL()
{
echo "----------------------------------------------"
[ -d "$SRC_DIR/out" ] && echo "Starting $VARIANT kernel build... (DIRTY)" || echo "Starting $VARIANT kernel build..."
echo " "
export LOCALVERSION="-Ascendia-$ANDROID_VERSION-$ASC_VERSION-$ASC_VAR-$TYPE"
mkdir -p $SRC_DIR/out
make $MAKE_PARAMS CC="ccache clang" vendor/$DEFCONFIG
echo " "
make $MAKE_PARAMS CC="ccache clang"
echo " "
}
REGEN_DEFCONFIG()
{
echo "----------------------------------------------"
[ -d "$SRC_DIR/out" ] && echo "Starting $VARIANT kernel build... (DIRTY)" || echo "Starting $VARIANT kernel build..."
echo " "
mkdir -p $SRC_DIR/out
make $MAKE_PARAMS CC="ccache clang" vendor/$DEFCONFIG
echo " "
# Regen defconfig
cp $SRC_DIR/out/.config $SRC_DIR/arch/arm64/configs/vendor/$DEFCONFIG
echo " "
}
PACK_BOOT_IMG()
{
echo "----------------------------------------------"
echo "Packing $VARIANT boot.img..."
rm -rf $OUT_DIR/tmp/
mkdir $OUT_DIR/tmp/
# Copy and unpack stock boot.img
cp $OUT_DIR/a52/boot.img $OUT_DIR/tmp/boot.img
cd $OUT_DIR/tmp/
if test "$ASC_VAR" = O; then
echo "Erasing AVB footer for OneUI"
avbtool erase_footer --image boot.img
elif test "$ASC_VAR" = A; then
echo "Keeping AVB footer for AOSP"
else
echo "----------------------------------------------"
echo "Check Variant..."
exit
fi
magiskboot_x86 unpack -h boot.img
# Replace KernelRPValue
sed '1 c\name='"$RP_REV"'' header > header_new
rm -f header
sed -i -e "s/androidboot\.memcg\=1\ //g" header_new
mv header_new header
# Replace stock kernel image
rm -f $OUT_DIR/tmp/kernel
rm -f $OUT_DIR/tmp/dtb
cp $SRC_DIR/out/arch/arm64/boot/Image $OUT_DIR/tmp/kernel
cp $SRC_DIR/out/arch/arm64/boot/dts/qcom/atoll-ab-idp.dtb $OUT_DIR/tmp/dtb
# Repack and copy in out folder
magiskboot_x86 repack boot.img boot_new.img
cp $OUT_DIR/tmp/boot_new.img $OUT_DIR/Builds/${ASC_VERSION1}/${ASC_VERSION2}/Ascendia_${ASC_VERSION2}_${TYPE}_${ASC_VARIANT}_${CODENAME}_boot.img
mv $OUT_DIR/tmp/boot_new.img $OUT_DIR/out/zip/ascendia/$VARIANT/${ASC_VARIANT_SMALL}.img
# Clean :3
rm -rf $OUT_DIR/tmp/
cd $MAIN_DIR/
}
SWITCH_BRANCH()
{
cd $SRC_DIR
if test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}; then
echo "----------------------------------------------"
echo "Vanilla Build Detected..."
git switch ascendia-${ANDROID_VERSION}-aosp
elif test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}-ksu; then
echo "----------------------------------------------"
echo "KSU Branch Detected..."
git switch ascendia-${ANDROID_VERSION}-ksu-aosp
else
echo "----------------------------------------------"
echo "Check Branch..."
exit
fi
cd $MAIN_DIR
}
SET_BRANCH()
{
cd $SRC_DIR
if test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}-aosp; then
echo "----------------------------------------------"
echo "Vanilla Branch Detected..."
git switch ascendia-${ANDROID_VERSION}
elif test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}-ksu-aosp; then
echo "----------------------------------------------"
echo "KSU Branch Detected..."
git switch ascendia-${ANDROID_VERSION}-ksu
elif test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}; then
echo "----------------------------------------------"
echo "Vanilla Branch Detected..."
elif test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}-ksu; then
echo "----------------------------------------------"
echo "KSU Branch Detected..."
else
echo "----------------------------------------------"
echo "Check Branch..."
exit
fi
cd $MAIN_DIR
}
CHECK_BRANCH()
{
cd $SRC_DIR
if test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}; then
echo "----------------------------------------------"
echo "OneUI Branch Detected..."
ASC_VARIANT="OneUI"
ASC_VARIANT_SMALL="oneui"
ASC_VAR="O"
TYPE="V"
TYPE_FULL="Vanilla"
if [ -e KernelSU/ ]
then
echo " "
echo " Deleteting KernelSU/ "
echo " "
rm -rf KernelSU
fi
elif test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}-aosp; then
echo "----------------------------------------------"
echo "AOSP Branch Detected..."
ASC_VARIANT="AOSP"
ASC_VARIANT_SMALL="aosp"
ASC_VAR="A"
TYPE="V"
TYPE_FULL="Vanilla"
if [ -e KernelSU/ ]
then
echo " "
echo " Deleteting KernelSU/ "
echo " "
rm -rf KernelSU
fi
elif test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}-ksu; then
echo "----------------------------------------------"
echo "OneUI Branch Detected..."
ASC_VARIANT="OneUI"
ASC_VARIANT_SMALL="oneui"
ASC_VAR="O"
TYPE="K"
TYPE_FULL="KSU"
git submodule update --init --recursive
elif test "$(git rev-parse --abbrev-ref HEAD)" = ascendia-${ANDROID_VERSION}-ksu-aosp; then
echo "----------------------------------------------"
echo "AOSP Branch Detected..."
ASC_VARIANT="AOSP"
ASC_VARIANT_SMALL="aosp"
ASC_VAR="A"
TYPE="K"
TYPE_FULL="KSU"
git submodule update --init --recursive
else
echo "----------------------------------------------"
echo "Check Branch..."
exit
fi
cd $MAIN_DIR
}
MAKE_INSTALLER()
{
cp $OUT_DIR/a52/a52_aosp_dtbo.img $OUT_DIR/out/zip/ascendia/a52/
cp $OUT_DIR/a72/a72_aosp_dtbo.img $OUT_DIR/out/zip/ascendia/a72/
# cp $OUT_DIR/a52/a52_oneui_dtbo.img $OUT_DIR/out/zip/ascendia/a52/
# cp $OUT_DIR/a72/a72_oneui_dtbo.img $OUT_DIR/out/zip/ascendia/a72/
cp $OUT_DIR/update-binary/${TYPE_FULL} $OUT_DIR/out/zip/META-INF/com/google/android/update-binary
cd $OUT_DIR/out/zip/
sed -i -e "s/VERSION_CODE/$ASC_VERSION/g" $OUT_DIR/out/zip/META-INF/com/google/android/update-binary
zip -r $OUT_DIR/Builds/${ASC_VERSION1}/${ASC_VERSION2}/Ascendia_${ASC_VERSION2}_${TYPE_FULL}_a572q.zip ascendia META-INF
rm -rf $OUT_DIR/out/
}
VANILLA()
{
cd $SRC_DIR
git switch ascendia-${ANDROID_VERSION}
cd $MAIN_DIR
}
KSU()
{
cd $SRC_DIR
git switch ascendia-${ANDROID_VERSION}-ksu
cd $MAIN_DIR
}
# Do stuff
clear
BUILD_VANILLA()
{
rm -rf $OUT_DIR/out
rm -f $OUT_DIR/tmp/*.img
mkdir -p $OUT_DIR/out
cp -r $OUT_DIR/zip-template $OUT_DIR/out/zip
mkdir -p $OUT_DIR/out/zip/ascendia/a52
mkdir -p $OUT_DIR/out/zip/ascendia/a72
mkdir -p $OUT_DIR/Builds/${ASC_VERSION1}/${ASC_VERSION2}
# a52q
VARIANT=a52
CODENAME=a52q
RP_REV=SRPTH31C002
DEFCONFIG=a52q_eur_open_defconfig
SET_BRANCH
CHECK_BRANCH
CLEAN_SOURCE
BUILD_KERNEL
PACK_BOOT_IMG
# a72q
VARIANT=a72
CODENAME=a72q
RP_REV=SRPTJ06B001
DEFCONFIG=a72q_eur_open_defconfig
CHECK_BRANCH
CLEAN_SOURCE
BUILD_KERNEL
PACK_BOOT_IMG
SWITCH_BRANCH
# a52q
VARIANT=a52
CODENAME=a52q
RP_REV=SRPTH31C002
DEFCONFIG=a52q_eur_open_defconfig
CHECK_BRANCH
CLEAN_SOURCE
BUILD_KERNEL
PACK_BOOT_IMG
# a72q
VARIANT=a72
CODENAME=a72q
RP_REV=SRPTJ06B001
DEFCONFIG=a72q_eur_open_defconfig
CHECK_BRANCH
CLEAN_SOURCE
BUILD_KERNEL
PACK_BOOT_IMG
MAKE_INSTALLER
}
BUILD_KSU()
{
rm -rf $OUT_DIR/out
rm -f $OUT_DIR/tmp/*.img
mkdir -p $OUT_DIR/out
cp -r $OUT_DIR/zip-template $OUT_DIR/out/zip
mkdir -p $OUT_DIR/out/zip/ascendia/a52
mkdir -p $OUT_DIR/out/zip/ascendia/a72
mkdir -p $OUT_DIR/Builds/${ASC_VERSION1}/${ASC_VERSION2}
# a52q
VARIANT=a52
CODENAME=a52q
RP_REV=SRPTH31C002
DEFCONFIG=a52q_eur_open_defconfig
SET_BRANCH
CHECK_BRANCH
CLEAN_SOURCE
BUILD_KERNEL
PACK_BOOT_IMG
# a72q
VARIANT=a72
CODENAME=a72q
RP_REV=SRPTJ06B001
DEFCONFIG=a72q_eur_open_defconfig
CHECK_BRANCH
CLEAN_SOURCE
BUILD_KERNEL
PACK_BOOT_IMG
SWITCH_BRANCH
# a52q
VARIANT=a52
CODENAME=a52q
RP_REV=SRPTH31C002
DEFCONFIG=a52q_eur_open_defconfig
CHECK_BRANCH
CLEAN_SOURCE
BUILD_KERNEL
PACK_BOOT_IMG
# a72q
VARIANT=a72
CODENAME=a72q
RP_REV=SRPTJ06B001
DEFCONFIG=a72q_eur_open_defconfig
CHECK_BRANCH
CLEAN_SOURCE
BUILD_KERNEL
PACK_BOOT_IMG
MAKE_INSTALLER
}
VANILLA
BUILD_VANILLA
KSU
BUILD_KSU
echo "----------------------------------------------"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment