diff options
| author | Glenn Smith <glenn@vector35.com> | 2022-02-01 16:34:18 -0500 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2022-02-02 19:22:08 -0500 |
| commit | b8af211f9a3647687c7e45c0fd04b0768df87ffe (patch) | |
| tree | 64f13fe262399189d70aadf33e1c6e33f0a74c3e /cmake/FindBinaryNinjaUI.cmake | |
| parent | 5f5785fd2b1cee6bc9a082e1209de00b1497d410 (diff) | |
Fancier CMake: find scripts, out-of-tree example builds
Diffstat (limited to 'cmake/FindBinaryNinjaUI.cmake')
| -rw-r--r-- | cmake/FindBinaryNinjaUI.cmake | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/cmake/FindBinaryNinjaUI.cmake b/cmake/FindBinaryNinjaUI.cmake new file mode 100644 index 00000000..608d2d87 --- /dev/null +++ b/cmake/FindBinaryNinjaUI.cmake @@ -0,0 +1,63 @@ +# Try to find Binary Ninja UI +# Once done this will define +# BinaryNinjaUI_FOUND - If Binary Ninja UI is found +# BinaryNinjaUI_INCLUDE_DIRS - The directories to include for compiling UI plugins +# BinaryNinjaUI_LIBRARIES - The libraries for linking UI plugins +# BinaryNinjaUI_LIBRARY_DIRS - The link paths required for ui plugins +# BinaryNinjaUI_DEFINITIONS - Compiler switches required for UI plugins + +cmake_minimum_required(VERSION 3.13 FATAL_ERROR) + +find_package(BinaryNinjaCore REQUIRED) + +find_library(UI_LIBRARY + NAMES binaryninjaui libbinaryninjaui.so.1 + HINTS ${BinaryNinjaCore_LIBRARY_DIRS}) + +# Use qmake to find the qt6 cmake libs, if we have it in PATH +find_program(QMAKE_COMMAND qmake) +if(QMAKE_COMMAND) + # qmake will tell us where the libs are! + execute_process( + COMMAND ${QMAKE_COMMAND} -query QT_INSTALL_LIBS + OUTPUT_VARIABLE QT_LIB_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE) + + # Qt cmake files are in QT_INSTALL_LIBS/cmake + set(QT_CMAKE_PATH "${QT_LIB_PATH}/cmake") + message(STATUS "Found Qt CMake path: ${QT_CMAKE_PATH}") + list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_PATH}) +endif() + +# Also find Qt6 which is required +find_package(Qt6 COMPONENTS Core Gui Widgets) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(BinaryNinjaUI + FOUND_VAR BinaryNinjaUI_FOUND + REQUIRED_VARS UI_LIBRARY Qt6_FOUND + FAIL_MESSAGE "Could NOT find Binary Ninja UI installation. Check that you are using a valid Binary Ninja, non-headless install, and qmake is in your PATH.") + +if(NOT Qt6_FOUND) + message(WARNING "Could not find Qt6! Make sure qmake is in your PATH.") +else() + message(STATUS "Found Binary Ninja UI: ${UI_LIBRARY}") +endif() + +# UI headers are added in the api cmake +set(BinaryNinjaUI_INCLUDE_DIRS "") + +set(BinaryNinjaUI_LIBRARIES "${UI_LIBRARY}") +list(APPEND BinaryNinjaUI_LIBRARIES Qt6::Core) +list(APPEND BinaryNinjaUI_LIBRARIES Qt6::Gui) +list(APPEND BinaryNinjaUI_LIBRARIES Qt6::Widgets) +set(BinaryNinjaUI_DEFINITIONS "") +set(BinaryNinjaUI_LIBRARY_DIRS "${BinaryNinjaCore_LIBRARY_DIRS}") + +# Compatibility +set(BN_UI_LIBRARY "${UI_LIBRARY}") +set(BN_UI_LIBRARY_DIRS "${BinaryNinjaUI_LIBRARY_DIRS}") +set(BN_UI_DEFINITIONS "${BinaryNinjaUI_DEFINITIONS}") + + + |
