diff options
| author | Josh Ferrell <josh@vector35.com> | 2025-09-01 17:47:08 -0400 |
|---|---|---|
| committer | Josh Ferrell <josh@vector35.com> | 2025-09-01 17:47:08 -0400 |
| commit | eef93b932844110cf19a4b2741b528623b77998e (patch) | |
| tree | b8c89a56e603dc837d3fe48a33aa619baf2e7d4a /stubs/CMakeLists.txt | |
| parent | 42fd7435e2713181facfc6d4f54b42bdaa1d2825 (diff) | |
Add option to build rust api without linking to core
Diffstat (limited to 'stubs/CMakeLists.txt')
| -rw-r--r-- | stubs/CMakeLists.txt | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/stubs/CMakeLists.txt b/stubs/CMakeLists.txt new file mode 100644 index 00000000..35ab6177 --- /dev/null +++ b/stubs/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.19 FATAL_ERROR) +project(binaryninjacore_stubs) + +if(WIN32) + set(PYTHON_COMMAND "py -3") +else() + set(PYTHON_COMMAND "python3") +endif() + +file(REAL_PATH "${PROJECT_SOURCE_DIR}/../" ABSOLUTE_API_PATH) + +# Generate stubs.cpp with implementations of all the BNAPI functions +add_custom_command( + OUTPUT ${PROJECT_BINARY_DIR}/stubs.cpp + COMMAND ${PYTHON_COMMAND} ${PROJECT_SOURCE_DIR}/generate_stubs.py ${ABSOLUTE_API_PATH}/binaryninjacore.h ${PROJECT_BINARY_DIR} + DEPENDS ${PROJECT_SOURCE_DIR}/generate_stubs.py ${ABSOLUTE_API_PATH}/binaryninjacore.h + COMMENT "Generating stubs.cpp from binaryninjacore.h" +) + +# Compile those stubs into a stub library we can use to fool the linker +add_library(binaryninjacore_stubs SHARED ${PROJECT_BINARY_DIR}/stubs.cpp) + +set_target_properties(binaryninjacore_stubs + PROPERTIES OUTPUT_NAME binaryninjacore + SOVERSION 1 + CXX_STANDARD 20 + CXX_VISIBILITY_PRESET hidden + CXX_STANDARD_REQUIRED ON + VISIBILITY_INLINES_HIDDEN ON + POSITION_INDEPENDENT_CODE ON + ARCHIVE_OUTPUT_DIRECTORY $<1:${PROJECT_BINARY_DIR}> +) + +target_include_directories(binaryninjacore_stubs PUBLIC ${ABSOLUTE_API_PATH}) + +install(TARGETS binaryninjacore_stubs LIBRARY DESTINATION ${PROJECT_BINARY_DIR}) |
