@@ -36,48 +36,68 @@ cmake_minimum_required(VERSION 3.5)
3636function (_yaml_Find_Config)
3737 find_package (yaml ${yaml_FIND_VERSION} QUIET CONFIG)
3838 if ("${yaml_FOUND} " )
39+ get_target_property (yaml_LIBRARIES yaml LOCATION )
40+ set (yaml_LIBRARIES "${yaml_LIBRARIES} " PARENT_SCOPE)
41+ get_target_property (yaml_INCLUDE_DIRS yaml INTERFACE_INCLUDE_DIRECTORIES )
42+ set (yaml_INCLUDE_DIRS "${yaml_INCLUDE_DIRS} " PARENT_SCOPE)
3943 mark_as_advanced (yaml_DIR)
4044 else ()
4145 unset (yaml_DIR CACHE )
4246 endif ()
4347endfunction (_yaml_Find_Config)
4448
49+ function (_yaml_Find_Cache)
50+ if (DEFINED CACHE {yaml_LIBRARIES} AND EXISTS "${yaml_LIBRARIES} " )
51+ add_library (yaml SHARED IMPORTED GLOBAL )
52+ set_target_properties (yaml PROPERTIES
53+ IMPORTED_LOCATION ${yaml_LIBRARIES}
54+ INTERFACE_INCLUDE_DIRECTORIES "${yaml_INCLUDE_DIRS} " )
55+ endif ()
56+ endfunction (_yaml_Find_Cache)
57+
4558function (_yaml_Find_Pkgconfig)
46- find_package (PkgConfig QUIET )
47- if ( NOT "${PKG_CONFIG_FOUND} " )
48- if (NOT "${yaml_FIND_QUIETLY} " )
49- message ("PkgConfig not found, unable to look for yaml" )
50- endif ()
51- return ()
52- endif ()
53-
54- if ( NOT "x${yaml_FIND_VERSION} " STREQUAL "x" )
55- pkg_search_module(yamlpkg QUIET yaml>=${yaml_FIND_VERSION} yaml-0.1>=${yaml_FIND_VERSION} )
56- if ( NOT "${yamlpkg_FOUND} " )
57- pkg_search_module(yamlpkg QUIET yaml yaml-0.1)
59+ find_package (PkgConfig QUIET )
60+ if (NOT "${PKG_CONFIG_FOUND} " )
61+ if (NOT "${yaml_FIND_QUIETLY} " )
62+ message ("PkgConfig not found, unable to look for yaml" )
5863 endif ()
59- else ()
60- pkg_search_module(yamlpkg QUIET yaml yaml-0.1)
61- endif ()
62-
63- if ( "${yamlpkg_FOUND} " AND NOT "0${yaml_FIND_VERSION} " VERSION_GREATER "0${yamlpkg_VERSION} " )
64- find_library (yaml_LIBRARIES NAMES ${yamlpkg_LIBRARIES}
65- HINTS ${yamlpkg_LIBRARY_DIRS}
66- PATH_SUFFIXES lib
64+ return ()
65+ endif ()
66+
67+ set (PKGCFG_NAMES yaml yaml-0.1)
68+ if (NOT "x${yaml_FIND_VERSION} " STREQUAL "x" )
69+ set (PKGCFG_NAMES yaml>=${yaml_FIND_VERSION} yaml-0.1>=${yaml_FIND_VERSION} ${PKGCFG_NAMES} )
70+ endif ()
71+ foreach (PKGCFG_NAME IN LISTS PKGCFG_NAMES)
72+ pkg_search_module(yamlpkg QUIET ${PKGCFG_NAME} )
73+ if ("${yamlpkg_FOUND} " )
74+ pkg_get_variable(yamlpkg_INCLUDEDIR ${PKGCFG_NAME} includedir)
75+ break ()
76+ endif ()
77+ unset (yamlpkg_FOUND CACHE )
78+ unset (yamlpkg_FOUND)
79+ endforeach ()
80+
81+ if ("${yamlpkg_FOUND} " AND NOT "0${yaml_FIND_VERSION} " VERSION_GREATER "0${yamlpkg_VERSION} " )
82+ set (yamlpkg_INCLUDE_DIRS ${yamlpkg_INCLUDE_DIRS} ${yamlpkg_INCLUDEDIR} )
83+ find_library (yaml_LIBRARIES NAMES ${yamlpkg_LIBRARIES}
84+ HINTS ${yamlpkg_LIBRARY_DIRS}
85+ PATH_SUFFIXES lib
6786 )
68- if ( EXISTS "${yaml_LIBRARIES} " )
87+ if (EXISTS "${yaml_LIBRARIES} " )
88+ set (yaml_LIBRARIES "${yaml_LIBRARIES} " CACHE STRING "yaml libraries path" FORCE)
6989 add_library (yaml SHARED IMPORTED GLOBAL )
7090 set_target_properties (yaml PROPERTIES
7191 IMPORTED_LOCATION ${yaml_LIBRARIES} )
72- if ( NOT "${yamlpkg_INCLUDE_DIRS} " STREQUAL "" )
73- set (yaml_INCLUDE_DIRS "${yamlpkg_INCLUDE_DIRS} " CACHE STRING "" FORCE)
92+ if ( NOT "${yamlpkg_INCLUDE_DIRS} " STREQUAL "" )
93+ set (yaml_INCLUDE_DIRS "${yamlpkg_INCLUDE_DIRS} " CACHE STRING "yaml include path " FORCE)
7494 set_target_properties (yaml PROPERTIES
75- INTERFACE_INCLUDE_DIRECTORIES ${yamlpkg_INCLUDE_DIRS} )
95+ INTERFACE_INCLUDE_DIRECTORIES " ${yamlpkg_INCLUDE_DIRS} " )
7696 endif ()
7797 mark_as_advanced (yaml_INCLUDE_DIRS yaml_LIBRARIES)
7898 if ("${yamlpkg_VERSION} " VERSION_GREATER 0)
79- set (yaml_VERSION "${yamlpkg_VERSION} " PARENT_SCOPE )
80- set (yaml_VERSION " ${yamlpkg_VERSION} " CACHE STRING "" FORCE )
99+ set (yaml_VERSION "${yamlpkg_VERSION} " CACHE STRING "yaml version found" FORCE )
100+ mark_as_advanced (yaml_VERSION)
81101 else ()
82102 unset (yaml_VERSION PARENT_SCOPE)
83103 endif ()
@@ -87,22 +107,23 @@ endfunction(_yaml_Find_Pkgconfig)
87107
88108unset (yaml_FOUND)
89109unset (yaml_LIBRARIES)
110+ unset (yaml_INCLUDE_DIRS)
90111unset (yaml_VERSION)
91- if ( NOT TARGET yaml )
112+ if ( NOT TARGET yaml)
92113 _yaml_Find_Config()
93114endif ()
94- if ( NOT TARGET yaml )
95- _yaml_Find_Pkgconfig()
115+ if (NOT TARGET yaml)
116+ _yaml_Find_Cache()
117+ endif ()
118+ if (NOT TARGET yaml)
119+ _yaml_Find_Pkgconfig()
96120endif ()
97- if ( TARGET yaml )
98- get_target_property (yaml_LIBRARIES yaml IMPORTED_LOCATION )
99- get_target_property (yamlpkg_INCLUDE_DIRS yaml INTERFACE_INCLUDE_DIRECTORIES )
100- else ()
101- unset (yamlpkg_INCLUDE_DIRS CACHE )
102- unset (yamlpkg_INCLUDE_DIRS)
103- unset (yaml_LIBRARIES CACHE )
104- unset (yaml_LIBRARIES)
105- unset (yaml_FOUND CACHE )
121+ if (NOT TARGET yaml)
122+ unset (yaml_INCLUDE_DIRS CACHE )
123+ unset (yaml_INCLUDE_DIRS)
124+ unset (yaml_LIBRARIES CACHE )
125+ unset (yaml_LIBRARIES)
126+ unset (yaml_FOUND CACHE )
106127 unset (yaml_FOUND)
107128endif ()
108129
0 commit comments