├── .github └── workflows │ └── build-kernel.yml ├── README.md └── config.env /.github/workflows/build-kernel.yml: -------------------------------------------------------------------------------- 1 | name: Build MikaKernel 2 | 3 | 4 | on: 5 | workflow_dispatch: 6 | 7 | 8 | jobs: 9 | build-kernel: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - name: Setup environment 14 | run: | 15 | echo "ANYKERNEL_SOURCE=$(cat config.env | grep -w "ANYKERNEL_SOURCE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV 16 | echo "ANYKERNEL_SOURCE_BRANCH=$(cat config.env | grep -w "ANYKERNEL_SOURCE_BRANCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV 17 | echo "KERNEL_SOURCE=$(cat config.env | grep -w "KERNEL_SOURCE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV 18 | echo "KERNEL_SOURCE_BRANCH=$(cat config.env | grep -w "KERNEL_SOURCE_BRANCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV 19 | echo "KERNEL_CONFIG=$(cat config.env | grep -w "KERNEL_CONFIG" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV 20 | echo "BUILD_ARGS=$(cat config.env | grep -w "BUILD_ARGS" | head -n 1 | cut -d ":" -f 2)" >> $GITHUB_ENV 21 | 22 | - name: Pull toolchain 23 | run: | 24 | git clone --depth=1 https://github.com/LineageOS/android_prebuilts_gcc_linux-x86_aarch64_aarch64-linux-android-4.9 aarch64-linux-android-4.9 25 | git clone --depth=1 https://github.com/LineageOS/android_prebuilts_gcc_linux-x86_arm_arm-linux-androideabi-4.9 arm-linux-androideabi-4.9 26 | mkdir clang && curl https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/refs/heads/android14-dev/clang-r487747c.tar.gz -RLO && tar -C clang/ -xf clang-*.tar.gz 27 | 28 | - name: Pull kernel source 29 | run: | 30 | git clone --depth=1 ${{ env.KERNEL_SOURCE }} -b ${{ env.KERNEL_SOURCE_BRANCH }} kernel-source 31 | 32 | - name: Build kernel 33 | run: | 34 | export KBUILD_BUILD_USER="zclkkk" 35 | export KBUILD_BUILD_HOST="workspace" 36 | export PATH=$GITHUB_WORKSPACE/clang/bin:${PATH} 37 | args=" ARCH=arm64 \ 38 | O=../out \ 39 | ${{ env.BUILD_ARGS }} \ 40 | CLANG_TRIPLE=aarch64-linux-gnu- \ 41 | CROSS_COMPILE=$GITHUB_WORKSPACE/aarch64-linux-android-4.9/bin/aarch64-linux-android- \ 42 | CROSS_COMPILE_ARM32=$GITHUB_WORKSPACE/arm-linux-androideabi-4.9/bin/arm-linux-androideabi- " 43 | cd kernel-source 44 | make ${args} ${{ env.KERNEL_CONFIG }} 45 | make -j$(($(getconf _NPROCESSORS_ONLN) * 2)) ${args} 46 | 47 | - name: Package kernel 48 | run: | 49 | git clone --depth=1 ${{ env.ANYKERNEL_SOURCE }} -b ${{ env.ANYKERNEL_SOURCE_BRANCH }} AnyKernel3 && rm -rf AnyKernel3/.git AnyKernel3/.github AnyKernel3/LICENSE AnyKernel3/README.md 50 | if [[ -f out/arch/arm64/boot/Image.gz-dtb ]]; then 51 | cp out/arch/arm64/boot/Image.gz-dtb AnyKernel3/Image.gz-dtb 52 | elif [[ -f out/arch/arm64/boot/Image-dtb ]]; then 53 | cp out/arch/arm64/boot/Image-dtb AnyKernel3/Image-dtb 54 | elif [[ -f out/arch/arm64/boot/Image.gz ]]; then 55 | cp out/arch/arm64/boot/Image.gz AnyKernel3/Image.gz 56 | elif [[ -f out/arch/arm64/boot/Image ]]; then 57 | cp out/arch/arm64/boot/Image AnyKernel3/Image 58 | fi 59 | if [ -f out/arch/arm64/boot/dtbo.img ]; then 60 | cp out/arch/arm64/boot/dtbo.img AnyKernel3/dtbo.img 61 | fi 62 | 63 | - name: Upload kernel to artifact 64 | uses: actions/upload-artifact@v4 65 | with: 66 | name: output_kernel 67 | path: AnyKernel3/* 68 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MikaKernel Builder 2 | 3 | Meow! 4 | 5 | 6 | ## Usage: 7 | 8 | 1. Fork this repo. 9 | 10 | 2. Edit `config.env` : 11 | 12 | | Arguments | Note | 13 | | :---------------------: | ------------------------------------------------- | 14 | | ANYKERNEL_SOURCE | Your Anykernel3 repo | 15 | | ANYKERNEL_SOURCE_BRANCH | Your Anykernel3 branch | 16 | | KERNEL_SOURCE | Your kernel source repo | 17 | | KERNEL_SOURCE_BRANCH | Your kernel source branch | 18 | | KERNEL_CONFIG | Your device config | 19 | | BUILD_ARGS | Your kernel compile aguments, separate with space | 20 | 21 | 3. Click `Run workflow` in `Action->Build MikaKernel` 22 | 23 | Warning: For pre-5.4 kernel, you should backport LLVM related changes for ur kernel, or just downgrade toolchains defined in build-kernel.yml to android12-dev branch and remove "LLVM=1 LLVM_IAS=1" flags in config.env 24 | -------------------------------------------------------------------------------- /config.env: -------------------------------------------------------------------------------- 1 | ANYKERNEL_SOURCE= 2 | ANYKERNEL_SOURCE_BRANCH= 3 | KERNEL_SOURCE= 4 | KERNEL_SOURCE_BRANCH= 5 | KERNEL_CONFIG= 6 | BUILD_ARGS:LLVM=1 LLVM_IAS=1 7 | --------------------------------------------------------------------------------