Building on debian testing fails with the following: | make[1]: Entering directory '/oupton/milkv/duo/duo-buildroot-sdk/middleware/v2/sample/venc' | [riscv64-unknown-linux-musl-gcc] sample_venc.o | [riscv64-unknown-linux-musl-gcc] sample_venc_lib.o | [riscv64-unknown-linux-musl-gcc] sample_venc_testcase.o | [riscv64-unknown-linux-musl-gcc] sample_vdec_lib.o | [riscv64-unknown-linux-musl-gcc] sample_vdec_testcase.o | /oupton/milkv/duo/duo-buildroot-sdk/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: /oupton/milkv/duo/duo-buildroot-sdk/middleware/v2/lib/libsys.a(cvi_vb.o): in function `CVI_VB_Init': | /root/.jenkins/workspace/v4.1.0_release_build/middleware/v2/modules/sys/src/cvi_vb.c:201: undefined reference to `__atomic_compare_exchange_1' | /oupton/milkv/duo/duo-buildroot-sdk/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: /oupton/milkv/duo/duo-buildroot-sdk/middleware/v2/lib/libsys.a(cvi_vb.o): in function `CVI_VB_Exit': | /root/.jenkins/workspace/v4.1.0_release_build/middleware/v2/modules/sys/src/cvi_vb.c:225: undefined reference to `__atomic_compare_exchange_1' | collect2: error: ld returned 1 exit status | make[1]: *** [Makefile:78: sample_venc] Error 1 | make[1]: Leaving directory '/oupton/milkv/duo/duo-buildroot-sdk/middleware/v2/sample/venc' | make: *** [Makefile:9: all] Error 1 | Error: Build board milkv-duo failed Fix it by ensuring -latomic is passed to the linker. Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
97 lines
3.1 KiB
Makefile
97 lines
3.1 KiB
Makefile
SHELL = /bin/bash
|
|
ifeq ($(PARAM_FILE), )
|
|
PARAM_FILE:=../../Makefile.param
|
|
include $(PARAM_FILE)
|
|
endif
|
|
include ../sample.mk
|
|
|
|
SDIR = $(PWD)
|
|
SRCS = $(wildcard $(SDIR)/src/*.c) $(wildcard $(SDIR)/../vdec/src/*.c)
|
|
VENC_SRCS = $(SDIR)/sample_venc.c
|
|
VCODEC_SRCS = $(SDIR)/sample_vcodec.c
|
|
VENC_INC=../../modules/venc
|
|
SAMPLE_VENC_INC=$(SDIR)/include
|
|
SAMPLE_VDEC_INC=$(SDIR)/../vdec/include
|
|
INCS = -I$(MW_INC) -I$(ISP_INC) -I$(COMM_INC) -I$(VENC_INC) -I$(KERNEL_INC) -I$(SAMPLE_VENC_INC) -I$(SAMPLE_VDEC_INC) -I../common -I$(SYS_INC)
|
|
|
|
OBJS = $(SRCS:.c=.o)
|
|
VENC_OBJS = $(VENC_SRCS:.c=.o)
|
|
VCODEC_OBJS = $(VCODEC_SRCS:.c=.o)
|
|
|
|
DEPS = $(SRCS:.c=.d)
|
|
VENC_DEPS = $(VENC_SRCS:.c=.d)
|
|
VCODEC_DEPS = $(VCODEC_SRCS:.c=.d)
|
|
|
|
TARGET_VENC = sample_venc
|
|
TARGET_VCODEC = sample_vcodec
|
|
ifeq ($(SDK_VER),32bit)
|
|
TARGET_VENC_WITH_ASAN = sample_venc_asan
|
|
TARGET_VCODEC_WITH_ASAN = sample_vcodec_asan
|
|
else ifeq ($(SDK_VER), 64bit)
|
|
TARGET_VENC_WITH_ASAN = sample_venc_asan
|
|
TARGET_VCODEC_WITH_ASAN = sample_vcodec_asan
|
|
else
|
|
TARGET_VENC_WITH_ASAN =
|
|
TARGET_VCODEC_WITH_ASAN =
|
|
endif
|
|
|
|
PKG_CONFIG_PATH = $(MW_PATH)/pkgconfig
|
|
REQUIRES = cvi_common cvi_sample cvi_vdec
|
|
MW_LIBS = $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs --define-variable=mw_dir=$(MW_PATH) $(REQUIRES))
|
|
|
|
LIBS = $(MW_LIBS)
|
|
ifeq ($(MULTI_PROCESS_SUPPORT), 1)
|
|
DEFS += -DRPC_MULTI_PROCESS
|
|
LIBS += -lnanomsg
|
|
endif
|
|
|
|
ifeq ($(CLI_DEBUG_SUPPORT), 1)
|
|
DEFS += -DCLI_DEBUG_SUPPORT
|
|
LIBS += -lcli
|
|
endif
|
|
|
|
EXTRA_CFLAGS = $(INCS) $(DEFS)
|
|
EXTRA_LDFLAGS = $(LIBS) -latomic -lini -lpthread
|
|
|
|
EXTRA_LDFLAGS_WITH_ASAN = -Wl,-Bdynamic $(LIBS) -lini -lpthread
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
EXTRA_LDFLAGS += -g -O0
|
|
EXTRA_LDFLAGS_WITH_ASAN += -g -O0
|
|
endif
|
|
|
|
EXTRA_LDFLAGS_WITH_ASAN += -fno-omit-frame-pointer -fsanitize-recover=address -lasan
|
|
|
|
.PHONY : clean all
|
|
|
|
all : $(TARGET_VENC) $(TARGET_VCODEC) $(TARGET_VENC_WITH_ASAN) $(TARGET_VCODEC_WITH_ASAN)
|
|
|
|
$(COMMON_DIR)/%.o: $(COMMON_DIR)/%.c
|
|
@$(CC) $(DEPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
|
|
@echo [$(notdir $(CC))] $(notdir $@)
|
|
|
|
$(SDIR)/%.o: $(SDIR)/%.c
|
|
@$(CC) $(DEPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
|
|
@echo [$(notdir $(CC))] $(notdir $@)
|
|
|
|
$(TARGET_VENC) : $(VENC_OBJS) $(OBJS) $(MW_LIB)/libvenc.a $(MW_LIB)/libvpu.a $(MW_LIB)/libsys.a
|
|
@$(CXX) -o $@ $(OBJS) $(VENC_OBJS) $(ELFFLAGS) $(EXTRA_LDFLAGS)
|
|
@echo -e $(BLUE)[LINK]$(END)[$(notdir $(CC))] $(notdir $@)
|
|
|
|
$(TARGET_VCODEC) : $(VCODEC_OBJS) $(OBJS) $(MW_LIB)/libvenc.a $(MW_LIB)/libvdec.a $(MW_LIB)/libvpu.a $(MW_LIB)/libsys.a
|
|
@$(CXX) -o $@ $(OBJS) $(VCODEC_OBJS) $(ELFFLAGS) $(EXTRA_LDFLAGS)
|
|
@echo -e $(BLUE)[LINK]$(END)[$(notdir $(CXX))] $(notdir $@)
|
|
|
|
$(TARGET_VENC_WITH_ASAN) : $(VENC_OBJS) $(OBJS)
|
|
@$(CXX) -o $@ $(OBJS) $(VENC_OBJS) $(ELFFLAGS) $(EXTRA_LDFLAGS_WITH_ASAN)
|
|
@echo -e $(BLUE)[LINK]$(END)[$(notdir $(CC))] $(notdir $@)
|
|
|
|
$(TARGET_VCODEC_WITH_ASAN) : $(VCODEC_OBJS) $(OBJS)
|
|
@$(CXX) -o $@ $(OBJS) $(VCODEC_OBJS) $(ELFFLAGS) $(EXTRA_LDFLAGS_WITH_ASAN)
|
|
@echo -e $(BLUE)[LINK]$(END)[$(notdir $(CXX))] $(notdir $@)
|
|
|
|
clean:
|
|
@rm -f $(OBJS) $(VENC_OBJS) $(VCODEC_OBJS) $(DEPS) $(VENC_DEPS) $(VCODEC_DEPS) $(COMM_DEPS) $(COMM_OBJ) $(TARGET_VENC) $(TARGET_VCODEC) $(TARGET_VENC_WITH_ASAN) $(TARGET_VCODEC_WITH_ASAN)
|
|
|
|
-include $(VENC_DEPS) $(VCODEC_DEPS) $(DEPS) $(COMM_DEPS)
|