Skip to content

Commit a7de848

Browse files
committed
CMakeLists.txt:detect Clang/LLVM-based compiler
1 parent 7682dee commit a7de848

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

CMakeLists.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,46 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SIZEOF_VOID_P EQUAL 4)
322322
)
323323
endif()
324324

325+
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
326+
message(STATUS "Using Clang compiler.")
327+
message(STATUS "Clang version: ${CMAKE_CXX_COMPILER_VERSION}")
328+
329+
# You can also perform version-specific checks
330+
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "14.0.0")
331+
message(STATUS "Clang is version 14.0.0 or newer.")
332+
# Add Clang 14+ specific options
333+
else()
334+
message(STATUS "Clang is older than 14.0.0.")
335+
# Add options for older Clang versions
336+
endif()
337+
338+
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
339+
message(STATUS "Using Apple Clang compiler.")
340+
message(STATUS "Apple Clang version: ${CMAKE_CXX_COMPILER_VERSION}")
341+
# Specific logic for Apple Clang
342+
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
343+
message(STATUS "Using GNU (GCC) compiler.")
344+
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
345+
message(STATUS "Using Microsoft Visual C++ compiler.")
346+
else()
347+
message(STATUS "Unknown compiler ID: ${CMAKE_CXX_COMPILER_ID}")
348+
endif()
349+
350+
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
351+
message(STATUS "Detected LLVM-based compiler (Clang/AppleClang) version: ${CMAKE_CXX_COMPILER_VERSION}")
352+
353+
# You can then use this version for conditional logic
354+
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "18.0.0")
355+
message(STATUS "LLVM version is 18.0.0 or newer.")
356+
# Add features/flags for newer LLVM
357+
else()
358+
message(STATUS "LLVM version is older than 18.0.0.")
359+
# Add features/flags for older LLVM
360+
endif()
361+
else()
362+
message(STATUS "Not using a Clang/LLVM-based compiler (Compiler ID: ${CMAKE_CXX_COMPILER_ID})")
363+
endif()
364+
325365
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
326366
target_compile_definitions(core_interface INTERFACE OBJC_OLD_DISPATCH_PROTOTYPES=0)
327367
# These flags are specific to ld64, and may cause issues with other linkers.

0 commit comments

Comments
 (0)