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. Before is on the left; after is on the right. Unified view fits narrow screens more easily.

cmake/module/FindLevelDB.cmake CHANGED
@@ -53,7 +53,7 @@ function(find_leveldb_libs release_type suffixes _LevelDB_lib_hint)
53
  _try_leveldb_compile("${LevelDB_LIBRARY_${release_type}}" "LevelDB_memenv_works_without_helper_lib_${release_type}")
54
  if(LevelDB_memenv_works_without_helper_lib_${release_type})
55
  set("LevelDB_MemEnv_LIBRARY_${release_type}" "" CACHE STRING "")
56
- set(LevelDB_MemEnv_FOUND ON CACHE INTERNAL "")
57
  else()
58
  find_library("LevelDB_MemEnv_LIBRARY_${release_type}"
59
  NAMES memenv
@@ -63,9 +63,9 @@ function(find_leveldb_libs release_type suffixes _LevelDB_lib_hint)
63
 
64
  set(libs ${LevelDB_LIBRARY_${release_type}} ${LevelDB_MemEnv_LIBRARY_${release_type}})
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()
69
  endif()
70
  mark_as_advanced("LevelDB_MemEnv_LIBRARY_${release_type}")
71
  endfunction()
@@ -81,9 +81,21 @@ include(SelectLibraryConfigurations)
81
  select_library_configurations(LevelDB)
82
  select_library_configurations(LevelDB_MemEnv)
83
 
 
 
 
 
 
 
 
 
 
84
  include(FindPackageHandleStandardArgs)
85
  find_package_handle_standard_args(LevelDB
86
- REQUIRED_VARS LevelDB_LIBRARY LevelDB_INCLUDE_DIR LevelDB_MemEnv_INCLUDE_DIR LevelDB_MemEnv_FOUND
 
 
 
87
  )
88
 
89
  if(LevelDB_FOUND)
 
53
  _try_leveldb_compile("${LevelDB_LIBRARY_${release_type}}" "LevelDB_memenv_works_without_helper_lib_${release_type}")
54
  if(LevelDB_memenv_works_without_helper_lib_${release_type})
55
  set("LevelDB_MemEnv_LIBRARY_${release_type}" "" CACHE STRING "")
56
+ set("LevelDB_MemEnv_LINKABLE_${release_type}" ON PARENT_SCOPE)
57
  else()
58
  find_library("LevelDB_MemEnv_LIBRARY_${release_type}"
59
  NAMES memenv
 
63
 
64
  set(libs ${LevelDB_LIBRARY_${release_type}} ${LevelDB_MemEnv_LIBRARY_${release_type}})
65
  _try_leveldb_compile("${libs}" "LevelDB_memenv_works_with_helper_lib_${release_type}")
66
+ set("LevelDB_MemEnv_LINKABLE_${release_type}"
67
+ "${LevelDB_memenv_works_with_helper_lib_${release_type}}" PARENT_SCOPE
68
+ )
69
  endif()
70
  mark_as_advanced("LevelDB_MemEnv_LIBRARY_${release_type}")
71
  endfunction()
 
81
  select_library_configurations(LevelDB)
82
  select_library_configurations(LevelDB_MemEnv)
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
+
93
  include(FindPackageHandleStandardArgs)
94
  find_package_handle_standard_args(LevelDB
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
99
  )
100
 
101
  if(LevelDB_FOUND)