123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- CC ?= gcc
- STRIP := strip
- NM := nm
- SRCTYPE ?= c
- OBJS = $(patsubst %.$(SRCTYPE),objs/%.o,$(notdir $(SRCS_LIST)))
- OBJS_P = $(patsubst %.o,%.P,$(OBJS))
- APSDIR = $(shell echo `pwd` | sed 's/drivers\/.*\|aps\/.*/aps/g')
- #this path TOOLDIR only used by aps, so ignore driver path replacement;
- TOOLDIR = $(shell echo `pwd` | sed 's/aps\/.*/tools/')
- ifeq ($(CONFIG_ENABLE_UMF_MODULES), y)
- ifeq ($(CONFIG_MOD_PACK_MEDIA), y)
- modsegs += .media
- modsrc += $(MM_APP) $(MM_UIRESRCS) $(MM_MID)
- endif
- ifeq ($(CONFIG_MOD_PACK_RUNAV), y)
- modsegs += .ffmpeg
- endif
- ifeq ($(CONFIG_MOD_PACK_PICLIB), y)
- modsegs += .picture
- modsrc += $(PICTURE_MOD)
- endif
- ifeq ($(CONFIG_MOD_PACK_ATV), y)
- modsegs += .atv
- modsrc += $(ATV_APP)
- endif
- ifeq ($(CONFIG_MOD_PACK_DTV), y)
- modsegs += .dtv
- modsrc += $(DTV_APP) $(DTV_MID)
- endif
- ifeq ($(CONFIG_MOD_PACK_TT), y)
- modsegs += .teletext
- modsrc += $(TT_MOD)
- endif
- ifeq ($(CONFIG_MOD_PACK_SUB), y)
- modsegs += .subtitle
- modsrc += $(SUB_MOD)
- endif
- ifeq ($(CONFIG_ENABLE_UMF_LANGUAGE_MODULES), y)
- #langMode begin(This context is auto generated by ./tools/gen_LangMode.py please don't modify.)
- modsegs += .TV_IDL_Spanish
- modsegs += .TV_IDL_French
- modsegs += .TV_IDL_German
- modsegs += .TV_IDL_Italian
- modsegs += .TV_IDL_Portuguese
- modsegs += .TV_IDL_Polish
- modsegs += .TV_IDL_Russian
- modsegs += .TV_IDL_Finnish
- modsegs += .TV_IDL_Swedish
- modsegs += .TV_IDL_Greek
- modsegs += .TV_IDL_Dutch
- modsegs += .TV_IDL_English
- modsegs += .TV_IDL_Schinese
- #langMode end (please don't delete)
- endif
- endif
- $(TARGET_EXE): check_dir_objs $(OBJS) BUILD_MODULE
- @echo Building $@
- ifeq (yy, $(findstring yy, ${BUILD_UMF}${CONFIG_ENABLE_UMF_MODULES}))
- @rm -fr umflink.ld
- @cpp -P umflink.ld.S -o umflink.ld
- ifeq ($(CONFIG_STATIC_UCLIBC),y)
- @echo 111111111111111
- $(CROSS)$(CC) $(LDFLAGS) -Wl,-Map,$@.map -o $@ $(OBJS) $(EXTRA_OBJS) $(UCLIBCDIR)/usr/lib/libc.a -Tumflink.ld
- else
- $(CROSS)$(CC) $(LDFLAGS) -Wl,-Map,$@.map -o $@ $(OBJS) $(EXTRA_OBJS) -Tumflink.ld
- endif
- else
- ifeq ($(CONFIG_STATIC_UCLIBC),y)
- @echo 111111111111111
- $(CROSS)$(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_OBJS) $(UCLIBCDIR)/usr/lib/libc.a
- else
- $(CROSS)$(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_OBJS)
- endif
- endif
- ifeq ($(CONFIG_CORE_DUMP),y)
- @cp $@ $@.gdb
- endif
- ifeq ($(CONFIG_CALL_TRACE),y)
- @$(CROSS)$(NM) -n $@ > $(APSDIR)/middleware/trace/$@.symbol
- endif
- ifeq (yy, $(findstring yy, ${BUILD_UMF}${CONFIG_ENABLE_UMF_MODULES}))
- @mv $@ $@.full
- @$(CROSS)objdump -Chpr $@.full > $@.txt
- @rm -fr mod.info
- @$(PURECROSS)objcopy $(patsubst .%,--remove-section=.%,$(modsegs)) $@.full $@
- @for modseg in $(modsegs); do \
- $(PURECROSS)objcopy --only-section=$$modseg -O binary $@.full $@$$modseg || exit 1; \
- $(TOOLDIR)/gen_compressmod.pl $(TOOLDIR)/lzma460/lzma $@$$modseg ./$@$$modseg.bin || exit 1; \
- grep -nr $$modseg ./$@.txt | awk '{printf $$3" "$$4" "$$5}' >> ./mod.info; \
- grep $${modseg}data_start ./$@.map | awk '{printf " "$$1}' >> ./mod.info; \
- grep $${modseg}data_end ./$@.map | awk '{print " "$$1}' >> ./mod.info; \
- done
- @$(CROSS)$(STRIP) $@.full
- endif
- @$(CROSS)$(STRIP) $@
- $(TARGET_STATIC): check_dir_objs $(OBJS)
- @echo Building $@
- @$(CROSS)ar cr $@ $(OBJS) $(EXTRA_OBJS)
- @$(CROSS)ranlib $@
- $(TARGET_DYNAMIC): check_dir_objs $(OBJS)
- @echo Building $@
- $(CROSS)$(CC) $(LDFLAGS) -shared -Wl,-soname,$@ -o $@ $(OBJS) $(EXTRA_OBJS)
- BUILD_MODULE:
-
- objs/%.o: %.$(SRCTYPE)
- @echo Compiling $<
- @$(CROSS)$(CC) -MMD -c -o $@ $(EXTRA_CFLAGS) $(CMPFLAGS) $(WRNFLAGS) $(CFLAGS) $(INCLUDE) $<
- ifeq ($(CONFIG_GCOV_APPLICATION),y)
- echo $< >> gcov_source_list
- endif
- # @cp $(*D)/objs/$(*F).d $(*D)/objs/$(*F).P; \
- # sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
- # -e '/^$$/ d' -e 's/$$/ :/' < $(*D)/objs/$(*F).d >> $(*D)/objs/$(*F).P; \
- # rm $(*D)/objs/$(*F).d
- modobjs = $(patsubst %.c,objs/%.o,$(modsrc))
- $(modobjs):objs/%.o: %.c
- @echo Compiling $(MODULE_NAME) file: $<
- @$(CROSS)$(CC) -MMD -c -o $@ $(EXTRA_CFLAGS) $(CMPFLAGS) $(WRNFLAGS) $(CFLAGS) $(INCLUDE) $<
- @$(TOOLDIR)/rename_section $(PURECROSS)objdump $(PURECROSS)objcopy .text .$(MODULE_NAME).text ./objs/$*.o
- @$(TOOLDIR)/rename_section $(PURECROSS)objdump $(PURECROSS)objcopy .rodata .$(MODULE_NAME).rodata ./objs/$*.o
- @$(TOOLDIR)/rename_section $(PURECROSS)objdump $(PURECROSS)objcopy .data .$(MODULE_NAME).data ./objs/$*.o
- @$(TOOLDIR)/rename_section $(PURECROSS)objdump $(PURECROSS)objcopy .bss .$(MODULE_NAME).bss ./objs/$*.o
- modlanobjs = $(patsubst %.c,objs/%.o,$(modlansrc))
- $(modlanobjs):objs/%.o: %.c
- $(CROSS)$(CC) -MMD -c -o $@ $(EXTRA_CFLAGS) $(CMPFLAGS) $(WRNFLAGS) $(CFLAGS) $(INCLUDE) $<
- echo kai $(basename $(<F))
- $(TOOLDIR)/rename_section $(PURECROSS)objdump $(PURECROSS)objcopy .text .$(basename $(<F)).text ./objs/$(basename $(<F)).o
- $(TOOLDIR)/rename_section $(PURECROSS)objdump $(PURECROSS)objcopy .rodata .$(basename $(<F)).rodata ./objs/$(basename $(<F)).o
- $(TOOLDIR)/rename_section $(PURECROSS)objdump $(PURECROSS)objcopy .data .$(basename $(<F)).data ./objs/$(basename $(<F)).o
- $(TOOLDIR)/rename_section $(PURECROSS)objdump $(PURECROSS)objcopy .bss .$(basename $(<F)).bss ./objs/$(basename $(<F)).o
- clean: remove_dir_objs clean_link clean_extra
- @$(RM) $(TARGET_EXE) $(TARGET_STATIC) $(TARGET_STATIC_A) $(TARGET_DYNAMIC)
- @$(RM) $(OBJS_P) $(OBJS)
- ifeq ($(CONFIG_CORE_DUMP),y)
- @$(RM) $(TARGET_EXE).gdb
- endif
- clean_link:
- @$(RM) $(OBJS_LINK)
- clean_extra:
- check_dir_objs:
- @if [ ! -d "objs" ] ; then mkdir objs; fi
- remove_dir_objs:
- @if [ -d "objs" ]; then rm -rf objs; fi
- ifeq ($(CONFIG_GCOV_APPLICATION),y)
- -rm gcov_source_list
- -rm *.gcov
- endif
- #-include $(OBJS:objs/%.o=objs/%.P)
- -include $(OBJS:objs/%.o=objs/%.d)
|