11// swift-tools-version: 6.1
22import PackageDescription
33
4+ // Plugin dependencies - use binary targets when available, fallback to source
5+ var buildEnvironmentExtractorPluginDependencies : [ Target . Dependency ] = [ ]
6+ var gitInfoPluginDependencies : [ Target . Dependency ] = [ ]
7+
8+ #if os(macOS)
9+ buildEnvironmentExtractorPluginDependencies = [ . target( name: " BuildEnvironmentExtractorBinary " ) ]
10+ gitInfoPluginDependencies = [ . target( name: " GitInfoExtractorBinary " ) ]
11+ #else
12+ // Fallback to source targets for non-macOS platforms
13+ buildEnvironmentExtractorPluginDependencies = [ . target( name: " BuildEnvironmentExtractor " ) ]
14+ gitInfoPluginDependencies = [ . target( name: " GitInfoExtractor " ) ]
15+ #endif
16+
417let package = Package (
518 name: " Tools " ,
619 platforms: [
@@ -20,38 +33,60 @@ let package = Package(
2033 . package ( url: " https://github.com/apple/swift-argument-parser.git " , from: " 1.6.1 " )
2134 ] ,
2235 targets: [
36+ // Source targets for development and as a fallback
2337 . executableTarget(
2438 name: " BuildEnvironmentExtractor " ,
2539 dependencies: [
2640 . product( name: " ArgumentParser " , package : " swift-argument-parser " )
2741 ]
2842 ) ,
29- . testTarget(
30- name: " BuildEnvironmentExtractorTests " ,
31- dependencies: [ " BuildEnvironmentExtractor " ]
32- ) ,
33- . plugin(
34- name: " BuildEnvironmentExtractorPlugin " ,
35- capability: . buildTool,
36- dependencies: [ " BuildEnvironmentExtractor " ] ,
37- packageAccess: false
38- ) ,
39-
4043 . executableTarget(
4144 name: " GitInfoExtractor " ,
4245 dependencies: [
4346 . product( name: " ArgumentParser " , package : " swift-argument-parser " )
4447 ]
4548 ) ,
46- . testTarget(
47- name: " GitInfoExtractorTests " ,
48- dependencies: [ " GitInfoExtractor " ]
49+
50+ // Plugins
51+ . plugin(
52+ name: " BuildEnvironmentExtractorPlugin " ,
53+ capability: . buildTool,
54+ dependencies: buildEnvironmentExtractorPluginDependencies,
55+ packageAccess: false
4956 ) ,
5057 . plugin(
5158 name: " GitInfoPlugin " ,
5259 capability: . buildTool,
53- dependencies: [ " GitInfoExtractor " ] ,
60+ dependencies: gitInfoPluginDependencies ,
5461 packageAccess: false
5562 ) ,
63+
64+ // Tests
65+ . testTarget(
66+ name: " BuildEnvironmentExtractorTests " ,
67+ dependencies: [ " BuildEnvironmentExtractor " ]
68+ ) ,
69+ . testTarget(
70+ name: " GitInfoExtractorTests " ,
71+ dependencies: [ " GitInfoExtractor " ]
72+ ) ,
5673 ]
5774)
75+
76+ // Add binary targets for macOS when available
77+ #if os(macOS)
78+ package . targets. append ( contentsOf: [
79+ . binaryTarget(
80+ name: " BuildEnvironmentExtractorBinary " ,
81+ url:
82+ " https://github.com/tonyarnold/swift-build-environment-tools/releases/download/1.0.0/BuildEnvironmentExtractor.artifactbundle.zip " ,
83+ checksum: " 1282b5d82d80f670776c0158c39cd73838fd7cbcdebe4ad11af1c2bc338ec32d "
84+ ) ,
85+ . binaryTarget(
86+ name: " GitInfoExtractorBinary " ,
87+ url:
88+ " https://github.com/tonyarnold/swift-build-environment-tools/releases/download/1.0.0/GitInfoExtractor.artifactbundle.zip " ,
89+ checksum: " 62f1c9ac711127000622defa08aef2d8bf7ebae4d9264b892517d35c2293226c "
90+ ) ,
91+ ] )
92+ #endif
0 commit comments