blob: 35ab617771cbbb8603aa5a4ad2456e10ed18b024 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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})
|