Makefile 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. # ----------------------------------------------------------------------
  2. #
  3. # Project: C&M Video decoder sample
  4. #
  5. # ----------------------------------------------------------------------
  6. .PHONY: CREATE_DIR
  7. USE_PTHREAD = yes
  8. USE_RTL_SIM = no
  9. BUILD_CONFIGURATION = EmbeddedLinux
  10. MAKECMDGOALS ?=
  11. ifeq ($(RTL_SIM), 1)
  12. USE_RTL_SIM = yes
  13. endif
  14. PLATFORM = nativelinux_64bit
  15. CROSS_CC_PREFIX =
  16. JDI_C = jdi/linux/jdi.c
  17. MM_C =
  18. PLATFORM_FLAGS =
  19. VPATH = jdi/linux:
  20. USE_FFMPEG = yes
  21. USE_ALLOCATOR = no
  22. INCLUDES = -I./jpuapi -I./include -I./jdi -I./sample -I./sample/helper
  23. ifeq ("$(BUILD_CONFIGURATION)", "NonOS")
  24. CROSS_CC_PREFIX = arm-none-eabi-
  25. JDI_C = jdi/nonos/jdi.c
  26. USE_FFMPEG = no
  27. USE_PTHREAD = no
  28. PLATFORM = none
  29. DEFINES = -DLIB_C_STUB
  30. PLATFORM_FLAGS =
  31. VPATH = jdi/nonos:
  32. USE_FFMPEG = no
  33. USE_ALLOCATOR = yes
  34. endif
  35. ifeq ("$(BUILD_CONFIGURATION)", "EmbeddedLinux")
  36. CROSS_CC_PREFIX = riscv64-buildroot-linux-gnu-
  37. PLATFORM = riscvlinux
  38. USE_FFMPEG ?= yes
  39. endif
  40. CC = $(CROSS_CC_PREFIX)gcc
  41. CXX = $(CROSS_CC_PREFIX)g++
  42. AR = $(CROSS_CC_PREFIX)ar
  43. ifeq ($(USE_FFMPEG), yes)
  44. DEFINES += -DSUPPORT_FFMPEG
  45. INCLUDES += -I./ffmpeg/include
  46. LDLIBS += -lavformat -lavcodec -lavutil -lz
  47. LDFLAGS += -L./ffmpeg/$(PLATFORM)
  48. LDFLAGS += -L./ffmpeg/lib
  49. endif
  50. ifeq ($(USE_RTL_SIM), yes)
  51. DEFINES += -DCNM_SIM_PLATFORM -DCNM_SIM_DPI_INTERFACE
  52. else
  53. endif
  54. CFLAGS += -g -I. -Wno-implicit-function-declaration -Wno-int-to-pointer-cast -Wno-format -Wl,--fatal-warning $(INCLUDES) $(DEFINES) $(PLATFORM_FLAGS) -Wall -Werror
  55. ifeq ($(MAKECMDGOALS), multi)
  56. CFLAGS += -DSUPPORT_MULTI_INSTANCE_TEST
  57. endif
  58. ifeq ($(USE_RTL_SIM), yes)
  59. ifeq ($(IUS), 1)
  60. #CFLAGS += -m32 # ncverilog is 32bit version
  61. CFLAGS += -fPIC # ncverilog is 64bit version
  62. endif
  63. USE_ALLOCATOR = yes
  64. endif
  65. ARFLAGS += cru
  66. ifeq ($(USE_PTHREAD), yes)
  67. LDLIBS += -lpthread
  68. endif
  69. LDLIBS += -lm -lrt
  70. OBJDIR=obj
  71. ALLOBJS=*.o
  72. ALLDEPS=*.dep
  73. ALLLIBS=*.a
  74. RM=rm -f
  75. MKDIR=mkdir -p
  76. ENC_SOURCES = $(JDI_C) jpuapi.c jpuapifunc.c jpuhelper.c jpulog.c cnm_fpga.c main_jpg_enc_test.c \
  77. yuv_feeder.c platform.c datastructure.c bitstreamwriter.c
  78. DEC_SOURCES = $(JDI_C) jpuapi.c jpuapifunc.c jpuhelper.c jpulog.c cnm_fpga.c main_jpg_dec_test.c \
  79. platform.c datastructure.c bitstreamfeeder.c bsfeeder_fixedsize_impl.c
  80. MUL_SOURCES = $(JDI_C) jpuapi.c jpuapifunc.c jpuhelper.c jpulog.c cnm_fpga.c main_multi_instance_test.c \
  81. platform.c datastructure.c yuv_feeder.c
  82. MUL_SOURCES += bitstreamfeeder.c bsfeeder_fixedsize_impl.c main_jpg_dec_test.c
  83. MUL_SOURCES += bitstreamwriter.c main_jpg_enc_test.c
  84. ifeq ($(USE_RTL_SIM), yes)
  85. ENC_SOURCES += main_sim.c
  86. DEC_SOURCES += main_sim.c
  87. MUL_SOURCES += main_sim.c
  88. endif
  89. ifeq ($(USE_ALLOCATOR), yes)
  90. ENC_SOURCES += mm.c
  91. DEC_SOURCES += mm.c
  92. MUL_SOURCES += mm.c
  93. endif
  94. ifeq ($(USE_FFMPEG), yes)
  95. ENC_SOURCES += bswriter_container_impl.c
  96. DEC_SOURCES += bsfeeder_framesize_impl.c
  97. MUL_SOURCES += bsfeeder_framesize_impl.c
  98. MUL_SOURCES += bswriter_container_impl.c
  99. endif
  100. VPATH += jdi:
  101. VPATH += jdi/nonos:
  102. VPATH += jpuapi:
  103. VPATH += sample:sample/helper:
  104. DEC_OBJECTNAMES=$(patsubst %.c,%.o,$(DEC_SOURCES))
  105. DEC_OBJECTPATHS=$(addprefix $(OBJDIR)/,$(notdir $(DEC_OBJECTNAMES)))
  106. ENC_OBJECTNAMES=$(patsubst %.c,%.o,$(ENC_SOURCES))
  107. ENC_OBJECTPATHS=$(addprefix $(OBJDIR)/,$(notdir $(ENC_OBJECTNAMES)))
  108. MUL_OBJECTNAMES=$(patsubst %.c,%.o,$(MUL_SOURCES))
  109. MUL_OBJECTPATHS=$(addprefix $(OBJDIR)/,$(notdir $(MUL_OBJECTNAMES)))
  110. ifeq ($(MAKECMDGOALS), multi)
  111. TARGET = multi
  112. else
  113. TARGET = decoder
  114. TARGET += encoder
  115. endif
  116. all: $(TARGET)
  117. encoder: CREATE_DIR $(ENC_OBJECTPATHS)
  118. ifeq ($(USE_RTL_SIM), yes)
  119. # do not need to make excutable
  120. else
  121. $(CC) -o jpg_enc_test $(LDFLAGS) -Wl,-gc-section -Wl,--start-group $(ENC_OBJECTPATHS) $(LDLIBS) -Wl,--end-group
  122. endif
  123. decoder: CREATE_DIR $(DEC_OBJECTPATHS)
  124. ifeq ($(USE_RTL_SIM), yes)
  125. # do not need to make excutable
  126. else
  127. $(CC) -o jpg_dec_test $(LDFLAGS) -Wl,-gc-section -Wl,--start-group $(DEC_OBJECTPATHS) $(LDLIBS) -Wl,--end-group
  128. endif
  129. multi: CREATE_DIR $(MUL_OBJECTPATHS)
  130. ifeq ($(USE_RTL_SIM), yes)
  131. # do not need to make excutable
  132. else
  133. $(CC) -o multi_instance_test $(LDFLAGS) -Wl,-gc-section -Wl,--start-group $(MUL_OBJECTPATHS) $(LDLIBS) -Wl,--end-group
  134. endif
  135. -include $(OBJECTPATHS:.o=.dep)
  136. clean:
  137. $(RM) $(TARGET) jpg_enc_test jpg_dec_test multi_instance_test
  138. $(RM) $(OBJDIR)/$(ALLOBJS)
  139. $(RM) $(OBJDIR)/$(ALLDEPS)
  140. CREATE_DIR:
  141. -mkdir -p $(OBJDIR)
  142. obj/%.o: %.c Makefile
  143. $(CC) $(CFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)