#!/bin/bash -e # Clone source code git clone -b openwrt-24.10 --single-branch --filter=blob:none https://github.com/openwrt/openwrt # Enter source code cd openwrt # Init feeds ./scripts/feeds update -a ./scripts/feeds install -a # Load devices Config if [ "$model" = "OpenWrt_Rockchip_v24.10" ]; then curl -s https://git.kejizero.online/zhao/files/raw/branch/main/toolchain/Configs/immortalwrt_rockchip.config > .config elif [ "$model" = "OpenWrt_X86_64_v24.10" ]; then curl -s https://git.kejizero.online/zhao/files/raw/branch/main/toolchain/Configs/immortalwrt_x86_64.config > .config fi # gcc14 & 15 if [ "$USE_GCC13" = y ]; then export USE_GCC13=y gcc_version=13 elif [ "$USE_GCC14" = y ]; then export USE_GCC14=y gcc_version=14 fi # gcc config echo -e "\n# gcc ${gcc_version}" >> .config echo -e "CONFIG_DEVEL=y" >> .config echo -e "CONFIG_TOOLCHAINOPTS=y" >> .config echo -e "CONFIG_GCC_USE_VERSION_${gcc_version}=y\n" >> .config # bpf curl -s https://raw.githubusercontent.com/oppen321/ZeroWrt-Action/refs/heads/master/generic/config-bpf/generic/config-bpf >> .config # Compile make defconfig make -j$cores toolchain/compile || make -j$cores toolchain/compile V=s || exit 1 # Create folder mkdir toolchain-cache # Compression toolchain case "$model" in "OpenWrt_Rockchip_v24.10" | "OpenWrt_X86_64_v24.10") if [ -z "$gcc_version" ]; then echo "Error: GCC version not set!" exit 1 fi if [ "$model" = "OpenWrt_Rockchip_v24.10" ]; then output_file="toolchain_musl_openwrt_rockchip_gcc-${gcc_version}.tar.zst" elif [ "$model" = "OpenWrt_X86_64_v24.10" ]; then output_file="toolchain_musl_openwrt_X86_64_gcc-${gcc_version}.tar.zst" fi tar -I zstd -cvf "toolchain-cache/${output_file}" build_dir dl tmp staging_dir ;; *) echo "Error: Unknown model '$model'!" exit 1 ;; esac