MC3302_SDK_V1.1.9_202507281.../media/mpp/Makefile

375 lines
14 KiB
Makefile
Raw Normal View History

2025-11-11 04:08:31 +00:00
SHELL := /bin/bash
export SDK_ROOT=$(shell pwd)
export BSP_DIR=$(SDK_ROOT)/bsp
export MEDIA_DIR=$(SDK_ROOT)/media
export MPP_DIR=$(SDK_ROOT)/media/mpp
export OUTPUT_ROOT_DIR=$(SDK_ROOT)/output
PUB_ROOTFS=bsp/rootfs
RTT_FASTBOOT?=N
ENV_FILE=${OUTPUT_ROOT_DIR}/.config
ENV_FILE_EVB=${OUTPUT_ROOT_DIR}/.evb_config
ifeq (,$(wildcard $(ENV_FILE)))
$(error "Please use "./envsetup.sh" to select a device config")
endif
include $(ENV_FILE)
include $(ENV_FILE_EVB)
GCC_INFO := $(shell $(CROSS)gcc -v 1>&2 2> /dev/null; echo $$?)
ifneq ($(GCC_INFO),0)
$(info Not found: $(CROSS)gcc)
$(error "Please add the cross compiler into your system path!!")
endif
LIB_RUNTIME:=$(CROSS_RUNTIME_LIB)
FAKEROOT_INFO := $(shell fakeroot -- ls &> /dev/null; echo $$?)
ifneq ($(FAKEROOT_INFO),0)
$(info Not found: faketroot)
FAKEROOT_CMD :=@
else
FAKEROOT_CMD :=@fakeroot --
endif
export OUTPUT_DIR=$(OUTPUT_ROOT_DIR)/$(TARGET_OUTPUT_DIR)
export IMAGE_CLASS?=boot
export post_bin_path?=$(OUTPUT_DIR)/
export FB?=0
export RTT_AP?=0
# get the isp sub folder
VERS_DIR := $(CROSS_VID)
MEM_LAYOUT=mem_layout.sh
.PHONY: info
info:
@echo " Board: $(TARGET_CONFIG_NIMI)"
@echo " Kernel: linux-$(KERNEL_VER)"
@echo " Uboot config: $(UBOOT_CONFIG)"
@echo "Kernel config: $(KERNEL_CONFIG)"
@echo " Kernel DTS: $(KERNEL_DTS)"
@echo " CROSS: $(CROSS)"
.PHONY: all
all: boot kernel sample bsp_test rootfs
.PHONY: clean
clean: boot_clean kernel_clean driver_clean lib_clean sample_clean bsp_test_clean busybox_clean boardtools_clean rootfs_clean
##########################################################################################
#task [0] prepare
##########################################################################################
.PHONY: prepare prepare_output prepare_banner
prepare_banner:
@echo -e "\e[0;32;1m == Building for $(TARGET_CONFIG_NIMI) ...\e[0;36;1m \e[0m"
prepare_output:
@mkdir -p $(OUTPUT_DIR)
@mkdir -p $(OUTPUT_DIR)/media/{ko,obj,lib,sample}
@mkdir -p $(OUTPUT_DIR)/bsp/{kernel,boot,rootfs,test}
prepare: prepare_banner prepare_output
##########################################################################################
#task [1] boot
##########################################################################################
.PHONY: boot ramboot boot_prepare boot_build boot_post boot_clean
boot_prepare: prepare
@echo "---------task [boot] prepare "
cd $(MEDIA_DIR)/mpp/configs;./$(MEM_LAYOUT);cd -;
cp $(MPP_DIR)/prebuilt/* $(OUTPUT_DIR)/ -rvf
boot_build:
@echo "---------task [boot] build"
sed -i '/^CONFIG_BOOTARGS/s/mem=[1-9][0-9][M]/mem=$(MEM_OS_SIZE)/' $(BSP_DIR)/uboot/$(UBOOT_VER)/configs/$(UBOOT_CONFIG)
make -C $(BSP_DIR)/uboot/$(UBOOT_VER) ARCH=arm CROSS_COMPILE=$(CROSS) distclean
make -C $(BSP_DIR)/uboot/$(UBOOT_VER) ARCH=arm CROSS_COMPILE=$(CROSS) $(UBOOT_CONFIG)
make -C $(BSP_DIR)/uboot/$(UBOOT_VER) ARCH=arm CROSS_COMPILE=$(CROSS) -j 4
ramboot:
@echo "---------task [ramboot] build"
make -C $(BSP_DIR)/ramboot ARCH=arm CROSS_COMPILE=$(CROSS) distclean
make -C $(BSP_DIR)/ramboot ARCH=arm CROSS_COMPILE=$(CROSS) $(UBOOT_CONFIG)
make -C $(BSP_DIR)/ramboot ARCH=arm CROSS_COMPILE=$(CROSS) -j 4
boot_post:
@echo "---------task [boot] post"
@mkdir -p $(OUTPUT_DIR)/bsp/pdl/
@mkdir -p $(OUTPUT_DIR)/bsp/spl/
cp $(BSP_DIR)/ramboot/spl/u-boot-spl-header.img $(OUTPUT_DIR)/bsp/spl/u-boot-spl-header.img
cp $(BSP_DIR)/ramboot/pdl/u-boot-pdl-header.img $(OUTPUT_DIR)/bsp/pdl/u-boot-pdl-header.img
cp $(BSP_DIR)/uboot/$(UBOOT_VER)/u-boot.bin $(OUTPUT_DIR)/bsp/boot/
cp $(BSP_DIR)/uboot/$(UBOOT_VER)/u-boot-dtb.bin $(OUTPUT_DIR)/bsp/boot/
cat $(BSP_DIR)/ramboot/spl/u-boot-spl-header.img $(BSP_DIR)/uboot/$(UBOOT_VER)/u-boot.bin > $(OUTPUT_DIR)/bsp/boot/u-boot-with-spl.img
cp $(BSP_DIR)/uboot/$(UBOOT_VER)/sdl/u-boot-sdl.bin $(OUTPUT_DIR)/bsp/boot/
@echo "---------merge_bin_clean"
@rm -f $(BSP_DIR)/ramboot/*merge_bin*
boot: boot_prepare boot_build ramboot boot_post
boot_clean:
@echo "---------task [boot] build"
make -C $(BSP_DIR)/uboot/$(UBOOT_VER) ARCH=arm CROSS_COMPILE=$(CROSS) distclean
make -C $(BSP_DIR)/ramboot ARCH=arm CROSS_COMPILE=$(CROSS) distclean
##########################################################################################
#task [2] kernel
##########################################################################################
.PHONY: kernel kernel_prepare kernel_build kernel_post kernel_image_build kernel_image kernel_clean
kernel_prepare: prepare
@echo "---------task [kernel] prepare "
cp $(MPP_DIR)/prebuilt/* $(OUTPUT_DIR)/ -rvf
kernel_build:
@echo "---------task [kernel] build"
make -C $(BSP_DIR)/kernel/linux-$(KERNEL_VER) ARCH=arm CROSS_COMPILE=$(CROSS) distclean
make -C $(BSP_DIR)/kernel/linux-$(KERNEL_VER) ARCH=arm CROSS_COMPILE=$(CROSS) $(KERNEL_CONFIG)
make -C $(BSP_DIR)/kernel/linux-$(KERNEL_VER) ARCH=arm CROSS_COMPILE=$(CROSS) -j 4
kernel_image_build:
@echo "---------task [kernel image] build"
make -C $(BSP_DIR)/kernel/linux-$(KERNEL_VER) ARCH=arm CROSS_COMPILE=$(CROSS) -j 4
kernel_post:
@echo "---------task [kernel] post"
cp $(BSP_DIR)/kernel/linux-$(KERNEL_VER)/arch/arm/boot/zImage $(OUTPUT_DIR)/bsp/kernel/
cp $(BSP_DIR)/kernel/linux-$(KERNEL_VER)/arch/arm/boot/Image $(OUTPUT_DIR)/bsp/kernel/
make -C $(MEDIA_DIR)/tools/post_build/ -f $(MEDIA_DIR)/tools/post_build/Makefile.mkimage
cp $(BSP_DIR)/kernel/linux-$(KERNEL_VER)/arch/arm/boot/dts/$(KERNEL_DTS:.dts=.dtb) $(OUTPUT_DIR)/bsp/kernel/$(KERNEL_DTS:.dts=.dtb)
cat $(OUTPUT_DIR)/bsp/kernel/zImage $(OUTPUT_DIR)/bsp/kernel/$(KERNEL_DTS:.dts=.dtb) > $(OUTPUT_DIR)/bsp/kernel/zImage-dtb
cat $(OUTPUT_DIR)/bsp/kernel/Image $(OUTPUT_DIR)/bsp/kernel/$(KERNEL_DTS:.dts=.dtb) > $(OUTPUT_DIR)/bsp/kernel/Image-dtb
kernel: kernel_prepare kernel_build kernel_post
kernel_image: kernel_image_build kernel_post
kernel_clean:
@echo "---------task [kernel] clean"
make -C $(BSP_DIR)/kernel/linux-$(KERNEL_VER) ARCH=arm CROSS_COMPILE=$(CROSS) distclean
##########################################################################################
#task [11] rtt
##########################################################################################
.PHONY: rtt rtt_prepare rtt_build rtt_clean
rtt_prepare:prepare
@echo "---------task [rtt] prepare "
rtt_build:
@echo "---------task [rtt] build"
@echo "$(KERNEL_CONFIG)"
make -C $(BSP_DIR)/rt-thread distclean; \
make -C $(BSP_DIR)/rt-thread $(KERNEL_CONFIG)
make -C $(BSP_DIR)/rt-thread
cp $(BSP_DIR)/rt-thread/app/out/bin/* $(OUTPUT_DIR)/bsp/kernel/
rtt: rtt_prepare rtt_build
rtt_clean:
@echo "---------task [rtt] clean"
make -C $(BSP_DIR)/rt-thread distclean
##########################################################################################
#task [3] prepare rootfs
##########################################################################################
rootfs_prepare: prepare
@echo "---------task [3] prepare rootfs "
rm $(OUTPUT_DIR)/$(PUB_ROOTFS)/* -rf
tar xzf $(BSP_DIR)/rootfs/rootfs.tar.gz -C $(OUTPUT_DIR)/bsp/
tar xvf $(shell dirname $(shell which $(CROSS)gcc))/../$(LIB_RUNTIME).tar.bz2 -C $(OUTPUT_DIR)/bsp/rootfs
pushd $(OUTPUT_DIR)/$(PUB_ROOTFS);chmod -R 0755 $(LIB_RUNTIME);mv $(LIB_RUNTIME)/* lib/;rm -rf $(LIB_RUNTIME);popd
##########################################################################################
#task [4] build busybox
##########################################################################################
busybox: prepare
@echo "---------task [4] build busybox "
[ -d $(BSP_DIR)/busybox/$(BUSYBOX_VER) ] || (pushd $(BSP_DIR)/busybox/;tar xvf $(BUSYBOX_VER).tar.bz2;popd)
rm -rf $(BSP_DIR)/busybox/$(BUSYBOX_VER)/_install
- if [ -d $(BSP_DIR)/busybox/$(BUSYBOX_VER) ]; then cd $(BSP_DIR)/busybox/$(BUSYBOX_VER); ls ../patches/$(BUSYBOX_VER)/* | xargs -i patch --forward -p0 -i {}; fi
make CROSS_COMPILE=$(CROSS) -C $(BSP_DIR)/busybox/$(BUSYBOX_VER) distclean
cp $(BSP_DIR)/busybox/$(BUSYBOX_CFG) $(BSP_DIR)/busybox/$(BUSYBOX_VER)/.config
make CROSS_COMPILE=$(CROSS) -C $(BSP_DIR)/busybox/$(BUSYBOX_VER) -j 20
make CROSS_COMPILE=$(CROSS) -C $(BSP_DIR)/busybox/$(BUSYBOX_VER) install
cp -af $(BSP_DIR)/busybox/$(BUSYBOX_VER)/_install/* $(OUTPUT_DIR)/$(PUB_ROOTFS)
pushd $(OUTPUT_DIR)/$(PUB_ROOTFS)/;ln -s bin/busybox init;popd
mkdir -p $(OUTPUT_DIR)/bsp/rootfs/usr/share/udhcpc
cp -af $(BSP_DIR)/busybox/$(BUSYBOX_VER)/examples/udhcp/simple.script $(OUTPUT_DIR)/$(PUB_ROOTFS)/usr/share/udhcpc/default.script
busybox_clean:
make -C $(BSP_DIR)/busybox/$(BUSYBOX_VER) distclean
##########################################################################################
#task [5] build pc tools
##########################################################################################
pctools: prepare
@echo "---------task [5] build tools which run on pc"
pctools_clean:
##########################################################################################
#task [6] build board tools
##########################################################################################
boardtools: rootfs_prepare boardtools_clean
@echo "---------task [6] build tools which run on board "
make -C $(MEDIA_DIR)/tools/board/udev-164 OSDRV_CROSS=$(CROSS)
cp -af $(MEDIA_DIR)/tools/board/udev-164/rootfs/. $(OUTPUT_DIR)/$(PUB_ROOTFS)/
make -C $(MEDIA_DIR)/tools/board/udev-164 OSDRV_CROSS=$(CROSS) clean
boardtools_clean:
##########################################################################################
#task [7] build rootfs
##########################################################################################
rootfs: rootfs_prepare busybox boardtools
yaffs2:
@echo "---------task [7] build yaffs image!"
$(FAKEROOT_CMD) $(MEDIA_DIR)/tools/pc/fs_tools/mkyaffs2.sh $(OUTPUT_DIR)/$(PUB_ROOTFS) rootfs.yaffs2.img
@echo "---------finish compile work"
squashfs:
@echo "---------task [7] build squashfs image!"
$(FAKEROOT_CMD) $(MEDIA_DIR)/tools/pc/fs_tools/mksquashfs.sh $(OUTPUT_DIR)/$(PUB_ROOTFS) rootfs.squash.img
@echo "---------finish compile work"
ramdisk:
@echo "---------task [7] build rootfs"
$(FAKEROOT_CMD) $(MEDIA_DIR)/tools/pc/fs_tools/mkinitramfs.sh $(OUTPUT_DIR)/$(PUB_ROOTFS) $(BSP_DIR)/kernel/linux-$(KERNEL_VER)
@echo " generated $(BSP_DIR)/rootfs/initramfs.cpio.gz"
@echo "---------finish compile work"
jffs2:
@echo "---------task [7] build rootfs"
$(FAKEROOT_CMD) $(MEDIA_DIR)/tools/pc/fs_tools/mkjffs2.sh $(OUTPUT_DIR)/$(PUB_ROOTFS) 0x10000 rootfs.jffs2.64k.img
$(FAKEROOT_CMD) $(MEDIA_DIR)/tools/pc/fs_tools/mkjffs2.sh $(OUTPUT_DIR)/$(PUB_ROOTFS) 0x20000 rootfs.jffs2.128k.img
$(FAKEROOT_CMD) $(MEDIA_DIR)/tools/pc/fs_tools/mkjffs2.sh $(OUTPUT_DIR)/$(PUB_ROOTFS) 0x40000 rootfs.jffs2.256k.img
rootfs_clean:
rm $(OUTPUT_DIR)/bsp/rootfs/ -rf
##########################################################################################
#task [8] drivers
##########################################################################################
.PHONY: driver driver_prepare driver_build driver_post driver_clean
driver_prepare: prepare
@echo "---------task [driver] prepare"
# cp $(MPP_DIR)/prebuilt/ko/loadko.sh $(OUTPUT_DIR)/media/ko/
# cp $(MPP_DIR)/prebuilt/ko/loadko_maxlod_24M.sh $(OUTPUT_DIR)/media/ko/
driver_build:
set -e;if [ "$(RTT_FASTBOOT)" == "Y" ] ; then \
make -C $(MEDIA_DIR)/driver xbus=y fboot=y; \
else \
make -C $(MEDIA_DIR)/driver; \
make -C $(MEDIA_DIR)/driver clean; \
# make -C $(MEDIA_DIR)/driver xbus=y; \
fi
driver_post:
@echo "---------task [driver] post"
cp -p $(MPP_DIR)/ko/$(LOADKO_SCRIPT) $(OUTPUT_DIR)/media/ko/loadko.sh
cp $(MPP_DIR)/ko/$(VERS_DIR)/nnp.ko $(OUTPUT_DIR)/media/ko/
cp $(MEDIA_DIR)/isp/isp_main/$(VERS_DIR)/ko/isp.ko $(OUTPUT_DIR)/media/ko/
cp $(MEDIA_DIR)/isp/isp460/ko/isp460.ko $(OUTPUT_DIR)/media/ko/
driver: driver_prepare driver_build
#driver: driver_prepare driver_build driver_post
#driver:
$(info "disabled by siyuan.song")
$(CC) -v
driver_clean:
@echo "---------task [driver] clean"
make -C $(MEDIA_DIR)/driver clean
##########################################################################################
#task [9] libs
##########################################################################################
.PHONY: lib lib_prepare lib_build lib_post lib_clean
lib_prepare: prepare
@echo "---------task [lib] prepare "
lib_build:
@echo "---------task [lib] build"
make -C $(MEDIA_DIR)/mpp/mpi -f Makefile.linux
lib_post:
@echo "---------task [lib] post"
mkdir -p $(MEDIA_DIR)/lib/isp460
rsync -av --exclude v510 --exclude v512 --exclude v610 $(MEDIA_DIR)/lib/* $(OUTPUT_DIR)/media/lib/
# - cp -raf $(MEDIA_DIR)/isp/isp_main/$(VERS_DIR)/lib/lib*.a $(MEDIA_DIR)/isp/isp_main/lib
# - cp -raf $(MEDIA_DIR)/isp/isp_main/$(VERS_DIR)/lib/lib*.a $(OUTPUT_DIR)/media/lib/
# - cp -raf $(MEDIA_DIR)/isp/isp460/lib/lib*.a $(OUTPUT_DIR)/media/lib/isp460
# - cp -raf $(MEDIA_DIR)/lib/$(VERS_DIR)/* $(OUTPUT_DIR)/media/lib/
lib: lib_prepare lib_build lib_post
#lib:
$(info "disabled by siyuan.song")
$(CC) -v
lib_clean:
@echo "---------task [lib] cilean"
make -C $(MEDIA_DIR)/mpp/mpi -f Makefile.linux clean
##########################################################################################
#task [10] sample
##########################################################################################
.PHONY: sample sample_prepare sample_build sample_post sample_clean
sample_prepare: prepare
@echo "---------task [sample] prepare "
sample_build:
@echo "---------task [sample] build"
make -C $(MEDIA_DIR)/sample
sample_post:
@echo "---------task [sample] post"
sample: sample_prepare sample_build sample_post
sample_clean:
@echo "---------task [sample] clean"
make -C $(MEDIA_DIR)/sample clean
##########################################################################################
#task [11] bsp test
##########################################################################################
.PHONY: bsp_test bsp_test_clean
bsp_test:
@echo "---------task [sample] build"
make -C $(BSP_DIR)/test
cp $(MEDIA_DIR)/tools/board/linux/molv2/* $(OUTPUT_DIR)/bsp/test/
bsp_test_clean:
@echo "---------task [sample] clean"
make -C $(BSP_DIR)/test clean