Skip to content

Commit 04d562b

Browse files
committed
Yet another Findyaml update
1 parent f2937e8 commit 04d562b

File tree

3 files changed

+67
-39
lines changed

3 files changed

+67
-39
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ The paraconf distribution depends on:
3939
* cmake, version >= 3.5
4040
* a C-99 compiler (gcc-5.4 is tested)
4141
* a POSIX compatible OS (linux with GNU libc-2.27 is tested)
42-
* [libyaml](https://pyyaml.org/wiki/LibYAML) (distributed with Paraconf
42+
* [libyaml](https://pyyaml.org/wiki/LibYAML) (included in Paraconf
4343
distribution)
4444

4545
Paraconf Fortran support depends on:

cmake/SuperBuild.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424

2525
cmake_minimum_required(VERSION 3.5)
2626

27+
cmake_policy(PUSH)
28+
if(POLICY CMP0114)
29+
cmake_policy(SET CMP0114 OLD)
30+
endif()
31+
2732
include(GNUInstallDirs)
2833
include(ExternalProject)
2934

@@ -358,3 +363,5 @@ endif()
358363
## Installation
359364

360365
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/staging/" DESTINATION "." USE_SOURCE_PERMISSIONS)
366+
367+
cmake_policy(POP)

paraconf/cmake/Findyaml.cmake

Lines changed: 59 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -36,48 +36,68 @@ cmake_minimum_required(VERSION 3.5)
3636
function(_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()
4347
endfunction(_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+
4558
function(_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

88108
unset(yaml_FOUND)
89109
unset(yaml_LIBRARIES)
110+
unset(yaml_INCLUDE_DIRS)
90111
unset(yaml_VERSION)
91-
if ( NOT TARGET yaml )
112+
if(NOT TARGET yaml)
92113
_yaml_Find_Config()
93114
endif()
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()
96120
endif()
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)
107128
endif()
108129

0 commit comments

Comments
 (0)