Compare commits

...

2 commits

Author SHA1 Message Date
Andrew Kaster
061d36d603
Merge e467b38d3d into 63a5717bc7 2024-11-20 16:09:04 -05:00
Andrew Kaster
e467b38d3d CMake: Check for Swift-aware C++ compiler more robustly
Instead of looking for "AppleClang", we can just check whether the
CMAKE_CXX_COMPILER understands swift_attr and swift_name.
2024-11-20 10:47:03 -07:00

View file

@ -1,16 +1,17 @@
enable_language(Swift) enable_language(Swift)
if (CMAKE_Swift_COMPILER_VERSION VERSION_LESS 6.0) if (CMAKE_Swift_COMPILER_VERSION VERSION_LESS 6.0)
message(FATAL_ERROR message(FATAL_ERROR "Swift 6.0 or newer is required to parse C++ headers in C++23 mode")
"Swift 6.0 or newer is required to parse C++ headers in C++23 mode"
)
endif() endif()
# FIXME: How to verify this on non-Apple? # Check for a Swift-aware clang
if (APPLE AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") include(CheckCXXSourceCompiles)
message(FATAL_ERROR check_cxx_source_compiles([=[
"Swift files must use Clang that was bundled with swiftc" struct __attribute__((swift_name("CxxS"))) __attribute__((swift_attr("~Copyable"))) S { int& x; };
) int main() {}
]=] CXX_COMPILER_SUPPORTS_SWIFT_ATTRS)
if (NOT CXX_COMPILER_SUPPORTS_SWIFT_ATTRS)
message(FATAL_ERROR "A Swift-aware C++ compiler is required to build with Swift interop enabled")
endif() endif()
include(${CMAKE_CURRENT_LIST_DIR}/InitializeSwift.cmake) include(${CMAKE_CURRENT_LIST_DIR}/InitializeSwift.cmake)