Skip to content

Commit cde64b3

Browse files
committed
Add Swift package
1 parent 4f93e44 commit cde64b3

File tree

2 files changed

+342
-0
lines changed

2 files changed

+342
-0
lines changed

Package.swift

Lines changed: 336 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,336 @@
1+
// swift-tools-version: 6.0
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import CompilerPluginSupport
5+
import PackageDescription
6+
7+
import class Foundation.FileManager
8+
import class Foundation.ProcessInfo
9+
10+
// Note: the JAVA_HOME environment variable must be set to point to where
11+
// Java is installed, e.g.,
12+
// Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home.
13+
func findJavaHome() -> String {
14+
if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] {
15+
return home
16+
}
17+
18+
// This is a workaround for envs (some IDEs) which have trouble with
19+
// picking up env variables during the build process
20+
let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home"
21+
if let home = try? String(contentsOfFile: path, encoding: .utf8) {
22+
if let lastChar = home.last, lastChar.isNewline {
23+
return String(home.dropLast())
24+
}
25+
26+
return home
27+
}
28+
29+
fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.")
30+
}
31+
let javaHome = findJavaHome()
32+
33+
let javaIncludePath = "\(javaHome)/include"
34+
#if os(Linux)
35+
let javaPlatformIncludePath = "\(javaIncludePath)/linux"
36+
#elseif os(macOS)
37+
let javaPlatformIncludePath = "\(javaIncludePath)/darwin"
38+
#elseif os(Windows)
39+
let javaPlatformIncludePath = "\(javaIncludePath)/win32"
40+
#endif
41+
42+
let package = Package(
43+
name: "JavaLang",
44+
platforms: [
45+
.macOS(.v10_15)
46+
],
47+
products: [
48+
.library(
49+
name: "JavaLang",
50+
targets: ["JavaLang"]
51+
),
52+
.library(
53+
name: "JavaAWT",
54+
targets: ["JavaAWT"]
55+
),
56+
.library(
57+
name: "JavaBeans",
58+
targets: ["JavaBeans"]
59+
),
60+
.library(
61+
name: "JavaIO",
62+
targets: ["JavaIO"]
63+
),
64+
.library(
65+
name: "JavaMath",
66+
targets: ["JavaMath"]
67+
),
68+
.library(
69+
name: "JavaMath",
70+
targets: ["JavaMath"]
71+
),
72+
.library(
73+
name: "JavaNet",
74+
targets: ["JavaNet"]
75+
),/*
76+
.library(
77+
name: "JavaNIO",
78+
targets: ["JavaNIO"]
79+
),
80+
.library(
81+
name: "JavaSecurity",
82+
targets: ["JavaSecurity"]
83+
),*/
84+
.library(
85+
name: "JavaTime",
86+
targets: ["JavaTime"]
87+
),
88+
.library(
89+
name: "JavaUtil",
90+
targets: ["JavaUtil"]
91+
)
92+
],
93+
dependencies: [
94+
.package(
95+
url: "https://github.com/PureSwift/swift-java.git",
96+
branch: "feature/android-shim"
97+
)
98+
],
99+
targets: [
100+
.target(
101+
name: "JavaIO",
102+
dependencies: [
103+
.product(
104+
name: "JavaKit",
105+
package: "swift-java"
106+
),
107+
.product(
108+
name: "JavaKitCollection",
109+
package: "swift-java"
110+
),
111+
.product(
112+
name: "JavaKitIO",
113+
package: "swift-java"
114+
),
115+
],
116+
exclude: ["swift-java.config"],
117+
swiftSettings: [
118+
.swiftLanguageMode(.v5),
119+
]
120+
),/*
121+
.target(
122+
name: "JavaNIO",
123+
dependencies: [
124+
.product(
125+
name: "JavaKit",
126+
package: "swift-java"
127+
),
128+
.product(
129+
name: "JavaKitCollection",
130+
package: "swift-java"
131+
),
132+
.product(
133+
name: "JavaKitIO",
134+
package: "swift-java"
135+
),
136+
"JavaLang",
137+
"JavaIO"
138+
],
139+
exclude: ["swift-java.config"],
140+
swiftSettings: [
141+
.swiftLanguageMode(.v5),
142+
]
143+
),*/
144+
.target(
145+
name: "JavaLang",
146+
dependencies: [
147+
.product(
148+
name: "JavaKit",
149+
package: "swift-java"
150+
),
151+
.product(
152+
name: "JavaKitCollection",
153+
package: "swift-java"
154+
),
155+
.product(
156+
name: "JavaKitReflection",
157+
package: "swift-java"
158+
),
159+
.product(
160+
name: "JavaKitIO",
161+
package: "swift-java"
162+
),
163+
.product(
164+
name: "JavaKitFunction",
165+
package: "swift-java"
166+
),
167+
"JavaIO"
168+
],
169+
exclude: ["swift-java.config"],
170+
swiftSettings: [
171+
.swiftLanguageMode(.v5),
172+
]
173+
),
174+
.target(
175+
name: "JavaAWT",
176+
dependencies: [
177+
.product(
178+
name: "JavaKit",
179+
package: "swift-java"
180+
),
181+
.product(
182+
name: "JavaKitCollection",
183+
package: "swift-java"
184+
),
185+
.product(
186+
name: "JavaKitReflection",
187+
package: "swift-java"
188+
),
189+
.product(
190+
name: "JavaKitIO",
191+
package: "swift-java"
192+
),
193+
"JavaIO",
194+
"JavaLang"
195+
],
196+
exclude: ["swift-java.config"],
197+
swiftSettings: [
198+
.swiftLanguageMode(.v5),
199+
]
200+
),
201+
.target(
202+
name: "JavaTime",
203+
dependencies: [
204+
.product(
205+
name: "JavaKit",
206+
package: "swift-java"
207+
),
208+
.product(
209+
name: "JavaKitCollection",
210+
package: "swift-java"
211+
),
212+
.product(
213+
name: "JavaKitReflection",
214+
package: "swift-java"
215+
),
216+
.product(
217+
name: "JavaKitIO",
218+
package: "swift-java"
219+
),
220+
"JavaLang",
221+
"JavaIO",
222+
],
223+
exclude: ["swift-java.config"],
224+
swiftSettings: [
225+
.swiftLanguageMode(.v5),
226+
]
227+
),
228+
.target(
229+
name: "JavaNet",
230+
dependencies: [
231+
.product(
232+
name: "JavaKit",
233+
package: "swift-java"
234+
),
235+
.product(
236+
name: "JavaKitCollection",
237+
package: "swift-java"
238+
),
239+
.product(
240+
name: "JavaKitReflection",
241+
package: "swift-java"
242+
),
243+
.product(
244+
name: "JavaKitIO",
245+
package: "swift-java"
246+
),
247+
.product(
248+
name: "JavaKitNetwork",
249+
package: "swift-java"
250+
),
251+
"JavaIO",
252+
"JavaUtil"
253+
],
254+
exclude: ["swift-java.config"],
255+
swiftSettings: [
256+
.swiftLanguageMode(.v5),
257+
]
258+
),
259+
.target(
260+
name: "JavaUtil",
261+
dependencies: [
262+
.product(
263+
name: "JavaKit",
264+
package: "swift-java"
265+
),
266+
.product(
267+
name: "JavaKitCollection",
268+
package: "swift-java"
269+
),
270+
.product(
271+
name: "JavaKitReflection",
272+
package: "swift-java"
273+
),
274+
.product(
275+
name: "JavaKitFunction",
276+
package: "swift-java"
277+
),
278+
.product(
279+
name: "JavaKitIO",
280+
package: "swift-java"
281+
),
282+
"JavaIO",
283+
"JavaLang",
284+
"JavaTime"
285+
],
286+
exclude: ["swift-java.config"],
287+
swiftSettings: [
288+
.swiftLanguageMode(.v5),
289+
]
290+
),
291+
.target(
292+
name: "JavaBeans",
293+
dependencies: [
294+
.product(
295+
name: "JavaKit",
296+
package: "swift-java"
297+
),
298+
.product(
299+
name: "JavaKitCollection",
300+
package: "swift-java"
301+
),
302+
.product(
303+
name: "JavaKitReflection",
304+
package: "swift-java"
305+
),
306+
.product(
307+
name: "JavaKitFunction",
308+
package: "swift-java"
309+
),
310+
.product(
311+
name: "JavaKitIO",
312+
package: "swift-java"
313+
),
314+
"JavaIO"
315+
],
316+
exclude: ["swift-java.config"],
317+
swiftSettings: [
318+
.swiftLanguageMode(.v5),
319+
]
320+
),
321+
.target(
322+
name: "JavaMath",
323+
dependencies: [
324+
"JavaLang"
325+
],
326+
exclude: ["swift-java.config"],
327+
swiftSettings: [
328+
.swiftLanguageMode(.v5),
329+
]
330+
),
331+
.testTarget(
332+
name: "JavaLangTests",
333+
dependencies: ["JavaLang"]
334+
)
335+
]
336+
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import Testing
2+
@testable import JavaLang
3+
4+
@Test func example() async throws {
5+
// Write your test here and use APIs like `#expect(...)` to check expected conditions.
6+
}

0 commit comments

Comments
 (0)