@@ -180,51 +180,129 @@ set(SWIFT_LIT_ARGS "" CACHE STRING "Arguments to pass to lit")
180
180
181
181
set (SWIFT_LIT_ENVIRONMENT "" CACHE STRING "Environment to use for lit invocations" )
182
182
183
- if (NOT SWIFT_INCLUDE_TOOLS )
184
- if (SWIFT_RUN_TESTS_WITH_HOST_COMPILER )
185
- precondition (CMAKE_Swift_COMPILER MESSAGE "Can only run tests if a Swift compiler is specified" )
186
- get_filename_component (SWIFT_COMPILER_DIR "${CMAKE_Swift_COMPILER} " DIRECTORY )
187
- precondition (SWIFT_COMPILER_DIR )
188
- # We assume that we are building against a toolchain where all tools are
189
- # next to swiftc.
190
- list (APPEND SWIFT_LIT_ARGS
191
- "--path=${SWIFT_COMPILER_DIR} " )
192
- else ()
193
- list (APPEND SWIFT_LIT_ARGS
194
- "--path=${SWIFT_NATIVE_LLVM_TOOLS_PATH} "
195
- "--param" "swift_native_llvm_tools_path=${SWIFT_NATIVE_LLVM_TOOLS_PATH} "
196
- "--path=${SWIFT_NATIVE_CLANG_TOOLS_PATH} "
197
- "--param" "swift_native_clang_tools_path=${SWIFT_NATIVE_CLANG_TOOLS_PATH} "
198
- "--path=${SWIFT_NATIVE_SWIFT_TOOLS_PATH} "
199
- "--param" "swift_native_swift_tools_path=${SWIFT_NATIVE_SWIFT_TOOLS_PATH} "
200
- )
201
- endif ()
202
- if (SWIFT_BUILD_STDLIB )
203
- # If building only static stdlib, use `swift_static` resources directory.
204
- if (NOT SWIFT_BUILD_DYNAMIC_STDLIB AND SWIFT_BUILD_STATIC_STDLIB )
205
- list (APPEND SWIFT_LIT_ARGS
206
- "--param" "test_resource_dir=${SWIFTSTATICLIB_DIR} " )
183
+ option (SWIFT_TEST_USE_LEAKS "Run Swift stdlib tests under leaks" FALSE )
184
+
185
+ function (setup_lit_args ARGS_VAR_OUT tested_sdk test_results_dir resource_dir_override )
186
+ set (swift_lit_args_result )
187
+
188
+ if (NOT SWIFT_INCLUDE_TOOLS )
189
+ if (SWIFT_RUN_TESTS_WITH_HOST_COMPILER )
190
+ precondition (CMAKE_Swift_COMPILER MESSAGE "Can only run tests if a Swift compiler is specified" )
191
+ get_filename_component (SWIFT_COMPILER_DIR "${CMAKE_Swift_COMPILER} " DIRECTORY )
192
+ precondition (SWIFT_COMPILER_DIR )
193
+ # We assume that we are building against a toolchain where all tools are
194
+ # next to swiftc.
195
+ list (APPEND swift_lit_args_result
196
+ "--path=${SWIFT_COMPILER_DIR} " )
207
197
else ()
208
- list (APPEND SWIFT_LIT_ARGS
209
- "--param" "test_resource_dir=${SWIFTLIB_DIR} " )
198
+ list (APPEND swift_lit_args_result
199
+ "--path=${SWIFT_NATIVE_LLVM_TOOLS_PATH} "
200
+ "--param" "swift_native_llvm_tools_path=${SWIFT_NATIVE_LLVM_TOOLS_PATH} "
201
+ "--path=${SWIFT_NATIVE_CLANG_TOOLS_PATH} "
202
+ "--param" "swift_native_clang_tools_path=${SWIFT_NATIVE_CLANG_TOOLS_PATH} "
203
+ "--path=${SWIFT_NATIVE_SWIFT_TOOLS_PATH} "
204
+ "--param" "swift_native_swift_tools_path=${SWIFT_NATIVE_SWIFT_TOOLS_PATH} "
205
+ )
206
+ endif ()
207
+ if (SWIFT_BUILD_STDLIB )
208
+ if (resource_dir_override )
209
+ list (APPEND swift_lit_args_result
210
+ "--param" "test_resource_dir=${resource_dir_override} " )
211
+ # If building only static stdlib, use `swift_static` resources directory.
212
+ elseif (NOT SWIFT_BUILD_DYNAMIC_STDLIB AND SWIFT_BUILD_STATIC_STDLIB )
213
+ list (APPEND swift_lit_args_result
214
+ "--param" "test_resource_dir=${SWIFTSTATICLIB_DIR} " )
215
+ else ()
216
+ list (APPEND swift_lit_args_result
217
+ "--param" "test_resource_dir=${SWIFTLIB_DIR} " )
218
+ endif ()
210
219
endif ()
211
220
endif ()
212
- endif ()
213
221
214
- option (SWIFT_TEST_USE_LEAKS "Run Swift stdlib tests under leaks" FALSE )
215
- if (SWIFT_TEST_USE_LEAKS )
216
- list (APPEND SWIFT_LIT_ARGS "--param" "leaks-all" )
217
- endif ()
222
+ if (SWIFT_TEST_USE_LEAKS )
223
+ list (APPEND swift_lit_args_result "--param" "leaks-all" )
224
+ endif ()
218
225
219
- if (SWIFT_ENABLE_ARRAY_COW_CHECKS )
220
- list (APPEND SWIFT_LIT_ARGS
221
- "--param" "array_cow_checks" )
222
- endif ()
226
+ if (SWIFT_ENABLE_ARRAY_COW_CHECKS )
227
+ list (APPEND swift_lit_args_result
228
+ "--param" "array_cow_checks" )
229
+ endif ()
223
230
224
- if (NOT CMAKE_CFG_INTDIR STREQUAL "." )
225
- list (APPEND SWIFT_LIT_ARGS
226
- "--param" "build_mode=${CMAKE_CFG_INTDIR} " )
227
- endif ()
231
+ if (NOT CMAKE_CFG_INTDIR STREQUAL "." )
232
+ list (APPEND swift_lit_args_result
233
+ "--param" "build_mode=${CMAKE_CFG_INTDIR} " )
234
+ endif ()
235
+
236
+ if (SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING )
237
+ list (APPEND swift_lit_args_result "--param" "differentiable_programming" )
238
+ endif ()
239
+
240
+ if (SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY )
241
+ list (APPEND swift_lit_args_result "--param" "concurrency" )
242
+ endif ()
243
+
244
+ if (SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED )
245
+ list (APPEND swift_lit_args_result "--param" "distributed" )
246
+ endif ()
247
+
248
+ if (SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING )
249
+ list (APPEND swift_lit_args_result "--param" "string_processing" )
250
+ endif ()
251
+
252
+ if (SWIFT_ENABLE_BACKTRACING )
253
+ list (APPEND swift_lit_args_result "--param" "backtracing" )
254
+ endif ()
255
+
256
+ if (SWIFT_ENABLE_EXPERIMENTAL_OBSERVATION )
257
+ list (APPEND swift_lit_args_result "--param" "observation" )
258
+ endif ()
259
+
260
+ if (SWIFT_ENABLE_SYNCHRONIZATION )
261
+ list (APPEND swift_lit_args_result "--param" "synchronization" )
262
+ endif ()
263
+
264
+ if (SWIFT_ENABLE_VOLATILE )
265
+ list (APPEND swift_lit_args_result "--param" "volatile" )
266
+ endif ()
267
+
268
+ if (SWIFT_ENABLE_RUNTIME_MODULE )
269
+ list (APPEND swift_lit_args_result "--param" "runtime_module" )
270
+ endif ()
271
+
272
+ if (SWIFT_BUILD_REMOTE_MIRROR )
273
+ list (APPEND swift_lit_args_result "--param" "remote_mirror" )
274
+ endif ()
275
+
276
+ list (APPEND swift_lit_args_result "--param" "threading=${SWIFT_SDK_${tested_sdk} _THREADING_PACKAGE}" )
277
+
278
+ # Enable on-crash backtracing if supported
279
+ if (("${tested_sdk} " STREQUAL "OSX" OR "${tested_sdk} " STREQUAL "LINUX" )
280
+ AND NOT SWIFT_ASAN_BUILD )
281
+ list (APPEND swift_lit_args_result "--param" "backtrace_on_crash" )
282
+ endif ()
283
+
284
+ execute_process (COMMAND
285
+ $< TARGET_FILE:Python3::Interpreter> "-c" "import psutil"
286
+ RESULT_VARIABLE python_psutil_status
287
+ TIMEOUT 1 # second
288
+ ERROR_QUIET )
289
+ if (NOT python_psutil_status )
290
+ list (APPEND swift_lit_args_result "--timeout=3000" ) # 50 minutes
291
+ endif ()
292
+
293
+ list (APPEND swift_lit_args_result "--xunit-xml-output=${test_results_dir} /lit-tests.xml" )
294
+
295
+ if (NOT SWIFT_BUILD_STDLIB AND NOT SWIFT_PATH_TO_EXTERNAL_STDLIB_BUILD )
296
+ list (APPEND swift_lit_args_result
297
+ "--param" "test_sdk_overlay_dir=${SWIFTLIB_DIR} /${SWIFT_SDK_${tested_sdk} _LIB_SUBDIR}" )
298
+ endif ()
299
+
300
+
301
+ set (swift_lit_args_result "${swift_lit_args_result} ${SWIFT_LIT_ARGS} ${LLVM_LIT_ARGS} " )
302
+ separate_arguments (swift_lit_args_result )
303
+
304
+ set (${ARGS_VAR_OUT} ${swift_lit_args_result} PARENT_SCOPE )
305
+ endfunction ()
228
306
229
307
if (LLVM_USE_SANITIZER STREQUAL "Address" )
230
308
set (SWIFT_ASAN_BUILD TRUE )
@@ -330,6 +408,14 @@ foreach(SDK ${SWIFT_SDKS})
330
408
set (VARIANT_EXTERNAL_EMBEDDED_PLATFORM FALSE )
331
409
set (VARIANT_EXTERNAL_EMBEDDED_DEVICE )
332
410
411
+ # Reset these values for WASI, as Embedded Swift for WASI requires separate lit configs.
412
+ set (SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_old ${SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB} )
413
+ set (SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING_old ${SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING} )
414
+ if (${SDK} STREQUAL "WASI" )
415
+ set (SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB OFF )
416
+ set (SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING OFF )
417
+ endif ()
418
+
333
419
swift_configure_lit_site_cfg (
334
420
"${CMAKE_CURRENT_SOURCE_DIR} /lit.site.cfg.in"
335
421
"${test_bin_dir} /lit.site.cfg"
@@ -352,6 +438,10 @@ foreach(SDK ${SWIFT_SDKS})
352
438
"${test_bin_dir} /lit.swift-features.cfg"
353
439
"${validation_test_bin_dir} /lit.swift-features.cfg" )
354
440
441
+ # Restore old values in case they were reset for WASI tests lit configs.
442
+ set (SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB ${SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_old} )
443
+ set (SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING ${SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING_old} )
444
+
355
445
set (test_dependencies )
356
446
get_test_dependencies ("${SDK} " test_dependencies )
357
447
@@ -429,73 +519,6 @@ foreach(SDK ${SWIFT_SDKS})
429
519
COMMENT "Uploading stdlib" )
430
520
431
521
foreach (test_mode ${TEST_MODES} )
432
- set (LIT_ARGS "${SWIFT_LIT_ARGS} ${LLVM_LIT_ARGS} " )
433
- separate_arguments (LIT_ARGS )
434
-
435
- if (NOT SWIFT_BUILD_STDLIB AND NOT SWIFT_PATH_TO_EXTERNAL_STDLIB_BUILD )
436
- list (APPEND LIT_ARGS
437
- "--param" "test_sdk_overlay_dir=${SWIFTLIB_DIR} /${SWIFT_SDK_${SDK} _LIB_SUBDIR}" )
438
- endif ()
439
-
440
- execute_process (COMMAND
441
- $< TARGET_FILE:Python3::Interpreter> "-c" "import psutil"
442
- RESULT_VARIABLE python_psutil_status
443
- TIMEOUT 1 # second
444
- ERROR_QUIET )
445
- if (NOT python_psutil_status )
446
- list (APPEND LIT_ARGS "--timeout=3000" ) # 50 minutes
447
- endif ()
448
-
449
- list (APPEND LIT_ARGS "--xunit-xml-output=${SWIFT_TEST_RESULTS_DIR} /lit-tests.xml" )
450
-
451
- if (SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING )
452
- list (APPEND LIT_ARGS "--param" "differentiable_programming" )
453
- endif ()
454
-
455
- if (SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY )
456
- list (APPEND LIT_ARGS "--param" "concurrency" )
457
- endif ()
458
-
459
- if (SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED )
460
- list (APPEND LIT_ARGS "--param" "distributed" )
461
- endif ()
462
-
463
- if (SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING )
464
- list (APPEND LIT_ARGS "--param" "string_processing" )
465
- endif ()
466
-
467
- if (SWIFT_ENABLE_BACKTRACING )
468
- list (APPEND LIT_ARGS "--param" "backtracing" )
469
- endif ()
470
-
471
- if (SWIFT_ENABLE_EXPERIMENTAL_OBSERVATION )
472
- list (APPEND LIT_ARGS "--param" "observation" )
473
- endif ()
474
-
475
- if (SWIFT_ENABLE_SYNCHRONIZATION )
476
- list (APPEND LIT_ARGS "--param" "synchronization" )
477
- endif ()
478
-
479
- if (SWIFT_ENABLE_VOLATILE )
480
- list (APPEND LIT_ARGS "--param" "volatile" )
481
- endif ()
482
-
483
- if (SWIFT_ENABLE_RUNTIME_MODULE )
484
- list (APPEND LIT_ARGS "--param" "runtime_module" )
485
- endif ()
486
-
487
- if (SWIFT_BUILD_REMOTE_MIRROR )
488
- list (APPEND LIT_ARGS "--param" "remote_mirror" )
489
- endif ()
490
-
491
- list (APPEND LIT_ARGS "--param" "threading=${SWIFT_SDK_${SDK} _THREADING_PACKAGE}" )
492
-
493
- # Enable on-crash backtracing if supported
494
- if (("${SDK} " STREQUAL "OSX" OR "${SDK} " STREQUAL "LINUX" )
495
- AND NOT SWIFT_ASAN_BUILD )
496
- list (APPEND LIT_ARGS "--param" "backtrace_on_crash" )
497
- endif ()
498
-
499
522
foreach (test_subset ${TEST_SUBSETS} )
500
523
set (directories )
501
524
set (dependencies ${test_dependencies} )
@@ -535,6 +558,8 @@ foreach(SDK ${SWIFT_SDKS})
535
558
set (maybe_command_upload_stdlib ${command_upload_stdlib} )
536
559
endif ()
537
560
561
+ setup_lit_args (final_lit_args "${SDK} " "${SWIFT_TEST_RESULTS_DIR} " OFF )
562
+
538
563
set (test_target_name
539
564
"check-swift${test_subset_target_suffix}${test_mode_target_suffix}${VARIANT_SUFFIX} " )
540
565
add_custom_target ("${test_target_name} "
@@ -544,7 +569,7 @@ foreach(SDK ${SWIFT_SDKS})
544
569
COMMAND
545
570
${CMAKE_COMMAND} -E env ${SWIFT_LIT_ENVIRONMENT}
546
571
$< TARGET_FILE:Python3::Interpreter> "${LIT} "
547
- ${LIT_ARGS }
572
+ ${final_lit_args }
548
573
"--param" "swift_test_subset=${test_subset} "
549
574
"--param" "swift_test_mode=${test_mode} "
550
575
${directories}
@@ -564,7 +589,7 @@ foreach(SDK ${SWIFT_SDKS})
564
589
COMMAND
565
590
${CMAKE_COMMAND} -E env ${SWIFT_LIT_ENVIRONMENT}
566
591
$< TARGET_FILE:Python3::Interpreter> "${LIT} "
567
- ${LIT_ARGS }
592
+ ${final_lit_args }
568
593
"--param" "swift_test_subset=${test_subset} "
569
594
"--param" "swift_test_mode=${test_mode} "
570
595
${SWIFT_LIT_TEST_PATHS}
@@ -578,6 +603,43 @@ foreach(SDK ${SWIFT_SDKS})
578
603
PROPERTY FOLDER "Tests/check-swift" )
579
604
endforeach ()
580
605
endforeach ()
606
+
607
+ if (SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING AND (${ARCH} STREQUAL "wasm32" ))
608
+ set (test_mode "optimize_none" )
609
+ set (test_subset "primary" )
610
+ set (VARIANT_SUFFIX "-embedded-wasi" )
611
+ set (VARIANT_TRIPLE "wasm32-unknown-wasip1" )
612
+ set (test_bin_dir "${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX} /embedded" )
613
+ set (VARIANT_EXTERNAL_EMBEDDED_PLATFORM FALSE )
614
+ set (VARIANT_EXTERNAL_EMBEDDED_DEVICE )
615
+ set (SWIFT_TEST_RESULTS_DIR "${CMAKE_BINARY_DIR} /${CMAKE_CFG_INTDIR} /swift-test-results/${VARIANT_TRIPLE} " )
616
+ swift_configure_lit_site_cfg (
617
+ "${CMAKE_CURRENT_SOURCE_DIR} /lit.site.cfg.in"
618
+ "${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX} /lit.site.cfg"
619
+ "test${VARIANT_SUFFIX} .lit.site.cfg" )
620
+ swift_generate_lit_swift_features_cfg ("${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX} /lit.swift-features.cfg" )
621
+
622
+ set (test_target_name "check-swift${VARIANT_SUFFIX} " )
623
+ set (directories "${test_bin_dir} " )
624
+
625
+ set (embedded_wasm_lit_args )
626
+ setup_lit_args (embedded_wasm_lit_args "${SDK} " "${SWIFT_TEST_RESULTS_DIR} " "${SWIFTLIB_DIR} " )
627
+
628
+ add_custom_target ("${test_target_name} "
629
+ ${maybe_command_upload_stdlib}
630
+ ${command_upload_swift_reflection_test}
631
+ ${command_clean_test_results_dir}
632
+ COMMAND
633
+ ${CMAKE_COMMAND} -E env ${SWIFT_LIT_ENVIRONMENT}
634
+ $< TARGET_FILE:Python3::Interpreter> "${LIT} "
635
+ ${embedded_wasm_lit_args}
636
+ "--param" "swift_test_subset=${test_subset} "
637
+ "--param" "swift_test_mode=${test_mode} "
638
+ ${directories}
639
+ DEPENDS ${dependencies}
640
+ COMMENT "Running ${test_subset} Swift tests for ${VARIANT_TRIPLE} "
641
+ USES_TERMINAL )
642
+ endif ()
581
643
endforeach ()
582
644
endforeach ()
583
645
endforeach ()
@@ -615,6 +677,18 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING)
615
677
"${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX} /lit.site.cfg"
616
678
"test${VARIANT_SUFFIX} .lit.site.cfg" )
617
679
swift_generate_lit_swift_features_cfg ("${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX} /lit.swift-features.cfg" )
680
+
681
+ set (VARIANT_SUFFIX "-embedded-wasi" )
682
+ set (VARIANT_TRIPLE "wasm32-unknown-wasip1" )
683
+ set (VARIANT_EXTERNAL_EMBEDDED_PLATFORM FALSE )
684
+ set (VARIANT_EXTERNAL_EMBEDDED_DEVICE )
685
+ set (SWIFT_TEST_RESULTS_DIR "${CMAKE_BINARY_DIR} /${CMAKE_CFG_INTDIR} /swift-test-results/${VARIANT_TRIPLE} " )
686
+ swift_configure_lit_site_cfg (
687
+ "${CMAKE_CURRENT_SOURCE_DIR} /lit.site.cfg.in"
688
+ "${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX} /lit.site.cfg"
689
+ "test${VARIANT_SUFFIX} .lit.site.cfg" )
690
+ swift_generate_lit_swift_features_cfg ("${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX} /lit.swift-features.cfg" )
691
+ message (STATUS "SWIFT_LIT_ARGS is ${SWIFT_LIT_ARGS} " )
618
692
endif ()
619
693
620
694
# Add shortcuts for the default variant.
0 commit comments