diff options
Diffstat (limited to 'externals/find-modules/Findfmt.cmake')
| -rw-r--r-- | externals/find-modules/Findfmt.cmake | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/externals/find-modules/Findfmt.cmake b/externals/find-modules/Findfmt.cmake new file mode 100644 index 000000000..8ba51cbea --- /dev/null +++ b/externals/find-modules/Findfmt.cmake | |||
| @@ -0,0 +1,69 @@ | |||
| 1 | |||
| 2 | find_package(PkgConfig QUIET) | ||
| 3 | pkg_check_modules(PC_fmt QUIET fmt) | ||
| 4 | |||
| 5 | find_path(fmt_INCLUDE_DIR | ||
| 6 | NAMES format.h | ||
| 7 | PATHS ${PC_fmt_INCLUDE_DIRS} ${CONAN_INCLUDE_DIRS_fmt} | ||
| 8 | PATH_SUFFIXES fmt | ||
| 9 | ) | ||
| 10 | |||
| 11 | find_library(fmt_LIBRARY | ||
| 12 | NAMES fmt | ||
| 13 | PATHS ${PC_fmt_LIBRARY_DIRS} ${CONAN_LIB_DIRS_fmt} | ||
| 14 | ) | ||
| 15 | |||
| 16 | if(fmt_INCLUDE_DIR) | ||
| 17 | set(_fmt_version_file "${fmt_INCLUDE_DIR}/core.h") | ||
| 18 | if(NOT EXISTS "${_fmt_version_file}") | ||
| 19 | set(_fmt_version_file "${fmt_INCLUDE_DIR}/format.h") | ||
| 20 | endif() | ||
| 21 | if(EXISTS "${_fmt_version_file}") | ||
| 22 | # parse "#define FMT_VERSION 60200" to 6.2.0 | ||
| 23 | file(STRINGS "${_fmt_version_file}" fmt_VERSION_LINE | ||
| 24 | REGEX "^#define[ \t]+FMT_VERSION[ \t]+[0-9]+$") | ||
| 25 | string(REGEX REPLACE "^#define[ \t]+FMT_VERSION[ \t]+([0-9]+)$" | ||
| 26 | "\\1" fmt_VERSION "${fmt_VERSION_LINE}") | ||
| 27 | foreach(ver "fmt_VERSION_PATCH" "fmt_VERSION_MINOR" "fmt_VERSION_MAJOR") | ||
| 28 | math(EXPR ${ver} "${fmt_VERSION} % 100") | ||
| 29 | math(EXPR fmt_VERSION "(${fmt_VERSION} - ${${ver}}) / 100") | ||
| 30 | endforeach() | ||
| 31 | set(fmt_VERSION | ||
| 32 | "${fmt_VERSION_MAJOR}.${fmt_VERSION_MINOR}.${fmt_VERSION_PATCH}") | ||
| 33 | endif() | ||
| 34 | unset(_fmt_version_file) | ||
| 35 | unset(fmt_VERSION_LINE) | ||
| 36 | unset(fmt_VERSION_MAJOR) | ||
| 37 | unset(fmt_VERSION_MINOR) | ||
| 38 | unset(fmt_VERSION_PATCH) | ||
| 39 | endif() | ||
| 40 | |||
| 41 | include(FindPackageHandleStandardArgs) | ||
| 42 | find_package_handle_standard_args(fmt | ||
| 43 | FOUND_VAR fmt_FOUND | ||
| 44 | REQUIRED_VARS | ||
| 45 | fmt_LIBRARY | ||
| 46 | fmt_INCLUDE_DIR | ||
| 47 | fmt_VERSION | ||
| 48 | VERSION_VAR fmt_VERSION | ||
| 49 | ) | ||
| 50 | |||
| 51 | if(fmt_FOUND) | ||
| 52 | set(fmt_LIBRARIES ${fmt_LIBRARY}) | ||
| 53 | set(fmt_INCLUDE_DIRS ${fmt_INCLUDE_DIR}) | ||
| 54 | set(fmt_DEFINITIONS ${PC_fmt_CFLAGS_OTHER}) | ||
| 55 | endif() | ||
| 56 | |||
| 57 | if(fmt_FOUND AND NOT TARGET fmt::fmt) | ||
| 58 | add_library(fmt::fmt UNKNOWN IMPORTED) | ||
| 59 | set_target_properties(fmt::fmt PROPERTIES | ||
| 60 | IMPORTED_LOCATION "${fmt_LIBRARY}" | ||
| 61 | INTERFACE_COMPILE_OPTIONS "${PC_fmt_CFLAGS_OTHER}" | ||
| 62 | INTERFACE_INCLUDE_DIRECTORIES "${fmt_INCLUDE_DIR}" | ||
| 63 | ) | ||
| 64 | endif() | ||
| 65 | |||
| 66 | mark_as_advanced( | ||
| 67 | fmt_INCLUDE_DIR | ||
| 68 | fmt_LIBRARY | ||
| 69 | ) | ||