aboutsummaryrefslogtreecommitdiff
path: root/c/cmake
diff options
context:
space:
mode:
authorsilvanshade <[email protected]>2025-04-24 10:25:26 -0600
committerHenrik Gaßmann <[email protected]>2025-04-30 09:30:01 +0200
commite447201e25092b26a3af9eb012f2d497b52fb536 (patch)
tree7140a87e549d2b7f5daa030fee28c71b7b81bad1 /c/cmake
parentcd6e3e4dd9a9518be45ef742606462ddfb0f3cfd (diff)
Relax Clang frontend variant detection
This allows Clang frontend variant detection to work better in more scenarios such as when compiling with cross-compilers with platform prefixes.
Diffstat (limited to 'c/cmake')
-rw-r--r--c/cmake/BLAKE3/Utils.cmake21
1 files changed, 21 insertions, 0 deletions
diff --git a/c/cmake/BLAKE3/Utils.cmake b/c/cmake/BLAKE3/Utils.cmake
new file mode 100644
index 0000000..7cadf84
--- /dev/null
+++ b/c/cmake/BLAKE3/Utils.cmake
@@ -0,0 +1,21 @@
+if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.10)
+ include_guard(GLOBAL)
+endif()
+
+if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
+ set(BLAKE3_CXX_COMPILER_FRONTEND_VARIANT ${CMAKE_CXX_COMPILER_FRONTEND_VARIANT})
+else()
+ # Get the C++ compiler name without extension
+ get_filename_component(BLAKE3_CMAKE_CXX_COMPILER_NAME "${CMAKE_CXX_COMPILER}" NAME_WE)
+ # Strip any trailing versioning from the C++ compiler name
+ string(REGEX MATCH "^.*(clang\\+\\+|clang-cl)" BLAKE3_CMAKE_CXX_COMPILER_NAME "${BLAKE3_CMAKE_CXX_COMPILER_NAME}")
+ # Guess the frontend variant from the C++ compiler name
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND BLAKE3_CMAKE_CXX_COMPILER_NAME STREQUAL "clang-cl")
+ set(BLAKE3_CXX_COMPILER_FRONTEND_VARIANT "MSVC")
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ set(BLAKE3_CXX_COMPILER_FRONTEND_VARIANT "MSVC")
+ else()
+ set(BLAKE3_CXX_COMPILER_FRONTEND_VARIANT "GNU")
+ endif()
+ unset(BLAKE3_CMAKE_CXX_COMPILER_NAME)
+endif()