mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Don't delete the OS declaration of `exit` because the concurrency shims aren't always imported, and so the shim declaration might not always be available. Don't override the OS declaration of `exit` in the concurrency shims since we can't just delete the OS one. Instead, set up internal shims just for building Concurrency that forward declares `exit`.
68 lines
2.5 KiB
Python
Executable File
68 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# RUN: ${python} %s %target-swiftmodule-name %platform-sdk-overlay-dir \
|
|
# RUN: %swift_src_root \
|
|
# RUN: %target-sil-opt -sdk %sdk -enable-sil-verify-all \
|
|
# RUN: -F %sdk/System/Library/PrivateFrameworks \
|
|
# RUN: -F "%xcode-extra-frameworks-dir"
|
|
|
|
# REQUIRES: long_test
|
|
# REQUIRES: nonexecutable_test
|
|
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
target_swiftmodule_name = sys.argv[1]
|
|
sdk_overlay_dir = sys.argv[2]
|
|
source_dir = sys.argv[3]
|
|
sil_opt_invocation = sys.argv[4:]
|
|
|
|
for module_file in os.listdir(sdk_overlay_dir):
|
|
extra_args = []
|
|
module_name, ext = os.path.splitext(module_file)
|
|
if ext != ".swiftmodule":
|
|
continue
|
|
# Skip the standard library because it's tested elsewhere.
|
|
if module_name == "Swift":
|
|
continue
|
|
# Skip the C++ standard library overlay because it's not yet shipped
|
|
# in any released SDK.
|
|
if module_name in ("Cxx", "CxxStdlib"):
|
|
continue
|
|
# TODO(TF-1229): Fix the "_Differentiation" module.
|
|
if module_name == "_Differentiation":
|
|
continue
|
|
# TODO: fix the DifferentiationUnittest module.
|
|
if module_name == "DifferentiationUnittest":
|
|
continue
|
|
# Backtracing needs its own additional modules in the module path
|
|
if module_name == "_Backtracing":
|
|
extra_args = ["-I", os.path.join(source_dir, "stdlib",
|
|
"public", "Backtracing", "modules"),
|
|
"-I", os.path.join(source_dir, "include")]
|
|
# _Concurrency needs its own additional modules in the module path
|
|
if module_name == "_Concurrency":
|
|
extra_args = ["-I", os.path.join(source_dir, "stdlib",
|
|
"public", "Concurrency", "InternalShims")]
|
|
|
|
print("# " + module_name)
|
|
|
|
module_path = os.path.join(sdk_overlay_dir, module_file)
|
|
if os.path.isdir(module_path):
|
|
module_path = os.path.join(module_path, target_swiftmodule_name)
|
|
|
|
# llvm-bcanalyzer | not grep Unknown
|
|
bcanalyzer_output = subprocess.check_output(["llvm-bcanalyzer",
|
|
module_path]).decode("utf-8")
|
|
if "Unknown" in bcanalyzer_output:
|
|
print(bcanalyzer_output)
|
|
sys.exit(1)
|
|
|
|
# sil-opt
|
|
# We are deliberately discarding the output here; we're just making sure
|
|
# it can be generated.
|
|
subprocess.check_output(sil_opt_invocation +
|
|
[module_path, "-module-name", module_name] +
|
|
extra_args)
|