mirror of
https://github.com/sipeed/LicheeRV-Nano-Build.git
synced 2026-09-12 21:59:45 -05:00
* feat: add minimal NanoKVM image target Add an SG2002 LicheeRV Nano SD board variant based on sg2002_licheervnano_sd, with its own Buildroot configuration and the matching kernel, U-Boot, device tree, memory map, partition, and board initialization files. Compared with the standard image, replace the broad Buildroot package set with a NanoKVM runtime allowlist. Remove Python 3 and its Python module collection; FFmpeg, OpenCV, ALSA utilities, mpg123, Tcl, and Expect; games, editors, and interactive tools such as tmux, htop, nano, and vim; GDB, tracing, benchmark, stress, memory-test, and SPI-test utilities; IPMI, serial, U-Boot, LCD, and TPU demo tools; and nonessential archive, compression, and SquashFS utilities. Also omit general-purpose network and administration tools including aircrack-ng, bind, dnsmasq, iperf3, mosh, mtr, netcat, nftables userspace, pppd, rsync, ser2net, socat, SSDP responder, tcpdump, tinc, traceroute, WireGuard tools, and the standalone watchdog package. Disable unneeded hostapd and wpa_supplicant options such as EAP, WPS, IBSS, Wi-Fi Display, mesh, D-Bus, debug logging, and shared client support. Keep the NanoKVM essentials: Bash, OpenSSH server and key generation, Avahi mDNS, CA certificates and curl, NTP, Ethernet and Wi-Fi management, iproute2, iptables, filesystem resize and virtual-media tools, AIC8800 firmware, the CVITEK runtime, and SG2002 codec firmware. Run a post-build cleanup that removes SDK sample and test binaries, static and libtool archives, headers, documentation, man and info pages, pkg-config files, and CMake metadata. Optimize the target for size and reduce the Buildroot ext4 filesystem from 1536M to 192M while leaving the SD partition layout unchanged. Mark minimal root filesystems so the NanoKVM merge step does not bundle FRP, Tailscale, or tailscaled. Keep their existing installation behavior for standard images, install the SSH init script only when OpenSSH is present, validate required init scripts earlier, and remove incomplete output images after recoverable failures. Isolate Buildroot output and overlays by project, support board-specific Buildroot defconfigs, clean the matching output directory during rebuilds, and document how to build and merge the minimal image. * feat: shrink minimal NanoKVM image - reduce the minimal ext4 rootfs image to 112 MiB - disable udev hwdb and remove stale ISP tuning blobs - keep only LT6911 sensor support and remove the unused 8733bs driver - strip NanoKVM-Server debug sections during image merge without modifying the source app Validated with the minimal build, complete NanoKVM APP merge, ext4 free-space checks, and boot-area integrity verification.
651 lines
28 KiB
Makefile
651 lines
28 KiB
Makefile
.PHONY: FORCE
|
|
.PHONY: u-boot u-boot-clean
|
|
.PHONY: rtos rtos-clean
|
|
|
|
-include .config
|
|
|
|
# Some basic check
|
|
ifneq ($(origin TOP_DIR),environment)
|
|
$(error Please source envsetup_soc.sh first)
|
|
endif
|
|
|
|
ifneq ($(wildcard ${TOP_DIR}/build/Makefile),$(abspath Makefile))
|
|
$(error $${TOP_DIR}/build/Makefile is not current Makefile)
|
|
endif
|
|
|
|
# Verbose flag
|
|
ifeq (${BUILD_VERBOSE},0)
|
|
Q:=@
|
|
else
|
|
Q:=
|
|
endif
|
|
export Q
|
|
|
|
define print_target
|
|
@printf '\033[1;36;40m [TARGET] $@ \033[0m\n'
|
|
endef
|
|
|
|
qstrip = $(strip $(subst ",,$(1)))
|
|
|
|
################################################################################
|
|
# Default actions
|
|
################################################################################
|
|
NPROC := $(shell nproc)
|
|
|
|
export CHIP_ARCH_L := $(shell echo $(CHIP_ARCH) | tr A-Z a-z)
|
|
export BORAD_FOLDER_PATH := ${BUILD_PATH}/boards/${CHIP_ARCH_L}/${PROJECT_FULLNAME}
|
|
|
|
ifneq ($(origin OUTPUT_DIR),environment)
|
|
$(error Please execute defconfig/menuconfig/oldconfig first)
|
|
endif
|
|
|
|
$(shell mkdir -p ${OUTPUT_DIR})
|
|
ifeq ($(wildcard ${OUTPUT_DIR}),)
|
|
$(error "OUTPUT_DIR (${OUTPUT_DIR})" does not exist)
|
|
endif
|
|
|
|
|
|
################################################################################
|
|
# Output directory
|
|
################################################################################
|
|
${OUTPUT_DIR}/elf:
|
|
${Q}mkdir -p $@
|
|
|
|
################################################################################
|
|
# Generate global memmory map for all source repo
|
|
################################################################################
|
|
include scripts/mmap.mk
|
|
|
|
################################################################################
|
|
# rtos targets
|
|
################################################################################
|
|
include scripts/rtos.mk
|
|
|
|
################################################################################
|
|
# fip targets
|
|
################################################################################
|
|
ifeq (${CONFIG_FIP_V1},y)
|
|
include scripts/fip_v1.mk
|
|
else ifeq (${CONFIG_FIP_V2},y)
|
|
include scripts/fip_v2.mk
|
|
else
|
|
$(error no fip version)
|
|
endif
|
|
|
|
################################################################################
|
|
# u-boot targets
|
|
################################################################################
|
|
# configure uboot defconfig
|
|
UBOOT_CONFIG_NAME := ${PROJECT_FULLNAME}_defconfig
|
|
|
|
ifeq ($(CONFIG_UBOOT_SPL_CUSTOM),y)
|
|
UBOOT-SPL_CONFIG_NAME := ${PROJECT_FULLNAME}_spl_defconfig
|
|
endif
|
|
|
|
ifeq (${RELEASE_VERSION},1)
|
|
uboot_release_action := ${Q}sed -i "s/CONFIG_BOOTDELAY=1/CONFIG_BOOTDELAY=-2/g" ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/.config
|
|
endif
|
|
|
|
# Set CONFIG_BOOTLOGO config in defconfig
|
|
ifeq (${ENABLE_BOOTLOGO},1)
|
|
uboot_bootlogo_action := ${Q}sed -i "s/CONFIG_BOOTLOGO=n/CONFIG_BOOTLOGO=y/g" ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/.config
|
|
else
|
|
uboot_bootlogo_action := ${Q}sed -i "s/CONFIG_BOOTLOGO=y/CONFIG_BOOTLOGO=n/g" ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/.config
|
|
endif
|
|
|
|
# Set CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2 config in defconfig
|
|
ifeq (${CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2},y)
|
|
uboot_erasesize_set := ${Q}sed -in "s/.*CONFIG_SPI_FLASH_USE_4K_SECTORS is not set/CONFIG_SPI_FLASH_USE_4K_SECTORS=y/g" ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/.config
|
|
else
|
|
uboot_erasesize_set := ${Q}sed -in "s/CONFIG_SPI_FLASH_USE_4K_SECTORS=y/\# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set/g" ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/.config
|
|
endif
|
|
|
|
ifeq (${COMPRESSOR_UBOOT},lzma)
|
|
define uboot_compress_action
|
|
${Q}echo "Compress u-boot with LZMA"
|
|
${Q}lzma --force ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/u-boot.bin
|
|
${Q}echo -n 'LZMA' | cat - ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/u-boot.bin.lzma > \
|
|
${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/u-boot.bin
|
|
endef
|
|
endif
|
|
|
|
UBOOT_CVIPART_DEP := ${UBOOT_PATH}/include/imgs.h ${UBOOT_PATH}/include/cvipart.h
|
|
|
|
${UBOOT_CVIPART_DEP}: ${FLASH_PARTITION_XML} ${BUILD_PATH}/.config
|
|
$(call print_target)
|
|
${Q}python3 ${IMGTOOL_PATH}/mkcvipart.py ${FLASH_PARTITION_XML} ${UBOOT_PATH}/include
|
|
${Q}python3 ${IMGTOOL_PATH}/mk_imgHeader.py ${FLASH_PARTITION_XML} ${UBOOT_PATH}/include
|
|
|
|
${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}:
|
|
${Q}mkdir -p $@
|
|
|
|
UBOOT_OUTPUT_CONFIG_PATH := ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/.config
|
|
UBOOT_DEFAULT_CONFIG_PATH := ${BUILD_PATH}/boards/${CHIP_ARCH_L}/${PROJECT_FULLNAME}/u-boot/${UBOOT_CONFIG_NAME}
|
|
ifeq ($(CONFIG_UBOOT_SPL_CUSTOM),y)
|
|
UBOOT-SPL_DEFAULT_CONFIG_PATH := ${BUILD_PATH}/boards/${CHIP_ARCH_L}/${PROJECT_FULLNAME}/u-boot/${UBOOT-SPL_CONFIG_NAME}
|
|
endif
|
|
|
|
# Make a copy to .config~
|
|
${UBOOT_OUTPUT_CONFIG_PATH}: ${UBOOT_DEFAULT_CONFIG_PATH} ${UBOOT-SPL_DEFAULT_CONFIG_PATH} ${BUILD_PATH}/.config
|
|
$(call print_target)
|
|
${Q}echo "u-boot's defconfig is updated. Use it."
|
|
${Q}mkdir -p $(dir ${UBOOT_OUTPUT_CONFIG_PATH})
|
|
${Q}cmp -s ${UBOOT_DEFAULT_CONFIG_PATH} ${UBOOT_OUTPUT_CONFIG_PATH} || \
|
|
${Q}cp -vb ${UBOOT_DEFAULT_CONFIG_PATH} ${UBOOT_OUTPUT_CONFIG_PATH}
|
|
ifeq ($(CONFIG_UBOOT_SPL_CUSTOM),y)
|
|
${Q}-cat ${UBOOT-SPL_DEFAULT_CONFIG_PATH} >> ${UBOOT_OUTPUT_CONFIG_PATH}
|
|
endif
|
|
$(call uboot_release_action)
|
|
$(call uboot_bootlogo_action)
|
|
ifeq ($(STORAGE_TYPE), spinor)
|
|
$(call uboot_erasesize_set)
|
|
endif
|
|
|
|
UBOOT_CVI_BOARD_INIT_PATH := ${UBOOT_PATH}/board/cvitek/cvi_board_init.c
|
|
UBOOT_CVITEK_PATH := ${UBOOT_PATH}/include/cvitek/cvitek.h
|
|
|
|
u-boo%: export KBUILD_OUTPUT=${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}
|
|
u-boo%: export RELEASE=${RELEASE_VERSION}
|
|
u-boo%: export CVIBOARD=${BOARD}
|
|
u-boo%: export CONFIG_SKIP_RAMDISK:=${CONFIG_SKIP_RAMDISK}
|
|
u-boo%: export CONFIG_USE_DEFAULT_ENV:=${CONFIG_USE_DEFAULT_ENV}
|
|
u-boo%: export MULTI_FIP=$(if ${CONFIG_MULTI_FIP},1,0)
|
|
u-boo%: export CROSS_COMPILE=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE))
|
|
u-boo%: export ARCH=$(patsubst "%",%,$(CONFIG_ARCH))
|
|
|
|
u-boot-menuconfig: ${UBOOT_OUTPUT_CONFIG_PATH}
|
|
$(call print_target)
|
|
${Q}$(MAKE) -j${NPROC} -C ${UBOOT_PATH} menuconfig
|
|
${Q}$(MAKE) -j${NPROC} -C ${UBOOT_PATH} savedefconfig
|
|
|
|
u-boot-dts:
|
|
$(call print_target)
|
|
ifeq ($(UBOOT_SRC), u-boot-2021.10)
|
|
# U-boot doesn't has arch/arm64
|
|
ifeq ($(ARCH), arm64)
|
|
${Q}find ${BUILD_PATH}/boards/${CHIP_ARCH_L} \
|
|
\( -path "*linux/*.dts*" -o -path "*dts_${ARCH}/*.dts*" \) \
|
|
-exec cp {} ${UBOOT_PATH}/arch/arm/dts/ \;
|
|
${Q}find ${DTS_DEFATUL_PATHS} -name *.dts* -exec cp {} ${UBOOT_PATH}/arch/arm/dts/ \;
|
|
else
|
|
${Q}find ${BUILD_PATH}/boards/${CHIP_ARCH_L} \
|
|
\( -path "*linux/*.dts*" -o -path "*dts_${ARCH}/*.dts*" \) \
|
|
-exec cp {} ${UBOOT_PATH}/arch/${ARCH}/dts/ \;
|
|
${Q}find ${DTS_DEFATUL_PATHS} -name *.dts* -exec cp {} ${UBOOT_PATH}/arch/${ARCH}/dts/ \;
|
|
endif
|
|
endif
|
|
|
|
u-boot-build: memory-map
|
|
u-boot-build: u-boot-dts
|
|
u-boot-build: ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER} ${UBOOT_CVIPART_DEP} ${UBOOT_OUTPUT_CONFIG_PATH}
|
|
$(call print_target)
|
|
${Q}ln -snrf ${CVI_BOARD_MEMMAP_H_PATH} ${UBOOT_PATH}/include/
|
|
${Q}rm -f ${UBOOT_CVI_BOARD_INIT_PATH}
|
|
${Q}ln -s ${BUILD_PATH}/boards/${CHIP_ARCH_L}/${PROJECT_FULLNAME}/u-boot/cvi_board_init.c ${UBOOT_CVI_BOARD_INIT_PATH}
|
|
${Q}rm -f ${UBOOT_CVITEK_PATH}
|
|
${Q}ln -s ${BUILD_PATH}/boards/${CHIP_ARCH_L}/${PROJECT_FULLNAME}/u-boot/cvitek.h ${UBOOT_CVITEK_PATH}
|
|
${Q}$(MAKE) -j${NPROC} -C ${UBOOT_PATH} olddefconfig
|
|
${Q}$(MAKE) -j${NPROC} -C ${UBOOT_PATH} all
|
|
${Q}cat ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/u-boot.bin > ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/u-boot-raw.bin
|
|
ifeq (${CONFIG_UBOOT_SPL_CUSTOM},y)
|
|
${Q}cat ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/spl/u-boot-spl.bin > ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/spl/u-boot-spl-raw.bin
|
|
endif
|
|
|
|
u-boot: u-boot-dep
|
|
|
|
u-boot-env-tools: export CROSS_COMPILE=$(CONFIG_CROSS_COMPILE_SDK)
|
|
u-boot-env-tools:
|
|
$(call print_target)
|
|
${Q}$(MAKE) -j${NPROC} -C ${UBOOT_PATH} env
|
|
|
|
u-boot-clean: export KBUILD_OUTPUT=${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}
|
|
u-boot-clean:
|
|
$(call print_target)
|
|
${Q}$(MAKE) -j${NPROC} -C ${UBOOT_PATH} distclean
|
|
${Q}rm -f ${OUTPUT_DIR}/fip.bin ${UBOOT_PATH}/${UBOOT_OUTPUT_FOLDER}/u-boot.bin.lzma ${UBOOT_CVIPART_DEP}
|
|
|
|
|
|
################################################################################
|
|
# kernel targets
|
|
################################################################################
|
|
# configure kernel defconfig
|
|
KERNEL_CONFIG_NAME := ${PROJECT_FULLNAME}_defconfig
|
|
|
|
KERNEL_VERSION ?= -tag-$(shell git -C ${KERNEL_PATH} describe --exact-match HEAD 2>/dev/null)
|
|
|
|
${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}:
|
|
${Q}mkdir -p $@
|
|
|
|
define copy_Image_action
|
|
${Q}mkdir -p ${OUTPUT_DIR}/elf
|
|
${Q}mkdir -p ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}
|
|
${Q}cp ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/arch/${ARCH}/boot/Image ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}
|
|
${Q}cp ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/vmlinux ${OUTPUT_DIR}/elf/
|
|
endef
|
|
|
|
define copy_ko_action
|
|
${Q}mkdir -p ${SYSTEM_OUT_DIR}/ko
|
|
${Q}find ${1} -name '*.ko' -exec cp -f {} ${SYSTEM_OUT_DIR}/ko/ \;
|
|
endef
|
|
|
|
ifeq ($(CHIP_ARCH),$(filter $(CHIP_ARCH),CV181X CV180X SG200X))
|
|
define copy_header_action
|
|
${Q}cp -r ${OSDRV_PATH}/interdrv/${MW_VER}/include/chip/$(shell echo $(CHIP_CODE) | tr A-Z a-z)/uapi/linux/* ${1}/linux/
|
|
${Q}cp -r ${OSDRV_PATH}/interdrv/${MW_VER}/include/common/uapi/linux/* ${1}/linux/
|
|
${Q}cp ${KERNEL_PATH}/drivers/staging/android/uapi/ion.h ${1}/linux/
|
|
${Q}cp ${KERNEL_PATH}/drivers/staging/android/uapi/ion_cvitek.h ${1}/linux/
|
|
${Q}cp ${KERNEL_PATH}/include/uapi/linux/dma-buf.h ${1}/linux/
|
|
endef
|
|
else
|
|
define copy_header_action
|
|
${Q}cp -r ${OSDRV_PATH}/interdrv/${MW_VER}/vip/chip/$(shell echo $(CHIP_CODE) | tr A-Z a-z)/uapi/* ${1}/linux/
|
|
${Q}cp -r ${OSDRV_PATH}/interdrv/${MW_VER}/base/uapi/* ${1}/linux/
|
|
${Q}cp -r ${OSDRV_PATH}/interdrv/${MW_VER}/include/uapi/* ${1}/linux/
|
|
${Q}cp ${KERNEL_PATH}/drivers/staging/android/uapi/ion.h ${1}/linux/
|
|
${Q}cp ${KERNEL_PATH}/drivers/staging/android/uapi/ion_cvitek.h ${1}/linux/
|
|
${Q}cp ${KERNEL_PATH}/include/uapi/linux/dma-buf.h ${1}/linux/
|
|
endef
|
|
endif
|
|
|
|
KERNEL_OUTPUT_CONFIG_PATH := ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/.config
|
|
KERNEL_DEFAULT_CONFIG_PATH := ${BUILD_PATH}/boards/${CHIP_ARCH_L}/${PROJECT_FULLNAME}/linux/${KERNEL_CONFIG_NAME}
|
|
|
|
# Set CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2 config in defconfig
|
|
ifeq (${CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2},y)
|
|
kernel_erasesize_set := ${Q}sed -i "s/.*CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set/CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y/g" ${KERNEL_OUTPUT_CONFIG_PATH}
|
|
else
|
|
kernel_erasesize_set := ${Q}sed -i "s/CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y/\# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set/g" ${KERNEL_OUTPUT_CONFIG_PATH}
|
|
endif
|
|
|
|
# Make a copy to .config~
|
|
${KERNEL_OUTPUT_CONFIG_PATH}: ${KERNEL_DEFAULT_CONFIG_PATH} ${BUILD_PATH}/.config
|
|
$(call print_target)
|
|
${Q}echo "Kernel's defconfig is updated. Use it."
|
|
${Q}mkdir -p $(dir ${KERNEL_OUTPUT_CONFIG_PATH})
|
|
${Q}cmp -s ${KERNEL_DEFAULT_CONFIG_PATH} ${KERNEL_OUTPUT_CONFIG_PATH} || \
|
|
${Q}cp -vb ${KERNEL_DEFAULT_CONFIG_PATH} ${KERNEL_OUTPUT_CONFIG_PATH}
|
|
ifeq ($(STORAGE_TYPE), spinor)
|
|
$(call kernel_erasesize_set)
|
|
endif
|
|
|
|
kerne%: export LOCALVERSION=${KERNEL_VERSION}
|
|
kerne%: export CVIBOARD=${BOARD}
|
|
kerne%: export CROSS_COMPILE=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE_KERNEL))
|
|
kerne%: export INSTALL_MOD_PATH=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/modules
|
|
kerne%: export INSTALL_HDR_PATH=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/usr/include
|
|
kerne%: export ARCH=$(patsubst "%",%,$(CONFIG_ARCH))
|
|
|
|
kernel-menuconfig: ${KERNEL_OUTPUT_CONFIG_PATH}
|
|
$(call print_target)
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} O=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} menuconfig
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} O=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} savedefconfig
|
|
|
|
kernel-setconfig: ${KERNEL_OUTPUT_CONFIG_PATH}
|
|
$(call print_target)
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} O=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} setconfig 'SCRIPT_ARG=${SCRIPT_ARG}'
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} O=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} savedefconfig
|
|
|
|
kernel-build: ${KERNEL_OUTPUT_CONFIG_PATH}
|
|
$(call print_target)
|
|
${Q}echo LOCALVERSION=${LOCALVERSION}
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} O=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} olddefconfig
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} Image modules
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} modules_install headers_install INSTALL_HDR_PATH=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/$(ARCH)/usr
|
|
${Q} ln -sf ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/$(ARCH)/usr/include ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/usr/include
|
|
ifeq ($(patsubst "%",%,$(CONFIG_ARCH)),arm64)
|
|
# Since we will support aarch32 user space even if the kernel is aarch64, install aarch32 headers also
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} ARCH=arm headers_install INSTALL_HDR_PATH=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/arm/usr
|
|
endif
|
|
|
|
DTS_DEFATUL_PATHS := \
|
|
${BUILD_PATH}/boards/default/dts/${CHIP_ARCH_L} \
|
|
${BUILD_PATH}/boards/default/dts/${CHIP_ARCH_L}_$(patsubst "%",%,$(CONFIG_ARCH))
|
|
DTS_DEFATUL_PATHS := $(wildcard ${DTS_DEFATUL_PATHS})
|
|
|
|
kernel-dts: memory-map
|
|
kernel-dts: ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}
|
|
$(call print_target)
|
|
${Q}ln -snrf ${CVI_BOARD_MEMMAP_H_PATH} ${KERNEL_PATH}/scripts/dtc/include-prefixes/
|
|
${Q}find ${KERNEL_PATH}/arch/${ARCH}/boot/dts/${BRAND}/ -type l -delete
|
|
${Q}find ${DTS_DEFATUL_PATHS} -name *.dts* -exec ln -sf {} ${KERNEL_PATH}/arch/${ARCH}/boot/dts/${BRAND}/ \;
|
|
${Q}find ${BUILD_PATH}/boards/${CHIP_ARCH_L} \
|
|
\( -path "*linux/*.dts*" -o -path "*dts_${ARCH}/*.dts*" \) \
|
|
-exec ln -sf {} ${KERNEL_PATH}/arch/${ARCH}/boot/dts/${BRAND}/ \;
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} dtbs
|
|
${Q}cp ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/arch/${ARCH}/boot/dts/${BRAND}/*.dtb ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}
|
|
|
|
kernel: $(OUTPUT_DIR)/rootfs
|
|
kernel: kernel-build
|
|
$(call print_target)
|
|
${Q}echo LOCALVERSION=${LOCALVERSION}
|
|
$(call copy_Image_action)
|
|
$(call copy_ko_action, ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/modules)
|
|
$(call copy_header_action, ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/$(ARCH)/usr/include)
|
|
ifeq ($(patsubst "%",%,$(CONFIG_ARCH)),arm64)
|
|
# Since we will support aarch32 user space even if the kernel is aarch64, install aarch32 headers also
|
|
$(call copy_header_action, ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/arm/usr/include)
|
|
endif
|
|
${Q}ln -sf ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} ${KERNEL_PATH}/build/kernel_output
|
|
|
|
ifeq ($(CONFIG_TOOLCHAIN_GLIBC_ARM64),y)
|
|
INITRAMFS_BASE := glibc_arm64
|
|
else ifeq ($(CONFIG_TOOLCHAIN_GLIBC_ARM),y)
|
|
INITRAMFS_BASE := glibc_arm
|
|
else ifeq ($(CONFIG_TOOLCHAIN_UCLIBC_ARM),y)
|
|
INITRAMFS_BASE := uclibc_arm
|
|
else ifeq ($(CONFIG_TOOLCHAIN_GLIBC_RISCV64),y)
|
|
INITRAMFS_BASE := glibc_riscv64
|
|
else ifeq ($(CONFIG_TOOLCHAIN_MUSL_RISCV64),y)
|
|
INITRAMFS_BASE := musl_riscv64
|
|
endif
|
|
|
|
$(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/target:
|
|
${Q}mkdir -p $@
|
|
|
|
$(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/configs:
|
|
${Q}mkdir -p $@
|
|
|
|
$(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/workspace:
|
|
${Q}mkdir -p $@
|
|
|
|
ramdisk: $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/target
|
|
ramdisk: $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/configs
|
|
ramdisk: $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/workspace
|
|
ramdisk:
|
|
${Q}rm -rf $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/configs/*
|
|
${Q}rm -rf $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/target/*
|
|
${Q}cp -r $(RAMDISK_PATH)/initramfs/$(INITRAMFS_BASE)/* $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/target
|
|
ifneq ("$(wildcard $(SDK_VER_FOLDER_PATH))", "")
|
|
${Q}cp -r $(SDK_VER_FOLDER_PATH)/* $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/target
|
|
endif
|
|
ifneq ("$(wildcard $(CHIP_FOLDER_PATH))", "")
|
|
${Q}cp -r $(CHIP_FOLDER_PATH)/* $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/target
|
|
endif
|
|
ifneq ("$(wildcard $(CUST_FOLDER_PATH))", "")
|
|
${Q}cp -r $(CUST_FOLDER_PATH)/* $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_BASE)/target
|
|
endif
|
|
|
|
define gen_cpio
|
|
cd $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_FOLDER);\
|
|
$(COMMON_TOOLS_PATH)/gen_init_cpio $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_FOLDER)/../configs/$(1) > $(RAMDISK_PATH)/$(RAMDISK_OUTPUT_FOLDER)/boot.cpio
|
|
endef
|
|
|
|
BOOT_IMAGE_ARG :=
|
|
ifeq ($(CONFIG_SKIP_RAMDISK),y)
|
|
BOOT_IMAGE_ARG += --skip_ramdisk
|
|
endif
|
|
|
|
ifeq ($(CONFIG_BOOT_IMAGE_SINGLE_DTB), y)
|
|
BOOT_IMAGE_ARG += --gen_single_board_its --chip_name "${CHIP}" --board_name "${BOARD}"
|
|
else
|
|
BOOT_IMAGE_ARG += --gen-board-its ${CHIP_ARCH}
|
|
endif
|
|
|
|
boot: export KERNEL_COMPRESS=$(patsubst "%",%,$(CONFIG_KERNEL_COMPRESS))
|
|
boot: kernel-dts
|
|
$(call print_target)
|
|
ifeq ($(CONFIG_ROOTFS_OVERLAYFS),y)
|
|
$(call gen_cpio,overlayfs_fixed_files.txt.sqsh)
|
|
else
|
|
$(call gen_cpio,onekernel_fixed_files.txt.sqsh)
|
|
endif
|
|
# copy multi.its for *.itb layout
|
|
${Q}cp -f "${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/../configs/multi.its" "${BUILD_PATH}/output/multi.its.tmp"
|
|
|
|
${Q}python3 "${BUILD_PATH}/scripts/boards_scan.py" ${BOOT_IMAGE_ARG}
|
|
${Q}mv "${BUILD_PATH}/output/multi.its.tmp" "${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its"
|
|
ifeq ($(CONFIG_KERNEL_UNCOMPRESSED),y)
|
|
${Q}sed -i "s/data = \/incbin\/(\".\/Image.gz\");/data = \/incbin\/(\".\/Image\");/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
else
|
|
${Q}${KERNEL_COMPRESS} -c -9 -f -k ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/Image > ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/Image.${KERNEL_COMPRESS}
|
|
${Q}sed -i "s/data = \/incbin\/(\".\/Image.gz\");/data = \/incbin\/(\".\/Image.${KERNEL_COMPRESS}\");/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
endif
|
|
${Q}sed -i "s/compression = \"gzip\";/compression = \"${KERNEL_COMPRESS}\";/" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
${Q}gzip -9 -f -k ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/boot.cpio > ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/boot.cpio.gz
|
|
ifeq ($(CONFIG_SKIP_RAMDISK),y)
|
|
${Q}sed -ie '26,38d' ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
else
|
|
${Q}sed -i "s/data = \/incbin\/(\".\/rootfs.cpio.gz\");/data = \/incbin\/(\".\/boot.cpio.gz\");/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
endif
|
|
${Q}sed -i "s/arch = \"arm64\";/arch = \"$(patsubst "%",%,$(CONFIG_ARCH))\";/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
ifeq ($(CONFIG_KERNEL_ENTRY_HACK),y)
|
|
${Q}sed -i "s/load = <0x0 0x.*>;/load = <0x0 $(CONFIG_KERNEL_ENTRY_HACK_ADDR)>;/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
${Q}sed -i "s/entry = <0x0 0x.*>;/entry = <0x0 $(CONFIG_KERNEL_ENTRY_HACK_ADDR)>;/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
endif
|
|
LD_LIBRARY_PATH=${TOPDIR}/host $(COMMON_TOOLS_PATH)/prebuild/mkimage -f ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its -k $(RAMDISK_PATH)/keys -r ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/boot.itb
|
|
|
|
ramboot: kernel-dts
|
|
$(call print_target)
|
|
$(call gen_cpio,ramboot_fixed_files.txt)
|
|
# copy multi.its for *.itb layout
|
|
${Q}cp -f "${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/../configs/multi.its" "${BUILD_PATH}/output/multi.its.tmp"
|
|
${Q}python3 "${BUILD_PATH}/scripts/boards_scan.py" --gen_single_board_its --chip_name "${CHIP}" --board_name "${BOARD}"
|
|
${Q}mv "${BUILD_PATH}/output/multi.its.tmp" "${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its"
|
|
${Q}gzip -9 -f -k ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/Image > ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/Image.gz
|
|
${Q}gzip -9 -f -k ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/boot.cpio > ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/boot.cpio.gz
|
|
${Q}sed -i "s/data = \/incbin\/(\".\/rootfs.cpio.gz\");/data = \/incbin\/(\".\/boot.cpio.gz\");/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
${Q}sed -i "s/arch = \"arm64\";/arch = \"$(patsubst "%",%,$(CONFIG_ARCH))\";/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
ifeq ($(CONFIG_KERNEL_ENTRY_HACK),y)
|
|
${Q}sed -i "s/load = <0x0 0x.*>;/load = <0x0 $(CONFIG_KERNEL_ENTRY_HACK_ADDR)>;/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
${Q}sed -i "s/entry = <0x0 0x.*>;/entry = <0x0 $(CONFIG_KERNEL_ENTRY_HACK_ADDR)>;/g" ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its
|
|
endif
|
|
$(COMMON_TOOLS_PATH)/prebuild/mkimage -f ${RAMDISK_PATH}/${RAMDISK_OUTPUT_FOLDER}/multi.its -k $(RAMDISK_PATH)/keys -r $(OUTPUT_DIR)/ramboot.itb
|
|
|
|
kernel-clean:
|
|
$(call print_target)
|
|
${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} distclean
|
|
${Q}$(if $(wildcard ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}), rm -rf ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER},)
|
|
${Q}rm -f ${OUTPUT_DIR}/elf/vmlinux
|
|
${Q}$(if $(wildcard ${SYSTEM_OUT_DIR}/ko/kernel), rm -rf ${SYSTEM_OUT_DIR}/ko/kernel,)
|
|
${Q}find ${KERNEL_PATH}/arch/${ARCH}/boot/dts/${BRAND}/ -name "*.dts*" -type l -exec rm -rf {} \;
|
|
|
|
ifeq ($(CONFIG_TOOLCHAIN_GLIBC_ARM64),y)
|
|
packages_arch := arm64
|
|
else ifeq ($(CONFIG_TOOLCHAIN_GLIBC_ARM),y)
|
|
packages_arch := arm
|
|
else ifeq ($(CONFIG_TOOLCHAIN_UCLIBC_ARM),y)
|
|
packages_arch := uclibc
|
|
else ifeq ($(CONFIG_TOOLCHAIN_GLIBC_RISCV64),y)
|
|
packages_arch := glibc_riscv64
|
|
else ifeq ($(CONFIG_TOOLCHAIN_MUSL_RISCV64),y)
|
|
packages_arch := musl_riscv64
|
|
endif
|
|
ROOTFS_BASE := common_$(packages_arch)
|
|
|
|
$(OUTPUT_DIR)/rootfs:
|
|
${Q}mkdir -p $@
|
|
|
|
-include $(TOP_DIR)/ramdisk/rootfs/public/packages.mk
|
|
define TARGET_PACKAGE_INSTALL_CMD
|
|
@echo 'TARGET PACKAGE OUTPUT DIR=$(OUTPUT_DIR)/rootfs';\
|
|
$(foreach t,$(TARGET_PACKAGES),\
|
|
${Q}cd $(TOP_DIR)/ramdisk/rootfs/public/$(t)/$(packages_arch)/ && \
|
|
${Q}find . \( ! -type d ! -name "*.a" ! -path "*include*" ! -name ".gitkeep" \) \
|
|
-printf 'Copy Package file $(TOP_DIR)/ramdisk/rootfs/public/$(t)/$(packages_arch)/%p\n' \
|
|
-exec cp -a --remove-destination --parents '{}' $(OUTPUT_DIR)/rootfs/ \; ; )
|
|
endef
|
|
|
|
print-target-packages:
|
|
@echo ${TARGET_PACKAGES}
|
|
|
|
print-target-packages-libdir:
|
|
@echo $(foreach t,$(TARGET_PACKAGES),\
|
|
-L$(TOP_DIR)/ramdisk/rootfs/public/$(t)/$(packages_arch)/lib \
|
|
-L$(TOP_DIR)/ramdisk/rootfs/public/$(t)/$(packages_arch)/lib/3rd \
|
|
-L$(TOP_DIR)/ramdisk/rootfs/public/$(t)/$(packages_arch)/usr/lib)
|
|
|
|
print-target-packages-include:
|
|
@echo $(foreach t,$(TARGET_PACKAGES),\
|
|
-I$(TOP_DIR)/ramdisk/rootfs/public/$(t)/include)
|
|
|
|
rootfs-prepare:export CROSS_COMPILE_SDK=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE_SDK))
|
|
rootfs-prepare:$(OUTPUT_DIR)/rootfs
|
|
# Copy rootfs
|
|
${Q}cp -a --remove-destination $(RAMDISK_PATH)/rootfs/$(ROOTFS_BASE)/* $(OUTPUT_DIR)/rootfs
|
|
|
|
# Copy arch overlay rootfs
|
|
ifneq ("$(wildcard $(SDK_VER_FOLDER_PATH))", "")
|
|
${Q}cp -r $(SDK_VER_FOLDER_PATH)/* $(OUTPUT_DIR)/rootfs
|
|
endif
|
|
# Copy chip overlay rootfs
|
|
ifneq ("$(wildcard $(CHIP_FOLDER_PATH))", "")
|
|
${Q}cp -r $(CHIP_FOLDER_PATH)/* $(OUTPUT_DIR)/rootfs
|
|
endif
|
|
# Copy project overlay rootfs
|
|
ifneq ("$(wildcard $(CUST_FOLDER_PATH))", "")
|
|
${Q}cp -r $(CUST_FOLDER_PATH)/* $(OUTPUT_DIR)/rootfs
|
|
endif
|
|
$(call TARGET_PACKAGE_INSTALL_CMD)
|
|
${Q}${BUILD_PATH}/boards/default/rootfs_script/prepare_rootfs.sh $(OUTPUT_DIR)/rootfs
|
|
# Generate S10_automount
|
|
${Q}python3 $(COMMON_TOOLS_PATH)/image_tool/create_automount.py $(FLASH_PARTITION_XML) $(OUTPUT_DIR)/rootfs/etc/init.d/
|
|
# Generate /etc/fw_env.config
|
|
${Q}python3 $(COMMON_TOOLS_PATH)/image_tool/mkcvipart.py $(FLASH_PARTITION_XML) $(OUTPUT_DIR)/rootfs/etc/ --fw_env
|
|
|
|
$(OUTPUT_DIR)/rawimages:
|
|
${Q}mkdir -p $@
|
|
|
|
rootfs-pack:export CROSS_COMPILE_KERNEL=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE_KERNEL))
|
|
rootfs-pack:export CROSS_COMPILE_SDK=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE_SDK))
|
|
rootfs-pack:$(OUTPUT_DIR)/rawimages
|
|
rootfs-pack:rootfs-prepare
|
|
rootfs-pack:
|
|
$(call print_target)
|
|
${Q}printf '\033[1;36;40m Striping rootfs \033[0m\n'
|
|
ifeq (${FLASH_SIZE_SHRINK},y)
|
|
${Q}printf 'remove unneeded files'
|
|
${Q}${BUILD_PATH}/boards/${CHIP_ARCH_L}/${PROJECT_FULLNAME}/rootfs_script/clean_rootfs.sh $(ROOTFS_DIR)
|
|
endif
|
|
${Q}find $(ROOTFS_DIR) -name "*.ko" -type f -printf 'striping %p\n' -exec $(CROSS_COMPILE_KERNEL)strip --strip-unneeded {} \;
|
|
${Q}find $(ROOTFS_DIR) -name "*.so*" -type f -printf 'striping %p\n' -exec $(CROSS_COMPILE_SDK)strip --strip-all {} \;
|
|
${Q}find $(ROOTFS_DIR) -executable -type f ! -name "*.sh" ! -path "*etc*" ! -path "*.ko" -printf 'striping %p\n' -exec $(CROSS_COMPILE_SDK)strip --strip-all {} 2>/dev/null \;
|
|
ifeq ($(STORAGE_TYPE),spinor)
|
|
${Q}mksquashfs $(ROOTFS_DIR) $(OUTPUT_DIR)/rawimages/rootfs.sqsh -root-owned -comp xz
|
|
else
|
|
${Q}mksquashfs $(ROOTFS_DIR) $(OUTPUT_DIR)/rawimages/rootfs.sqsh -root-owned -comp xz -e mnt/cfg/*
|
|
endif
|
|
ifeq ($(STORAGE_TYPE),spinand)
|
|
${Q}python3 $(COMMON_TOOLS_PATH)/spinand_tool/mkubiimg.py --ubionly $(FLASH_PARTITION_XML) ROOTFS $(OUTPUT_DIR)/rawimages/rootfs.sqsh $(OUTPUT_DIR)/rawimages/rootfs.spinand -b $(CONFIG_NANDFLASH_BLOCKSIZE) -p $(CONFIG_NANDFLASH_PAGESIZE)
|
|
${Q}rm $(OUTPUT_DIR)/rawimages/rootfs.sqsh
|
|
else
|
|
${Q}mv $(OUTPUT_DIR)/rawimages/rootfs.sqsh $(OUTPUT_DIR)/rawimages/rootfs.$(STORAGE_TYPE)
|
|
endif
|
|
|
|
define raw2cimg
|
|
${Q}python3 $(COMMON_TOOLS_PATH)/image_tool/raw2cimg.py $(OUTPUT_DIR)/rawimages/${1} $(OUTPUT_DIR) $(FLASH_PARTITION_XML)
|
|
endef
|
|
|
|
|
|
# BR_OVERLAY_DIR
|
|
# BR_ROOTFS_RAWIMAGE
|
|
br-rootfs-prepare:export CROSS_COMPILE_KERNEL=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE_KERNEL))
|
|
br-rootfs-prepare:export CROSS_COMPILE_SDK=$(patsubst "%",%,$(CONFIG_CROSS_COMPILE_SDK))
|
|
br-rootfs-prepare:
|
|
$(call print_target)
|
|
# copy ko and mmf libs
|
|
${Q}rm -rf $(BR_OVERLAY_DIR)
|
|
${Q}mkdir -p $(BR_OVERLAY_DIR)
|
|
${Q}cp -a $(BR_BASE_OVERLAY_DIR)/. $(BR_OVERLAY_DIR)/
|
|
${Q}rm -rf $(BR_OVERLAY_DIR)/mnt/system
|
|
${Q}mkdir -p $(BR_OVERLAY_DIR)/mnt/system
|
|
${Q}cp -arf ${SYSTEM_OUT_DIR}/* $(BR_OVERLAY_DIR)/mnt/system/
|
|
# strip
|
|
${Q}find $(BR_OVERLAY_DIR) -name "*.ko" -type f -printf 'striping %p\n' -exec $(CROSS_COMPILE_KERNEL)strip --strip-unneeded {} \;
|
|
${Q}find $(BR_OVERLAY_DIR) -name "*.so*" -type f -printf 'striping %p\n' -exec $(CROSS_COMPILE_KERNEL)strip --strip-all {} \;
|
|
${Q}find $(BR_OVERLAY_DIR) -executable -type f ! -name "*.sh" ! -path "*etc*" ! -path "*.ko" -printf 'striping %p\n' -exec $(CROSS_COMPILE_SDK)strip --strip-all {} 2>/dev/null \;
|
|
|
|
br-rootfs-pack:export TARGET_OUTPUT_DIR=$(BR_OUTPUT_DIR)
|
|
br-rootfs-pack:
|
|
$(call print_target)
|
|
${Q}$(MAKE) -C $(BR_DIR) O=$(TARGET_OUTPUT_DIR) $(BR_DEFCONFIG) BR2_DEFCONFIG=$(BR2_DEFCONFIG) BR2_ROOTFS_OVERLAY=$(BR_OVERLAY_DIR) BR2_TOOLCHAIN_EXTERNAL_PATH=$(CROSS_COMPILE_PATH)
|
|
${Q}$(MAKE) -j${NPROC} -C $(BR_DIR) O=$(TARGET_OUTPUT_DIR) BR2_ROOTFS_OVERLAY=$(BR_OVERLAY_DIR) source
|
|
${Q}$(MAKE) -j${NPROC} -C $(BR_DIR) O=$(TARGET_OUTPUT_DIR) BR2_ROOTFS_OVERLAY=$(BR_OVERLAY_DIR)
|
|
# ${Q}rm -rf $(BR_ROOTFS_DIR)/*
|
|
# copy rootfs to rawimg dir
|
|
${Q}cp $(TARGET_OUTPUT_DIR)/images/rootfs.ext4 $(OUTPUT_DIR)/rawimages/rootfs.$(STORAGE_TYPE)
|
|
${Q}tar zcvf $(OUTPUT_DIR)/licheervnano-drivers.tar.gz $(TARGET_OUTPUT_DIR)/target/mnt
|
|
$(call raw2cimg ,rootfs.$(STORAGE_TYPE))
|
|
|
|
ifeq ($(CONFIG_BUILDROOT_FS),y)
|
|
rootfs:br-rootfs-prepare
|
|
rootfs:br-rootfs-pack
|
|
else
|
|
rootfs:rootfs-pack
|
|
rootfs:
|
|
$(call print_target)
|
|
ifneq ($(STORAGE_TYPE), sd)
|
|
$(call raw2cimg ,rootfs.$(STORAGE_TYPE))
|
|
endif
|
|
endif
|
|
|
|
jffs2:
|
|
$(call print_target)
|
|
ifeq ($(STORAGE_TYPE),spinor)
|
|
chmod 777 $(COMMON_TOOLS_PATH)/mkfs.jffs2
|
|
ifeq (${CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2},y)
|
|
${Q}$(COMMON_TOOLS_PATH)/mkfs.jffs2 -d $(OUTPUT_DIR)/data -l -e 0x1000 --squash -o $(OUTPUT_DIR)/rawimages/data.spinor
|
|
else
|
|
${Q}$(COMMON_TOOLS_PATH)/mkfs.jffs2 -d $(OUTPUT_DIR)/data -l -e 0x10000 --squash -o $(OUTPUT_DIR)/rawimages/data.spinor
|
|
endif
|
|
$(call raw2cimg ,data.$(STORAGE_TYPE))
|
|
endif
|
|
|
|
rootfs-clean:
|
|
$(call print_target)
|
|
$(Q)rm -rf $(OUTPUT_DIR)/rootfs/
|
|
$(Q)rm $(OUTPUT_DIR)/rootfs.$(STORAGE_TYPE)
|
|
|
|
$(OUTPUT_DIR)/system:
|
|
${Q}mkdir -p $@
|
|
|
|
# Pack_image
|
|
# Description: Macro for packing image
|
|
# Parameters 1: partition label
|
|
# Parameters 2: Folder path for pack
|
|
# Parameters 3: Size for packing (for make_ext4fs)
|
|
ifeq (${STORAGE_TYPE},spinand)
|
|
define pack_image
|
|
${Q}python3 $(COMMON_TOOLS_PATH)/spinand_tool/mkubiimg.py $(FLASH_PARTITION_XML) $(shell echo ${1} | tr '[:lower:]' '[:upper:]') ${2} $(OUTPUT_DIR)/rawimages/${1}.spinand -b $(CONFIG_NANDFLASH_BLOCKSIZE) -p $(CONFIG_NANDFLASH_PAGESIZE)
|
|
endef
|
|
else ifeq (${STORAGE_TYPE},emmc)
|
|
define pack_image
|
|
${Q}$(COMMON_TOOLS_PATH)/prebuild/make_ext4fs -l ${3} -L $(shell echo ${1} | tr '[:lower:]' '[:upper:]') $(OUTPUT_DIR)/rawimages/${1}.emmc ${2}
|
|
resize2fs -M $(OUTPUT_DIR)/rawimages/${1}.emmc
|
|
endef
|
|
else ifeq (${STORAGE_TYPE},spinor)
|
|
# TODO:
|
|
define pack_image
|
|
endef
|
|
else
|
|
define pack_image
|
|
$(error Unknown STORAGE_TYPE ${STORAGE_TYPE})
|
|
endef
|
|
endif
|
|
|
|
$(OUTPUT_DIR)/rawimages/system.$(STORAGE_TYPE):$(OUTPUT_DIR)/system
|
|
$(call pack_image,system,$(OUTPUT_DIR)/system,38M)
|
|
|
|
system:$(OUTPUT_DIR)/rawimages/system.$(STORAGE_TYPE)
|
|
system:
|
|
$(call print_target)
|
|
$(call raw2cimg ,system.$(STORAGE_TYPE))
|
|
|
|
$(ROOTFS_DIR)/mnt/cfg:
|
|
${Q}mkdir -p $@
|
|
|
|
$(ROOTFS_DIR)/mnt/cfg/secure.img:$(ROOTFS_DIR)/mnt/cfg
|
|
# Create image for encrypting.
|
|
${Q}dd if=/dev/zero of=$(ROOTFS_DIR)/mnt/cfg/secure.img bs=5M count=1
|
|
$(TOOLS_PATH)/common/prebuild/mke2fs -T ext4 -O encrypt $(ROOTFS_DIR)/mnt/cfg/secure.img
|
|
|
|
cfg-build:$(ROOTFS_DIR)/mnt/cfg/secure.img
|
|
cfg-build:
|
|
$(call print_target)
|
|
$(call pack_image,cfg,$(ROOTFS_DIR)/mnt/cfg/,15M)
|
|
|
|
cfg:cfg-build
|
|
$(call print_target)
|
|
$(call raw2cimg ,cfg.$(STORAGE_TYPE))
|
|
|
|
-include riscv.mk
|