Skip to content
Bitcoin Roots

v30.3-roots.1 · Commit 55: [PATCH 55/68] build: require usable system LevelDB memory environment

cmake/module/FindLevelDB.cmake

Before: cmake/module/FindLevelDB.cmake · After: cmake/module/FindLevelDB.cmake

File metadata
index 9360f1e14acd3e45e16223febd347ddd75bb7ee0..179bb52cbac4b3f7b53f54c560c4cca36086a342 100644

Download original patch · Release notes

Diff rows 1–42 of 42. Line numbers refer to the original before/after files.

+ Added− RemovedUnmarked lines are context.

Scroll the code area horizontally to read long lines. The two line-number columns refer to before and after.

cmake/module/FindLevelDB.cmake CHANGED
@@ -53,7 +53,7 @@ function(find_leveldb_libs release_type suffixes _LevelDB_lib_hint)
53
53
  _try_leveldb_compile("${LevelDB_LIBRARY_${release_type}}" "LevelDB_memenv_works_without_helper_lib_${release_type}")
54
54
  if(LevelDB_memenv_works_without_helper_lib_${release_type})
55
55
  set("LevelDB_MemEnv_LIBRARY_${release_type}" "" CACHE STRING "")
56
- set(LevelDB_MemEnv_FOUND ON CACHE INTERNAL "")
56
+ set("LevelDB_MemEnv_LINKABLE_${release_type}" ON PARENT_SCOPE)
57
57
  else()
58
58
  find_library("LevelDB_MemEnv_LIBRARY_${release_type}"
59
59
  NAMES memenv
@@ -63,9 +63,9 @@ function(find_leveldb_libs release_type suffixes _LevelDB_lib_hint)
63
63
 
64
64
  set(libs ${LevelDB_LIBRARY_${release_type}} ${LevelDB_MemEnv_LIBRARY_${release_type}})
65
65
  _try_leveldb_compile("${libs}" "LevelDB_memenv_works_with_helper_lib_${release_type}")
66
- if(NOT LevelDB_memenv_works_with_helper_lib_${release_type})
67
- set(LevelDB_MemEnv_FOUND OFF CACHE INTERNAL "")
68
- endif()
66
+ set("LevelDB_MemEnv_LINKABLE_${release_type}"
67
+ "${LevelDB_memenv_works_with_helper_lib_${release_type}}" PARENT_SCOPE
68
+ )
69
69
  endif()
70
70
  mark_as_advanced("LevelDB_MemEnv_LIBRARY_${release_type}")
71
71
  endfunction()
@@ -81,9 +81,21 @@ include(SelectLibraryConfigurations)
81
81
  select_library_configurations(LevelDB)
82
82
  select_library_configurations(LevelDB_MemEnv)
83
83
 
84
+ # Validate every available configuration, without rejecting a package that
85
+ # supplies only one configuration (SelectLibraryConfigurations supports this).
86
+ set(LevelDB_MemEnv_LINKABLE ON)
87
+ foreach(release_type IN ITEMS RELEASE DEBUG)
88
+ if(LevelDB_LIBRARY_${release_type} AND NOT LevelDB_MemEnv_LINKABLE_${release_type})
89
+ set(LevelDB_MemEnv_LINKABLE OFF)
90
+ endif()
91
+ endforeach()
92
+
84
93
  include(FindPackageHandleStandardArgs)
85
94
  find_package_handle_standard_args(LevelDB
86
- REQUIRED_VARS LevelDB_LIBRARY LevelDB_INCLUDE_DIR LevelDB_MemEnv_INCLUDE_DIR LevelDB_MemEnv_FOUND
95
+ # select_library_configurations sets <name>_FOUND from library presence.
96
+ # Keep the actual link probes separate so an unusable helper cannot pass.
97
+ REQUIRED_VARS LevelDB_LIBRARY LevelDB_INCLUDE_DIR LevelDB_MemEnv_INCLUDE_DIR
98
+ LevelDB_MemEnv_LINKABLE
87
99
  )
88
100
 
89
101
  if(LevelDB_FOUND)