From eef93b932844110cf19a4b2741b528623b77998e Mon Sep 17 00:00:00 2001 From: Josh Ferrell Date: Mon, 1 Sep 2025 17:47:08 -0400 Subject: Add option to build rust api without linking to core --- stubs/CMakeLists.txt | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 stubs/CMakeLists.txt (limited to 'stubs/CMakeLists.txt') 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}) -- cgit v1.3.1