@@ -5,126 +5,6 @@ import CompilerPluginSupport
55import Foundation
66import PackageDescription
77
8- // Note: the JAVA_HOME environment variable must be set to point to where
9- // Java is installed, e.g.,
10- // Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home.
11- func findJavaHome( ) -> String {
12- if let home = ProcessInfo . processInfo. environment [ " JAVA_HOME " ] {
13- return home
14- }
15-
16- // This is a workaround for envs (some IDEs) which have trouble with
17- // picking up env variables during the build process
18- let path = " \( FileManager . default. homeDirectoryForCurrentUser. path ( ) ) .java_home "
19- if let home = try ? String ( contentsOfFile: path, encoding: . utf8) {
20- if let lastChar = home. last, lastChar. isNewline {
21- return String ( home. dropLast ( ) )
22- }
23- return home
24- }
25-
26- if let home = getJavaHomeFromLibexecJavaHome ( ) , !home. isEmpty {
27- return home
28- }
29-
30- if let home = getJavaHomeFromSDKMAN ( ) {
31- return home
32- }
33-
34- if let home = getJavaHomeFromPath ( ) {
35- return home
36- }
37-
38- if ProcessInfo . processInfo. environment [ " SPI_PROCESSING " ] == " 1 "
39- && ProcessInfo . processInfo. environment [ " SPI_BUILD " ] == nil
40- {
41- return " "
42- }
43- fatalError ( " Please set the JAVA_HOME environment variable to point to where Java is installed. " )
44- }
45-
46- func getJavaHomeFromLibexecJavaHome( ) -> String ? {
47- let task = Process ( )
48- task. executableURL = URL ( fileURLWithPath: " /usr/libexec/java_home " )
49-
50- guard FileManager . default. fileExists ( atPath: task. executableURL!. path) else {
51- return nil
52- }
53-
54- let pipe = Pipe ( )
55- task. standardOutput = pipe
56- task. standardError = pipe
57-
58- do {
59- try task. run ( )
60- task. waitUntilExit ( )
61-
62- let data = pipe. fileHandleForReading. readDataToEndOfFile ( )
63- let output = String ( data: data, encoding: . utf8) ? . trimmingCharacters ( in: . whitespacesAndNewlines)
64-
65- if task. terminationStatus == 0 {
66- return output
67- } else {
68- return nil
69- }
70- } catch {
71- return nil
72- }
73- }
74-
75- func getJavaHomeFromSDKMAN( ) -> String ? {
76- let home = FileManager . default. homeDirectoryForCurrentUser
77- . appendingPathComponent ( " .sdkman/candidates/java/current " )
78-
79- let javaBin = home. appendingPathComponent ( " bin/java " ) . path
80- if FileManager . default. isExecutableFile ( atPath: javaBin) {
81- return home. path
82- }
83- return nil
84- }
85-
86- func getJavaHomeFromPath( ) -> String ? {
87- let task = Process ( )
88- task. executableURL = URL ( fileURLWithPath: " /usr/bin/which " )
89- task. arguments = [ " java " ]
90-
91- let pipe = Pipe ( )
92- task. standardOutput = pipe
93-
94- do {
95- try task. run ( )
96- task. waitUntilExit ( )
97- guard task. terminationStatus == 0 else { return nil }
98-
99- let data = pipe. fileHandleForReading. readDataToEndOfFile ( )
100- guard
101- let javaPath = String ( data: data, encoding: . utf8) ?
102- . trimmingCharacters ( in: . whitespacesAndNewlines) ,
103- !javaPath. isEmpty
104- else { return nil }
105-
106- let resolved = URL ( fileURLWithPath: javaPath) . resolvingSymlinksInPath ( )
107- return
108- resolved
109- . deletingLastPathComponent ( )
110- . deletingLastPathComponent ( )
111- . path
112- } catch {
113- return nil
114- }
115- }
116-
117- let javaHome = findJavaHome ( )
118-
119- let javaIncludePath = " \( javaHome) /include "
120- #if os(Linux)
121- let javaPlatformIncludePath = " \( javaIncludePath) /linux "
122- #elseif os(macOS)
123- let javaPlatformIncludePath = " \( javaIncludePath) /darwin "
124- #elseif os(Windows)
125- let javaPlatformIncludePath = " \( javaIncludePath) /win32 "
126- #endif
127-
1288let swiftJavaJNICoreDep : Package . Dependency
1299if let localPath = ProcessInfo . processInfo. environment [ " SWIFT_JAVA_JNI_CORE_PATH " ] {
13010 print ( " Using upstream 'swift-java-jni-core' from override path SWIFT_JAVA_JNI_CORE_PATH = \( localPath) " )
@@ -280,27 +160,8 @@ let package = Package(
280160 swiftSettings: [
281161 . swiftLanguageMode( . v5) ,
282162 . enableUpcomingFeature( " ImplicitOpenExistentials " ) ,
283- . unsafeFlags(
284- [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] ,
285- . when( platforms: [ . macOS, . linux, . windows] )
286- ) ,
287163 . unsafeFlags( [ " -Xfrontend " , " -sil-verify-none " ] , . when( configuration: . release) ) , // Workaround for https://github.com/swiftlang/swift/issues/84899
288164 ] ,
289- linkerSettings: [
290- . unsafeFlags(
291- [
292- " -L \( javaHome) /lib/server " ,
293- " -Xlinker " , " -rpath " ,
294- " -Xlinker " , " \( javaHome) /lib/server " ,
295- ] ,
296- . when( platforms: [ . linux, . macOS] )
297- ) ,
298- . unsafeFlags(
299- [ " -L \( javaHome) /lib " ] ,
300- . when( platforms: [ . windows] )
301- ) ,
302- . linkedLibrary( " jvm " , . when( platforms: [ . linux, . macOS, . windows] ) ) ,
303- ]
304165 ) ,
305166 . target(
306167 name: " JavaUtil " ,
@@ -309,7 +170,6 @@ let package = Package(
309170 exclude: [ " swift-java.config " ] ,
310171 swiftSettings: [
311172 . swiftLanguageMode( . v5) ,
312- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
313173 ]
314174 ) ,
315175 . target(
@@ -319,7 +179,6 @@ let package = Package(
319179 exclude: [ " swift-java.config " ] ,
320180 swiftSettings: [
321181 . swiftLanguageMode( . v5) ,
322- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
323182 ]
324183 ) ,
325184 . target(
@@ -329,7 +188,6 @@ let package = Package(
329188 exclude: [ " swift-java.config " ] ,
330189 swiftSettings: [
331190 . swiftLanguageMode( . v5) ,
332- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
333191 ]
334192 ) ,
335193 . target(
@@ -339,7 +197,6 @@ let package = Package(
339197 exclude: [ " swift-java.config " ] ,
340198 swiftSettings: [
341199 . swiftLanguageMode( . v5) ,
342- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
343200 ]
344201 ) ,
345202 . target(
@@ -349,7 +206,6 @@ let package = Package(
349206 exclude: [ " swift-java.config " ] ,
350207 swiftSettings: [
351208 . swiftLanguageMode( . v5) ,
352- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
353209 ]
354210 ) ,
355211 . target(
@@ -359,7 +215,6 @@ let package = Package(
359215 exclude: [ " swift-java.config " ] ,
360216 swiftSettings: [
361217 . swiftLanguageMode( . v5) ,
362- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
363218 ]
364219 ) ,
365220
@@ -381,7 +236,6 @@ let package = Package(
381236 dependencies: [ ] ,
382237 swiftSettings: [
383238 . swiftLanguageMode( . v5) ,
384- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
385239 ]
386240 ) ,
387241 . target(
@@ -392,15 +246,13 @@ let package = Package(
392246 exclude: [ " swift-java.config " ] ,
393247 swiftSettings: [
394248 . swiftLanguageMode( . v5) ,
395- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
396249 ]
397250 ) ,
398251
399252 . target(
400253 name: " SwiftRuntimeFunctions " ,
401254 swiftSettings: [
402255 . swiftLanguageMode( . v5) ,
403- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
404256 ]
405257 ) ,
406258
@@ -430,7 +282,6 @@ let package = Package(
430282 ] ,
431283 swiftSettings: [
432284 . swiftLanguageMode( . v5) ,
433- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
434285 . enableUpcomingFeature( " BareSlashRegexLiterals " ) ,
435286 ]
436287 ) ,
@@ -453,7 +304,6 @@ let package = Package(
453304 ] ,
454305 swiftSettings: [
455306 . swiftLanguageMode( . v5) ,
456- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
457307 . enableUpcomingFeature( " BareSlashRegexLiterals " ) ,
458308 . define(
459309 " SYSTEM_PACKAGE_DARWIN " ,
@@ -478,7 +328,6 @@ let package = Package(
478328 ] ,
479329 swiftSettings: [
480330 . swiftLanguageMode( . v5) ,
481- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
482331 ]
483332 ) ,
484333
@@ -498,7 +347,6 @@ let package = Package(
498347 ] ,
499348 swiftSettings: [
500349 . swiftLanguageMode( . v5) ,
501- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
502350 ]
503351 ) ,
504352
@@ -520,7 +368,6 @@ let package = Package(
520368 ] ,
521369 swiftSettings: [
522370 . swiftLanguageMode( . v5) ,
523- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
524371 ]
525372 ) ,
526373
@@ -529,7 +376,6 @@ let package = Package(
529376 dependencies: [ " SwiftJavaConfigurationShared " ] ,
530377 swiftSettings: [
531378 . swiftLanguageMode( . v5) ,
532- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
533379 ]
534380 ) ,
535381
@@ -540,7 +386,6 @@ let package = Package(
540386 ] ,
541387 swiftSettings: [
542388 . swiftLanguageMode( . v5) ,
543- . unsafeFlags( [ " -I \( javaIncludePath) " , " -I \( javaPlatformIncludePath) " ] , . when( platforms: [ . macOS, . linux, . windows] ) ) ,
544389 ]
545390 ) ,
546391 ]
0 commit comments