mirror of
https://github.com/apple/swift.git
synced 2026-02-27 18:26:24 +01:00
To allow prefix mapping of the bridging header to achieve cache hit when source files are located in different location, the generated chained bridging header should not include absolute paths of the headers. Fix the problem by concat the chained bridging header together. Fixes: https://github.com/swiftlang/swift/issues/84088
44 lines
1.1 KiB
Python
Executable File
44 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Usage: BuildCommandExtractor.py file.json ModuleName
|
|
|
|
import json
|
|
import sys
|
|
|
|
input_json = sys.argv[1]
|
|
module_name = sys.argv[2]
|
|
|
|
mode = "swift"
|
|
|
|
if module_name.startswith("clang:"):
|
|
mode = "clang"
|
|
module_name = module_name[6:]
|
|
elif module_name.startswith("swiftPrebuiltExternal:"):
|
|
mode = "swiftPrebuiltExternal"
|
|
module_name = module_name[22:]
|
|
|
|
|
|
def printCmd(cmd):
|
|
for c in cmd:
|
|
print('"{}"'.format(c))
|
|
|
|
|
|
with open(input_json, "r") as file:
|
|
deps = json.load(file)
|
|
if module_name == "bridgingHeader":
|
|
info = deps["modules"][1]["details"]["swift"]
|
|
# the first argument is `-frontend`
|
|
cmd = info["bridgingHeader"]["commandLine"][1:]
|
|
printCmd(cmd)
|
|
# print input file name.
|
|
if "chainedBridgingHeaderPath" in info:
|
|
print(info["chainedBridgingHeaderPath"])
|
|
else:
|
|
module_names = deps["modules"][::2]
|
|
module_details = deps["modules"][1::2]
|
|
for name, detail in zip(module_names, module_details):
|
|
if name.get(mode, "") != module_name:
|
|
continue
|
|
|
|
printCmd(detail["details"][mode]["commandLine"])
|