diff --git a/FindImitator.cmake b/FindImitator.cmake new file mode 100644 index 0000000..bc233aa --- /dev/null +++ b/FindImitator.cmake @@ -0,0 +1,45 @@ +if(NOT IMITATOR_IS_EXTERNAL_PROJECT) + set(IMITATOR_PREFIX "" CACHE PATH "The path to the prefix of an libimitator installation") + set(IMITATOR_INCLUDE_DIR "" CACHE PATH "The path to the headers of an libimitator installation") + set(IMITATOR_LIBRARY_DIR "" CACHE PATH "The path to the library of an libimitator installation") + + set(_search_paths "") + if(IMITATOR_INCLUDE_DIR AND EXISTS ${IMITATOR_INCLUDE_DIR}) + list(APPEND _search_paths ${IMITATOR_INCLUDE_DIR}) + endif() + if(IMITATOR_PREFIX AND EXISTS ${IMITATOR_PREFIX}) + list(APPEND _search_paths "${IMITATOR_PREFIX}/include") + endif() + find_path( + IMITATOR_INCLUDE_DIRS + NAMES imitator/imitator.hpp + PATHS ${_search_paths}) + + set(_search_paths "") + if(IMITATOR_LIBRARY_DIR AND EXISTS ${IMITATOR_LIBRARY_DIR}) + list(APPEND _search_paths ${IMITATOR_LIBRARY_DIR}) + endif() + if(IMITATOR_PREFIX AND EXISTS ${IMITATOR_PREFIX}) + list(APPEND _search_paths "${IMITATOR_PREFIX}/lib") + endif() + find_library( + IMITATOR_LIBRARIES + NAMES imitator + PATHS ${_search_paths}) + unset(_search_paths) + + if(IMITATOR_INCLUDE_DIRS AND IMITATOR_LIBRARIES) + set(IMITATOR_FOUND TRUE) + endif() + + if(IMITATOR_FOUND) + if(NOT IMITATOR_FIND_QUIETLY) + message(STATUS "Found libimitator") + endif() + set(HAVE_IMITATOR 1) + elseif(IMITATOR_FOUND) + if(IMITATOR_FIND_REQUIRED) + message(FATAL_ERROR "Could not find libimitator") + endif() + endif() +endif() diff --git a/FindImitatorThirdparty.cmake b/FindImitatorThirdparty.cmake new file mode 100644 index 0000000..fbe35d7 --- /dev/null +++ b/FindImitatorThirdparty.cmake @@ -0,0 +1,40 @@ +# Подключение внешних проектов +include(ExternalProject) + +set(IMITATOR_PREFIX + ${CMAKE_BINARY_DIR} + CACHE FILEPATH "" FORCE) +set(IMITATOR_INCLUDE_DIR + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR} + CACHE PATH "" FORCE) +set(IMITATOR_INCLUDE_DIRS + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR} + CACHE PATH "" FORCE) +set(IMITATOR_LIBRARY_DIR + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + CACHE PATH "" FORCE) +set(IMITATOR_LIBRARIES + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/libimitator.a + CACHE FILEPATH "" FORCE) + +# cmake-format: off +list(APPEND _ext_project_args + libimitator + SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/libimitator + INSTALL_DIR ${CMAKE_BINARY_DIR} + CMAKE_ARGS ${CMLIB_EXT_PROJ_DEFAULT_ARGS} + ) +if(ImitatorThirdparty_FIND_COMPONENTS STREQUAL "headers") + list(APPEND _ext_project_args + BUILD_COMMAND true + INSTALL_COMMAND ${CMAKE_MAKE_PROGRAM} imitator-install-headers) +else() + list(APPEND _ext_project_args + BUILD_BYPRODUCTS ${IMITATOR_LIBRARIES}) +endif() +ExternalProject_Add(${_ext_project_args}) +unset(_ext_project_args) + +set(IMITATOR_IS_EXTERNAL_PROJECT ON CACHE BOOL "" FORCE) +# cmake-format: on +