forked from swiftlang/swift-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJExtractDefaultBuildConfiguration.swift
More file actions
101 lines (80 loc) · 6 KB
/
JExtractDefaultBuildConfiguration.swift
File metadata and controls
101 lines (80 loc) · 6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2026 Apple Inc. and the Swift.org project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Swift.org project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
import Foundation
import SwiftIfConfig
import SwiftSyntax
/// A default, fixed build configuration during static analysis for interface extraction.
struct JExtractDefaultBuildConfiguration: BuildConfiguration {
private var base: StaticBuildConfiguration
init() {
let decoder = JSONDecoder()
base = try! decoder.decode(StaticBuildConfiguration.self, from: printStaticBuildConfigOutput)
}
func isCustomConditionSet(name: String) throws -> Bool {
base.isCustomConditionSet(name: name)
}
func hasFeature(name: String) throws -> Bool {
base.hasFeature(name: name)
}
func hasAttribute(name: String) throws -> Bool {
base.hasAttribute(name: name)
}
func canImport(importPath: [(TokenSyntax, String)], version: CanImportVersion) throws -> Bool {
try base.canImport(importPath: importPath, version: version)
}
func isActiveTargetOS(name: String) throws -> Bool {
true
}
func isActiveTargetArchitecture(name: String) throws -> Bool {
true
}
func isActiveTargetEnvironment(name: String) throws -> Bool {
true
}
func isActiveTargetRuntime(name: String) throws -> Bool {
true
}
func isActiveTargetPointerAuthentication(name: String) throws -> Bool {
true
}
func isActiveTargetObjectFormat(name: String) throws -> Bool {
true
}
var targetPointerBitWidth: Int {
base.targetPointerBitWidth
}
var targetAtomicBitWidths: [Int] {
base.targetAtomicBitWidths
}
var endianness: Endianness {
base.endianness
}
var languageVersion: VersionTuple {
base.languageVersion
}
var compilerVersion: VersionTuple {
base.compilerVersion
}
}
private let shared = JExtractDefaultBuildConfiguration()
extension BuildConfiguration where Self == JExtractDefaultBuildConfiguration {
static var jextractDefault: JExtractDefaultBuildConfiguration {
shared
}
}
// $ swift frontend -print-static-build-config -target aarch64-unknown-linux-gnu
private let printStaticBuildConfigOutput = Data(
#"{"attributes":["GKInspectable","noDerivative","objcMembers","discardableResult","const","available","usableFromInline","preconcurrency","nonisolated","retroactive","frozen","unsafe","propertyWrapper","lifetime","_extern","inline","abi","storageRestrictions","_opaqueReturnTypeOf","objc","constInitialized","autoclosure","escaping","unchecked","requires_stored_property_inits","convention","attached","nonexhaustive","dynamicCallable","reasync","dynamicMemberLookup","NSCopying","transpose","warn_unqualified_access","c","globalActor","isolated","_local","rethrows","exclusivity","backDeployed","UIApplicationMain","main","nonobjc","resultBuilder","Sendable","_noMetadata","IBDesignable","IBOutlet","export","IBSegueAction","IBAction","derivative","NSApplicationMain","inlinable","concurrent","IBInspectable","NSManaged","_addressable","differentiable"],"compilerVersion":{"components":[6,3]},"customConditions":[],"endianness":"little","features":["BuiltinCreateAsyncTaskWithExecutor","BuiltinCreateAsyncTaskName","Macros","ValueGenericsNameLookup","FreestandingExpressionMacros","AssociatedTypeAvailability","NoncopyableGenerics2","BuiltinInterleave","OptionalIsolatedParameters","BuiltinAddressOfRawLayout","InoutLifetimeDependence","ExtensionMacros","BuiltinBuildMainExecutor","BuiltinStoreRaw","InheritActorContext","IsolatedAny","BuiltinExecutor","LayoutPrespecialization","NonexhaustiveAttribute","InlineAlways","BuiltinCreateTaskGroupWithFlags","ValueGenerics","InlineArrayTypeSugar","BuiltinCreateTask","NonescapableTypes","RetroactiveAttribute","BuiltinTaskRunInline","BuiltinBuildComplexEqualityExecutor","MemorySafetyAttributes","BuiltinBuildExecutor","ModuleSelector","ParameterPacks","MarkerProtocol","ConformanceSuppression","BitwiseCopyable","AddressOfProperty2","UnsafeInheritExecutor","BuiltinCreateAsyncTaskOwnedTaskExecutor","SpecializeAttributeWithAvailability","BuiltinJob","AlwaysInheritActorContext","AsyncExecutionBehaviorAttributes","AsyncSequenceFailure","BorrowingSwitch","PrimaryAssociatedTypes2","NewCxxMethodSafetyHeuristics","ExtensionMacroAttr","BuiltinStackAlloc","TypedThrows","BuiltinContinuation","BuiltinUnprotectedAddressOf","BuiltinSelect","ImplicitSelfCapture","MoveOnlyPartialConsumption","Actors","GeneralizedIsSameMetaTypeBuiltin","MoveOnly","GlobalActors","BuiltinCreateAsyncDiscardingTaskInGroupWithExecutor","NonfrozenEnumExhaustivity","RethrowsProtocol","IsolatedDeinit","BuiltinUnprotectedStackAlloc","BuiltinCreateAsyncTaskInGroupWithExecutor","BuiltinTaskGroupWithArgument","NoAsyncAvailability","ObjCImplementation","AttachedMacros","FreestandingMacros","AsyncAwait","EffectfulProp","BuiltinConcurrencyStackNesting","BuiltinCreateAsyncTaskInGroup","ConcurrentFunctions","BuiltinHopToActor","BuiltinIntLiteralAccessors","BodyMacros","BuiltinVectorsExternC","BuiltinCreateAsyncDiscardingTaskInGroup","RawIdentifiers","NonescapableAccessorOnTrivial","UnavailableFromAsync","IsolatedAny2","LexicalLifetimes","SendableCompletionHandlers","BuiltinAssumeAlignment","AssociatedTypeImplements","Sendable","ABIAttributeSE0479","BuiltinBuildTaskExecutorRef","LifetimeDependenceMutableAccessors","BitwiseCopyable2","IsolatedConformances","ExpressionMacroDefaultArguments","NoncopyableGenerics","SendingArgsAndResults","MoveOnlyResilientTypes","BuiltinEmplaceTypedThrows"],"languageMode":{"components":[5,10]},"targetArchitectures":["arm64"],"targetAtomicBitWidths":[128,64,32,16,8],"targetEnvironments":[],"targetOSs":["Linux"],"targetObjectFileFormats":["ELF"],"targetPointerAuthenticationSchemes":["_none"],"targetPointerBitWidth":64,"targetRuntimes":["_Native","_multithreaded"]}"#
.utf8
)