diff options
| author | Xusheng <xusheng@vector35.com> | 2021-08-02 11:12:56 +0800 |
|---|---|---|
| committer | Xusheng <xusheng@vector35.com> | 2021-08-02 11:13:41 +0800 |
| commit | 369c74965b583e1c1e64e79c696c1311d24cf14c (patch) | |
| tree | 366aa72f3a1fb8717e3040c46a23bdef551aaf5d /CMakeLists.txt | |
| parent | 3ea20aa077fb3f0685b755a5e60654db6945538b (diff) | |
Allow the API to be built without Binary Ninja core/UI
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 73 |
1 files changed, 38 insertions, 35 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index dfc4797d..baf574f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,32 +43,6 @@ else() CACHE PATH "Binary Ninja user plugins directory") endif() -if((NOT BN_CORE_LIBRARY) AND (NOT BN_INTERNAL_BUILD)) - find_library(BN_CORE_LIBRARY - NAMES binaryninjacore libbinaryninjacore.so.1 - PATHS ${BN_INSTALL_BIN_DIR}) - - if(BN_CORE_LIBRARY) - message(STATUS "Binary Ninja Core: ${BN_CORE_LIBRARY}") - else() - message(FATAL_ERROR "Binary Ninja Core Not Found") - endif() -endif() - -if(NOT HEADLESS) - if((NOT BN_UI_LIBRARY) AND (NOT BN_INTERNAL_BUILD)) - find_library(BN_UI_LIBRARY - NAMES binaryninjaui libbinaryninjaui.so.1 - PATHS ${BN_INSTALL_BIN_DIR}) - - if(BN_UI_LIBRARY) - message(STATUS "Binary Ninja UI: ${BN_UI_LIBRARY}") - else() - message(FATAL_ERROR "Binary Ninja UI Not Found") - endif() - endif() -endif() - file(GLOB BN_API_SOURCES *.cpp *.h json/json.h json/json-forwards.h) if(NOT DEMO) list(APPEND BN_API_SOURCES json/jsoncpp.cpp) @@ -79,19 +53,48 @@ add_library(binaryninjaapi STATIC ${BN_API_SOURCES}) target_include_directories(binaryninjaapi PUBLIC ${PROJECT_SOURCE_DIR}) -if(NOT BN_INTERNAL_BUILD) - target_link_libraries(binaryninjaapi ${BN_CORE_LIBRARY}) -else() - target_link_libraries(binaryninjaapi binaryninjacore) -endif() +# We only need to find the core and UI when we also build the examples +if(BN_API_BUILD_EXAMPLES) + if((NOT BN_CORE_LIBRARY) AND (NOT BN_INTERNAL_BUILD)) + find_library(BN_CORE_LIBRARY + NAMES binaryninjacore libbinaryninjacore.so.1 + PATHS ${BN_INSTALL_BIN_DIR}) -if(NOT HEADLESS) - target_include_directories(binaryninjaapi PUBLIC ${PROJECT_SOURCE_DIR}/ui) + if(BN_CORE_LIBRARY) + message(STATUS "Binary Ninja Core: ${BN_CORE_LIBRARY}") + else() + message(FATAL_ERROR "Binary Ninja Core Not Found") + endif() + endif() + + if(NOT HEADLESS) + if((NOT BN_UI_LIBRARY) AND (NOT BN_INTERNAL_BUILD)) + find_library(BN_UI_LIBRARY + NAMES binaryninjaui libbinaryninjaui.so.1 + PATHS ${BN_INSTALL_BIN_DIR}) + + if(BN_UI_LIBRARY) + message(STATUS "Binary Ninja UI: ${BN_UI_LIBRARY}") + else() + message(FATAL_ERROR "Binary Ninja UI Not Found") + endif() + endif() + endif() if(NOT BN_INTERNAL_BUILD) - target_link_libraries(binaryninjaapi ${BN_UI_LIBRARY}) + target_link_libraries(binaryninjaapi ${BN_CORE_LIBRARY}) else() - target_link_libraries(binaryninjaapi) + target_link_libraries(binaryninjaapi binaryninjacore) + endif() + + if(NOT HEADLESS) + target_include_directories(binaryninjaapi PUBLIC ${PROJECT_SOURCE_DIR}/ui) + + if(NOT BN_INTERNAL_BUILD) + target_link_libraries(binaryninjaapi ${BN_UI_LIBRARY}) + else() + target_link_libraries(binaryninjaapi) + endif() endif() endif() |
