Files
padavan-4.4/trunk/build_firmware
2022-04-21 08:11:51 +08:00

183 lines
5.8 KiB
Bash
Executable File

#!/bin/bash
if [ -z "$1" ] || [ "$EUID" != 0 ]; then
echo "Please run 'fakeroot $0 PRODUCT_NAME' to start build (see 'configs/templates/')"
echo "For Windows Subsystem for Linux(WSL), use 'fakeroot-tcp' instead of 'fakeroot', or run with sudo"
exit 1
fi
if [ ! -f configs/templates/$1.config ] ; then
echo "configs/templates/$1.config not found!"
exit 1
fi
cp -f configs/templates/$1.config .config
ROOTDIR=`pwd`
export ROOTDIR=$ROOTDIR
kernel_id="4.4.x"
kernel_cf=""
kernel_tf=""
busybox_id="1.24.x"
busybox_cf="$ROOTDIR/configs/boards/busybox.config"
busybox_tf="$ROOTDIR/user/busybox/busybox-${busybox_id}/.config"
board_h=""
board_mk=""
paragon_hfsplus=0
func_enable_kernel_param()
{
if [ -n "`grep \^\"\# $1 is not set\" $kernel_tf`" ] ; then
sed -i "s/\# $1 is not set/$1=y/" $kernel_tf
fi
}
func_disable_kernel_param()
{
if [ -n "`grep \^$1=y $kernel_tf`" ] ; then
sed -i "s/$1=y/\# $1 is not set/" $kernel_tf
elif [ -n "`grep \^$1=m $kernel_tf`" ] ; then
sed -i "s/$1=m/\# $1 is not set/" $kernel_tf
fi
}
func_enable_busybox_param()
{
if [ -n "`grep \^\"\# $1 is not set\" $busybox_tf`" ] ; then
sed -i "s/\# $1 is not set/$1=y/" $busybox_tf
fi
}
func_disable_busybox_param()
{
if [ -n "`grep \^$1=y $busybox_tf`" ] ; then
sed -i "s/$1=y/\# $1 is not set/" $busybox_tf
fi
}
. $ROOTDIR/toolchain.inc
echo "CONFIG_TOOLCHAIN_DIR=${CONFIG_TOOLCHAIN_DIR}" >> .config
# load project root config
. $ROOTDIR/.config
if [ ! -f "$ROOTDIR/vendors/Ralink/config.arch" ] ; then
echo "Project product dir not found! Terminate."
exit 1
fi
if [ ! -d "$ROOTDIR/$CONFIG_LINUXDIR" ] ; then
echo "Project Linux Kernel dir ($CONFIG_LINUXDIR) not found! Terminate."
exit 1
fi
board_h="$ROOTDIR/configs/boards/$CONFIG_FIRMWARE_PRODUCT_ID/board.h"
board_mk="$ROOTDIR/configs/boards/$CONFIG_FIRMWARE_PRODUCT_ID/board.mk"
kernel_cd="$ROOTDIR/configs/boards/$CONFIG_FIRMWARE_PRODUCT_ID"
kernel_tf="$ROOTDIR/$CONFIG_LINUXDIR/.config"
if [ "$CONFIG_FIRMWARE_TYPE_ROOTFS_IN_RAM" = "y" ] ; then
kernel_cf="${kernel_cd}/kernel-${kernel_id}.ram.config"
elif [ -n "$CONFIG_FIRMWARE_KERNEL_CONFIG" ]; then
kernel_cf="${kernel_cd}/$CONFIG_FIRMWARE_KERNEL_CONFIG"
else
kernel_cf="${kernel_cd}/kernel-${kernel_id}.config"
fi
if [ ! -f "$kernel_cf" ] ; then
echo "Target kernel config ($kernel_cf) not found! Terminate."
exit 1
fi
if [ ! -f "$busybox_cf" ] ; then
echo "Target BusyBox config ($busybox_cf) not found! Terminate."
exit 1
fi
if [ ! -f "$board_h" ] ; then
echo "Target board header ($board_h) not found! Terminate."
exit 1
fi
if [ ! -f "$board_mk" ] ; then
echo "Target board descriptor ($board_mk) not found! Terminate."
exit 1
fi
rm -rf $ROOTDIR/romfs
rm -rf $ROOTDIR/images
mkdir -p $ROOTDIR/romfs
mkdir -p $ROOTDIR/images
# load source kernel config
. "$kernel_cf"
echo --------------------------COPY-CONFIG-----------------------------
######################### FOR-ALL-DEVICES #############################
ln -sf vendors/Ralink/config.arch config.arch
cp -fL "$kernel_cf" "$kernel_tf"
cp -fL "$busybox_cf" "$busybox_tf"
cp -fL "$board_mk" "$ROOTDIR/user/shared/board.mk"
cp -fL "$board_h" "$ROOTDIR/user/shared/include/ralink_board.h"
############################# SMP #####################################
if [ -n "$CONFIG_SMP" ] ; then
func_enable_busybox_param "CONFIG_FEATURE_TOP_SMP_CPU"
func_enable_busybox_param "CONFIG_FEATURE_TOP_SMP_PROCESS"
fi
############################# RTC #####################################
if [ -n "$CONFIG_RTC_CLASS" ] ; then
func_enable_busybox_param "CONFIG_HWCLOCK"
fi
# SFE
if [ "$CONFIG_FIRMWARE_INCLUDE_SFE" = "y" ] ; then
func_enable_kernel_param "CONFIG_SHORTCUT_FE"
fi
# wireguard
if [ "$CONFIG_FIRMWARE_INCLUDE_WIREGUARD" = "y" ]; then
func_enable_kernel_param "CONFIG_WIREGUARD"
fi
############################# USB #####################################
if [ "$CONFIG_FIRMWARE_ENABLE_USB" != "y" ] || [ -z "$CONFIG_USB_SUPPORT" ] ; then
func_disable_busybox_param "CONFIG_FDISK"
func_disable_busybox_param "CONFIG_FEATURE_FDISK_WRITABLE"
func_disable_busybox_param "CONFIG_FEATURE_FDISK_ADVANCED"
func_disable_busybox_param "CONFIG_MICROCOM"
func_disable_busybox_param "CONFIG_EJECT"
func_disable_busybox_param "CONFIG_FEATURE_EJECT_SCSI"
func_disable_busybox_param "CONFIG_MKSWAP"
func_disable_busybox_param "CONFIG_SWAPONOFF"
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_FAT"
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_EXFAT"
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_NTFS"
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_HFS"
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_EXT"
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_XFS"
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_LINUXSWAP"
else
if [ "$CONFIG_FIRMWARE_ENABLE_UFSD" != "y" ] || [ $paragon_hfsplus -eq 0 ] ; then
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_HFS"
fi
############################ exFAT ####################################
if [ "$CONFIG_FIRMWARE_ENABLE_EXFAT" != "y" ] ; then
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_EXFAT"
fi
############################# XFS #####################################
if [ "$CONFIG_FIRMWARE_ENABLE_XFS" != "y" ] ; then
func_disable_busybox_param "CONFIG_FEATURE_VOLUMEID_XFS"
fi
############################# SWAP ####################################
if [ "$CONFIG_FIRMWARE_ENABLE_SWAP" != "y" ] ; then
func_disable_busybox_param "CONFIG_MKSWAP"
func_disable_busybox_param "CONFIG_SWAPONOFF"
fi
fi
############################# XFRM ####################################
#if [ "$CONFIG_FIRMWARE_INCLUDE_SSWAN" = "y" ] ; then
# CONFIG_FIRMWARE_INCLUDE_XFRM=y
#fi
echo --------------------------MAKE-DEP--------------------------------
make dep
echo --------------------------MAKE-ALL--------------------------------
make
cp -a $ROOTDIR/images/$1_4.4.198-101.trx $ROOTDIR/../release/$1-4.4-`date -I`.trx