@@ -39,33 +39,22 @@ if(BinaryNinjaCore_FOUND)
3939 target_link_directories (binaryninjaapi PUBLIC ${BinaryNinjaCore_LIBRARY_DIRS} )
4040 target_compile_definitions (binaryninjaapi PUBLIC ${BinaryNinjaCore_DEFINITIONS} )
4141else ()
42+ add_subdirectory (stubs EXCLUDE_FROM_ALL )
43+
44+ # Be sure to only link against the stubs archive file
45+ add_dependencies (binaryninjaapi binaryninjacore_stubs )
46+
4247 if (APPLE )
43- target_link_options (binaryninjaapi PUBLIC -undefined dynamic_lookup )
48+ target_link_libraries (binaryninjaapi PUBLIC "$< TARGET_PROPERTY : binaryninjacore_stubs , ARCHIVE_OUTPUT_DIRECTORY >/$< TARGET_PROPERTY : binaryninjacore_stubs , OUTPUT_NAME >.dylib" )
4449 elseif (MSVC )
45- # Generate stubs.cpp with implementations of all the BNAPI functions
46- execute_process (COMMAND python ${PROJECT_SOURCE_DIR } /cmake/generate_stubs.py ${PROJECT_SOURCE_DIR } /binaryninjacore.h ${PROJECT_BINARY_DIR } /stubs )
47-
48- # Compile those stubs into a stub library we can use to fool the linker
49- add_library (binaryninjacore SHARED ${PROJECT_BINARY_DIR } /stubs/stubs.cpp )
50- set_target_properties (binaryninjacore
51- PROPERTIES OUTPUT_NAME binaryninjacore
52- SOVERSION 1
53- ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR } /stubs
54- LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR } /stubs
55- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR } /stubs
56- )
57- target_include_directories (binaryninjacore PUBLIC ${PROJECT_SOURCE_DIR } )
58-
59- # Be sure to only link against the stubs archive file
60- add_dependencies (binaryninjaapi binaryninjacore )
6150 if (${CMAKE_GENERATOR } MATCHES "^Visual Studio" )
6251 # Visual Studio's generator adds the config to the file path
63- target_link_libraries (binaryninjaapi PUBLIC "$<TARGET_PROPERTY :binaryninjacore ,ARCHIVE_OUTPUT_DIRECTORY >/$<CONFIG >/$<TARGET_PROPERTY :binaryninjacore ,OUTPUT_NAME >.lib" )
52+ target_link_libraries (binaryninjaapi PUBLIC "$<TARGET_PROPERTY :binaryninjacore_stubs ,ARCHIVE_OUTPUT_DIRECTORY >/$<CONFIG >/$<TARGET_PROPERTY :binaryninjacore_stubs ,OUTPUT_NAME >.lib" )
6453 else ()
65- target_link_libraries (binaryninjaapi PUBLIC "$<TARGET_PROPERTY :binaryninjacore ,ARCHIVE_OUTPUT_DIRECTORY >/$<TARGET_PROPERTY :binaryninjacore ,OUTPUT_NAME >.lib" )
54+ target_link_libraries (binaryninjaapi PUBLIC "$<TARGET_PROPERTY :binaryninjacore_stubs ,ARCHIVE_OUTPUT_DIRECTORY >/$<TARGET_PROPERTY :binaryninjacore_stubs ,OUTPUT_NAME >.lib" )
6655 endif ()
6756 else ()
68- target_link_options (binaryninjaapi PUBLIC "LINKER:--allow-shlib-undefined " )
57+ target_link_libraries (binaryninjaapi PUBLIC "$< TARGET_PROPERTY : binaryninjacore_stubs , ARCHIVE_OUTPUT_DIRECTORY >/$< TARGET_PROPERTY : binaryninjacore_stubs , OUTPUT_NAME >.so.1 " )
6958 endif ()
7059endif ()
7160
0 commit comments