WaveDecode-ffmpeg.mak 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. # ----------------------------------------------------------------------
  2. #
  3. # Project: C&M Video decoder sample
  4. #
  5. # ----------------------------------------------------------------------
  6. .PHONY: CREATE_DIR
  7. BUILD_CONFIGURATION := EmbeddedRiscvLinux
  8. PRODUCT := WAVE511
  9. PRODUCT := WAVE521C
  10. $(shell cp sample_v2/component_list_decoder.h sample_v2/component/component_list.h)
  11. USE_FFMPEG = yes
  12. USE_PTHREAD = yes
  13. USE_RTL_SIM = no
  14. LINT_HOME = etc/lint
  15. UNAME = $(shell uname -a)
  16. ifneq (,$(findstring i386, $(UNAME)))
  17. USE_32BIT = yes
  18. endif
  19. ifeq ($(RTL_SIM), 1)
  20. USE_RTL_SIM = yes
  21. endif
  22. REFC := 0
  23. ifeq ($(USE_32BIT), yes)
  24. PLATFORM = nativelinux
  25. else
  26. PLATFORM = nativelinux_64bit
  27. endif
  28. CROSS_CC_PREFIX =
  29. VDI_C = vdi/linux/vdi.c
  30. VDI_OSAL_C = vdi/linux/vdi_osal.c
  31. MM_C =
  32. PLATFORM_FLAGS =
  33. VDI_VPATH = vdi/linux
  34. ifeq ("$(BUILD_CONFIGURATION)", "NonOS")
  35. CROSS_CC_PREFIX = arm-none-eabi-
  36. VDI_C = vdi/nonos/vdi.c
  37. VDI_OSAL_C = vdi/nonos/vdi_osal.c
  38. MM_C = vdi/mm.c
  39. USE_FFMPEG = no
  40. USE_PTHREAD = no
  41. PLATFORM = none
  42. DEFINES = -DLIB_C_STUB
  43. PLATFORM_FLAGS =
  44. VDI_VPATH = vdi/nonos
  45. NONOS_RULE = options_nonos.lnt
  46. endif
  47. ifeq ("$(BUILD_CONFIGURATION)", "EmbeddedLinux")
  48. CROSS_CC_PREFIX = arm-none-linux-gnueabi-
  49. PLATFORM = armlinux
  50. endif
  51. ifeq ("$(BUILD_CONFIGURATION)", "EmbeddedRiscvLinux")
  52. CROSS_CC_PREFIX = riscv64-buildroot-linux-gnu-
  53. PLATFORM = riscvlinux
  54. endif
  55. CC = $(CROSS_CC_PREFIX)gcc
  56. CXX = $(CROSS_CC_PREFIX)g++
  57. LINKER=$(CC)
  58. AR = $(CROSS_CC_PREFIX)ar
  59. INCLUDES = -I./vpuapi -I./ffmpeg/include -I./sample_v2/helper -I./sample_v2/helper/misc -I./sample_v2/component -I./vdi
  60. INCLUDES += -I./sample_v2/component_decoder
  61. ifeq ($(USE_RTL_SIM), yes)
  62. DEFINES += -DCNM_SIM_PLATFORM -DCNM_SIM_DPI_INTERFACE -DSUPPORT_DECODER
  63. DEFINES += -D$(PRODUCT) -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
  64. else
  65. DEFINES += -D$(PRODUCT) -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
  66. endif # USE_SIM_PLATFORM
  67. CFLAGS += -g -I. -Wno-implicit-function-declaration -Wno-format -Wl,--fatal-warning $(INCLUDES) $(DEFINES) $(PLATFORM_FLAGS)
  68. ifeq ($(USE_RTL_SIM), yes)
  69. ifeq ($(IUS), 1)
  70. CFLAGS += -fPIC # ncverilog is 64bit version
  71. endif
  72. endif
  73. ARFLAGS += cru
  74. LDFLAGS = $(PLATFORM_FLAGS)
  75. ifeq ($(USE_FFMPEG), yes)
  76. CFLAGS += -DSUPPORT_FFMPEG_DEMUX
  77. LDLIBS += -lavformat -lavcodec -lavutil -lswresample
  78. LDFLAGS += -L./ffmpeg/lib/$(PLATFORM)
  79. ifneq ($(USE_32BIT), yes)
  80. #LDLIBS += -lz
  81. endif #USE_32BIT
  82. endif #USE_FFMPEG
  83. ifeq ($(USE_PTHREAD), yes)
  84. LDLIBS += -lpthread
  85. endif
  86. LDLIBS += -lm
  87. BUILDLIST=DECTEST
  88. MAKEFILE=WaveDecode.mak
  89. ifeq ($(USE_FFMPEG), yes)
  90. DECTEST=ffmpeg_dec_test
  91. else
  92. DECTEST=dec_test
  93. endif
  94. OBJDIR=obj
  95. ALLOBJS=*.o
  96. ALLDEPS=*.dep
  97. ALLLIBS=*.a
  98. RM=rm -f
  99. MKDIR=mkdir -p
  100. SOURCES_COMMON =main_helper.c vpuhelper.c bitstreamfeeder.c \
  101. bitstreamreader.c bsfeeder_fixedsize_impl.c bsfeeder_framesize_impl.c \
  102. bsfeeder_size_plus_es_impl.c bin_comparator_impl.c comparator.c \
  103. md5_comparator_impl.c yuv_comparator_impl.c \
  104. cfgParser.c decoder_listener.c \
  105. cnm_video_helper.c container.c \
  106. datastructure.c debug.c \
  107. bw_monitor.c pf_monitor.c \
  108. cnm_app.c cnm_task.c component.c \
  109. component_dec_decoder.c component_dec_feeder.c component_dec_renderer.c \
  110. product.c vpuapifunc.c vpuapi.c \
  111. coda9.c wave5.c \
  112. $(VDI_C) $(VDI_OSAL_C) $(MM_C)
  113. VPATH = sample_v2:
  114. VPATH += sample_v2/component_encoder:
  115. VPATH += sample_v2/component_decoder:
  116. VPATH += sample_v2/helper:
  117. VPATH += sample_v2/helper/bitstream:
  118. VPATH += sample_v2/helper/comparator:
  119. VPATH += sample_v2/helper/display:sample_v2/helper/misc:sample_v2/helper/yuv:sample_v2/component:
  120. VPATH += vdi:
  121. VPATH += $(VDI_VPATH):vpuapi:vpuapi/coda9:vpuapi/wave
  122. VPATH2=$(patsubst %,-I%,$(subst :, ,$(VPATH)))
  123. OBJECTNAMES_COMMON=$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES_COMMON)))
  124. OBJECTPATHS_COMMON=$(addprefix $(OBJDIR)/,$(notdir $(OBJECTNAMES_COMMON)))
  125. SOURCES_DECTEST = sample_v2/main_dec_test.c
  126. ifeq ($(USE_RTL_SIM), yes)
  127. SOURCES_DECTEST += sample/main_sim.c
  128. endif
  129. OBJECTNAMES_DECTEST=$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES_DECTEST)))
  130. OBJECTPATHS_DECTEST=$(addprefix $(OBJDIR)/,$(notdir $(OBJECTNAMES_DECTEST))) $(OBJECTPATHS_COMMON)
  131. all: $(BUILDLIST)
  132. ifeq ($(USE_RTL_SIM), yes)
  133. DECTEST: CREATE_DIR $(OBJECTPATHS_DECTEST)
  134. else
  135. DECTEST: CREATE_DIR $(OBJECTPATHS_DECTEST)
  136. $(LINKER) -o $(DECTEST) $(LDFLAGS) -Wl,-gc-section -Wl,--start-group $(OBJECTPATHS_DECTEST) $(LDLIBS) -Wl,--end-group
  137. endif
  138. -include $(OBJECTPATHS:.o=.dep)
  139. clean:
  140. $(RM) $(DECTEST)
  141. $(RM) $(OBJDIR)/$(ALLOBJS)
  142. $(RM) $(OBJDIR)/$(ALLDEPS)
  143. CREATE_DIR:
  144. -mkdir -p $(OBJDIR)
  145. obj/%.o: %.c $(MAKEFILE)
  146. $(CC) $(CFLAGS) -Wall -Werror -c $< -o $@ -MD -MF $(@:.o=.dep)
  147. lint:
  148. "$(LINT_HOME)/flint" -i"$(LINT_HOME)" $(DEFINES) $(INCLUDES) $(VPATH2) linux_std.lnt $(HAPS_RULE) $(NONOS_RULE) $(SOURCES_COMMON)