diff options
| author | Rusty Wagner <rusty@vector35.com> | 2020-07-10 23:36:26 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2020-07-17 18:31:55 -0400 |
| commit | 308caf1f5b3f8f02ebb44c0c43a838e0709200a1 (patch) | |
| tree | 2b04f6b809eedf88285eab69c662035ec6ce200d /CMakeLists.txt | |
| parent | b3d490e9e7f21a90922973a617a89a8620f5778b (diff) | |
Switch build system to cmake
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 87 |
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() |
