summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--tracker-aruco/CMakeLists.txt20
-rw-r--r--tracker-aruco/compile-test/abi.cpp11
2 files changed, 29 insertions, 2 deletions
diff --git a/tracker-aruco/CMakeLists.txt b/tracker-aruco/CMakeLists.txt
index b9f62a07..84dc7fba 100644
--- a/tracker-aruco/CMakeLists.txt
+++ b/tracker-aruco/CMakeLists.txt
@@ -2,9 +2,25 @@ find_package(OpenCV QUIET)
if(OpenCV_FOUND)
set(SDK_ARUCO_LIBPATH "" CACHE FILEPATH "Aruco paper marker tracker static library path")
if(SDK_ARUCO_LIBPATH)
+ set(modules "${SDK_ARUCO_LIBPATH}" opencv_core opencv_calib3d opencv_imgproc opencv_videoio)
+
+ file(TIMESTAMP "${SDK_ARUCO_LIBPATH}" tm "%s" UTC)
+ set(cache-str "${tm}|${SDK_ARUCO_LIBPATH}")
+
+ if(NOT aruco_has-working-abi STREQUAL "${cache-str}")
+ try_compile(result "${CMAKE_CURRENT_BINARY_DIR}"
+ SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/compile-test/abi.cpp"
+ OUTPUT_VARIABLE krap
+ LINK_LIBRARIES ${modules})
+ if(NOT result)
+ message(FATAL_ERROR "${krap}\n" "Must use Aruco fork from <https://github.com/opentrack/aruco>")
+ endif()
+
+ set(aruco_has-working-abi "${cache-str}" CACHE INTERNAL "" FORCE)
+ endif()
+
otr_module(tracker-aruco)
- set(modules opencv_core opencv_calib3d opencv_imgproc opencv_videoio)
- target_link_libraries(opentrack-tracker-aruco opentrack-cv ${SDK_ARUCO_LIBPATH} ${modules})
+ target_link_libraries(opentrack-tracker-aruco opentrack-cv ${modules})
target_include_directories(opentrack-tracker-aruco SYSTEM PUBLIC ${OpenCV_INCLUDE_DIRS})
endif()
endif()
diff --git a/tracker-aruco/compile-test/abi.cpp b/tracker-aruco/compile-test/abi.cpp
new file mode 100644
index 00000000..633188de
--- /dev/null
+++ b/tracker-aruco/compile-test/abi.cpp
@@ -0,0 +1,11 @@
+#include "../../compat/linkage-macros.hpp"
+
+#define ARUCO_ABI aruco_opentrack_fork_abi_1
+
+extern "C" void ARUCO_ABI(void);
+
+int main(void)
+{
+ ARUCO_ABI();
+ return 0;
+}