@@ -6,12 +6,18 @@ set(CMAKE_CXX_STANDARD 14)
66set (CMAKE_CXX_STANDARD_REQUIRED ON )
77set (CMAKE_CXX_FLAGS "-pthread" )
88
9- if (ENABLE_ASAN)
10- message (STATUS "BUILD WITH ADDRESS SANITIZER" )
11- set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined" )
12- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined" )
13- set (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined" )
14- endif ()
9+ if (ENABLE_ASAN)
10+ message (STATUS "BUILD WITH ADDRESS SANITIZER" )
11+ set (CMAKE_C_FLAGS_DEBUG
12+ "${CMAKE_C_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined"
13+ )
14+ set (CMAKE_CXX_FLAGS_DEBUG
15+ "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined"
16+ )
17+ set (CMAKE_LINKER_FLAGS_DEBUG
18+ "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined"
19+ )
20+ endif ()
1521
1622set (BUILD_SHARED_LIBS ON )
1723
@@ -23,7 +29,9 @@ if(JNI_FOUND)
2329endif ()
2430
2531# skip 3rd-party lib dependencies
26- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-shlib-undefined" )
32+ set (CMAKE_EXE_LINKER_FLAGS
33+ "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-shlib-undefined"
34+ )
2735
2836# rknn api
2937set (RKNN_RT_LIB ${CMAKE_SOURCE_DIR} /src/main/native/lib/librknnrt.so)
@@ -33,7 +41,6 @@ set(LIB_ARCH aarch64)
3341set (RGA_PATH ${CMAKE_SOURCE_DIR} /src/main/native/lib/3rdparty/rga/RK3588)
3442set (RGA_LIB ${RGA_PATH} /lib/Linux/${LIB_ARCH} /librga.so)
3543
36-
3744set (OPENCV_YEAR "frc2025" )
3845set (OPENCV_VERSION "4.10.0-3" )
3946# also valid: windowsx86-64
@@ -43,64 +50,63 @@ set(OPENCV_TYPE "")
4350
4451# Download opencv, and save the path
4552include (FetchContent)
46- FetchContent_Declare (
53+ fetchcontent_declare (
4754 opencv_lib
48- URL https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/thirdparty/${OPENCV_YEAR} /opencv/opencv-cpp/${OPENCV_VERSION} /opencv-cpp-${OPENCV_VERSION} -${OPENCV_ARCH}${OPENCV_TYPE} .zip
55+ URL
56+ https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/thirdparty/${OPENCV_YEAR} /opencv/opencv-cpp/${OPENCV_VERSION} /opencv-cpp-${OPENCV_VERSION} -${OPENCV_ARCH}${OPENCV_TYPE} .zip
4957)
50- FetchContent_MakeAvailable (opencv_lib)
58+ fetchcontent_makeavailable (opencv_lib)
5159
5260# download OpenCV headers
53- FetchContent_Declare (
61+ fetchcontent_declare (
5462 opencv_header
55- URL https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/thirdparty/${OPENCV_YEAR} /opencv/opencv-cpp/${OPENCV_VERSION} /opencv-cpp-${OPENCV_VERSION} -headers.zip
63+ URL
64+ https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/thirdparty/${OPENCV_YEAR} /opencv/opencv-cpp/${OPENCV_VERSION} /opencv-cpp-${OPENCV_VERSION} -headers.zip
5665)
57- FetchContent_MakeAvailable (opencv_header)
66+ fetchcontent_makeavailable (opencv_header)
5867
5968# This probably doesn't work great with shared libraries, but I don't care about those right now
60- file (GLOB_RECURSE OPENCV_LIB_PATH
61- "${opencv_lib_SOURCE_DIR} /**/*.lib"
62- "${opencv_lib_SOURCE_DIR} /**/*.so*"
69+ file (
70+ GLOB_RECURSE OPENCV_LIB_PATH
71+ "${opencv_lib_SOURCE_DIR} /**/*.lib"
72+ "${opencv_lib_SOURCE_DIR} /**/*.so*"
6373)
64- SET (OPENCV_INCLUDE_PATH ${opencv_header_SOURCE_DIR} )
74+ set (OPENCV_INCLUDE_PATH ${opencv_header_SOURCE_DIR} )
6575message ("Depending on opencv ${OPENCV_LIB_PATH} " )
6676
67-
6877set (CMAKE_INSTALL_RPATH "lib" )
6978
7079set (THREADS_PREFER_PTHREAD_FLAG ON )
7180find_package (Threads REQUIRED)
7281
73- add_library (${PROJECT_NAME}
82+ add_library (
83+ ${PROJECT_NAME}
7484 src/main/native/cpp/rknn_jni.cpp
7585 src/main/native/cpp/yolo_common.cpp
7686 src/main/native/cpp/preprocess.cc
7787 src/main/native/cpp/postprocess_v5.cc
7888 src/main/native/cpp/postprocess_v8_11.cc
7989)
8090
81-
82- target_link_libraries (${PROJECT_NAME} PUBLIC
83- Threads::Threads
84- ${RKNN_RT_LIB}
85- ${OPENCV_LIB_PATH}
86- ${RGA_LIB}
87- )
88-
89- target_include_directories (${PROJECT_NAME} PRIVATE
90- ${CMAKE_CURRENT_SOURCE_DIR}
91- ${LIBRKNNRT_INCLUDES}
92- ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include
93- ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include /model_zoo
94- ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include /3rdparty/rga/RK3588/include
95- ${JNI_INCLUDE_DIRS}
96- ${OPENCV_INCLUDE_PATH}
91+ target_link_libraries (
92+ ${PROJECT_NAME}
93+ PUBLIC Threads::Threads ${RKNN_RT_LIB} ${OPENCV_LIB_PATH} ${RGA_LIB}
9794)
9895
99- set_target_properties (${PROJECT_NAME}
100- PROPERTIES
101- INSTALL_RPATH "\\\$ ORIGIN/"
96+ target_include_directories (
97+ ${PROJECT_NAME}
98+ PRIVATE
99+ ${CMAKE_CURRENT_SOURCE_DIR}
100+ ${LIBRKNNRT_INCLUDES}
101+ ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include
102+ ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include /model_zoo
103+ ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include /3rdparty/rga/RK3588/include
104+ ${JNI_INCLUDE_DIRS}
105+ ${OPENCV_INCLUDE_PATH}
102106)
103107
108+ set_target_properties (${PROJECT_NAME} PROPERTIES INSTALL_RPATH "\\\$ ORIGIN/" )
109+
104110include (GNUInstallDirs)
105111install (TARGETS ${PROJECT_NAME} )
106112install (FILES ${RKNN_RT_LIB} ${RGA_LIB} TYPE LIB)
@@ -109,8 +115,10 @@ message("RGA is ${RGA_LIB}")
109115
110116add_executable (main_test src/main/native/cpp/main_test.cc)
111117target_link_libraries (main_test ${PROJECT_NAME} ${RGA_LIB} )
112- target_include_directories (main_test PRIVATE
113- ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include
114- ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include /model_zoo
115- ${OPENCV_INCLUDE_PATH}
118+ target_include_directories (
119+ main_test
120+ PRIVATE
121+ ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include
122+ ${CMAKE_CURRENT_SOURCE_DIR} /src/main/native/include /model_zoo
123+ ${OPENCV_INCLUDE_PATH}
116124)
0 commit comments