This PR contains the work done to address the issue #12, with regards to provide basic support of non Apple platforms. To provide further details about the work done: - [x] flattened the folder structure, especially now that the idea to filter folders based on platform is being discarded; - [x] implemented precompiler processors to filter out platform-specific source code; - [x] updated the `Package` file to provide basic support for non-Apple platforms; - [x] added and also improved some targets to the `Makefile` file to smooth the current development workflows; - [x] updated the `.gitignore` file with references to the `.vscode` folder and the `.env` file; - [x] updated the Swift tools version to v5.7. Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Reviewed-on: #13
125 lines
2.7 KiB
Swift
125 lines
2.7 KiB
Swift
// swift-tools-version: 5.7
|
|
//
|
|
// This source file is part of the SwiftLibs open source project
|
|
//
|
|
// Copyright (c) 2023 Röck+Cöde VoF. and the SwiftLibs project authors
|
|
// Licensed under the EUPL 1.2 or later.
|
|
//
|
|
// See LICENSE.txt for license information
|
|
// See CONTRIBUTORS.txt for the list of SwiftLibs project authors
|
|
//
|
|
|
|
import PackageDescription
|
|
|
|
// MARK: - Variables
|
|
|
|
private var targetsLibrary: [String] = [
|
|
.Target.communications,
|
|
.Target.coordination,
|
|
.Target.core,
|
|
.Target.dependencies,
|
|
]
|
|
|
|
private var targetsPackage: [Target] = [
|
|
.target(
|
|
name: .Target.communications,
|
|
dependencies: []
|
|
),
|
|
.target(
|
|
name: .Target.coordination,
|
|
dependencies: []
|
|
),
|
|
.target(
|
|
name: .Target.core,
|
|
dependencies: []
|
|
),
|
|
.target(
|
|
name: .Target.dependencies,
|
|
dependencies: []
|
|
),
|
|
.testTarget(
|
|
name: "CommunicationsTests",
|
|
dependencies: [
|
|
.init(stringLiteral: .Target.communications)
|
|
],
|
|
path: "Tests/Communications"
|
|
),
|
|
.testTarget(
|
|
name: "CoordinationTests",
|
|
dependencies: [
|
|
.init(stringLiteral: .Target.coordination)
|
|
],
|
|
path: "Tests/Coordination"
|
|
),
|
|
.testTarget(
|
|
name: "CoreTests",
|
|
dependencies: [
|
|
.init(stringLiteral: .Target.core)
|
|
],
|
|
path: "Tests/Core"
|
|
),
|
|
.testTarget(
|
|
name: "DependenciesTests",
|
|
dependencies: [
|
|
.init(stringLiteral: .Target.dependencies)
|
|
],
|
|
path: "Tests/Dependencies"
|
|
),
|
|
]
|
|
|
|
#if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
|
|
targetsLibrary.append(.Target.persistence)
|
|
targetsPackage.append(contentsOf: [
|
|
.target(
|
|
name: .Target.persistence,
|
|
dependencies: []
|
|
),
|
|
.testTarget(
|
|
name: "PersistenceTests",
|
|
dependencies: [
|
|
.init(stringLiteral: .Target.persistence)
|
|
],
|
|
path: "Tests/Persistence",
|
|
resources: [
|
|
.process("Resources")
|
|
]
|
|
),
|
|
])
|
|
#endif
|
|
|
|
// MARK: - Package
|
|
|
|
let package = Package(
|
|
name: .Package.name,
|
|
platforms: [
|
|
.iOS(.v15),
|
|
.macOS(.v12),
|
|
.tvOS(.v15),
|
|
.watchOS(.v8)
|
|
],
|
|
products: [
|
|
.library(
|
|
name: .Package.name,
|
|
targets: targetsLibrary
|
|
),
|
|
],
|
|
dependencies: [],
|
|
targets: targetsPackage
|
|
)
|
|
|
|
// MARK: - String+Constants
|
|
|
|
private extension String {
|
|
enum Package {
|
|
static let name = "SwiftLibs"
|
|
}
|
|
|
|
enum Target {
|
|
static let communications = "Communications"
|
|
static let coordination = "Coordination"
|
|
static let core = "Core"
|
|
static let dependencies = "Dependencies"
|
|
static let persistence = "Persistence"
|
|
}
|
|
}
|