xref: /aosp_15_r20/external/zstd/build/cmake/CMakeModules/FindLibLZ4.cmake (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
1*01826a49SYabin Cui# Find LibLZ4
2*01826a49SYabin Cui#
3*01826a49SYabin Cui# Find LibLZ4 headers and library
4*01826a49SYabin Cui#
5*01826a49SYabin Cui#   Result Variables
6*01826a49SYabin Cui#
7*01826a49SYabin Cui#   LIBLZ4_FOUND             - True if lz4 is found
8*01826a49SYabin Cui#   LIBLZ4_INCLUDE_DIRS      - lz4 headers directories
9*01826a49SYabin Cui#   LIBLZ4_LIBRARIES         - lz4 libraries
10*01826a49SYabin Cui#   LIBLZ4_VERSION_MAJOR     - The major version of lz4
11*01826a49SYabin Cui#   LIBLZ4_VERSION_MINOR     - The minor version of lz4
12*01826a49SYabin Cui#   LIBLZ4_VERSION_RELEASE   - The release version of lz4
13*01826a49SYabin Cui#   LIBLZ4_VERSION_STRING    - version number string (e.g. 1.8.3)
14*01826a49SYabin Cui#
15*01826a49SYabin Cui#   Hints
16*01826a49SYabin Cui#
17*01826a49SYabin Cui#   Set ``LZ4_ROOT_DIR`` to the directory of lz4.h and lz4 library
18*01826a49SYabin Cui
19*01826a49SYabin Cuiset(_LIBLZ4_ROOT_HINTS
20*01826a49SYabin Cui    ENV LZ4_ROOT_DIR)
21*01826a49SYabin Cui
22*01826a49SYabin Cuifind_path(  LIBLZ4_INCLUDE_DIR lz4.h
23*01826a49SYabin Cui            HINTS ${_LIBLZ4_ROOT_HINTS})
24*01826a49SYabin Cuifind_library(   LIBLZ4_LIBRARY NAMES lz4 liblz4 liblz4_static
25*01826a49SYabin Cui                HINTS ${_LIBLZ4_ROOT_HINTS})
26*01826a49SYabin Cui
27*01826a49SYabin Cuiif(LIBLZ4_INCLUDE_DIR)
28*01826a49SYabin Cui    file(STRINGS "${LIBLZ4_INCLUDE_DIR}/lz4.h" LIBLZ4_HEADER_CONTENT REGEX "#define LZ4_VERSION_[A-Z]+ +[0-9]+")
29*01826a49SYabin Cui
30*01826a49SYabin Cui    string(REGEX REPLACE ".*#define LZ4_VERSION_MAJOR +([0-9]+).*" "\\1" LIBLZ4_VERSION_MAJOR "${LIBLZ4_HEADER_CONTENT}")
31*01826a49SYabin Cui    string(REGEX REPLACE ".*#define LZ4_VERSION_MINOR +([0-9]+).*" "\\1" LIBLZ4_VERSION_MINOR "${LIBLZ4_HEADER_CONTENT}")
32*01826a49SYabin Cui    string(REGEX REPLACE ".*#define LZ4_VERSION_RELEASE +([0-9]+).*" "\\1" LIBLZ4_VERSION_RELEASE "${LIBLZ4_HEADER_CONTENT}")
33*01826a49SYabin Cui
34*01826a49SYabin Cui    set(LIBLZ4_VERSION_STRING "${LIBLZ4_VERSION_MAJOR}.${LIBLZ4_VERSION_MINOR}.${LIBLZ4_VERSION_RELEASE}")
35*01826a49SYabin Cui    unset(LIBLZ4_HEADER_CONTENT)
36*01826a49SYabin Cuiendif()
37*01826a49SYabin Cui
38*01826a49SYabin Cuiinclude(FindPackageHandleStandardArgs)
39*01826a49SYabin CuiFIND_PACKAGE_HANDLE_STANDARD_ARGS(LibLZ4    REQUIRED_VARS   LIBLZ4_INCLUDE_DIR
40*01826a49SYabin Cui                                                            LIBLZ4_LIBRARY
41*01826a49SYabin Cui                                            VERSION_VAR     LIBLZ4_VERSION_STRING
42*01826a49SYabin Cui                                            FAIL_MESSAGE    "Could NOT find LZ4, try to set the paths to lz4.h and lz4 library in environment variable LZ4_ROOT_DIR")
43*01826a49SYabin Cui
44*01826a49SYabin Cuiif (LIBLZ4_FOUND)
45*01826a49SYabin Cui    set(LIBLZ4_LIBRARIES ${LIBLZ4_LIBRARY})
46*01826a49SYabin Cui    set(LIBLZ4_INCLUDE_DIRS ${LIBLZ4_INCLUDE_DIR})
47*01826a49SYabin Cuiendif ()
48*01826a49SYabin Cui
49*01826a49SYabin Cuimark_as_advanced( LIBLZ4_INCLUDE_DIR LIBLZ4_LIBRARY )
50