Skip to content

Replace several (test-)tool binaries with symlinks to swift-frontend #65387

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Apr 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions include/swift/Driver/Driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,13 @@ class Driver {
enum class DriverKind {
Interactive, // swift
Batch, // swiftc
SILOpt, // sil-opt
SILFuncExtractor,// sil-func-extractor
SILNM, // sil-nm
SILLLVMGen, // sil-llvm-gen
SILPassPipelineDumper, // sil-passpipeline-dumper
SwiftDependencyTool, // swift-dependency-tool
SwiftLLVMOpt, // swift-llvm-opt
AutolinkExtract, // swift-autolink-extract
SwiftIndent, // swift-indent
SymbolGraph, // swift-symbolgraph
Expand Down
14 changes: 14 additions & 0 deletions lib/Driver/Driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@ void Driver::parseDriverKind(ArrayRef<const char *> Args) {
llvm::StringSwitch<Optional<DriverKind>>(DriverName)
.Case("swift", DriverKind::Interactive)
.Case("swiftc", DriverKind::Batch)
.Case("sil-opt", DriverKind::SILOpt)
.Case("sil-func-extractor", DriverKind::SILFuncExtractor)
.Case("sil-nm", DriverKind::SILNM)
.Case("sil-llvm-gen", DriverKind::SILLLVMGen)
.Case("sil-passpipeline-dumper", DriverKind::SILPassPipelineDumper)
.Case("swift-dependency-tool", DriverKind::SwiftDependencyTool)
.Case("swift-llvm-opt", DriverKind::SwiftLLVMOpt)
.Case("swift-autolink-extract", DriverKind::AutolinkExtract)
.Case("swift-indent", DriverKind::SwiftIndent)
.Case("swift-symbolgraph-extract", DriverKind::SymbolGraph)
Expand Down Expand Up @@ -3555,6 +3562,13 @@ void Driver::printHelp(bool ShowHidden) const {
ExcludedFlagsBitmask |= options::NoInteractiveOption;
break;
case DriverKind::Batch:
case DriverKind::SILOpt:
case DriverKind::SILFuncExtractor:
case DriverKind::SILNM:
case DriverKind::SILLLVMGen:
case DriverKind::SILPassPipelineDumper:
case DriverKind::SwiftDependencyTool:
case DriverKind::SwiftLLVMOpt:
case DriverKind::AutolinkExtract:
case DriverKind::SwiftIndent:
case DriverKind::SymbolGraph:
Expand Down
7 changes: 7 additions & 0 deletions lib/DriverTool/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
set(driver_sources_and_options
driver.cpp
sil_opt_main.cpp
sil_func_extractor_main.cpp
sil_nm_main.cpp
sil_llvm_gen_main.cpp
sil_passpipeline_dumper_main.cpp
swift_dependency_tool_main.cpp
swift_llvm_opt_main.cpp
autolink_extract_main.cpp
modulewrap_main.cpp
swift_api_digester_main.cpp
Expand Down
35 changes: 35 additions & 0 deletions lib/DriverTool/driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,27 @@ std::string getExecutablePath(const char *FirstArg) {
return llvm::sys::fs::getMainExecutable(FirstArg, P);
}

/// Run 'sil-opt'
extern int sil_opt_main(ArrayRef<const char *> argv, void *MainAddr);

/// Run 'sil-func-extractor'
extern int sil_func_extractor_main(ArrayRef<const char *> argv, void *MainAddr);

/// Run 'sil-nm'
extern int sil_nm_main(ArrayRef<const char *> argv, void *MainAddr);

/// Run 'sil-llvm-gen'
extern int sil_llvm_gen_main(ArrayRef<const char *> argv, void *MainAddr);

/// Run 'sil-passpipeline-dumper'
extern int sil_passpipeline_dumper_main(ArrayRef<const char *> argv, void *MainAddr);

/// Run 'swift-dependency-tool'
extern int swift_dependency_tool_main(ArrayRef<const char *> argv, void *MainAddr);

/// Run 'swift-llvm-opt'
extern int swift_llvm_opt_main(ArrayRef<const char *> argv, void *MainAddr);

/// Run 'swift-autolink-extract'.
extern int autolink_extract_main(ArrayRef<const char *> Args, const char *Argv0,
void *MainAddr);
Expand Down Expand Up @@ -281,6 +302,20 @@ static int run_driver(StringRef ExecName,

Driver TheDriver(Path, ExecName, argv, Diags);
switch (TheDriver.getDriverKind()) {
case Driver::DriverKind::SILOpt:
return sil_opt_main(argv, (void *)(intptr_t)getExecutablePath);
case Driver::DriverKind::SILFuncExtractor:
return sil_func_extractor_main(argv, (void *)(intptr_t)getExecutablePath);
case Driver::DriverKind::SILNM:
return sil_nm_main(argv, (void *)(intptr_t)getExecutablePath);
case Driver::DriverKind::SILLLVMGen:
return sil_llvm_gen_main(argv, (void *)(intptr_t)getExecutablePath);
case Driver::DriverKind::SILPassPipelineDumper:
return sil_passpipeline_dumper_main(argv, (void *)(intptr_t)getExecutablePath);
case Driver::DriverKind::SwiftDependencyTool:
return swift_dependency_tool_main(argv, (void *)(intptr_t)getExecutablePath);
case Driver::DriverKind::SwiftLLVMOpt:
return swift_llvm_opt_main(argv, (void *)(intptr_t)getExecutablePath);
case Driver::DriverKind::AutolinkExtract:
return autolink_extract_main(
TheDriver.getArgsWithoutProgramNameAndDriverMode(argv),
Expand Down
Loading