summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt87
1 files changed, 51 insertions, 36 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b42b9d01..b024a3a8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,8 +1,8 @@
-cmake_minimum_required(VERSION 3.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
-project(binaryninja-api)
+project(binaryninjaapi)
-option(BINJA_BUILD_EXAMPLES "Builds example plugins" OFF)
+option(BN_API_BUILD_EXAMPLES "Builds example plugins" OFF)
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
if (MSVC)
@@ -13,70 +13,85 @@ if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
endif()
if(WIN32)
- set(BINJA_DIR "C:\\Program Files\\Vector35\\BinaryNinja"
- CACHE PATH "Binary Ninja installation directory")
- set(BINJA_BIN_DIR "${BINJA_DIR}"
+ if(NOT BN_INSTALL_DIR)
+ set(BN_INSTALL_DIR "C:\\Program Files\\Vector35\\BinaryNinja"
+ CACHE PATH "Binary Ninja installation directory")
+ endif()
+ set(BN_INSTALL_BIN_DIR "${BN_INSTALL_DIR}"
CACHE PATH "Binary Ninja binary directory")
- set(BINJA_PLUGINS_DIR "$ENV{APPDATA}/Binary Ninja/plugins"
+ set(BN_USER_PLUGINS_DIR "$ENV{APPDATA}/Binary Ninja/plugins"
CACHE PATH "Binary Ninja user plugins directory")
elseif(APPLE)
- set(BINJA_DIR "/Applications/Binary Ninja.app"
- CACHE PATH "Binary Ninja installation directory")
- set(BINJA_BIN_DIR "${BINJA_DIR}/Contents/MacOS"
+ if(NOT BN_INSTALL_DIR)
+ set(BN_INSTALL_DIR "/Applications/Binary Ninja.app"
+ CACHE PATH "Binary Ninja installation directory")
+ endif()
+ set(BN_INSTALL_BIN_DIR "${BN_INSTALL_DIR}/Contents/MacOS"
CACHE PATH "Binary Ninja binary directory")
- set(BINJA_PLUGINS_DIR "$ENV{HOME}/Library/Application Support/Binary Ninja/plugins"
+ set(BN_USER_PLUGINS_DIR "$ENV{HOME}/Library/Application Support/Binary Ninja/plugins"
CACHE PATH "Binary Ninja user plugins directory")
else()
- set(BINJA_DIR "$ENV{HOME}/binaryninja"
- CACHE PATH "Binary Ninja installation directory")
- set(BINJA_BIN_DIR "${BINJA_DIR}"
+ if(NOT BN_INSTALL_DIR)
+ set(BN_INSTALL_DIR "$ENV{HOME}/binaryninja"
+ CACHE PATH "Binary Ninja installation directory")
+ endif()
+ set(BN_INSTALL_BIN_DIR "${BN_INSTALL_DIR}"
CACHE PATH "Binary Ninja binary directory")
- set(BINJA_PLUGINS_DIR "$ENV{HOME}/.binaryninja/plugins"
+ set(BN_USER_PLUGINS_DIR "$ENV{HOME}/.binaryninja/plugins"
CACHE PATH "Binary Ninja user plugins directory")
endif()
-if(NOT BINJA_CORE_LIBRARY)
- find_library(BINJA_CORE_LIBRARY
+if((NOT BN_CORE_LIBRARY) AND (NOT BN_INTERNAL_BUILD))
+ find_library(BN_CORE_LIBRARY
NAMES binaryninjacore libbinaryninjacore.so.1
- PATHS ${BINJA_BIN_DIR})
+ PATHS ${BN_INSTALL_BIN_DIR})
- if(BINJA_CORE_LIBRARY)
- message(STATUS "Binary Ninja Core: ${BINJA_CORE_LIBRARY}")
+ if(BN_CORE_LIBRARY)
+ message(STATUS "Binary Ninja Core: ${BN_CORE_LIBRARY}")
else()
message(FATAL_ERROR "Binary Ninja Core Not Found")
endif()
endif()
-file(GLOB BINJA_SOURCES *.cpp *.h json/json.h json/jsoncpp.cpp json/json-forwards.h)
+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)
+endif()
-add_library(binaryninjaapi STATIC ${BINJA_SOURCES})
+add_library(binaryninjaapi STATIC ${BN_API_SOURCES})
target_include_directories(binaryninjaapi
PUBLIC ${PROJECT_SOURCE_DIR})
-target_link_libraries(binaryninjaapi
- ${BINJA_CORE_LIBRARY})
+if(NOT BN_INTERNAL_BUILD)
+ target_link_libraries(binaryninjaapi ${BN_CORE_LIBRARY})
+else()
+ target_link_libraries(binaryninjaapi binaryninjacore)
+endif()
set_target_properties(binaryninjaapi PROPERTIES
- CXX_STANDARD 11
+ CXX_STANDARD 17
CXX_VISIBILITY_PRESET hidden
+ CXX_STANDARD_REQUIRED ON
VISIBILITY_INLINES_HIDDEN ON
POSITION_INDEPENDENT_CODE ON
- ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
+ ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/out)
-function(binja_install_plugin target)
- if(WIN32)
- install(TARGETS ${target} RUNTIME
- DESTINATION ${BINJA_PLUGINS_DIR})
+function(bn_install_plugin target)
+ if(NOT BN_INTERNAL_BUILD)
+ if(WIN32)
+ install(TARGETS ${target} RUNTIME
+ DESTINATION ${BN_USER_PLUGINS_DIR})
- install(FILES $<TARGET_PDB_FILE:${target}>
- DESTINATION ${BINJA_PLUGINS_DIR} OPTIONAL)
- else()
- install(TARGETS ${target} LIBRARY
- DESTINATION ${BINJA_PLUGINS_DIR})
+ install(FILES $<TARGET_PDB_FILE:${target}>
+ DESTINATION ${BN_USER_PLUGINS_DIR} OPTIONAL)
+ else()
+ install(TARGETS ${target} LIBRARY
+ DESTINATION ${BN_USER_PLUGINS_DIR})
+ endif()
endif()
endfunction()
-if(BINJA_BUILD_EXAMPLES)
+if(BN_API_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()