diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e71bf3ce80..f14d12bf9d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,7 +123,7 @@ if(CMAKE_COMPILER_IS_GNUCC) The minimum supported version of GCC is 11.0.0, found ${CMAKE_C_COMPILER_VERSION}" ) endif() -elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang") +elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") if(CMAKE_COMPILER_IS_GNUCC AND ("${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "8.0")) message(FATAL_ERROR "\ The minimum supported version of CLANG is 8.0, found ${CMAKE_C_COMPILER_VERSION}" @@ -913,7 +913,7 @@ if(UNIX) option(WITH_LINKER_GOLD "Use ld.gold linker which is usually faster than ld.bfd" ON) mark_as_advanced(WITH_LINKER_GOLD) endif() - if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") option(WITH_LINKER_LLD "Use ld.lld linker which is usually faster than ld.gold" OFF) mark_as_advanced(WITH_LINKER_LLD) option(WITH_LINKER_MOLD "Use ld.mold linker which is usually faster than ld.gold & ld.lld" OFF) @@ -933,7 +933,7 @@ Can cause linking issues due to too large binary size." ) mark_as_advanced(WITH_COMPILER_ASAN_EXTERN) -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") if(WITH_COMPILER_ASAN) set(_asan_defaults "\ -fsanitize=address \ @@ -1008,7 +1008,7 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") endif() endif() -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") option(WITH_COMPILER_SHORT_FILE_MACRO "\ Make paths in macros like __FILE__ relative to top level source and build directories." ON @@ -1941,7 +1941,8 @@ if(CMAKE_COMPILER_IS_GNUCC) ) endif() -elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang") +elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") + # Matches both "Clang" & "AppleClang" on macOS. add_check_c_compiler_flags( C_WARNINGS @@ -2174,7 +2175,7 @@ endif() # Clang on windows copies this behavior and does not support these switches if( CMAKE_COMPILER_IS_GNUCC OR - (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND (NOT MSVC)) OR + (CMAKE_C_COMPILER_ID MATCHES "Clang" AND (NOT MSVC)) OR (CMAKE_C_COMPILER_ID STREQUAL "Intel") ) # Use C11 + GNU extensions, works with GCC, Clang, ICC diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 9edde52d0fb..803c15a5b25 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -542,7 +542,7 @@ macro(TEST_SSE_SUPPORT include(CheckCSourceRuns) # message(STATUS "Detecting SSE support") - if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID STREQUAL "Clang")) + if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang")) set(${_sse_flags} "-msse") set(${_sse2_flags} "-msse2") elseif(MSVC) @@ -679,7 +679,7 @@ macro(remove_strict_flags) add_cxx_flag("${CXX_REMOVE_STRICT_FLAGS}") endif() - if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + if(CMAKE_C_COMPILER_ID MATCHES "Clang") remove_cc_flag( "-Wunused-parameter" "-Wunused-variable" @@ -710,7 +710,7 @@ macro(remove_extra_strict_flags) ) endif() - if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + if(CMAKE_C_COMPILER_ID MATCHES "Clang") remove_cc_flag( "-Wunused-parameter" ) @@ -731,7 +731,7 @@ macro(remove_strict_c_flags_file filenames) foreach(_SOURCE ${ARGV}) if(CMAKE_COMPILER_IS_GNUCC OR - (CMAKE_C_COMPILER_ID STREQUAL "Clang")) + (CMAKE_C_COMPILER_ID MATCHES "Clang")) set_source_files_properties( ${_SOURCE} PROPERTIES COMPILE_FLAGS "${C_REMOVE_STRICT_FLAGS}" @@ -749,7 +749,7 @@ macro(remove_strict_cxx_flags_file remove_strict_c_flags_file(${filenames} ${ARHV}) foreach(_SOURCE ${ARGV}) if(CMAKE_COMPILER_IS_GNUCC OR - (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")) + (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) set_source_files_properties( ${_SOURCE} PROPERTIES COMPILE_FLAGS "${CXX_REMOVE_STRICT_FLAGS}" @@ -765,7 +765,7 @@ endmacro() # External libs may need 'signed char' to be default. macro(remove_cc_flag_unsigned_char) if(CMAKE_COMPILER_IS_GNUCC OR - (CMAKE_C_COMPILER_ID STREQUAL "Clang") OR + (CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "Intel")) remove_cc_flag("-funsigned-char") elseif(MSVC) diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index e0fe8bb9722..2e381d33f8c 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -350,7 +350,7 @@ endif() # CMake FindOpenMP doesn't know about AppleClang before 3.12, so provide custom flags. if(WITH_OPENMP) - if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + if(CMAKE_C_COMPILER_ID MATCHES "Clang") # Use OpenMP from our precompiled libraries. message(STATUS "Using ${LIBDIR}/openmp for OpenMP") set(OPENMP_CUSTOM ON) @@ -408,7 +408,7 @@ set(CMAKE_CXX_FLAGS_DEBUG "-g") if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386") set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3") set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3") - if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") + if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang") string(APPEND CMAKE_C_FLAGS_RELEASE " -ftree-vectorize -fvariable-expansion-in-unroller") string(APPEND CMAKE_CXX_FLAGS_RELEASE " -ftree-vectorize -fvariable-expansion-in-unroller") endif() diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index f2dcfd0b7e3..f9c41685663 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -997,7 +997,7 @@ if(CMAKE_COMPILER_IS_GNUCC) endif() # CLang is the same as GCC for now. -elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang") +elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -ffp-contract=off") if(WITH_LINKER_MOLD AND _IS_LINKER_DEFAULT) diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 70e956d4ece..a5366e4c8e0 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -10,7 +10,7 @@ if(NOT MSVC) message(FATAL_ERROR "Compiler is unsupported") endif() -if(CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_C_COMPILER_ID MATCHES "Clang") set(MSVC_CLANG ON) set(VC_TOOLS_DIR $ENV{VCToolsRedistDir} CACHE STRING "Location of the msvc redistributables") set(MSVC_REDIST_DIR ${VC_TOOLS_DIR}) diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 3c727446836..30842f32441 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -14,7 +14,7 @@ if(CMAKE_COMPILER_IS_GNUCC) remove_cc_flag( "-Wmisleading-indentation" ) -elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang") +elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") remove_cc_flag( "-Weverything" ) diff --git a/extern/bullet2/CMakeLists.txt b/extern/bullet2/CMakeLists.txt index 63a49231eb6..6f90869d990 100644 --- a/extern/bullet2/CMakeLists.txt +++ b/extern/bullet2/CMakeLists.txt @@ -3,7 +3,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later # avoid noisy warnings -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") remove_cc_flag( "-Wall" ) diff --git a/extern/lzma/CMakeLists.txt b/extern/lzma/CMakeLists.txt index d73b4a6605e..fdee58401df 100644 --- a/extern/lzma/CMakeLists.txt +++ b/extern/lzma/CMakeLists.txt @@ -3,7 +3,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later # avoid noisy warnings -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") add_c_flag( "-Wno-self-assign" ) diff --git a/extern/quadriflow/CMakeLists.txt b/extern/quadriflow/CMakeLists.txt index b363e3cfc13..d918fbfe950 100644 --- a/extern/quadriflow/CMakeLists.txt +++ b/extern/quadriflow/CMakeLists.txt @@ -3,7 +3,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later # avoid noisy warnings -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") add_c_flag( "-Wno-unused-result" ) diff --git a/extern/vulkan_memory_allocator/CMakeLists.txt b/extern/vulkan_memory_allocator/CMakeLists.txt index b6af2238009..cc3220695e0 100644 --- a/extern/vulkan_memory_allocator/CMakeLists.txt +++ b/extern/vulkan_memory_allocator/CMakeLists.txt @@ -27,7 +27,7 @@ set(LIB blender_add_lib(extern_vulkan_memory_allocator "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") target_compile_options(extern_vulkan_memory_allocator PRIVATE "-Wno-nullability-completeness" ) diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt index 9f4a18efef5..3442ab285be 100644 --- a/intern/cycles/CMakeLists.txt +++ b/intern/cycles/CMakeLists.txt @@ -77,7 +77,7 @@ elseif(NOT WITH_CPU_SIMD OR (SUPPORT_NEON_BUILD AND SSE2NEON_FOUND)) set(CXX_HAS_SSE42 FALSE) set(CXX_HAS_AVX FALSE) set(CXX_HAS_AVX2 FALSE) -elseif(WIN32 AND MSVC AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang") +elseif(WIN32 AND MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CXX_HAS_SSE42 TRUE) set(CXX_HAS_AVX TRUE) set(CXX_HAS_AVX2 TRUE) @@ -116,7 +116,7 @@ elseif(WIN32 AND MSVC AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang") string(APPEND CMAKE_CXX_FLAGS_RELEASE " /Ox") string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " /Ox") string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL " /Ox") -elseif(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")) +elseif(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) check_cxx_compiler_flag(-msse4.2 CXX_HAS_SSE42) check_cxx_compiler_flag(-mavx CXX_HAS_AVX) check_cxx_compiler_flag(-mavx2 CXX_HAS_AVX2) @@ -398,7 +398,7 @@ else() endif() # Warnings -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang") add_check_cxx_compiler_flags( CMAKE_CXX_FLAGS _has_no_error_unused_macros "-Wno-error=unused-macros" diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt index 3deccd425df..8ef143c69bb 100644 --- a/intern/cycles/kernel/CMakeLists.txt +++ b/intern/cycles/kernel/CMakeLists.txt @@ -1152,7 +1152,7 @@ if(WITH_COMPILER_ASAN) # GCC hangs compiling the big kernel files with asan and release, so disable by default. string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -fno-sanitize=all") string(APPEND CMAKE_CXX_FLAGS_DEBUG " -fno-sanitize=vptr") - elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang") + elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") # With OSL, Cycles disables rtti in some modules, which then breaks at linking # when trying to use vptr sanitizer (included into 'undefined' general option). string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -fno-sanitize=vptr") @@ -1171,7 +1171,7 @@ if(CXX_HAS_AVX2) endif() # Warnings to avoid using doubles in the kernel. -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang") add_check_cxx_compiler_flags( CMAKE_CXX_FLAGS _has_cxxflag_float_conversion "-Werror=float-conversion" diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index 05abc77e92e..92e7cbf1617 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -382,7 +382,7 @@ elseif(WITH_GHOST_X11 OR WITH_GHOST_WAYLAND) DEPENDS ${INC_DST}/${_name}-client-protocol.h ) - if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + if(CMAKE_C_COMPILER_ID MATCHES "Clang") # Prevent warnings/failure to compile with generated `WL_PRIVATE` declarations. set_source_files_properties( "${INC_DST}/${_name}-client-protocol.c" diff --git a/source/blender/io/usd/CMakeLists.txt b/source/blender/io/usd/CMakeLists.txt index eaf2944ecbf..fb527627a6f 100644 --- a/source/blender/io/usd/CMakeLists.txt +++ b/source/blender/io/usd/CMakeLists.txt @@ -18,7 +18,7 @@ add_definitions(-DBOOST_ALL_NO_LIB) # which lead to an incompatible ABI for Clang. Using those extensions with # Clang as well works around the issue. if(UNIX AND NOT APPLE) - if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + if(CMAKE_C_COMPILER_ID MATCHES "Clang") if(DEFINED LIBDIR) add_definitions(-DARCH_HAS_GNU_STL_EXTENSIONS) endif() diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index b20b555ec02..3d1540c5a8e 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -157,11 +157,11 @@ set_source_files_properties(${GENSRC} PROPERTIES GENERATED TRUE) set(GENSRC_FLAGS) set(GENSRC_CFLAGS) set(GENSRC_CXXFLAGS) -if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID STREQUAL "Clang")) +if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang")) set(GENSRC_CFLAGS "-Wno-missing-prototypes") set(GENSRC_CXXFLAGS "-Wno-missing-declarations") endif() -if(CMAKE_C_COMPILER_ID STREQUAL "Clang") +if(CMAKE_C_COMPILER_ID MATCHES "Clang") string(APPEND GENSRC_FLAGS " -Wno-missing-variable-declarations") elseif(MSVC) remove_cc_flag( diff --git a/source/blender/render/hydra/CMakeLists.txt b/source/blender/render/hydra/CMakeLists.txt index 772f6fa6806..dca5b0c03cb 100644 --- a/source/blender/render/hydra/CMakeLists.txt +++ b/source/blender/render/hydra/CMakeLists.txt @@ -18,7 +18,7 @@ add_definitions(-DBOOST_ALL_NO_LIB) # which lead to an incompatible ABI for Clang. Using those extensions with # Clang as well works around the issue. if(UNIX AND NOT APPLE) - if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + if(CMAKE_C_COMPILER_ID MATCHES "Clang") if(DEFINED LIBDIR) add_definitions(-DARCH_HAS_GNU_STL_EXTENSIONS) endif()