Repository navigation
Build with CMake 4 and current compilers - #12
Merged
Merged
Conversation
TileDB and the SDKs it builds now build with CMake 4, GCC 15, clang 21 and Apple clang 21 without local patches or environment settings. The SDK versions are unchanged. - Give the SDK builds TileDB's compilers and macOS deployment target, and CMAKE_POLICY_VERSION_MINIMUM=3.5, since CMake 4 refuses their cmake_minimum_required() of less than 3.5. google-cloud-cpp also gets TileDB's OpenSSL, instead of insisting on the OPENSSL_ROOT_DIR environment variable on macOS. - Add the standard includes the AWS SDK relied on older compilers to pull in, stop treating google-cloud-cpp's warnings as errors, and stop treating azure-storage-cpplite's NULL-as-std::string warning, in code TileDB never calls, as an error. The OpenSSL shim includes the headers it uses. - Apply the clang warning flags for clang on any platform, not just on macOS. - Update only TileDB's own submodules at configure time; as a subproject it reset every submodule of the parent project. - Keep Kernel.framework out of the libuuid lookup on macOS, where its headers shadowed the SDK's C headers. - Let the examples configure when TILEDB_DISABLE_TESTS is set.
This was referenced Oct 5, 2026
nalinigans
requested changes
Oct 9, 2026
| if(APPLE) | ||
| include(FindPackageHandleStandardArgs) | ||
| find_package_handle_standard_args(libuuid "Could not find libuuid headers ${DEFAULT_MSG}" LIBUUID_INCLUDE_DIR) | ||
| else() |
Member
There was a problem hiding this comment.
Is this meant to be a dangling else() or do we need to indent the following lines?
Contributor
Author
There was a problem hiding this comment.
Not dangling: everything down to endif() is still the non-Apple branch. Those lines were never indented on main, and with the duplicate find_path moved above the if, else() looked empty. I've indented them in 7eef531.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TileDB doesn't build with current toolchains: under CMake 4 the SDK builds fail to configure, because CMake 4 refuses their
cmake_minimum_required()of less than 3.5, and newer compilers stop on azure-storage-cpplite, the AWS SDK and google-cloud-cpp. With this, TileDB and its SDKs build with CMake 4, GCC 15, clang 21 and Apple clang 21 without local patches or environment settings, and the SDK versions are unchanged. The SDK builds get TileDB's compilers, macOS deployment target andCMAKE_POLICY_VERSION_MINIMUM=3.5, and google-cloud-cpp gets TileDB's OpenSSL instead of requiring theOPENSSL_ROOT_DIRenvironment variable on macOS. The AWS SDK gets the standard includes it relied on older compilers to pull in, google-cloud-cpp's warnings are no longer errors, and azure-storage-cpplite's NULL-as-std::stringwarning, in code TileDB never calls, is no longer an error.It also fixes three things that bite when TileDB is built as a subproject or on macOS: configuring TileDB updated every submodule of the parent project rather than only its own, the libuuid lookup could pick up
Kernel.framework, whose headers shadow the SDK's C headers, and the examples failed to configure withTILEDB_DISABLE_TESTS. The clang warning flags now apply to clang on any platform, not just macOS.Checked with clean builds, SDKs included: on macOS arm64 with CMake 4.4 and Apple clang 21, and on Linux aarch64 in an AlmaLinux 8 container with CMake 4.4, GCC 15.2 and clang 21. Every test passes, though on aarch64 the examples also need #11. On
main, the same macOS build stops at the SDK configure steps and at azure-storage-cpplite.