Skip to content

Commit fd830cf

Browse files
committed
---
yaml --- r: 318842 b: refs/heads/master-rebranch c: 5df027b h: refs/heads/master
1 parent 12f4d17 commit fd830cf

File tree

10 files changed

+152
-72
lines changed

10 files changed

+152
-72
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1457,4 +1457,4 @@ refs/tags/swift-DEVELOPMENT-SNAPSHOT-2019-08-02-a: ddd2b2976aa9bfde5f20fe37f6bd2
14571457
refs/tags/swift-DEVELOPMENT-SNAPSHOT-2019-08-03-a: 171cc166f2abeb5ca2a4003700a8a78a108bd300
14581458
refs/heads/benlangmuir-patch-1: baaebaf39d52f3bf36710d4fe40cf212e996b212
14591459
refs/heads/i-do-redeclare: 8c4e6d5de5c1e3f0a2cedccf319df713ea22c48e
1460-
refs/heads/master-rebranch: 7b8873f3b4addaa3707c77955b85f88b8230c287
1460+
refs/heads/master-rebranch: 5df027b8ca2611fe121be4b70e7e02cd41436fb9

branches/master-rebranch/test/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,15 @@ foreach(SDK ${SWIFT_SDKS})
305305
set(test_mode_target_suffix "-${test_mode}")
306306
endif()
307307

308+
set(maybe_command_upload_stdlib)
309+
if(NOT test_mode STREQUAL "only_non_executable")
310+
set(maybe_command_upload_stdlib ${command_upload_stdlib})
311+
endif()
312+
308313
set(test_target_name
309314
"check-swift${test_subset_target_suffix}${test_mode_target_suffix}${VARIANT_SUFFIX}")
310315
add_custom_target("${test_target_name}"
311-
${command_upload_stdlib}
316+
${maybe_command_upload_stdlib}
312317
${command_upload_swift_reflection_test}
313318
${command_clean_test_results_dir}
314319
COMMAND

branches/master-rebranch/test/lit.cfg

Lines changed: 83 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -946,7 +946,7 @@ elif run_os == 'linux-androideabi' or run_os == 'linux-android':
946946
def get_architecture_value(**kwargs):
947947
result = kwargs[run_cpu]
948948
if result is None:
949-
if run_cpu == "armv7s" or run_cpu == "armv7k":
949+
if run_cpu.startswith("armv7"):
950950
result = kwargs["armv7"]
951951
elif run_cpu == "arm64":
952952
result = kwards["aarch64"]
@@ -957,9 +957,22 @@ elif run_os == 'linux-androideabi' or run_os == 'linux-android':
957957
ndk_platform_triple = get_architecture_value(armv7="arm-linux-androideabi",
958958
aarch64="aarch64-linux-android")
959959
toolchain_directory_name = "{}-{}".format(ndk_platform_triple, config.android_ndk_gcc_version)
960-
tools_directory = make_path(config.android_ndk_path, "toolchains",
961-
toolchain_directory_name, "prebuilt", "linux-x86_64",
962-
ndk_platform_triple, "bin")
960+
if platform.system() == 'Linux':
961+
prebuilt_directory = 'linux-x86_64'
962+
elif platform.system() == 'Darwin':
963+
prebuilt_directory = 'darwin-x86_64'
964+
elif platform.system() == 'Windows':
965+
# TODO: NDK distributes for Windows 32 and 64 bits. platform.machine()
966+
# should allow us to find out the word size, but I don't have a
967+
# machine to test right now. I think the values are AMD64 and x86, but
968+
# I'm not sure. Everybody gets the 64 bits version for now.
969+
prebuilt_directory = 'windows-x86_64'
970+
971+
toolchain_directory = make_path(
972+
config.android_ndk_path, "toolchains", toolchain_directory_name,
973+
"prebuilt", prebuilt_directory)
974+
tools_directory = pipes.quote(make_path(
975+
toolchain_directory, ndk_platform_triple, "bin"))
963976
lit_config.note("Testing Android " + config.variant_triple)
964977
config.target_object_format = "elf"
965978
config.target_shared_library_prefix = 'lib'
@@ -971,69 +984,85 @@ elif run_os == 'linux-androideabi' or run_os == 'linux-android':
971984
config.target_runtime = "native"
972985
config.target_swift_autolink_extract = inferSwiftBinary("swift-autolink-extract")
973986
config.target_sdk_name = "android"
974-
android_link_paths_opt = "-L {libcxx} -L {libgcc}".format(
975-
libcxx=make_path(config.android_ndk_path,
976-
"sources", "cxx-stl", "llvm-libc++", "libs", ndk_platform_tuple),
977-
libgcc=make_path(config.android_ndk_path,
978-
"toolchains", toolchain_directory_name, "prebuilt",
979-
"linux-x86_64", "lib", "gcc", ndk_platform_triple,
980-
"{}.x".format(config.android_ndk_gcc_version)))
987+
android_link_paths_opt = "-L {} -L {} -L {}".format(
988+
pipes.quote(make_path(
989+
config.android_ndk_path, "sources", "cxx-stl", "llvm-libc++",
990+
"libs", ndk_platform_tuple)),
991+
pipes.quote(make_path(
992+
toolchain_directory, "lib", "gcc", ndk_platform_triple,
993+
"{}.x".format(config.android_ndk_gcc_version))),
994+
pipes.quote(make_path(
995+
toolchain_directory, ndk_platform_triple, "lib")))
981996
# Since NDK r14 the headers are unified under $NDK_PATH/sysroot, so the -sdk
982997
# switch is not enough. Additionally we have to include both the unified
983998
# sysroot, and the architecture sysroot.
984-
android_include_paths_opt = "-I {sysroot} -I {sysroot_arch}".format(
985-
sysroot=make_path(config.android_ndk_path, "sysroot", "usr", "include"),
986-
sysroot_arch=make_path(config.android_ndk_path, "sysroot", "usr",
987-
"include", ndk_platform_triple))
988-
config.target_build_swift = (
989-
'%s -target %s -sdk %r -tools-directory %r %s %s '
990-
'-use-ld=%s %s %s %s %s %s'
991-
% (config.swiftc,
992-
config.variant_triple, config.variant_sdk,
993-
tools_directory, android_include_paths_opt, android_link_paths_opt,
994-
config.android_linker_name,
995-
resource_dir_opt, mcp_opt, config.swift_test_options,
996-
config.swift_driver_test_options, swift_execution_tests_extra_flags))
999+
unified_android_include_path = pipes.quote(make_path(
1000+
config.android_ndk_path, "sysroot", "usr", "include"))
1001+
architecture_android_include_path = pipes.quote(make_path(
1002+
config.android_ndk_path, "sysroot", "usr", "include",
1003+
ndk_platform_triple))
1004+
android_include_paths_opt = "-I {} -I {}".format(
1005+
unified_android_include_path, architecture_android_include_path)
1006+
# clang can use -isystem, but Swift cannot.
1007+
android_include_system_paths_opt = "-isystem {} -isystem {}".format(
1008+
unified_android_include_path, architecture_android_include_path)
1009+
config.target_build_swift = ' '.join([
1010+
config.swiftc,
1011+
'-target', config.variant_triple,
1012+
'-sdk', config.variant_sdk,
1013+
'-tools-directory', tools_directory,
1014+
android_include_paths_opt, android_link_paths_opt,
1015+
'-use-ld=%s' % config.android_linker_name,
1016+
resource_dir_opt, mcp_opt, config.swift_test_options,
1017+
config.swift_driver_test_options, swift_execution_tests_extra_flags])
9971018
config.target_codesign = "echo"
998-
config.target_build_swift_dylib = (
999-
"%s -parse-as-library -emit-library -o '\\1'"
1000-
% (config.target_build_swift))
1019+
config.target_build_swift_dylib = ' '.join([
1020+
config.target_build_swift,
1021+
'-parse-as-library', '-emit-library',
1022+
'-o', "'\\1'"])
10011023
config.target_add_rpath = r'-Xlinker -rpath -Xlinker \1'
1002-
config.target_swift_frontend = (
1003-
'%s -frontend -target %s -sdk %r %s %s %s %s %s %s'
1004-
% (config.swift, config.variant_triple, config.variant_sdk,
1005-
android_include_paths_opt, android_link_paths_opt, resource_dir_opt,
1006-
mcp_opt, config.swift_test_options,
1007-
config.swift_frontend_test_options))
1024+
config.target_swift_frontend = ' '.join([
1025+
config.swift,
1026+
'-frontend',
1027+
'-target', config.variant_triple,
1028+
'-sdk', config.variant_sdk,
1029+
android_include_paths_opt, android_link_paths_opt,
1030+
resource_dir_opt, mcp_opt, config.swift_test_options,
1031+
config.swift_frontend_test_options])
10081032
subst_target_swift_frontend_mock_sdk = config.target_swift_frontend
10091033
subst_target_swift_frontend_mock_sdk_after = ""
10101034
config.target_run = make_path(config.swift_src_root, 'utils', 'android', 'adb_test_runner.py')
10111035
# FIXME: Include -sdk in this invocation.
1012-
config.target_sil_opt = (
1013-
'%s -target %s %s %s %s' %
1014-
(config.sil_opt, config.variant_triple, resource_dir_opt, mcp_opt, config.sil_test_options))
1015-
config.target_swift_ide_test = (
1016-
'%s -target %s %s %s %s' %
1017-
(config.swift_ide_test, config.variant_triple, resource_dir_opt,
1018-
mcp_opt, ccp_opt))
1036+
config.target_sil_opt = ' '.join([
1037+
config.sil_opt,
1038+
'-target', config.variant_triple,
1039+
resource_dir_opt, mcp_opt, config.sil_test_options])
1040+
config.target_swift_ide_test = ' '.join([
1041+
config.swift_ide_test,
1042+
'-target', config.variant_triple,
1043+
resource_dir_opt, mcp_opt, ccp_opt])
10191044
subst_target_swift_ide_test_mock_sdk = config.target_swift_ide_test
10201045
subst_target_swift_ide_test_mock_sdk_after = ""
1021-
config.target_swiftc_driver = (
1022-
"%s -target %s -sdk %r -tools-directory %s %s %s %s -use-ld=%s" %
1023-
(config.swiftc, config.variant_triple, config.variant_sdk,
1024-
tools_directory, android_link_paths_opt, resource_dir_opt, mcp_opt,
1025-
config.android_linker_name))
1026-
config.target_swift_modulewrap = (
1027-
'%s -modulewrap -target %s' %
1028-
(config.swiftc, config.variant_triple))
1029-
config.target_clang = (
1030-
"clang++ -target %s %s %s" %
1031-
(config.variant_triple, clang_mcp_opt, android_include_paths_opt))
1032-
config.target_ld = "{} -L{}".format(
1046+
config.target_swiftc_driver = ' '.join([
1047+
config.swiftc,
1048+
'-target', config.variant_triple,
1049+
'-sdk', config.variant_sdk,
1050+
'-tools-directory', tools_directory,
1051+
android_link_paths_opt, resource_dir_opt, mcp_opt,
1052+
'-use-ld=%s' % config.android_linker_name])
1053+
config.target_swift_modulewrap = ' '.join([
1054+
config.swiftc, '-modulewrap',
1055+
'-target', config.variant_triple])
1056+
config.target_clang = ' '.join([
1057+
'clang++',
1058+
'-target', config.variant_triple,
1059+
clang_mcp_opt, android_include_system_paths_opt])
1060+
config.target_ld = ' '.join([
10331061
tools_directory,
1034-
make_path(test_resource_dir, config.target_sdk_name))
1062+
'-L%s' % make_path(test_resource_dir, config.target_sdk_name)])
10351063
# The Swift interpreter is not available when targeting Android.
1036-
config.available_features.remove('swift_interpreter')
1064+
if 'swift_interpreter' in config.available_features:
1065+
config.available_features.remove('swift_interpreter')
10371066

10381067
else:
10391068
lit_config.fatal("Don't know how to define target_run and "

branches/master-rebranch/utils/build-presets.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,8 @@ mixin-preset=
804804
[preset: buildbot_linux_crosscompile_android,tools=RA,stdlib=RD,build]
805805
mixin-preset=buildbot_linux
806806

807+
host-test
808+
807809
release
808810
assertions
809811
extra-cmake-options=-DSWIFT_ENABLE_LLD_LINKER:BOOL=OFF
@@ -819,6 +821,8 @@ android-icu-i18n=%(arm_dir)s/libicui18nswift.so
819821
android-icu-i18n-include=%(arm_dir)s/icu/source/i18n
820822
android-icu-data=%(arm_dir)s/libicudataswift.so
821823

824+
skip-test-linux
825+
822826
[preset: buildbot_linux_crosscompile_android,tools=RA,stdlib=RD,build,aarch64]
823827
mixin-preset=buildbot_linux_crosscompile_android,tools=RA,stdlib=RD,build
824828

branches/master-rebranch/utils/build-script

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -137,15 +137,10 @@ class HostSpecificConfiguration(object):
137137
# For platforms which normally require a connected device to
138138
# test, the default behavior is to run tests that only require
139139
# the host (i.e., they do not attempt to execute).
140-
if deployment_platform.is_darwin and \
141-
deployment_platform.is_embedded and \
142-
not deployment_platform.is_simulator:
143-
if deployment_platform not in \
144-
invocation.platforms_to_skip_test_host:
145-
test_host_only = True
146-
test = True
147-
else:
148-
test = False
140+
if deployment_platform.uses_host_tests and \
141+
deployment_platform not in \
142+
invocation.platforms_to_skip_test_host:
143+
test_host_only = True
149144

150145
name = deployment_target.name
151146

@@ -181,7 +176,7 @@ class HostSpecificConfiguration(object):
181176
"check-swift-benchmark-{}-external".format(name))
182177
if test:
183178
if test_host_only:
184-
suffix = "-non-executable"
179+
suffix = "-only_non_executable"
185180
else:
186181
suffix = ""
187182
subset_suffix = ""
@@ -407,11 +402,13 @@ class BuildScriptInvocation(object):
407402
if not args.test_watchos_simulator:
408403
self.platforms_to_skip_test.add(
409404
StdlibDeploymentTarget.AppleWatchSimulator)
410-
411-
if not args.test_android_host:
405+
if not args.test_android:
412406
self.platforms_to_skip_test.add(StdlibDeploymentTarget.Android)
413407

414408
self.platforms_to_skip_test_host = set()
409+
if not args.test_android_host:
410+
self.platforms_to_skip_test_host.add(
411+
StdlibDeploymentTarget.Android)
415412
if not args.test_ios_host:
416413
self.platforms_to_skip_test_host.add(StdlibDeploymentTarget.iOS)
417414
if not args.test_tvos_host:
@@ -709,6 +706,8 @@ class BuildScriptInvocation(object):
709706
impl_args += ["--skip-test-watchos-host"]
710707
if not args.test_watchos_simulator:
711708
impl_args += ["--skip-test-watchos-simulator"]
709+
if not args.test_android:
710+
impl_args += ["--skip-test-android"]
712711
if not args.test_android_host:
713712
impl_args += ["--skip-test-android-host"]
714713
if args.build_runtime_with_host_compiler:

branches/master-rebranch/utils/build-script-impl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ KNOWN_SETTINGS=(
166166
skip-test-tvos-host "" "set to skip testing the host parts of the tvOS toolchain"
167167
skip-test-watchos-simulator "" "set to skip testing Swift stdlibs for Apple watchOS simulators (i.e. test devices only)"
168168
skip-test-watchos-host "" "set to skip testing the host parts of the watchOS toolchain"
169+
skip-test-android "" "set to skip testing Swift stdlibs for Android"
169170
skip-test-android-host "" "set to skip testing the host parts of the Android toolchain"
170171
validation-test "0" "set to run the validation test suite"
171172
long-test "0" "set to run the long test suite"
@@ -1435,7 +1436,11 @@ function calculate_targets_for_host() {
14351436
android-*)
14361437
swift_sdk="ANDROID"
14371438
build_for_this_target=$(not ${SKIP_BUILD_ANDROID})
1438-
test_this_target=$(not ${SKIP_TEST_ANDROID_HOST})
1439+
if [[ ! "${SKIP_TEST_ANDROID_HOST}" ]] ; then
1440+
test_host_only=1
1441+
else
1442+
test_this_target=$(not ${SKIP_TEST_ANDROID})
1443+
fi
14391444
;;
14401445
*)
14411446
echo "Unknown compiler deployment target: ${stdlib_deployment_target}"
@@ -1476,7 +1481,7 @@ function calculate_targets_for_host() {
14761481
if [[ "${test_this_target}" ]] && [[ "${is_in_build_list}" ]]; then
14771482
test_target_suffix=""
14781483
if [[ -n "${test_host_only}" ]] ; then
1479-
test_target_suffix="-non-executable"
1484+
test_target_suffix="-only_non_executable"
14801485
fi
14811486

14821487
test_subset_target_suffix=""

branches/master-rebranch/utils/build_swift/driver_arguments.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ def _apply_default_arguments(args):
202202
args.test_ios = False
203203
args.test_tvos = False
204204
args.test_watchos = False
205+
args.test_android = False
205206
args.test_indexstoredb = False
206207
args.test_sourcekitlsp = False
207208

@@ -237,6 +238,10 @@ def _apply_default_arguments(args):
237238
args.test_watchos_simulator = False
238239

239240
if not args.build_android:
241+
args.test_android = False
242+
args.test_android_host = False
243+
244+
if not args.test_android:
240245
args.test_android_host = False
241246

242247
if not args.host_test:
@@ -899,6 +904,9 @@ def create_argument_parser():
899904
help='skip testing watchOS device targets on the host machine (the '
900905
'watch itself)')
901906

907+
option('--skip-test-android',
908+
toggle_false('test_android'),
909+
help='skip testing all Android targets.')
902910
option('--skip-test-android-host',
903911
toggle_false('test_android_host'),
904912
help='skip testing Android device targets on the host machine (the '

branches/master-rebranch/utils/build_swift/tests/expected_options.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@
174174
'swift_user_visible_version': defaults.SWIFT_USER_VISIBLE_VERSION,
175175
'symbols_package': None,
176176
'test': None,
177+
'test_android': False,
177178
'test_android_host': False,
178179
'test_cygwin': False,
179180
'test_freebsd': False,
@@ -479,6 +480,7 @@ class IgnoreOption(_BaseOption):
479480
dest='build_watchos_device'),
480481
DisableOption('--skip-build-watchos-simulator',
481482
dest='build_watchos_simulator'),
483+
DisableOption('--skip-test-android', dest='test_android'),
482484
DisableOption('--skip-test-android-host', dest='test_android_host'),
483485
DisableOption('--skip-test-cygwin', dest='test_cygwin'),
484486
DisableOption('--skip-test-freebsd', dest='test_freebsd'),

branches/master-rebranch/utils/run-test

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,8 @@ def main():
202202
upload_stdlib_targets = []
203203
need_validation = any('/validation-test-' in path for path in paths)
204204
for target in targets:
205-
upload_stdlib_targets += ["upload-stdlib-%s" % target]
205+
if args.mode != 'only_non_executable':
206+
upload_stdlib_targets += ["upload-stdlib-%s" % target]
206207
if need_validation:
207208
dependency_targets += ["swift-stdlib-%s" % target]
208209
else:

0 commit comments

Comments
 (0)