mirror of
https://github.com/rizinorg/cutter.git
synced 2024-12-24 13:55:26 +00:00
118 lines
3.3 KiB
CMake
118 lines
3.3 KiB
CMake
# - Find Rizin (librz)
|
|
#
|
|
# This module provides the following imported targets, if found:
|
|
#
|
|
# Rizin::librz
|
|
#
|
|
# This will define the following variables:
|
|
# (but don't use them if you don't know what you are doing, use Rizin::librz)
|
|
#
|
|
# Rizin_FOUND - True if librz has been found.
|
|
# Rizin_INCLUDE_DIRS - librz include directory
|
|
# Rizin_LIBRARIES - List of libraries when using librz.
|
|
# Rizin_LIBRARY_DIRS - librz library directories
|
|
#
|
|
# If librz was found using find_library and not pkg-config, the following variables will also be set:
|
|
# Rizin_LIBRARY_<name> - Path to library rz_<name>
|
|
|
|
if(WIN32)
|
|
find_path(Rizin_INCLUDE_DIRS
|
|
NAMES rz_core.h rz_bin.h rz_util.h
|
|
HINTS
|
|
"$ENV{HOME}/bin/prefix/rizin/include/librz"
|
|
/usr/local/include/libr
|
|
/usr/include/librz)
|
|
find_path(SDB_INCLUDE_DIR
|
|
NAMES sdb.h sdbht.h sdb_version.h
|
|
HINTS
|
|
"$ENV{HOME}/bin/prefix/rizin/include/librz/sdb"
|
|
/usr/local/include/librz/sdb
|
|
/usr/include/librz/sdb)
|
|
|
|
list(APPEND Rizin_INCLUDE_DIRS ${SDB_INCLUDE_DIR})
|
|
|
|
set(Rizin_LIBRARY_NAMES
|
|
core
|
|
config
|
|
cons
|
|
io
|
|
util
|
|
flag
|
|
asm
|
|
debug
|
|
hash
|
|
bin
|
|
lang
|
|
io
|
|
analysis
|
|
parse
|
|
bp
|
|
egg
|
|
reg
|
|
search
|
|
syscall
|
|
socket
|
|
magic
|
|
crypto
|
|
type)
|
|
|
|
set(Rizin_LIBRARIES "")
|
|
set(Rizin_LIBRARIES_VARS "")
|
|
foreach(libname ${Rizin_LIBRARY_NAMES})
|
|
find_library(Rizin_LIBRARY_${libname}
|
|
rz_${libname}
|
|
HINTS
|
|
"$ENV{HOME}/bin/prefix/rizin/lib"
|
|
/usr/local/lib
|
|
/usr/lib)
|
|
|
|
list(APPEND Rizin_LIBRARIES ${Rizin_LIBRARY_${libname}})
|
|
list(APPEND Rizin_LIBRARIES_VARS "Rizin_LIBRARY_${libname}")
|
|
endforeach()
|
|
|
|
set(Rizin_LIBRARY_DIRS "")
|
|
|
|
add_library(Rizin::librz UNKNOWN IMPORTED)
|
|
set_target_properties(Rizin::librz PROPERTIES
|
|
IMPORTED_LOCATION "${Rizin_LIBRARY_core}"
|
|
IMPORTED_LINK_INTERFACE_LIBRARIES "${Rizin_LIBRARIES}"
|
|
INTERFACE_LINK_DIRECTORIES "${Rizin_LIBRARY_DIRS}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${Rizin_INCLUDE_DIRS}")
|
|
set(Rizin_TARGET Rizin::librz)
|
|
else()
|
|
# support installation locations used by rizin scripts like sys/user.sh and sys/install.sh
|
|
if(CUTTER_USE_ADDITIONAL_RIZIN_PATHS)
|
|
set(Rizin_CMAKE_PREFIX_PATH_TEMP ${CMAKE_PREFIX_PATH})
|
|
list(APPEND CMAKE_PREFIX_PATH "$ENV{HOME}/bin/prefix/rizin") # sys/user.sh
|
|
list(APPEND CMAKE_PREFIX_PATH "/usr/local") # sys/install.sh
|
|
endif()
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
if(CMAKE_VERSION VERSION_LESS "3.6")
|
|
pkg_search_module(Rizin REQUIRED rz_core)
|
|
else()
|
|
pkg_search_module(Rizin IMPORTED_TARGET REQUIRED rz_core)
|
|
endif()
|
|
|
|
# reset CMAKE_PREFIX_PATH
|
|
if(CUTTER_USE_ADDITIONAL_RIZIN_PATHS)
|
|
set(CMAKE_PREFIX_PATH ${Rizin_CMAKE_PREFIX_PATH_TEMP})
|
|
endif()
|
|
|
|
if((TARGET PkgConfig::Rizin) AND (NOT CMAKE_VERSION VERSION_LESS "3.11.0"))
|
|
set_target_properties(PkgConfig::Rizin PROPERTIES IMPORTED_GLOBAL ON)
|
|
add_library(Rizin::librz ALIAS PkgConfig::Rizin)
|
|
set(Rizin_TARGET Rizin::librz)
|
|
elseif(Rizin_FOUND)
|
|
add_library(Rizin::librz INTERFACE IMPORTED)
|
|
set_target_properties(Rizin::librz PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${Rizin_INCLUDE_DIRS}")
|
|
set_target_properties(Rizin::librz PROPERTIES
|
|
INTERFACE_LINK_LIBRARIES "${Rizin_LIBRARIES}")
|
|
set(Rizin_TARGET Rizin::librz)
|
|
endif()
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(Rizin REQUIRED_VARS Rizin_TARGET Rizin_LIBRARIES Rizin_INCLUDE_DIRS)
|