summaryrefslogtreecommitdiffstats
path: root/project/cmake/modules/FindYajl.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'project/cmake/modules/FindYajl.cmake')
-rw-r--r--project/cmake/modules/FindYajl.cmake71
1 files changed, 53 insertions, 18 deletions
diff --git a/project/cmake/modules/FindYajl.cmake b/project/cmake/modules/FindYajl.cmake
index c27b03a..c73a67b 100644
--- a/project/cmake/modules/FindYajl.cmake
+++ b/project/cmake/modules/FindYajl.cmake
@@ -1,27 +1,62 @@
1# Base Io build system 1#.rst:
2# Written by Jeremy Tregunna <jeremy.tregunna@me.com> 2# FindYajl
3# --------
4# Finds the Yajl library
3# 5#
4# Find libyajl 6# This will will define the following variables::
5pkg_check_modules(YAJL yajl>=2.0) 7#
6if(YAJL_FOUND) 8# YAJL_FOUND - system has Yajl
7 list(APPEND YAJL_DEFINITIONS -DYAJL_MAJOR=2) 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)
8endif() 22endif()
9 23
10if(NOT YAJL_FOUND) 24find_path(YAJL_INCLUDE_DIR NAMES yajl/yajl_common.h
11 find_path(YAJL_INCLUDE_DIRS yajl/yajl_common.h) 25 PATHS ${PC_YAJL_INCLUDEDIR})
12 find_library(YAJL_LIBRARIES NAMES yajl) 26find_library(YAJL_LIBRARY NAMES yajl
27 PATHS ${PC_YAJL_LIBDIR})
13 28
14 file(STRINGS ${YAJL_INCLUDE_DIRS}/yajl/yajl_version.h version_header) 29if(PC_YAJL_VERSION)
15 string(REGEX MATCH "YAJL_MAJOR ([0-9]+)" YAJL_VERSION_MAJOR ${version_header}) 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)")
16 string(REGEX REPLACE "YAJL_MAJOR ([0-9]+)" "\\1" YAJL_VERSION_MAJOR "${YAJL_VERSION_MAJOR}") 33 string(REGEX REPLACE "YAJL_MAJOR ([0-9]+)" "\\1" YAJL_VERSION_MAJOR "${YAJL_VERSION_MAJOR}")
17 if (YAJL_VERSION_MINOR LESS 2) 34
18 set(YAJL_INCLUDE_DIRS) 35 string(REGEX REPLACE ".*YAJL_MAJOR ([0-9]+).*" "\\1" yajl_major "${yajl_version_str}")
19 set(YALJ_LIBRARIES) 36 string(REGEX REPLACE ".*YAJL_MINOR ([0-9]+).*" "\\1" yajl_minor "${yajl_version_str}")
20 endif() 37 string(REGEX REPLACE ".*YAJL_MICRO ([0-9]+).*" "\\1" yajl_micro "${yajl_version_str}")
21 list(APPEND YAJL_DEFINITIONS -DYAJL_MAJOR=${YAJL_VERSION_MAJOR}) 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)
22endif() 43endif()
23 44
24include(FindPackageHandleStandardArgs) 45include(FindPackageHandleStandardArgs)
25find_package_handle_standard_args(Yajl DEFAULT_MSG YAJL_INCLUDE_DIRS YAJL_LIBRARIES) 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()
26 61
27mark_as_advanced(YAJL_INCLUDE_DIRS YAJL_LIBRARIES YAJL_DEFINITIONS) 62mark_as_advanced(YAJL_INCLUDE_DIR YAJL_LIBRARY)