Skip to content

Commit b0f14dd

Browse files
committed
WIP
1 parent 6f16cee commit b0f14dd

File tree

16 files changed

+481
-461
lines changed

16 files changed

+481
-461
lines changed

Plugins/JExtractSwiftCommandPlugin/JExtractSwiftCommandPlugin.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ final class JExtractSwiftCommandPlugin: SwiftJavaPluginProtocol, BuildToolPlugin
7272

7373
var arguments: [String] = [
7474
"--input-swift", sourceDir,
75-
"--module-name", sourceModule.name,
75+
"--swift-module", sourceModule.name,
7676
"--output-java", context.outputJavaDirectory.path(percentEncoded: false),
7777
"--output-swift", context.outputSwiftDirectory.path(percentEncoded: false),
7878
// TODO: "--build-cache-directory", ...

Plugins/JExtractSwiftPlugin/JExtractSwiftPlugin.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ struct JExtractSwiftBuildToolPlugin: SwiftJavaPluginProtocol, BuildToolPlugin {
5555

5656
var arguments: [String] = [
5757
"--input-swift", sourceDir,
58-
"--module-name", sourceModule.name,
58+
"--swift-module", sourceModule.name,
5959
"--output-java", outputJavaDirectory.path(percentEncoded: false),
6060
"--output-swift", outputSwiftDirectory.path(percentEncoded: false),
6161
// TODO: "--build-cache-directory", ...

Plugins/PluginsShared/PluginUtils.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ extension PluginContext {
7272
.appending(path: "Sources")
7373
}
7474

75-
func cachedClasspathFile(moduleName: String) -> URL {
75+
func cachedClasspathFile(swiftModule: String) -> URL {
7676
self.pluginWorkDirectoryURL
77-
.appending(path: "\(moduleName)", directoryHint: .notDirectory)
77+
.appending(path: "\(swiftModule)", directoryHint: .notDirectory)
7878
}
7979
}

Plugins/SwiftJavaPlugin/SwiftJavaPlugin.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,9 @@ struct SwiftJavaBuildToolPlugin: SwiftJavaPluginProtocol, BuildToolPlugin {
166166
displayName: displayName,
167167
executable: executable,
168168
arguments: [
169+
// FIXME: change to 'resolve' subcommand
169170
"--fetch", configFile.path(percentEncoded: false),
170-
"--module-name", sourceModule.name,
171+
"--swift-module", sourceModule.name,
171172
"--output-directory", outputDirectory(context: context, generated: false).path(percentEncoded: false)
172173
],
173174
environment: [:],
@@ -202,7 +203,7 @@ struct SwiftJavaBuildToolPlugin: SwiftJavaPluginProtocol, BuildToolPlugin {
202203
extension SwiftJavaBuildToolPlugin {
203204
func argumentsModuleName(sourceModule: Target) -> [String] {
204205
return [
205-
"--module-name", sourceModule.name
206+
"--swift-module", sourceModule.name
206207
]
207208
}
208209

Samples/JavaSieve/Package.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ let package = Package(
5454
.product(name: "JavaKit", package: "swift-java"),
5555
.product(name: "JavaKitJar", package: "swift-java"),
5656
],
57+
exclude: ["swift-java.config"],
5758
swiftSettings: [
5859
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"])
5960
],
@@ -71,6 +72,7 @@ let package = Package(
7172
.product(name: "JavaKit", package: "swift-java"),
7273
.product(name: "JavaKitCollection", package: "swift-java"),
7374
],
75+
exclude: ["swift-java.config"],
7476
swiftSettings: [
7577
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"])
7678
],
Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,6 @@
11
{
2-
"classpath" : ".:quadratic-sieve-Java/build/libs/QuadraticSieve-1.0.jar",
32
"classes" : {
4-
"com.gazman.quadratic_sieve.QuadraticSieve" : "QuadraticSieve",
5-
"com.gazman.quadratic_sieve.core.BaseFact" : "BaseFact",
6-
"com.gazman.quadratic_sieve.core.matrix.GaussianEliminationMatrix" : "GaussianEliminationMatrix",
7-
"com.gazman.quadratic_sieve.core.matrix.Matrix" : "Matrix",
8-
"com.gazman.quadratic_sieve.core.poly.PolyMiner" : "PolyMiner",
9-
"com.gazman.quadratic_sieve.core.poly.WheelPool" : "WheelPool",
10-
"com.gazman.quadratic_sieve.core.siever.BSmoothData" : "BSmoothData",
11-
"com.gazman.quadratic_sieve.core.siever.BSmoothDataPool" : "BSmoothDataPool",
12-
"com.gazman.quadratic_sieve.core.siever.Siever" : "Siever",
13-
"com.gazman.quadratic_sieve.core.siever.VectorExtractor" : "VectorExtractor",
14-
"com.gazman.quadratic_sieve.data.BSmooth" : "BSmooth",
15-
"com.gazman.quadratic_sieve.data.DataQueue" : "DataQueue",
16-
"com.gazman.quadratic_sieve.data.MagicNumbers" : "MagicNumbers",
17-
"com.gazman.quadratic_sieve.data.PolynomialData" : "PolynomialData",
18-
"com.gazman.quadratic_sieve.data.PrimeBase" : "PrimeBase",
19-
"com.gazman.quadratic_sieve.data.VectorData" : "VectorData",
20-
"com.gazman.quadratic_sieve.data.VectorWorkData" : "VectorWorkData",
21-
"com.gazman.quadratic_sieve.debug.Analytics" : "Analytics",
22-
"com.gazman.quadratic_sieve.debug.AssertUtils" : "AssertUtils",
23-
"com.gazman.quadratic_sieve.debug.AssertUtils$Tester" : "AssertUtils.Tester",
24-
"com.gazman.quadratic_sieve.debug.Logger" : "Logger",
25-
"com.gazman.quadratic_sieve.fact.TrivialDivision" : "TrivialDivision",
26-
"com.gazman.quadratic_sieve.primes.BigPrimes" : "BigPrimes",
27-
"com.gazman.quadratic_sieve.primes.SieveOfEratosthenes" : "SieveOfEratosthenes",
28-
"com.gazman.quadratic_sieve.utils.MathUtils" : "MathUtils",
29-
"com.gazman.quadratic_sieve.wheel.Wheel" : "Wheel"
30-
}
3+
4+
},
5+
"classpath" : ""
316
}

Sources/JExtractSwiftLib/Swift2Java.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ public struct SwiftToJava {
2626
}
2727

2828
public func run() throws {
29-
guard let swiftModule = config.swiftModule else {
29+
guard let moduleName = config.swiftModule else {
3030
fatalError("Missing '--swift-module' name.")
3131
}
3232

3333
let translator = Swift2JavaTranslator(
34-
swiftModuleName: swiftModule
34+
swiftModuleName: moduleName
3535
)
3636
translator.log.logLevel = config.logLevel ?? .info
3737

@@ -100,7 +100,7 @@ public struct SwiftToJava {
100100
try generator.generate()
101101
}
102102

103-
print("[swift-java] Imported Swift module '\(swiftModule)': " + "done.".green)
103+
print("[swift-java] Imported Swift module '\(moduleName)': " + "done.".green)
104104
}
105105

106106
func canExtract(from file: URL) -> Bool {

Sources/JavaKitConfigurationShared/Configuration.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,13 @@ public func readConfiguration(configPath: URL, file: String = #fileID, line: UIn
137137
}
138138
}
139139

140-
public func findSwiftJavaClasspaths(moduleName: String) -> [String] {
140+
public func findSwiftJavaClasspaths(swiftModule: String) -> [String] {
141141
let basePath: String = FileManager.default.currentDirectoryPath
142142
let pluginOutputsDir = URL(fileURLWithPath: basePath)
143143
.appendingPathComponent(".build", isDirectory: true)
144144
.appendingPathComponent("plugins", isDirectory: true)
145145
.appendingPathComponent("outputs", isDirectory: true)
146-
.appendingPathComponent(moduleName, isDirectory: true)
146+
.appendingPathComponent(swiftModule, isDirectory: true)
147147

148148
return findSwiftJavaClasspaths(in: pluginOutputsDir.path)
149149
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2024 Apple Inc. and the Swift.org project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of Swift.org project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
import ArgumentParser
16+
import Foundation
17+
import SwiftJavaLib
18+
import JExtractSwiftLib
19+
import JavaKit
20+
import JavaKitJar
21+
import JavaKitNetwork
22+
import JavaKitReflection
23+
import SwiftSyntax
24+
import SwiftSyntaxBuilder
25+
import JavaKitConfigurationShared
26+
import JavaKitShared
27+
28+
protocol HasCommonOptions {
29+
var commonOptions: SwiftJava.CommonOptions { get set }
30+
}
31+
32+
protocol HasCommonJVMOptions {
33+
var commonJVMOptions: SwiftJava.CommonJVMOptions { get set }
34+
}
35+
36+
extension SwiftJava {
37+
struct CommonOptions: ParsableArguments {
38+
// TODO: clarify this vs outputSwift (history: outputSwift is jextract, and this was java2swift)
39+
@Option(name: .shortAndLong, help: "The directory in which to output the generated Swift files or the SwiftJava configuration file.")
40+
var outputDirectory: String? = nil
41+
42+
@Option(help: "Directory containing Swift files which should be extracted into Java bindings. Also known as 'jextract' mode. Must be paired with --output-java and --output-swift.")
43+
var inputSwift: String? = nil
44+
45+
@Option(name: .shortAndLong, help: "Configure the level of logs that should be printed")
46+
var logLevel: Logger.Level = .info
47+
}
48+
49+
struct CommonJVMOptions: ParsableArguments {
50+
@Option(
51+
name: [.customLong("cp"), .customLong("classpath")],
52+
help: "Class search path of directories and zip/jar files from which Java classes can be loaded."
53+
)
54+
var classpath: [String] = []
55+
56+
@Option(name: .shortAndLong, help: "While scanning a classpath, inspect only types included in this package")
57+
var filterJavaPackage: String? = nil
58+
}
59+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2024 Apple Inc. and the Swift.org project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of Swift.org project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
import SwiftJavaLib
16+
import JavaKitShared
17+
import JavaRuntime
18+
import JavaKit
19+
20+
@JavaClass("java.lang.ClassLoader")
21+
public struct ClassLoader {
22+
@JavaMethod
23+
public func loadClass(_ arg0: String) throws -> JavaClass<JavaObject>?
24+
}
25+
26+
extension JavaClass<ClassLoader> {
27+
@JavaStaticMethod
28+
public func getSystemClassLoader() -> ClassLoader?
29+
}

0 commit comments

Comments
 (0)