@@ -3,8 +3,13 @@ import PackageDescription
33import CompilerPluginSupport
44import class Foundation. ProcessInfo
55
6+ // get environment variables
7+ let environment = ProcessInfo . processInfo. environment
8+ let dynamicLibrary = environment [ " SWIFT_BUILD_DYNAMIC_LIBRARY " ] == " 1 "
9+ let enableMacros = environment [ " SWIFTPM_ENABLE_MACROS " ] != " 0 "
10+ let buildDocs = environment [ " BUILDING_FOR_DOCUMENTATION_GENERATION " ] == " 1 "
11+
612// force building as dynamic library
7- let dynamicLibrary = ProcessInfo . processInfo. environment [ " SWIFT_BUILD_DYNAMIC_LIBRARY " ] != nil
813let libraryType : PackageDescription . Product . Library . LibraryType ? = dynamicLibrary ? . dynamic : nil
914
1015let package = Package (
@@ -22,37 +27,85 @@ let package = Package(
2227 targets: [
2328 " CoreModel "
2429 ]
25- ) ,
26- . library(
27- name: " CoreDataModel " ,
28- type: libraryType,
29- targets: [
30- " CoreDataModel "
31- ]
32- )
33- ] ,
34- dependencies: [
35- . package (
36- url: " https://github.com/swiftlang/swift-syntax.git " ,
37- from: " 600.0.1 "
3830 )
3931 ] ,
4032 targets: [
4133 . target(
42- name: " CoreModel " ,
43- dependencies: [
44- " CoreModelMacros "
45- ]
34+ name: " CoreModel "
4635 ) ,
47- . target (
48- name: " CoreDataModel " ,
36+ . testTarget (
37+ name: " CoreModelTests " ,
4938 dependencies: [
5039 " CoreModel "
51- ] ,
52- swiftSettings: [
53- . swiftLanguageMode( . v5)
5440 ]
55- ) ,
41+ )
42+ ]
43+ )
44+
45+ #if canImport(Darwin)
46+ package . products. append (
47+ . library(
48+ name: " CoreDataModel " ,
49+ type: libraryType,
50+ targets: [
51+ " CoreDataModel "
52+ ]
53+ )
54+ )
55+ package . targets. insert (
56+ . target(
57+ name: " CoreDataModel " ,
58+ dependencies: [
59+ " CoreModel "
60+ ] ,
61+ swiftSettings: [
62+ . swiftLanguageMode( . v5)
63+ ]
64+ ) ,
65+ at: 1
66+ )
67+ package . targets [ package . targets. count - 1 ] = . testTarget(
68+
69+ . byName(
70+ name: " CoreModelTests " ,
71+ dependencies: [
72+ " CoreModel " ,
73+ . byName(
74+ name: " CoreDataModel " ,
75+ condition: . when( platforms: [ . macOS, . iOS, . macCatalyst, . watchOS, . tvOS, . visionOS] )
76+ )
77+ ]
78+ )
79+ )
80+ #endif
81+
82+ // SwiftPM plugins
83+ if buildDocs {
84+ package . dependencies += [
85+ . package (
86+ url: " https://github.com/swiftlang/swift-docc-plugin.git " ,
87+ from: " 1.4.5 "
88+ )
89+ ]
90+ }
91+
92+ if enableMacros {
93+ let version : Version
94+ #if swift(>=6.1)
95+ version = " 601.0.1 "
96+ #else
97+ version = " 600.0.1 "
98+ #endif
99+ package . targets [ 0 ] . swiftSettings = [
100+ . define( " SWIFTPM_ENABLE_MACROS " )
101+ ]
102+ package . dependencies += [
103+ . package (
104+ url: " https://github.com/swiftlang/swift-syntax.git " ,
105+ from: version
106+ )
107+ ]
108+ package . targets += [
56109 . macro(
57110 name: " CoreModelMacros " ,
58111 dependencies: [
@@ -65,17 +118,9 @@ let package = Package(
65118 package : " swift-syntax "
66119 )
67120 ]
68- ) ,
69- . testTarget(
70- name: " CoreModelTests " ,
71- dependencies: [
72- " CoreModel " ,
73- " CoreModelMacros " ,
74- . byName(
75- name: " CoreDataModel " ,
76- condition: . when( platforms: [ . macOS, . iOS, . macCatalyst, . watchOS, . tvOS, . visionOS] )
77- )
78- ]
79121 )
80122 ]
81- )
123+ package . targets [ 0 ] . dependencies += [
124+ " CoreModelMacros "
125+ ]
126+ }
0 commit comments