cmake/FindRedex.cmake (67 lines of code) (raw):

# Copyright (c) Meta Platforms, Inc. and affiliates. # # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. if (NOT Redex_FOUND) set(REDEX_ROOT "" CACHE PATH "Path to the Redex install directory") set(REDEX_INCLUDE_SEARCH_DIRS "") set(REDEX_LIBRARY_SEARCH_DIRS "") if (REDEX_ROOT) list(APPEND REDEX_INCLUDE_SEARCH_DIRS "${REDEX_ROOT}/include") list(APPEND REDEX_LIBRARY_SEARCH_DIRS "${REDEX_ROOT}/lib") endif() find_path(REDEX_INCLUDE_DIR NAMES redex/libredex/IRCode.h HINTS ${REDEX_INCLUDE_SEARCH_DIRS} DOC "Path to the Redex include directory") find_library(REDEX_LIBREDEX_LIB NAMES redex HINTS ${REDEX_LIBRARY_SEARCH_DIRS} DOC "Path to the Redex library") find_library(REDEX_LIBRESOURCE_LIB NAMES resource HINTS ${REDEX_LIBRARY_SEARCH_DIRS} DOC "Path to the Redex resource library") find_library(REDEX_LIBTOOL_LIB NAMES tool HINTS ${REDEX_LIBRARY_SEARCH_DIRS} DOC "Path to the Redex tool library") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Redex REQUIRED_VARS REDEX_INCLUDE_DIR REDEX_LIBREDEX_LIB REDEX_LIBRESOURCE_LIB REDEX_LIBTOOL_LIB FAIL_MESSAGE "Could NOT find Redex. Please provide -DREDEX_ROOT=/path/to/redex") if (Redex_FOUND) add_library(Redex::LibResource UNKNOWN IMPORTED) set(libresource_includes "${REDEX_INCLUDE_DIR}/redex/util" "${REDEX_INCLUDE_DIR}/redex/libresource") set_target_properties(Redex::LibResource PROPERTIES IMPORTED_LOCATION "${REDEX_LIBRESOURCE_LIB}" INTERFACE_INCLUDE_DIRECTORIES "${libresource_includes}") target_link_libraries(Redex::LibResource INTERFACE ZLIB::ZLIB Boost::iostreams) add_library(Redex::LibRedex UNKNOWN IMPORTED) set(libredex_includes "${REDEX_INCLUDE_DIR}/redex/libredex" "${REDEX_INCLUDE_DIR}/redex/service/type-analysis" "${REDEX_INCLUDE_DIR}/redex/util" "${REDEX_INCLUDE_DIR}/redex/shared" "${REDEX_INCLUDE_DIR}/redex/sparta") set_target_properties(Redex::LibRedex PROPERTIES IMPORTED_LOCATION "${REDEX_LIBREDEX_LIB}" INTERFACE_INCLUDE_DIRECTORIES "${libredex_includes}") target_link_libraries(Redex::LibRedex INTERFACE Redex::LibResource) add_library(Redex::LibTool UNKNOWN IMPORTED) set(libtool_includes "${REDEX_INCLUDE_DIR}/redex/tools/common" "${REDEX_INCLUDE_DIR}/redex/tools/tool") set_target_properties(Redex::LibTool PROPERTIES IMPORTED_LOCATION "${REDEX_LIBTOOL_LIB}" INTERFACE_INCLUDE_DIRECTORIES "${libtool_includes}") target_link_libraries(Redex::LibTool INTERFACE Redex::LibResource Redex::LibRedex) endif() endif()