Findzstd.cmake 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. find_package(PkgConfig QUIET)
  2. pkg_check_modules(PC_zstd QUIET libzstd)
  3. find_path(zstd_INCLUDE_DIR
  4. NAMES zstd.h
  5. PATHS ${PC_zstd_INCLUDE_DIRS}
  6. )
  7. find_library(zstd_LIBRARY
  8. NAMES zstd
  9. PATHS ${PC_zstd_LIBRARY_DIRS}
  10. )
  11. if(zstd_INCLUDE_DIR)
  12. file(STRINGS "${zstd_INCLUDE_DIR}/zstd.h" _zstd_version_lines
  13. REGEX "#define[ \t]+ZSTD_VERSION_(MAJOR|MINOR|RELEASE)")
  14. string(REGEX REPLACE ".*ZSTD_VERSION_MAJOR *\([0-9]*\).*" "\\1" _zstd_version_major "${_zstd_version_lines}")
  15. string(REGEX REPLACE ".*ZSTD_VERSION_MINOR *\([0-9]*\).*" "\\1" _zstd_version_minor "${_zstd_version_lines}")
  16. string(REGEX REPLACE ".*ZSTD_VERSION_RELEASE *\([0-9]*\).*" "\\1" _zstd_version_release "${_zstd_version_lines}")
  17. set(zstd_VERSION "${_zstd_version_major}.${_zstd_version_minor}.${_zstd_version_release}")
  18. unset(_zstd_version_major)
  19. unset(_zstd_version_minor)
  20. unset(_zstd_version_release)
  21. unset(_zstd_version_lines)
  22. endif()
  23. include(FindPackageHandleStandardArgs)
  24. find_package_handle_standard_args(zstd
  25. FOUND_VAR zstd_FOUND
  26. REQUIRED_VARS
  27. zstd_LIBRARY
  28. zstd_INCLUDE_DIR
  29. zstd_VERSION
  30. VERSION_VAR zstd_VERSION
  31. )
  32. if(zstd_FOUND)
  33. set(zstd_LIBRARIES ${zstd_LIBRARY})
  34. set(zstd_INCLUDE_DIRS ${zstd_INCLUDE_DIR})
  35. set(zstd_DEFINITIONS ${PC_zstd_CFLAGS_OTHER})
  36. endif()
  37. if(zstd_FOUND AND NOT TARGET zstd::zstd)
  38. add_library(zstd::zstd UNKNOWN IMPORTED)
  39. set_target_properties(zstd::zstd PROPERTIES
  40. IMPORTED_LOCATION "${zstd_LIBRARY}"
  41. INTERFACE_COMPILE_OPTIONS "${PC_zstd_CFLAGS_OTHER}"
  42. INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
  43. )
  44. endif()
  45. mark_as_advanced(
  46. zstd_INCLUDE_DIR
  47. zstd_LIBRARY
  48. )