summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorXusheng <xusheng@vector35.com>2021-08-02 11:12:56 +0800
committerXusheng <xusheng@vector35.com>2021-08-02 11:13:41 +0800
commit369c74965b583e1c1e64e79c696c1311d24cf14c (patch)
tree366aa72f3a1fb8717e3040c46a23bdef551aaf5d /CMakeLists.txt
parent3ea20aa077fb3f0685b755a5e60654db6945538b (diff)
Allow the API to be built without Binary Ninja core/UI
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt73
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()