diff --git a/extra/FindALT.cmake b/extra/FindALT.cmake new file mode 100644 index 0000000000000000000000000000000000000000..7d9a6c42c06b040975f168581046c5fb0f6cede9 --- /dev/null +++ b/extra/FindALT.cmake @@ -0,0 +1,102 @@ +# Find Algorithms Library Toolkit +# +# Cache Variables: (not for direct use in CMakeLists.txt) +# ALT_ROOT +# ALT_LIBRARY +# ALT_INCLUDE_DIR +# ALT_a_LIBRARY +# ALT_a_INCLUDE_DIR +# ALT_b_LIBRARY +# ALT_b_INCLUDE_DIR +# ALT_c_LIBRARY +# ALT_c_INCLUDE_DIR +# + +# Use this module this way: +# find_package(ALT) +# find_package(ALT 1.0.0) +# find_package(ALT COMPONENTS ALGO OPTIONAL_COMPONENTS ALGO_EXPERIMENTAL) +# ... +# include_directories(${ALT_INCLUDE_DIR}) +# target_link_libraries(myapp ${ALT_LIBRARIES}) + +# ALT libraries are components. For example, libalib2algo.so is "algo" component. + +# Requires these CMake modules: +# FindPackageHandleStandardArgs (CMake standard module) +# +# Original Author: +# 2020 Tomas Pecka <tomas.pecka@fit.cvut.cz> +# https://alt.pecka.me + +set(_libraries + xml + elgo + graph_algo + str_cli_integration + str + algo_experimental + std + measure + gui + algo + common + data + raw_cli_integration + graph_data + abstraction + aux + data_experimental + dummy + raw + cli + ) + +set(ALT_ROOT "${ALT_ROOT}" CACHE PATH "ALT install prefix") +# find includes +find_path(ALT_INCLUDE_DIR NAMES version.hpp PATHS "${ALT_ROOT}" PATH_SUFFIXES include/algorithms-library) + +# find libs +set(ALT_LIBRARIES "") +foreach(lib ${_libraries}) + + # if ALT_ROOT specified, don't look in DEFAULT paths... + if(ALT_ROOT) + find_library(ALT_${lib}_FOUND NAMES alib2${lib} PATHS "${ALT_ROOT}" PATH_SUFFIXES lib NO_DEFAULT_PATH) + else() + find_library(ALT_${lib}_FOUND NAMES alib2${lib} PATHS "${ALT_ROOT}" PATH_SUFFIXES lib) + endif() + + if(ALT_${lib}_FOUND) + set(ALT_LIBRARIES ${ALT_LIBRARIES} ${ALT_${lib}_FOUND}) + + string(TOUPPER ${lib} _lib_upper) + set(ALT_${_lib_upper}_LIBRARY ${ALT_${lib}_FOUND}) + mark_as_advanced(ALT_${_lib_upper}_LIBRARY) + endif() +endforeach() + +# find version +if(ALT_INCLUDE_DIR) + # Read and parse version header file for version number + file(STRINGS "${ALT_INCLUDE_DIR}/version.hpp" _alt_version_hpp REGEX "#define ALIB_VERSION[ ]*\"([.0-9]+)\"") + string(REGEX MATCH "([\.0-9]+)" ALT_VERSION "${_alt_version_hpp}") + + # report + # message("Found ALT package. Version " ${ALT_VERSION}) +endif() + +# handle +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ALT + VERSION_VAR ${ALT_VERSION} + REQUIRED_VARS ALT_INCLUDE_DIR ALT_LIBRARIES + HANDLE_COMPONENTS +) + +mark_as_advanced(ALT_INCLUDE_DIR) +mark_as_advanced(ALT_LIBRARIES) + +if(ALT_FOUND) + mark_as_advanced(ALT_ROOT) +endif()