Skip to content

Commit 60796b6

Browse files
authored
Merge pull request #1542 from Idclip/cmake_fixes
Switched to automatically generating CMake ABI options
2 parents 4dc19b1 + 9f22545 commit 60796b6

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

CMakeLists.txt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,7 @@ Disable CMakes default system search paths when locating dependencies. When enab
135135
its default system search routine if it cannot find a dependency with the provided settings. When disabled, only
136136
paths provided through the Xxx_ROOT, supported XXX_INCLUDEDIR/XXX_LIBRARYDIR variables or the SYSTEM_LIBRARY_PATHS
137137
list will be searched.]=] OFF)
138-
option(OPENVDB_USE_DEPRECATED_ABI_7 "Bypass minimum ABI requirement checks" OFF)
139-
option(OPENVDB_USE_DEPRECATED_ABI_8 "Bypass minimum ABI requirement checks" OFF)
140-
option(OPENVDB_USE_FUTURE_ABI_10 "Bypass future ABI check" OFF)
138+
141139
option(OPENVDB_FUTURE_DEPRECATION "Generate messages for upcoming deprecation" ON)
142140
option(OPENVDB_ENABLE_UNINSTALL "Adds a CMake uninstall target." ON)
143141
option(USE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." OFF)
@@ -251,9 +249,6 @@ mark_as_advanced(
251249
OPENVDB_USE_DELAYED_LOADING
252250
OPENVDB_FUTURE_DEPRECATION
253251
OPENVDB_SIMD
254-
OPENVDB_USE_DEPRECATED_ABI_7
255-
OPENVDB_USE_DEPRECATED_ABI_8
256-
OPENVDB_USE_FUTURE_ABI_10
257252
SYSTEM_LIBRARY_PATHS
258253
USE_CCACHE
259254
USE_COLORED_OUTPUT
@@ -270,6 +265,13 @@ mark_as_advanced(
270265

271266
include(cmake/config/OpenVDBVersions.cmake)
272267

268+
foreach(DEPRECATED_ABI ${OPENVDB_DEPRECATED_ABI_LIST})
269+
option(OPENVDB_USE_DEPRECATED_ABI_${DEPRECATED_ABI} "Bypass minimum ABI requirement checks" OFF)
270+
mark_as_advanced(OPENVDB_USE_DEPRECATED_ABI_${DEPRECATED_ABI})
271+
endforeach()
272+
option(OPENVDB_USE_FUTURE_ABI_${FUTURE_OPENVDB_ABI_VERSION} "Bypass future ABI check" OFF)
273+
mark_as_advanced(OPENVDB_USE_FUTURE_ABI_${FUTURE_OPENVDB_ABI_VERSION})
274+
273275
#########################################################################
274276

275277
enable_testing()
@@ -486,14 +488,14 @@ if(OpenVDB_ABI LESS MINIMUM_OPENVDB_ABI_VERSION)
486488
"no longer supported.")
487489
endif()
488490

489-
if(FUTURE_MINIMUM_OPENVDB_ABI_VERSION AND OpenVDB_ABI LESS FUTURE_MINIMUM_OPENVDB_ABI_VERSION)
491+
if(OpenVDB_ABI IN_LIST OPENVDB_DEPRECATED_ABI_LIST)
490492
if(NOT OPENVDB_USE_DEPRECATED_ABI_${OpenVDB_ABI})
491-
message(FATAL_ERROR "OpenVDB ABI versions earlier than ${FUTURE_MINIMUM_OPENVDB_ABI_VERSION} "
493+
message(FATAL_ERROR "OpenVDB ABI versions earlier than ${OpenVDB_MAJOR_VERSION} "
492494
"are deprecated. Set CMake option OPENVDB_USE_DEPRECATED_ABI_${OpenVDB_ABI} to ON to "
493495
"suppress this error.")
494496
endif()
495497

496-
message(DEPRECATION "OpenVDB ABI versions earlier than ${FUTURE_MINIMUM_OPENVDB_ABI_VERSION} "
498+
message(DEPRECATION "OpenVDB ABI versions earlier than ${OpenVDB_MAJOR_VERSION} "
497499
"are deprecated and will soon be removed.")
498500
# global target definition
499501
add_definitions(-DOPENVDB_USE_DEPRECATED_ABI_${OpenVDB_ABI})

cmake/config/OpenVDBVersions.cmake

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@ set(MINIMUM_CXX_STANDARD 17)
1818

1919
# @note ABI always enforced so the correct deprecation messages are available.
2020
# OPENVDB_USE_DEPRECATED_ABI_<VERSION> should be used to circumvent this
21-
set(MINIMUM_OPENVDB_ABI_VERSION 8)
22-
set(FUTURE_MINIMUM_OPENVDB_ABI_VERSION 10)
23-
set(FUTURE_OPENVDB_ABI_VERSION 11)
21+
math(EXPR MINIMUM_OPENVDB_ABI_VERSION "${OpenVDB_MAJOR_VERSION}-2")
22+
math(EXPR FUTURE_OPENVDB_ABI_VERSION "${OpenVDB_MAJOR_VERSION}+1")
23+
24+
# List of deprecated but supported OpenVDB ABIs for this version of OpenVDB
25+
math(EXPR _PREV_ABI "${OpenVDB_MAJOR_VERSION}-1")
26+
set(OPENVDB_DEPRECATED_ABI_LIST ${MINIMUM_OPENVDB_ABI_VERSION} ${_PREV_ABI})
27+
unset(_PREV_ABI)
2428

2529
if(NOT DISABLE_DEPENDENCY_VERSION_CHECKS)
2630
# @note Currently tracking CY2021 of the VFX platform where available

0 commit comments

Comments
 (0)