From c2b09e5cb222c44d7c5f3b3770365de10bbf32f5 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Thu, 7 Oct 2021 09:18:36 +0300 Subject: [PATCH] myx-geo --- FindMyxGeo.cmake | 45 ++++++++++++++++++++++++++++++++++++++ FindMyxGeoThirdparty.cmake | 39 +++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 FindMyxGeo.cmake create mode 100644 FindMyxGeoThirdparty.cmake diff --git a/FindMyxGeo.cmake b/FindMyxGeo.cmake new file mode 100644 index 0000000..0639334 --- /dev/null +++ b/FindMyxGeo.cmake @@ -0,0 +1,45 @@ +if(NOT MYX_GEO_IS_EXTERNAL_PROJECT) + set(MYX_GEO_PREFIX "" CACHE PATH "The path to the prefix of an myx-geo installation") + set(MYX_GEO_INCLUDE_DIR "" CACHE PATH "The path to the headers of an myx-geo installation") + set(MYX_GEO_LIBRARY_DIR "" CACHE PATH "The path to the library of an myx-geo installation") + + set(_search_paths "") + if(MYX_GEO_INCLUDE_DIR AND EXISTS ${MYX_GEO_INCLUDE_DIR}) + list(APPEND _search_paths ${MYX_GEO_INCLUDE_DIR}) + endif() + if(MYX_GEO_PREFIX AND EXISTS ${MYX_GEO_PREFIX}) + list(APPEND _search_paths "${MYX_GEO_PREFIX}/include") + endif() + find_path( + MYX_GEO_INCLUDE_DIRS + NAMES myx/geo/const.hpp + PATHS ${_search_paths}) + + set(_search_paths "") + if(MYX_GEO_LIBRARY_DIR AND EXISTS ${MYX_GEO_LIBRARY_DIR}) + list(APPEND _search_paths ${MYX_GEO_LIBRARY_DIR}) + endif() + if(MYX_GEO_PREFIX AND EXISTS ${MYX_GEO_PREFIX}) + list(APPEND _search_paths "${MYX_GEO_PREFIX}/lib") + endif() + find_library( + MYX_GEO_LIBRARIES + NAMES myx-geo + PATHS ${_search_paths}) + unset(_search_paths) + + if(MYX_GEO_INCLUDE_DIRS AND MYX_GEO_LIBRARIES) + set(MYX_GEO_FOUND TRUE) + endif() + + if(MYX_GEO_FOUND) + if(NOT MYX_GEO_FIND_QUIETLY) + message(STATUS "Found myx-geo") + endif() + set(HAVE_MYX_GEO 1) + elseif(MYX_GEO_FOUND) + if(MYX_GEO_FIND_REQUIRED) + message(FATAL_ERROR "Could not find myx-geo") + endif() + endif() +endif() diff --git a/FindMyxGeoThirdparty.cmake b/FindMyxGeoThirdparty.cmake new file mode 100644 index 0000000..b451906 --- /dev/null +++ b/FindMyxGeoThirdparty.cmake @@ -0,0 +1,39 @@ +# Подключение внешних проектов +include(ExternalProject) + +set(MYX_GEO_PREFIX + ${CMAKE_BINARY_DIR} + CACHE FILEPATH "" FORCE) +set(MYX_GEO_INCLUDE_DIR + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR} + CACHE PATH "" FORCE) +set(MYX_GEO_INCLUDE_DIRS + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR} + CACHE PATH "" FORCE) +set(MYX_GEO_LIBRARY_DIR + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + CACHE PATH "" FORCE) +set(MYX_GEO_LIBRARIES + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/libmyx-geo.a + CACHE FILEPATH "" FORCE) + +# cmake-format: off +list(APPEND _ext_project_args + myx-geo + SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/myx-geo + INSTALL_DIR ${CMAKE_BINARY_DIR} + CMAKE_ARGS ${CMLIB_EXT_PROJ_DEFAULT_ARGS} + ) +if(MyxGeoThirdparty_FIND_COMPONENTS STREQUAL "headers") + list(APPEND _ext_project_args + BUILD_COMMAND true + INSTALL_COMMAND ${CMAKE_MAKE_PROGRAM} myx-geo-install-headers) +else() + list(APPEND _ext_project_args + BUILD_BYPRODUCTS ${MYX_GEO_LIBRARIES}) +endif() +ExternalProject_Add(${_ext_project_args}) +unset(_ext_project_args) + +set(MYX_GEO_IS_EXTERNAL_PROJECT ON CACHE BOOL "" FORCE) +# cmake-format: on