From 444bd837d9486c22586f78a337a88836ccc3d2d3 Mon Sep 17 00:00:00 2001 From: Alex Lorenz Date: Wed, 7 Jun 2023 11:24:35 -0700 Subject: [PATCH] [cxx-interop] make -emit-clang-header-path a driver flag --- Sources/SwiftOptions/Options.swift | 2 +- Tests/SwiftDriverTests/SwiftDriverTests.swift | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Sources/SwiftOptions/Options.swift b/Sources/SwiftOptions/Options.swift index 4499ae196..67b0f4879 100644 --- a/Sources/SwiftOptions/Options.swift +++ b/Sources/SwiftOptions/Options.swift @@ -267,7 +267,7 @@ extension Option { public static let emitAst: Option = Option("-emit-ast", .flag, alias: Option.dumpAst, attributes: [.frontend, .noInteractive, .doesNotAffectIncrementalBuild]) public static let emitBc: Option = Option("-emit-bc", .flag, attributes: [.frontend, .noInteractive, .doesNotAffectIncrementalBuild], helpText: "Emit LLVM BC file(s)", group: .modes) public static let emitClangHeaderNonmodularIncludes: Option = Option("-emit-clang-header-nonmodular-includes", .flag, attributes: [.frontend, .noInteractive, .supplementaryOutput], helpText: "Augment emitted Objective-C header with textual imports for every included modular import") - public static let emitClangHeaderPath: Option = Option("-emit-clang-header-path", .separate, alias: Option.emitObjcHeaderPath, attributes: [.frontend, .noDriver, .noInteractive, .argumentIsPath, .supplementaryOutput], helpText: "Emit an Objective-C and C++ header file to ") + public static let emitClangHeaderPath: Option = Option("-emit-clang-header-path", .separate, alias: Option.emitObjcHeaderPath, attributes: [.frontend, .noInteractive, .argumentIsPath, .supplementaryOutput], helpText: "Emit an Objective-C and C++ header file to ") public static let emitConstValuesPath: Option = Option("-emit-const-values-path", .separate, attributes: [.frontend, .noInteractive, .argumentIsPath, .supplementaryOutput], metaVar: "", helpText: "Emit the extracted compile-time known values to ") public static let emitConstValues: Option = Option("-emit-const-values", .flag, attributes: [.noInteractive, .supplementaryOutput]) public static let emitDependenciesPath: Option = Option("-emit-dependencies-path", .separate, attributes: [.frontend, .noDriver], metaVar: "", helpText: "Output basic Make-compatible dependencies file to ") diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 35ce8782c..1cc362ea0 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -6773,6 +6773,18 @@ final class SwiftDriverTests: XCTestCase { #endif } + func testEmitClangHeaderPath() throws { + VirtualPath.resetTemporaryFileStore() + var driver = try Driver(args: [ + "swiftc", "-emit-clang-header-path", "path/to/header", "-typecheck", "test.swift" + ]) + let jobs = try driver.planBuild().removingAutolinkExtractJobs() + XCTAssertEqual(jobs.count, 2) + let job = jobs.first! + XCTAssertTrue(job.commandLine.contains(.flag("-emit-objc-header-path"))) + XCTAssertTrue(job.commandLine.contains(.path(.relative(RelativePath("path/to/header"))))) + } + func testGccToolchainFlags() throws { VirtualPath.resetTemporaryFileStore() var driver = try Driver(args: [