diff options
| author | silvanshade <[email protected]> | 2025-04-24 10:25:26 -0600 |
|---|---|---|
| committer | Henrik Gaßmann <[email protected]> | 2025-04-30 09:30:01 +0200 |
| commit | e447201e25092b26a3af9eb012f2d497b52fb536 (patch) | |
| tree | 7140a87e549d2b7f5daa030fee28c71b7b81bad1 /c/cmake | |
| parent | cd6e3e4dd9a9518be45ef742606462ddfb0f3cfd (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.cmake | 21 |
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() |
