Skip to content

Commit 7b460ce

Browse files
committed
build: fix accidental cmake expansions
As of CMake 3.25, there are now global variables `LINUX=1`, `ANDROID=1`, etc. These conflict with expressions that used these names as unquoted strings in positions where CMake accepts 'variable|string', for example: - `if(sdk STREQUAL LINUX)` would fail, because `LINUX` is now defined and expands to 1, where it would previously coerce to a string. - `if(${sdk} STREQUAL "LINUX")` would fail if `sdk=LINUX`, because the left-hand side expands twice. In this patch, I looked for a number of patterns to fix up, sometimes a little defensively: - Quoted right-hand side of `STREQUAL` where I was confident it was intended to be a string literal. - Removed manual variable expansion on left-hand side of `STREQUAL`, `MATCHES` and `IN_LIST` where I was confident it was unintended. Fixes #65028.
1 parent e89de6e commit 7b460ce

File tree

40 files changed

+208
-208
lines changed

40 files changed

+208
-208
lines changed

CMakeLists.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ enable_language(CXX)
5050
set(SWIFT_ASM_DIALECT ASM)
5151
set(SWIFT_ASM_EXT S)
5252
set(SWIFT_ASM_AVAILABLE YES)
53-
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
53+
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
5454
if(CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")
5555
if(CMAKE_VERSION VERSION_LESS "3.26")
5656
message(warning "We can't build assembly language for ARM64 until CMake 3.26")
@@ -158,7 +158,7 @@ else()
158158
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64|amd64")
159159
set(SWIFT_HOST_VARIANT_ARCH_default "x86_64")
160160
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64")
161-
if(SWIFT_HOST_VARIANT_SDK_default STREQUAL OSX)
161+
if(SWIFT_HOST_VARIANT_SDK_default STREQUAL "OSX")
162162
set(SWIFT_HOST_VARIANT_ARCH_default "arm64")
163163
else()
164164
set(SWIFT_HOST_VARIANT_ARCH_default "aarch64")
@@ -380,7 +380,7 @@ set(SWIFT_STDLIB_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
380380
# - MultiThreadedDebug (/MTd)
381381
# - MultiThreadedDLL (/MD)
382382
# - MultiThreadedDebugDLL (/MDd)
383-
if(CMAKE_BUILD_TYPE STREQUAL Debug)
383+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
384384
set(SWIFT_STDLIB_MSVC_RUNTIME_LIBRARY_default MultiThreadedDebugDLL)
385385
else()
386386
set(SWIFT_STDLIB_MSVC_RUNTIME_LIBRARY_default MultiThreadedDLL)
@@ -675,7 +675,7 @@ if(SWIFT_BUILT_STANDALONE)
675675
project(Swift C CXX ${SWIFT_ASM_DIALECT})
676676
endif()
677677

678-
if(MSVC OR "${CMAKE_SIMULATE_ID}" STREQUAL MSVC)
678+
if(MSVC OR "${CMAKE_SIMULATE_ID}" STREQUAL "MSVC")
679679
include(ClangClCompileRules)
680680
elseif(UNIX)
681681
include(UnixCompileRules)
@@ -697,7 +697,7 @@ if(NOT EXISTS "${SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE}")
697697
endif()
698698

699699
set(SWIFT_BUILD_HOST_DISPATCH FALSE)
700-
if(SWIFT_ENABLE_DISPATCH AND NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
700+
if(SWIFT_ENABLE_DISPATCH AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
701701
# Only build libdispatch for the host if the host tools are being built and
702702
# specifically if these two libraries that depend on it are built.
703703
if(SWIFT_INCLUDE_TOOLS AND SWIFT_BUILD_SOURCEKIT)
@@ -883,11 +883,11 @@ endif()
883883
# build environment.
884884
if(LLVM_USE_LINKER)
885885
set(SWIFT_USE_LINKER_default "${LLVM_USE_LINKER}")
886-
elseif(${SWIFT_HOST_VARIANT_SDK} STREQUAL ANDROID)
886+
elseif(SWIFT_HOST_VARIANT_SDK STREQUAL "ANDROID")
887887
set(SWIFT_USE_LINKER_default "lld")
888-
elseif(CMAKE_SYSTEM_NAME STREQUAL Windows AND NOT CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
888+
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
889889
set(SWIFT_USE_LINKER_default "lld")
890-
elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
890+
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
891891
set(SWIFT_USE_LINKER_default "")
892892
else()
893893
set(SWIFT_USE_LINKER_default "gold")

SwiftCompilerSources/CMakeLists.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ function(add_swift_compiler_modules_library name)
8181
list(APPEND swift_compile_options "-Xfrontend" "-disable-implicit-string-processing-module-import")
8282
endif()
8383

84-
if(CMAKE_BUILD_TYPE STREQUAL Debug)
84+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
8585
list(APPEND swift_compile_options "-g")
8686
else()
8787
list(APPEND swift_compile_options "-O" "-cross-module-optimization")
@@ -103,7 +103,7 @@ function(add_swift_compiler_modules_library name)
103103
set(deployment_version "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_DEPLOYMENT_VERSION}")
104104
set(sdk_path "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_PATH}")
105105
set(sdk_option "-sdk" "${sdk_path}")
106-
if(${BOOTSTRAPPING_MODE} STREQUAL "CROSSCOMPILE-WITH-HOSTLIBS")
106+
if(BOOTSTRAPPING_MODE STREQUAL "CROSSCOMPILE-WITH-HOSTLIBS")
107107
# Let the cross-compiled compile don't pick up the compiled stdlib by providing
108108
# an (almost) empty resource dir.
109109
# The compiler will instead pick up the stdlib from the SDK.
@@ -122,7 +122,7 @@ function(add_swift_compiler_modules_library name)
122122
message(ERROR "libc++ not found in the toolchain.")
123123
endif()
124124
endif()
125-
elseif(${BOOTSTRAPPING_MODE} STREQUAL "CROSSCOMPILE")
125+
elseif(BOOTSTRAPPING_MODE STREQUAL "CROSSCOMPILE")
126126
set(sdk_option "-sdk" "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_PATH}")
127127
get_filename_component(swift_exec_bin_dir ${ALS_SWIFT_EXEC} DIRECTORY)
128128
set(sdk_option ${sdk_option} "-resource-dir" "${swift_exec_bin_dir}/../lib/swift")
@@ -259,13 +259,13 @@ else()
259259
add_dependencies(importedHeaderDependencies swift-ast-generated-headers)
260260
target_include_directories(importedHeaderDependencies PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../include/swift")
261261

262-
if(${BOOTSTRAPPING_MODE} MATCHES "HOSTTOOLS|CROSSCOMPILE")
262+
if(BOOTSTRAPPING_MODE MATCHES "HOSTTOOLS|CROSSCOMPILE")
263263

264264
if (NOT SWIFT_EXEC_FOR_SWIFT_MODULES)
265265
message(FATAL_ERROR "Need a swift toolchain building swift compiler sources")
266266
endif()
267267

268-
if(${BOOTSTRAPPING_MODE} STREQUAL "HOSTTOOLS")
268+
if(BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS")
269269
if(NOT SWIFT_EXEC_FOR_SWIFT_MODULES STREQUAL CMAKE_Swift_COMPILER)
270270
message(FATAL_ERROR "The Swift compiler (${CMAKE_Swift_COMPILER}) differs from the Swift compiler in SWIFT_NATIVE_SWIFT_TOOLS_PATH (${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/swiftc).")
271271
endif()
@@ -281,11 +281,11 @@ else()
281281
add_swift_compiler_modules_library(swiftCompilerModules
282282
SWIFT_EXEC "${SWIFT_EXEC_FOR_SWIFT_MODULES}")
283283

284-
elseif(${BOOTSTRAPPING_MODE} MATCHES "BOOTSTRAPPING.*")
284+
elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*")
285285

286286
set(b0_deps swift-frontend-bootstrapping0 symlink-headers-bootstrapping0)
287287
set(b1_deps swift-frontend-bootstrapping1 symlink-headers-bootstrapping1)
288-
if(${BOOTSTRAPPING_MODE} STREQUAL "BOOTSTRAPPING")
288+
if(BOOTSTRAPPING_MODE STREQUAL "BOOTSTRAPPING")
289289
list(APPEND b0_deps swiftCore-bootstrapping0)
290290
list(APPEND b1_deps swiftCore-bootstrapping1)
291291
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
@@ -296,7 +296,7 @@ else()
296296
list(APPEND b0_deps swiftDarwin-bootstrapping0)
297297
list(APPEND b1_deps swiftDarwin-bootstrapping1)
298298
endif()
299-
if(${SWIFT_HOST_VARIANT_SDK} IN_LIST SWIFT_LIBSTDCXX_PLATFORMS)
299+
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_LIBSTDCXX_PLATFORMS)
300300
list(APPEND b0_deps copy-libstdcxx-modulemap-bootstrapping0 copy-libstdcxx-header-bootstrapping0)
301301
list(APPEND b1_deps copy-libstdcxx-modulemap-bootstrapping1 copy-libstdcxx-header-bootstrapping1)
302302
endif()

benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ macro(configure_build)
2121
# thus allowing the --host-cc build-script argument to work here.
2222
get_filename_component(c_compiler ${CMAKE_C_COMPILER} NAME)
2323

24-
if(${c_compiler} STREQUAL "clang")
24+
if(c_compiler STREQUAL "clang")
2525
set(CLANG_EXEC ${CMAKE_C_COMPILER})
2626
else()
2727
if(NOT SWIFT_DARWIN_XCRUN_TOOLCHAIN)
@@ -713,7 +713,7 @@ function(swift_benchmark_compile)
713713

714714
if(NOT SWIFT_BENCHMARK_BUILT_STANDALONE)
715715
set(stdlib_dependencies "swift-frontend" "swiftCore-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}")
716-
if(${SWIFT_HOST_VARIANT_SDK} IN_LIST SWIFT_DARWIN_PLATFORMS)
716+
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS)
717717
list(APPEND stdlib_dependencies "swiftDarwin-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}")
718718
endif()
719719
foreach(stdlib_dependency ${UNIVERSAL_LIBRARY_NAMES_${SWIFT_BENCHMARK_COMPILE_PLATFORM}})

cmake/modules/AddPureSwift.cmake

+3-3
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ function(_add_host_swift_compile_options name)
5353
set(DEPLOYMENT_VERSION "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_DEPLOYMENT_VERSION}")
5454
endif()
5555

56-
if(SWIFT_HOST_VARIANT_SDK STREQUAL ANDROID)
56+
if(SWIFT_HOST_VARIANT_SDK STREQUAL "ANDROID")
5757
set(DEPLOYMENT_VERSION ${SWIFT_ANDROID_API_LEVEL})
5858
endif()
5959

@@ -141,7 +141,7 @@ function(add_pure_swift_host_library name)
141141
set_property(TARGET ${name}
142142
PROPERTY BUILD_WITH_INSTALL_RPATH YES)
143143

144-
if(APSHL_SHARED AND CMAKE_SYSTEM_NAME STREQUAL Darwin)
144+
if(APSHL_SHARED AND CMAKE_SYSTEM_NAME STREQUAL "Darwin")
145145
# Allow install_name_tool to update paths (for rdar://109473564)
146146
set_property(TARGET ${name} APPEND_STRING PROPERTY
147147
LINK_FLAGS " -Xlinker -headerpad_max_install_names")
@@ -267,7 +267,7 @@ function(add_pure_swift_host_tool name)
267267
add_executable(${name} ${APSHT_SOURCES})
268268
_add_host_swift_compile_options(${name})
269269

270-
if(${SWIFT_HOST_VARIANT_SDK} IN_LIST SWIFT_DARWIN_PLATFORMS)
270+
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS)
271271
set_property(TARGET ${name}
272272
APPEND PROPERTY INSTALL_RPATH
273273
"@executable_path/../lib/swift/host")

0 commit comments

Comments
 (0)