@@ -91,24 +91,24 @@ function(_add_host_variant_c_compile_link_flags name)
9191 get_target_triple(target target_variant "${SWIFT_HOST_VARIANT_SDK} " "${SWIFT_HOST_VARIANT_ARCH} "
9292 MACCATALYST_BUILD_FLAVOR ""
9393 DEPLOYMENT_VERSION "${DEPLOYMENT_VERSION} " )
94- target_compile_options (${name} PRIVATE -target ;${target} )
94+ target_compile_options (${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -target ;${target} > )
9595 target_link_options (${name} PRIVATE -target ;${target} )
9696 endif ()
9797
9898 set (_sysroot
9999 "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK} _ARCH_${SWIFT_HOST_VARIANT_ARCH} _PATH}" )
100100 if (SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK} _USE_ISYSROOT)
101- target_compile_options (${name} PRIVATE -isysroot;${_sysroot} )
101+ target_compile_options (${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -isysroot;${_sysroot} > )
102102 elseif (NOT SWIFT_COMPILER_IS_MSVC_LIKE AND NOT "${_sysroot} " STREQUAL "/" )
103- target_compile_options (${name} PRIVATE --sysroot=${_sysroot} )
103+ target_compile_options (${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: --sysroot=${_sysroot} > )
104104 endif ()
105105
106106 if (SWIFT_HOST_VARIANT_SDK STREQUAL ANDROID)
107107 # lld can handle targeting the android build. However, if lld is not
108108 # enabled, then fallback to the linker included in the android NDK.
109109 if (NOT SWIFT_USE_LINKER STREQUAL "lld" )
110110 swift_android_tools_path(${SWIFT_HOST_VARIANT_ARCH} tools_path)
111- target_compile_options (${name} PRIVATE -B${tools_path} )
111+ target_compile_options (${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -B${tools_path} > )
112112 endif ()
113113 endif ()
114114
@@ -117,13 +117,15 @@ function(_add_host_variant_c_compile_link_flags name)
117117 # of options by target_compile_options -- this way no undesired
118118 # side effects are introduced should a new search path be added.
119119 target_compile_options (${name} PRIVATE
120+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:
120121 -arch ${SWIFT_HOST_VARIANT_ARCH}
121- "-F${SWIFT_SDK_${SWIFT_HOST_VARIANT_ARCH} _PATH}/../../../Developer/Library/Frameworks" )
122+ "-F${SWIFT_SDK_${SWIFT_HOST_VARIANT_ARCH} _PATH}/../../../Developer/Library/Frameworks"
123+ >)
122124 endif ()
123125
124126 _compute_lto_flag("${SWIFT_TOOLS_ENABLE_LTO} " _lto_flag_out)
125127 if (_lto_flag_out)
126- target_compile_options (${name} PRIVATE ${_lto_flag_out} )
128+ target_compile_options (${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: $ {_lto_flag_out}> )
127129 target_link_options (${name} PRIVATE ${_lto_flag_out} )
128130 endif ()
129131endfunction ()
@@ -135,9 +137,9 @@ function(_add_host_variant_c_compile_flags target)
135137 is_build_type_optimized("${CMAKE_BUILD_TYPE} " optimized)
136138 if (optimized)
137139 if ("${CMAKE_BUILD_TYPE} " STREQUAL "MinSizeRel" )
138- target_compile_options (${target} PRIVATE -Os)
140+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -Os> )
139141 else ()
140- target_compile_options (${target} PRIVATE -O2)
142+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -O2> )
141143 endif ()
142144
143145 # Omit leaf frame pointers on x86 production builds (optimized, no debug
@@ -146,17 +148,17 @@ function(_add_host_variant_c_compile_flags target)
146148 if (NOT debug AND NOT LLVM_ENABLE_ASSERTIONS)
147149 if (SWIFT_HOST_VARIANT_ARCH MATCHES "i?86" )
148150 if (NOT SWIFT_COMPILER_IS_MSVC_LIKE)
149- target_compile_options (${target} PRIVATE -momit-leaf-frame-pointer)
151+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -momit-leaf-frame-pointer> )
150152 else ()
151- target_compile_options (${target} PRIVATE /Oy)
153+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: /Oy> )
152154 endif ()
153155 endif ()
154156 endif ()
155157 else ()
156158 if (NOT SWIFT_COMPILER_IS_MSVC_LIKE)
157- target_compile_options (${target} PRIVATE -O0)
159+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -O0> )
158160 else ()
159- target_compile_options (${target} PRIVATE /Od)
161+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: /Od> )
160162 endif ()
161163 endif ()
162164
@@ -166,7 +168,7 @@ function(_add_host_variant_c_compile_flags target)
166168 if (debuginfo)
167169 _compute_lto_flag("${SWIFT_TOOLS_ENABLE_LTO} " _lto_flag_out)
168170 if (_lto_flag_out)
169- target_compile_options (${target} PRIVATE -gline-tables-only)
171+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -gline-tables-only> )
170172 else ()
171173 target_compile_options (${target} PRIVATE -g)
172174 endif ()
@@ -179,26 +181,24 @@ function(_add_host_variant_c_compile_flags target)
179181 # MSVC/clang-cl don't support -fno-pic or -fms-compatibility-version.
180182 if (NOT SWIFT_COMPILER_IS_MSVC_LIKE)
181183 target_compile_options (${target} PRIVATE
182- -fms-compatibility-version =1900
183- -fno-pic)
184+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:-fms-compatibility-version =1900 -fno-pic>)
184185 endif ()
185186
186187 target_compile_definitions (${target} PRIVATE
187- LLVM_ON_WIN32
188- _CRT_SECURE_NO_WARNINGS
189- _CRT_NONSTDC_NO_WARNINGS)
188+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:LLVM_ON_WIN32 _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS>)
190189 if (NOT "${CMAKE_C_COMPILER_ID} " STREQUAL "MSVC" )
191190 target_compile_definitions (${target} PRIVATE
192- _CRT_USE_BUILTIN_OFFSETOF)
191+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: _CRT_USE_BUILTIN_OFFSETOF> )
193192 endif ()
194193 # TODO(compnerd) permit building for different families
195194 target_compile_definitions (${target} PRIVATE
196- _CRT_USE_WINAPI_FAMILY_DESKTOP_APP)
195+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: _CRT_USE_WINAPI_FAMILY_DESKTOP_APP> )
197196 if (SWIFT_HOST_VARIANT_ARCH MATCHES arm)
198197 target_compile_definitions (${target} PRIVATE
199- _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE)
198+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE> )
200199 endif ()
201200 target_compile_definitions (${target} PRIVATE
201+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:
202202 # TODO(compnerd) handle /MT
203203 _MD
204204 _DLL
@@ -207,32 +207,32 @@ function(_add_host_variant_c_compile_flags target)
207207 # NOTE: We use over-aligned values for the RefCount side-table
208208 # (see revision d913eefcc93f8c80d6d1a6de4ea898a2838d8b6f)
209209 # This is required to build with VS2017 15.8+
210- _ENABLE_EXTENDED_ALIGNED_STORAGE=1)
210+ _ENABLE_EXTENDED_ALIGNED_STORAGE=1> )
211211
212212 # msvcprt's std::function requires RTTI, but we do not want RTTI data.
213213 # Emulate /GR-.
214214 # TODO(compnerd) when moving up to VS 2017 15.3 and newer, we can disable
215215 # RTTI again
216216 if (SWIFT_COMPILER_IS_MSVC_LIKE)
217- target_compile_options (${target} PRIVATE /GR-)
217+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: /GR-> )
218218 else ()
219219 target_compile_options (${target} PRIVATE
220- -frtti
221- "SHELL:-Xclang -fno-rtti-data" )
220+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -frtti>
221+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX> "SHELL:-Xclang -fno-rtti-data" > )
222222 endif ()
223223
224224 # NOTE: VS 2017 15.3 introduced this to disable the static components of
225225 # RTTI as well. This requires a newer SDK though and we do not have
226226 # guarantees on the SDK version currently.
227227 target_compile_definitions (${target} PRIVATE
228- _HAS_STATIC_RTTI=0)
228+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: _HAS_STATIC_RTTI=0> )
229229
230230 # NOTE(compnerd) workaround LLVM invoking `add_definitions(-D_DEBUG)` which
231231 # causes failures for the runtime library when cross-compiling due to
232232 # undefined symbols from the standard library.
233233 if (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
234234 target_compile_options (${target} PRIVATE
235- -U_DEBUG)
235+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -U_DEBUG> )
236236 endif ()
237237 endif ()
238238
@@ -246,40 +246,39 @@ function(_add_host_variant_c_compile_flags target)
246246 # the build.
247247 if (CMAKE_C_COMPILER_ID MATCHES Clang AND CMAKE_C_COMPILER_VERSION
248248 VERSION_LESS 9.0.0)
249- target_compile_options (${target} PRIVATE -mcx16)
249+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -mcx16> )
250250 endif ()
251251 endif ()
252252 endif ()
253253
254254 if (LLVM_ENABLE_ASSERTIONS)
255- target_compile_options (${target} PRIVATE -UNDEBUG)
255+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -UNDEBUG> )
256256 else ()
257- target_compile_definitions (${target} PRIVATE -DNDEBUG)
257+ target_compile_definitions (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -DNDEBUG> )
258258 endif ()
259259
260260 if (SWIFT_ENABLE_RUNTIME_FUNCTION_COUNTERS)
261261 target_compile_definitions (${target} PRIVATE
262- SWIFT_ENABLE_RUNTIME_FUNCTION_COUNTERS)
262+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: SWIFT_ENABLE_RUNTIME_FUNCTION_COUNTERS> )
263263 endif ()
264264
265265 if (SWIFT_ANALYZE_CODE_COVERAGE)
266266 target_compile_options (${target} PRIVATE
267- -fprofile-instr-generate
268- -fcoverage-mapping)
267+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:-fprofile-instr-generate -fcoverage-mapping>)
269268 endif ()
270269
271270 if ((SWIFT_HOST_VARIANT_ARCH STREQUAL armv7 OR
272271 SWIFT_HOST_VARIANT_ARCH STREQUAL aarch64) AND
273272 (SWIFT_HOST_VARIANT_SDK STREQUAL LINUX OR
274273 SWIFT_HOST_VARIANT_SDK STREQUAL ANDROID))
275- target_compile_options (${target} PRIVATE -funwind-tables)
274+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -funwind-tables> )
276275 endif ()
277276
278277 if (SWIFT_HOST_VARIANT_SDK STREQUAL "LINUX" )
279278 if (SWIFT_HOST_VARIANT_ARCH STREQUAL x86_64)
280279 # this is the minimum architecture that supports 16 byte CAS, which is
281280 # necessary to avoid a dependency to libatomic
282- target_compile_options (${target} PRIVATE -march=core2)
281+ target_compile_options (${target} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: -march=core2> )
283282 endif ()
284283 endif ()
285284
@@ -289,8 +288,7 @@ function(_add_host_variant_c_compile_flags target)
289288 if ("${SWIFT_HOST_VARIANT_ARCH} " MATCHES "armv6|armv7|i686" AND
290289 NOT (SWIFT_HOST_VARIANT_SDK STREQUAL ANDROID AND SWIFT_ANDROID_API_LEVEL LESS 24))
291290 target_compile_definitions (${target} PRIVATE
292- _LARGEFILE_SOURCE
293- _FILE_OFFSET_BITS=64)
291+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:_LARGEFILE_SOURCE _FILE_OFFSET_BITS=64>)
294292 endif ()
295293endfunction ()
296294
@@ -499,14 +497,15 @@ function(add_swift_host_library name)
499497 if (NOT ${CMAKE_C_COMPILER_ID} STREQUAL MSVC )
500498 swift_windows_get_sdk_vfs_overlay(ASHL_VFS_OVERLAY)
501499 target_compile_options (${name} PRIVATE
502- "SHELL:-Xclang -ivfsoverlay -Xclang ${ASHL_VFS_OVERLAY} " )
500+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: "SHELL:-Xclang -ivfsoverlay -Xclang ${ASHL_VFS_OVERLAY} " > )
503501
504502 # MSVC doesn't support -Xclang. We don't need to manually specify
505503 # the dependent libraries as `cl` does so.
506504 target_compile_options (${name} PRIVATE
507- "SHELL:-Xclang --dependent-lib=oldnames"
505+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: "SHELL:-Xclang --dependent-lib=oldnames" >
508506 # TODO(compnerd) handle /MT, /MTd
509- "SHELL:-Xclang --dependent-lib=msvcrt$<$<CONFIG:Debug>:d>" )
507+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:"SHELL:-Xclang --dependent-lib=msvcrt$<$<CONFIG:Debug>:d>" >
508+ )
510509 endif ()
511510
512511 set_target_properties (${name} PROPERTIES
@@ -597,9 +596,10 @@ function(add_swift_host_tool executable)
597596 # MSVC doesn't support -Xclang. We don't need to manually specify
598597 # the dependent libraries as `cl` does so.
599598 target_compile_options (${executable} PRIVATE
600- "SHELL:-Xclang --dependent-lib=oldnames"
599+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: "SHELL:-Xclang --dependent-lib=oldnames" >
601600 # TODO(compnerd) handle /MT, /MTd
602- "SHELL:-Xclang --dependent-lib=msvcrt$<$<CONFIG:Debug>:d>" )
601+ $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:"SHELL:-Xclang --dependent-lib=msvcrt$<$<CONFIG:Debug>:d>" >
602+ )
603603 endif ()
604604 endif ()
605605
@@ -627,7 +627,7 @@ function(add_swift_fuzzer_host_tool executable)
627627
628628 # Then make sure that we pass the -fsanitize=fuzzer flag both on the cflags
629629 # and cxx flags line.
630- target_compile_options (${executable} PRIVATE "-fsanitize=fuzzer" )
630+ target_compile_options (${executable} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>: "-fsanitize=fuzzer" > )
631631 target_link_libraries (${executable} PRIVATE "-fsanitize=fuzzer" )
632632endfunction ()
633633
0 commit comments