Package.swift
102 lines · 7144 bytes
1// swift-tools-version: 6.2
2import PackageDescription
3
4/// App extensions start in Foundation's NSExtensionMain.
5let extensionEntry: [LinkerSetting] = [.unsafeFlags(["-Xlinker", "-e", "-Xlinker", "_NSExtensionMain"])]
6
7let package = Package(
8 name: "Orgstar",
9 platforms: [.macOS(.v26), .iOS(.v26)],
10 products: [
11 .library(name: "OrgCore", targets: ["OrgCore"]),
12 .library(name: "OrgDocument", targets: ["OrgDocument"]),
13 .library(name: "OrgIndex", targets: ["OrgIndex"]),
14 .library(name: "OrgWorkspace", targets: ["OrgWorkspace"]),
15 .library(name: "OrgPresentation", targets: ["OrgPresentation"]),
16 .library(name: "OrgEditorAppKit", targets: ["OrgEditorAppKit"]),
17 .executable(name: "OrgstarSpike", targets: ["OrgstarSpike"]),
18 .library(name: "OrgApp", targets: ["OrgApp"]),
19 .library(name: "OrgHighlight", targets: ["OrgHighlight"]),
20 .executable(name: "Orgstar", targets: ["Orgstar"]),
21 .executable(name: "OrgstarMobile", targets: ["OrgstarMobile"]),
22 .executable(name: "OrgstarQuickLook", targets: ["OrgstarQuickLook"]),
23 .executable(name: "OrgstarSpotlight", targets: ["OrgstarSpotlight"]),
24 .executable(name: "OrgstarShare", targets: ["OrgstarShare"])
25 ],
26 dependencies: [
27 .package(url: "https://github.com/groue/GRDB.swift", from: "7.11.1"),
28 .package(url: "https://github.com/tree-sitter/swift-tree-sitter", from: "0.25.0"),
29 .package(url: "https://github.com/tree-sitter/tree-sitter-bash", exact: "0.25.1"),
30 .package(url: "https://github.com/tree-sitter/tree-sitter-c", exact: "0.24.2"),
31 .package(url: "https://github.com/tree-sitter/tree-sitter-cpp", exact: "0.23.4"),
32 .package(url: "https://github.com/tree-sitter/tree-sitter-go", exact: "0.25.0"),
33 .package(url: "https://github.com/tree-sitter/tree-sitter-haskell", exact: "0.24.1"),
34 .package(url: "https://github.com/tree-sitter/tree-sitter-java", exact: "0.23.5"),
35 .package(url: "https://github.com/tree-sitter/tree-sitter-javascript", exact: "0.25.0"),
36 .package(url: "https://github.com/tree-sitter/tree-sitter-json", exact: "0.24.8"),
37 .package(url: "https://github.com/tree-sitter-grammars/tree-sitter-lua", exact: "0.5.0"),
38 .package(url: "https://github.com/tree-sitter/tree-sitter-python", exact: "0.25.0"),
39 .package(url: "https://github.com/r-lib/tree-sitter-r", exact: "1.3.0"),
40 .package(url: "https://github.com/tree-sitter/tree-sitter-ruby", exact: "0.23.1"),
41 .package(url: "https://github.com/tree-sitter/tree-sitter-rust", exact: "0.24.2"),
42 .package(url: "https://github.com/6cdh/tree-sitter-scheme", exact: "0.24.7-1"),
43 .package(url: "https://github.com/tree-sitter-grammars/tree-sitter-toml", exact: "0.7.0"),
44 .package(url: "https://github.com/tree-sitter-grammars/tree-sitter-yaml", exact: "0.7.2")
45 ],
46 targets: [
47 .target(name: "OrgCore"),
48 .target(name: "OrgDocument", dependencies: ["OrgCore"]),
49 .target(name: "OrgIndex", dependencies: ["OrgCore", .product(name: "GRDB", package: "GRDB.swift")]),
50 .target(name: "OrgWorkspace", dependencies: ["OrgIndex"]),
51 .target(name: "OrgPresentation", dependencies: ["OrgCore"]),
52 .target(name: "OrgEditorAppKit", dependencies: ["OrgDocument", "OrgPresentation"]),
53 .target(name: "TreeSitterElisp", path: "Sources/TreeSitterElisp", sources: ["src/parser.c"], cSettings: [.headerSearchPath("src")]),
54 .target(name: "TreeSitterClojure", path: "Sources/TreeSitterClojure", sources: ["src/parser.c"], cSettings: [.headerSearchPath("src")]),
55 .target(
56 name: "TreeSitterScanners", path: "Sources/TreeSitterScanners",
57 sources: ["javascript/scanner.c", "lua/scanner.c", "python/scanner.c", "yaml/scanner.c"],
58 cSettings: [.unsafeFlags(["-Wno-shorten-64-to-32"])]
59 ),
60 .target(
61 name: "OrgHighlight",
62 dependencies: [
63 "OrgPresentation", "TreeSitterElisp", "TreeSitterClojure", "TreeSitterScanners",
64 .product(name: "SwiftTreeSitter", package: "swift-tree-sitter"),
65 .product(name: "TreeSitterBash", package: "tree-sitter-bash"),
66 .product(name: "TreeSitterC", package: "tree-sitter-c"),
67 .product(name: "TreeSitterCPP", package: "tree-sitter-cpp"),
68 .product(name: "TreeSitterGo", package: "tree-sitter-go"),
69 .product(name: "TreeSitterHaskell", package: "tree-sitter-haskell"),
70 .product(name: "TreeSitterJava", package: "tree-sitter-java"),
71 .product(name: "TreeSitterJavaScript", package: "tree-sitter-javascript"),
72 .product(name: "TreeSitterJSON", package: "tree-sitter-json"),
73 .product(name: "TreeSitterLua", package: "tree-sitter-lua"),
74 .product(name: "TreeSitterPython", package: "tree-sitter-python"),
75 .product(name: "TreeSitterR", package: "tree-sitter-r"),
76 .product(name: "TreeSitterRuby", package: "tree-sitter-ruby"),
77 .product(name: "TreeSitterRust", package: "tree-sitter-rust"),
78 .product(name: "TreeSitterScheme", package: "tree-sitter-scheme"),
79 .product(name: "TreeSitterTOML", package: "tree-sitter-toml"),
80 .product(name: "TreeSitterYAML", package: "tree-sitter-yaml")
81 ]
82 ),
83 .executableTarget(name: "OrgstarSpike", dependencies: ["OrgEditorAppKit"]),
84 .target(name: "OrgApp", dependencies: ["OrgWorkspace", "OrgDocument", "OrgPresentation"]),
85 .executableTarget(name: "Orgstar", dependencies: ["OrgApp", "OrgEditorAppKit", "OrgHighlight"]),
86 // The iOS app, bundled by scripts/build-ios-app.sh.
87 .executableTarget(name: "OrgstarMobile", dependencies: ["OrgApp", "OrgHighlight"]),
88 // App extensions, bundled into Orgstar.app by scripts/build-app.sh.
89 .executableTarget(name: "OrgstarQuickLook", dependencies: ["OrgCore"], linkerSettings: extensionEntry),
90 .executableTarget(name: "OrgstarSpotlight", dependencies: ["OrgCore"], linkerSettings: extensionEntry),
91 // The iOS share extension, bundled into the iOS app by scripts/build-ios-app.sh.
92 .executableTarget(name: "OrgstarShare", dependencies: ["OrgApp"], linkerSettings: extensionEntry),
93 .testTarget(name: "OrgCoreTests", dependencies: ["OrgCore"], exclude: ["Conformance"]),
94 .testTarget(name: "OrgDocumentTests", dependencies: ["OrgDocument"]),
95 .testTarget(name: "OrgIndexTests", dependencies: ["OrgIndex"]),
96 .testTarget(name: "OrgWorkspaceTests", dependencies: ["OrgWorkspace"]),
97 .testTarget(name: "OrgPresentationTests", dependencies: ["OrgPresentation"]),
98 .testTarget(name: "OrgEditorAppKitTests", dependencies: ["OrgEditorAppKit", "OrgApp"]),
99 .testTarget(name: "OrgAppTests", dependencies: ["OrgApp", "OrgDocument"]),
100 .testTarget(name: "OrgHighlightTests", dependencies: ["OrgHighlight", "OrgCore", "OrgPresentation"])
101 ]
102)