summaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindYajl.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/FindYajl.cmake')
-rw-r--r--cmake/modules/FindYajl.cmake62
1 files changed, 62 insertions, 0 deletions
diff --git a/cmake/modules/FindYajl.cmake b/cmake/modules/FindYajl.cmake
new file mode 100644
index 0000000..c73a67b
--- /dev/null
+++ b/cmake/modules/FindYajl.cmake
@@ -0,0 +1,62 @@
1#.rst:
2# FindYajl
3# --------
4# Finds the Yajl library
5#
6# This will will define the following variables::
7#
8# YAJL_FOUND - system has Yajl
9# YAJL_INCLUDE_DIRS - Yajl include directory
10# YAJL_LIBRARIES - the Yajl libraries
11#
12# and the following imported targets::
13#
14# Yajl::Yajl - The Yajl library
15
16if(NOT Yajl_FIND_VERSION)
17 set(Yajl_FIND_VERSION 2.0.0)
18endif()
19
20if(PKG_CONFIG_FOUND)
21 pkg_check_modules(PC_YAJL yajl>=${Yajl_FIND_VERSION} QUIET)
22endif()
23
24find_path(YAJL_INCLUDE_DIR NAMES yajl/yajl_common.h
25 PATHS ${PC_YAJL_INCLUDEDIR})
26find_library(YAJL_LIBRARY NAMES yajl
27 PATHS ${PC_YAJL_LIBDIR})
28
29if(PC_YAJL_VERSION)
30 set(YAJL_VERSION_STRING ${PC_YAJL_VERSION})
31elseif(YAJL_INCLUDE_DIR AND EXISTS "${YAJL_INCLUDE_DIR}/yajl/yajl_version.h")
32 file(STRINGS "${YAJL_INCLUDE_DIR}/yajl/yajl_version.h" yajl_version_str REGEX "^[ \t]*#define[ \t]+YAJL_(MAJOR|MINOR|MICRO)")
33 string(REGEX REPLACE "YAJL_MAJOR ([0-9]+)" "\\1" YAJL_VERSION_MAJOR "${YAJL_VERSION_MAJOR}")
34
35 string(REGEX REPLACE ".*YAJL_MAJOR ([0-9]+).*" "\\1" yajl_major "${yajl_version_str}")
36 string(REGEX REPLACE ".*YAJL_MINOR ([0-9]+).*" "\\1" yajl_minor "${yajl_version_str}")
37 string(REGEX REPLACE ".*YAJL_MICRO ([0-9]+).*" "\\1" yajl_micro "${yajl_version_str}")
38 set(YAJL_VERSION_STRING "${yajl_major}.${yajl_minor}.${yajl_micro}")
39 unset(yajl_version_str)
40 unset(yajl_major)
41 unset(yajl_minor)
42 unset(yajl_micro)
43endif()
44
45include(FindPackageHandleStandardArgs)
46find_package_handle_standard_args(Yajl
47 REQUIRED_VARS YAJL_LIBRARY YAJL_INCLUDE_DIR
48 VERSION_VAR YAJL_VERSION_STRING)
49
50if(YAJL_FOUND)
51 set(YAJL_INCLUDE_DIRS ${YAJL_INCLUDE_DIR})
52 set(YAJL_LIBRARIES ${YAJL_LIBRARY})
53
54 if(NOT TARGET Yajl::Yajl)
55 add_library(Yajl::Yajl UNKNOWN IMPORTED)
56 set_target_properties(Yajl::Yajl PROPERTIES
57 IMPORTED_LOCATION "${YAJL_LIBRARY}"
58 INTERFACE_INCLUDE_DIRECTORIES "${YAJL_INCLUDE_DIR}")
59 endif()
60endif()
61
62mark_as_advanced(YAJL_INCLUDE_DIR YAJL_LIBRARY)