summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Edelev <alexey.edelev@qt.io>2020-11-06 12:06:23 +0100
committerAlexey Edelev <alexey.edelev@qt.io>2020-11-08 03:13:13 +0100
commit2433e5804c82f69aeaf7d762dfad4499efadf9ef (patch)
tree8198c855d2635d68c98f0cf61dffbf2305901331
parenta66e5a3ecad594607e68305d7afc8e7bbfcfe843 (diff)
CMake: Locate zstd using CONFIG
Trying to locate zstd package configuration prior to use pkg-config. Define explicit IMPORTED_LOCATION_DEBUG and IMPORTED_LOCATION_RELEASE in case of pkg-config usage. Fixes: QTBUG-88091 Change-Id: I3cb86a66fad4e7b78b3d2fcff061508fc25e25a7 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r--cmake/FindZSTD.cmake72
1 files changed, 51 insertions, 21 deletions
diff --git a/cmake/FindZSTD.cmake b/cmake/FindZSTD.cmake
index 11515c8a31..e9af76cc4e 100644
--- a/cmake/FindZSTD.cmake
+++ b/cmake/FindZSTD.cmake
@@ -18,32 +18,62 @@
# ``ZSTD::ZSTD``
# The zstd library
-find_package(PkgConfig QUIET)
-pkg_check_modules(PC_ZSTD QUIET libzstd)
+find_package(zstd CONFIG)
-find_path(ZSTD_INCLUDE_DIRS
- NAMES zstd.h
- HINTS ${PC_ZSTD_INCLUDEDIR}
- PATH_SUFFIXES zstd)
+include(FindPackageHandleStandardArgs)
-find_library(ZSTD_LIBRARIES
- NAMES zstd zstd_static
- HINTS ${PC_ZSTD_LIBDIR}
-)
+if(TARGET zstd::libzstd_static OR TARGET zstd::libzstd_shared)
+ find_package_handle_standard_args(ZSTD REQUIRED_VARS zstd_DIR VERSION_VAR zstd_VERSION)
+ if(TARGET zstd::libzstd_static)
+ set(zstdtargetsuffix "_static")
+ else()
+ set(zstdtargetsuffix "_shared")
+ endif()
+ if(NOT TARGET ZSTD::ZSTD)
+ add_library(ZSTD::ZSTD INTERFACE IMPORTED)
+ set_target_properties(ZSTD::ZSTD PROPERTIES
+ INTERFACE_LINK_LIBRARIES "zstd::libzstd${zstdtargetsuffix}")
+ endif()
+else()
+ find_package(PkgConfig QUIET)
+ pkg_check_modules(PC_ZSTD QUIET libzstd)
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(ZSTD REQUIRED_VARS ZSTD_LIBRARIES ZSTD_INCLUDE_DIRS
- VERSION_VAR PC_ZSTD_VERSION)
-
-if(ZSTD_FOUND AND NOT TARGET ZSTD::ZSTD)
- add_library(ZSTD::ZSTD UNKNOWN IMPORTED)
- set_target_properties(ZSTD::ZSTD PROPERTIES
- IMPORTED_LOCATION "${ZSTD_LIBRARIES}"
- INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIRS}")
-endif()
+ find_path(ZSTD_INCLUDE_DIRS
+ NAMES zstd.h
+ HINTS ${PC_ZSTD_INCLUDEDIR}
+ PATH_SUFFIXES zstd)
+
+ find_library(ZSTD_LIBRARY_RELEASE
+ NAMES zstd zstd_static
+ HINTS ${PC_ZSTD_LIBDIR}
+ )
+ find_library(ZSTD_LIBRARY_DEBUG
+ NAMES zstdd zstd_staticd zstd zstd_static
+ HINTS ${PC_ZSTD_LIBDIR}
+ )
-mark_as_advanced(ZSTD_INCLUDE_DIRS ZSTD_LIBRARIES)
+ include(SelectLibraryConfigurations)
+ select_library_configurations(ZSTD)
+ find_package_handle_standard_args(ZSTD REQUIRED_VARS ZSTD_LIBRARIES ZSTD_INCLUDE_DIRS
+ VERSION_VAR PC_ZSTD_VERSION)
+
+ if(ZSTD_FOUND AND NOT TARGET ZSTD::ZSTD)
+ add_library(ZSTD::ZSTD UNKNOWN IMPORTED)
+ set_target_properties(ZSTD::ZSTD PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIRS}")
+ if(ZSTD_LIBRARY_RELEASE)
+ set_target_properties(ZSTD::ZSTD PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${ZSTD_LIBRARY_RELEASE}")
+ endif()
+ if(ZSTD_LIBRARY_DEBUG)
+ set_target_properties(ZSTD::ZSTD PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${ZSTD_LIBRARY_DEBUG}")
+ endif()
+ endif()
+
+ mark_as_advanced(ZSTD_INCLUDE_DIRS ZSTD_LIBRARIES ZSTD_LIBRARY_RELEASE ZSTD_LIBRARY_DEBUG)
+endif()
include(FeatureSummary)
set_package_properties(ZSTD PROPERTIES
URL "https://github.com/facebook/zstd"