sdk-hwV1.3/lichee/melis-v3.0/source/ekernel/Makefile

189 lines
6.5 KiB
Makefile
Executable File

include $(MELIS_BASE)/scripts/Makefile.common
OBJCOPYFLAGS := -S -O binary \
-R .note \
-R .comment \
-R COMMON \
-R .ARM.attributes \
-R .en_frame \
-R .init -R .fini \
--gap-fill=0xff
subdir-ccflags-y += -I$(srctree)/ekernel/arch \
-I$(srctree)/ekernel/core/rt-thread/include \
-I$(srctree)/ekernel/core/rt-thread/include/libc \
-I$(srctree)/ekernel/drivers/include/drv \
-I$(srctree)/ekernel/drivers/include/hal \
-I$(srctree)/ekernel/drivers/include/osal \
-I$(srctree)/ekernel/drivers/rtos-hal/hal/source/ccmu/sunxi \
-I$(srctree)/ekernel/components/finsh_cli \
-I$(srctree)/ekernel/components/thirdparty/dfs/include \
-I$(srctree)/ekernel/drivers/drv/source/sound \
-D__LINUX_ERRNO_EXTENSIONS__
subdir-ccflags-y += -DFD_SETSIZE=1024
MOD_NAME := melis30
$(MOD_NAME)-objs += built-in.o
obj-m += $(MOD_NAME).o
obj-y := arch/ core/ drivers/ components/
obj-y += ../projects/$(TARGET_BOARD)/src/
usrlibs-y += -L$(srctree)/${elibrary-libs}
usrlibs-$(CONFIG_DRIVERS_VIN) += -L$(srctree)/ekernel/drivers/rtos-hal/hal/source/vin/vin_isp/isp_server/out/isp600 \
--start-group \
-lisp_algo \
--end-group
usrlibs-${CONFIG_SDK_RELEASE} += -L$(srctree)/${elibrary-libs}/3rd/v4l2/ \
-L$(srctree)/${elibrary-libs}/3rd/adbd/ \
--start-group \
-lv4l2 -ladbd \
--end-group
usrlibs-${VIDEO_SUNXI_VIN} += --require-defined=vin_init
usrlibs-${CONFIG_COMPONENT_ADBD}+= --require-defined=adbd_init
ifneq ($(filter y, $(CONFIG_mpp_venc) $(CONFIG_mpp_vdec)),)
usrlibs-y += -L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/base \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/library/${LIB_DIR} \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/memory \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/vdecoder \
--start-group \
-lcdc_base \
-lVE \
-lMemAdapter \
--end-group
endif
usrlibs-$(CONFIG_mpp_venc) += -L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/base \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/library/${LIB_DIR} \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/memory \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/vdecoder \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/vencoder \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/vencoder/base \
--start-group \
-lvencoder \
-lvenc_base \
-lvenc_codec \
--end-group
usrlibs-$(CONFIG_mpp_vdec) += -L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/base \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/library/${LIB_DIR} \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/memory \
-L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libcedarc/vdecoder \
--start-group \
-lawh264 \
-lawh265 \
-lawmjpegplus \
-lvideoengine \
-lvdecoder \
--end-group
usrlibs-$(CONFIG_mpp_vi) += -L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/libisp/out \
--start-group \
-liniparser \
-lisp_algo \
-lisp_dev \
-lisp_ini \
-lisp_math \
--end-group
usrlibs-$(CONFIG_mpp_aenc) += -L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/AudioLib/lib \
--start-group \
-laacenc \
-lmp3enc \
--end-group
usrlibs-$(CONFIG_mpp_adec) += -L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/AudioLib/lib \
--start-group \
-laac \
-lmp3 \
-lwav \
--end-group
usrlibs-$(CONFIG_mpp_aec) += -L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/aec_lib \
--start-group \
-lAec \
--end-group
usrlibs-$(CONFIG_SUNXI_AEC_TEST) += -L$(srctree)/elibrary/media/libaec \
--start-group \
-laec \
--end-group
usrlibs-$(CONFIG_mpp_softdrc) += -L$(srctree)/ekernel/components/avframework/eyesee-mpp/middleware/sun8iw19p1/media/LIBRARY/drc_lib \
--start-group \
-lDrc \
--end-group
usrlibs-$(CONFIG_XR829) += -L$(srctree)/ekernel/drivers/drv/source/net/xradio \
--start-group \
-lxr829_40M \
--end-group
usrlibs-$(CONFIG_DRIVERS_NAND_FLASH) += -L$(srctree)/ekernel/drivers/rtos-hal/hal/source/nand_flash/ \
--start-group \
-lmelis-nand-sun20iw1 \
--end-group
linkscript = -T$(prjtree)/$(TARGET_BOARD)/kernel.lds
lnkflags-y += --omagic --gc-sections -cref --entry=_start \
-X ${linkscript} \
-Map=$(obj)/linker.map --build-id=sha1
ifeq ($(CONFIG_KALLSYMS), y)
# Usage:
# $(call link_module, input1.o, input2.o, output.o)
define link_module
$(Q)$(LD) $(ld_flags) -o $3 $1 \
$(lnkflags-y) \
--start-group \
$(usrlibs-y) \
$(deplibs-y) \
--end-group \
$2
endef
# Usage:
# $(call gen_kall_o, input.o, output.o)
define gen_kall_o
nm $1 | scripts/kallsyms $(if $(CONFIG_KALLSYMS_ALL), --all-symbols,) > sym.S; \
$(CC) -c -o $2 sym.S \
${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \
${NOSTDINC_FLAGS} ${LINUXINCLUDE} \
${KBUILD_CPPFLAGS}; \
rm sym.S;
endef
endif
$(obj)/$(MOD_NAME).bin :%.bin :%.o FORCE
ifeq ($(CONFIG_KALLSYMS), y)
@# step 1 Link mm1.o it has all symbols buf kallsyms is empty
$(Q)$(call link_module, ekernel/$($(MOD_NAME)-objs), , .tmp_melis1.o)
$(Q)$(call gen_kall_o, .tmp_melis1.o, .tmp_kallsyms1.o)
@# step 2 Libk mm2 to geve kallsyms with right size
$(Q)$(call link_module, ekernel/$($(MOD_NAME)-objs), .tmp_kallsyms1.o, .tmp_melis2.o)
$(Q)$(call gen_kall_o, .tmp_melis2.o, .tmp_kallsyms2.o)
@# step 3 The correct kallsyms is linked to finale obj file
$(Q)$(call link_module, ekernel/$($(MOD_NAME)-objs), .tmp_kallsyms2.o, ekernel/$(MOD_NAME).o)
$(Q)rm .tmp_melis1.o
$(Q)rm .tmp_melis2.o
$(Q)rm .tmp_kallsyms1.o
$(Q)rm .tmp_kallsyms2.o
endif
$(call if_changed,objcopy)
$(call if_changed,renameelf)
$(Q)cp -f $@ $(prjtree)/$(TARGET_BOARD)/epos.img
$(Q)$(OBJDUMP) -d $(<:.o=.elf) > $(obj)/$(MOD_NAME).dis
$(Q)mksysmap $(<:.o=.elf) $(obj)/System.map
$(Q)echo -e '\033[0;31;1m'
$(Q)$(SIZE) $(<:.o=.elf)
$(Q)echo -e '\033[0m'
always := $(MOD_NAME).bin
clean:mod_clean