Skip to content

Commit 63195d3

Browse files
authored
[NFC][CMake] quote ${CMAKE_SYSTEM_NAME} consistently (#154537)
A CMake change included in CMake 4.0 makes `AIX` into a variable (similar to `APPLE`, etc.) https://gitlab.kitware.com/cmake/cmake/-/commit/ff03db6657c38c8cf992877ea66174c33d0bcb0b However, `${CMAKE_SYSTEM_NAME}` unfortunately also expands exactly to `AIX` and `if` auto-expands variable names in CMake. That means you get a double expansion if you write: `if (${CMAKE_SYSTEM_NAME} MATCHES "AIX")` which becomes: `if (AIX MATCHES "AIX")` which is as if you wrote: `if (ON MATCHES "AIX")` You can prevent this by quoting the expansion of "${CMAKE_SYSTEM_NAME}", due to policy [CMP0054](https://cmake.org/cmake/help/latest/policy/CMP0054.html#policy:CMP0054) which is on by default in 4.0+. Most of the LLVM CMake already does this, but this PR fixes the remaining cases where we do not.
1 parent fdfcebb commit 63195d3

File tree

31 files changed

+81
-76
lines changed

31 files changed

+81
-76
lines changed

clang-tools-extra/clangd/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ add_subdirectory(support)
66

77
# Configure the Features.inc file.
88
if (NOT DEFINED CLANGD_BUILD_XPC)
9-
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
9+
if("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
1010
set(CLANGD_BUILD_XPC_DEFAULT ON)
1111
else ()
1212
set(CLANGD_BUILD_XPC_DEFAULT OFF)
@@ -193,7 +193,7 @@ if(CLANGD_TIDY_CHECKS)
193193
endif()
194194

195195
add_subdirectory(refactor/tweaks)
196-
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
196+
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
197197
# FIXME: Make fuzzer not use linux-specific APIs, build it everywhere.
198198
add_subdirectory(fuzzer)
199199
endif()

clang/bindings/python/tests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ if(WIN32)
3535
endif()
3636

3737
# The Python FFI interface is broken on AIX: https://bugs.python.org/issue38628.
38-
if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
38+
if("${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
3939
set(RUN_PYTHON_TESTS FALSE)
4040
endif()
4141

clang/tools/libclang/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ if(MSVC)
9393
set(LLVM_EXPORTED_SYMBOL_FILE)
9494
endif()
9595

96-
if (UNIX AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND NOT CYGWIN)
96+
if (UNIX AND NOT APPLE AND NOT "${CMAKE_SYSTEM_NAME}" MATCHES "AIX" AND NOT CYGWIN)
9797
set(LLVM_EXPORTED_SYMBOL_FILE)
9898
set(USE_VERSION_SCRIPT ${LLVM_HAVE_LINK_VERSION_SCRIPT})
9999
endif()
@@ -125,7 +125,7 @@ else()
125125
set(output_name "clang")
126126
endif()
127127

128-
if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
128+
if (UNIX AND "${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
129129
set(CMAKE_AIX_EXPORT_ALL_SYMBOLS OFF)
130130
# libclang requires headers which need _ALL_SOURCE to build on AIX
131131
remove_definitions("-D_XOPEN_SOURCE=700")
@@ -186,7 +186,7 @@ if(ENABLE_SHARED)
186186
endif()
187187
endif()
188188
if (USE_VERSION_SCRIPT)
189-
if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
189+
if ("${CMAKE_SYSTEM_NAME}" MATCHES "SunOS")
190190
include(CheckLinkerFlag)
191191
# The Solaris 11.4 linker supports a subset of GNU ld version scripts,
192192
# but requires a special option to enable it.

compiler-rt/cmake/config-ix.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ check_library_exists(stdc++ __cxa_throw "" COMPILER_RT_HAS_LIBSTDCXX)
204204
llvm_check_compiler_linker_flag(C "-Wl,-z,text" COMPILER_RT_HAS_Z_TEXT)
205205
llvm_check_compiler_linker_flag(C "-fuse-ld=lld" COMPILER_RT_HAS_FUSE_LD_LLD_FLAG)
206206

207-
if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS" AND LLVM_LINKER_IS_SOLARISLD)
207+
if("${CMAKE_SYSTEM_NAME}" MATCHES "SunOS" AND LLVM_LINKER_IS_SOLARISLD)
208208
set(VERS_COMPAT_OPTION "-Wl,-z,gnu-version-script-compat")
209209
llvm_check_compiler_linker_flag(C "${VERS_COMPAT_OPTION}" COMPILER_RT_HAS_GNU_VERSION_SCRIPT_COMPAT)
210210
endif()

compiler-rt/lib/asan/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ else()
282282
endif()
283283

284284
# On AIX, we only need the static libraries.
285-
if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
285+
if (NOT "${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
286286
foreach(arch ${ASAN_SUPPORTED_ARCH})
287287
if (COMPILER_RT_HAS_VERSION_SCRIPT)
288288
if(WIN32)
@@ -392,7 +392,7 @@ add_compiler_rt_resource_file(asan_ignorelist asan_ignorelist.txt asan)
392392
# On AIX, static sanitizer libraries are not added to the DSO, so we need to put
393393
# asan.link_with_main_exec.txt and asan_cxx.link_with_main_exec.txt to the build
394394
# and install dir for use in resolving undefined sanitizer symbols at runtime.
395-
if (${CMAKE_SYSTEM_NAME} MATCHES "AIX")
395+
if ("${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
396396
foreach(arch ${ASAN_SUPPORTED_ARCH})
397397
add_compiler_rt_cfg(asan_symbols_${arch} asan.link_with_main_exec.txt asan ${arch})
398398
add_compiler_rt_cfg(asan_cxx_symbols_${arch} asan_cxx.link_with_main_exec.txt asan ${arch})

libcxx/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ option(LIBCXX_ENABLE_MONOTONIC_CLOCK
113113
#
114114
# TODO TZDB make the default always ON when most platforms ship with the IANA
115115
# database.
116-
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
116+
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
117117
set(ENABLE_TIME_ZONE_DATABASE_DEFAULT ON)
118118
else()
119119
set(ENABLE_TIME_ZONE_DATABASE_DEFAULT OFF)
@@ -159,7 +159,7 @@ set(LIBCXX_TEST_PARAMS "" CACHE STRING
159159
"A list of parameters to run the Lit test suite with.")
160160

161161
# TODO: Figure out how to build GoogleBenchmark on those platforms, and how to build when exceptions or RTTI is disabled
162-
if (WIN32 OR MINGW OR ANDROID OR ${CMAKE_SYSTEM_NAME} MATCHES "AIX"
162+
if (WIN32 OR MINGW OR ANDROID OR "${CMAKE_SYSTEM_NAME}" MATCHES "AIX"
163163
OR NOT LIBCXX_ENABLE_LOCALIZATION
164164
OR NOT LIBCXX_ENABLE_THREADS
165165
OR NOT LIBCXX_ENABLE_FILESYSTEM
@@ -466,7 +466,7 @@ include(HandleLibcxxFlags)
466466
# 'config-ix' use them during feature checks. It also adds them to both
467467
# 'LIBCXX_COMPILE_FLAGS' and 'LIBCXX_LINK_FLAGS'
468468

469-
if (${CMAKE_SYSTEM_NAME} MATCHES "AIX")
469+
if ("${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
470470
add_flags_if_supported("-mdefault-visibility-export-mapping=explicit")
471471
set(CMAKE_AIX_EXPORT_ALL_SYMBOLS OFF)
472472
endif()

libcxxabi/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ include(HandleLibcxxabiFlags)
244244
#===============================================================================
245245

246246
# Configure target flags
247-
if (${CMAKE_SYSTEM_NAME} MATCHES "AIX")
247+
if ("${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
248248
add_flags_if_supported("-mdefault-visibility-export-mapping=explicit")
249249
set(CMAKE_AIX_EXPORT_ALL_SYMBOLS OFF)
250250
endif()
@@ -458,7 +458,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBCXXABI_C_FLAGS}")
458458

459459
# On AIX, avoid picking up VMX extensions(i.e. vec_malloc) which would change
460460
# the default alignment of the allocators here.
461-
if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
461+
if (UNIX AND "${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
462462
add_definitions("-D_XOPEN_SOURCE=700")
463463
endif()
464464

libcxxabi/src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ else()
3737
endif()
3838

3939
if (LIBCXXABI_ENABLE_THREADS AND (UNIX OR FUCHSIA) AND NOT (APPLE OR CYGWIN)
40-
AND NOT (${CMAKE_SYSTEM_NAME} MATCHES "AIX"))
40+
AND NOT ("${CMAKE_SYSTEM_NAME}" MATCHES "AIX"))
4141
list(APPEND LIBCXXABI_SOURCES
4242
cxa_thread_atexit.cpp
4343
)

libunwind/src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ set(LIBUNWIND_CXX_SOURCES
66
Unwind-seh.cpp
77
)
88

9-
if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
9+
if("${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
1010
list(APPEND LIBUNWIND_CXX_SOURCES
1111
Unwind_AIXExtras.cpp
1212
)

lldb/source/Host/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ if (APPLE AND LLVM_ENABLE_LOCAL_SUBMODULE_VISIBILITY)
77
endif()
88
endif()
99

10-
if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
10+
if (UNIX AND "${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
1111
add_definitions("-D_ALL_SOURCE")
1212
endif()
1313

0 commit comments

Comments
 (0)