// swift-tools-version:5.10
/*
 * Copyright 2020 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import PackageDescription

let package = Package(
  name: "FlatBuffers",
  platforms: [
    .iOS(.v12),
    .macOS(.v10_14),
  ],
  products: [
    .library(
      name: "FlatBuffers",
      targets: ["FlatBuffers"]),
    .library(
      name: "FlexBuffers",
      targets: ["FlexBuffers"]),
  ],
  dependencies: .dependencies,
  targets: [
    .target(
      name: "FlatBuffers",
      dependencies: ["Common"],
      path: "swift/Sources/FlatBuffers"),
    .target(
      name: "FlexBuffers",
      dependencies: ["Common"],
      path: "swift/Sources/FlexBuffers"),
    .target(
      name: "Common",
      path: "swift/Sources/Common"),
    .testTarget(
      name: "FlatbuffersTests",
      dependencies: .dependencies,
      path: "tests/swift/Tests/Flatbuffers"),
    .testTarget(
      name: "FlexbuffersTests",
      dependencies: ["FlexBuffers"],
      path: "tests/swift/Tests/Flexbuffers"),
  ])

extension Array where Element == Package.Dependency {
  static var dependencies: [Package.Dependency] {
    #if os(Windows)
    []
    #else
    // Test only Dependency
    [.package(url: "https://github.com/grpc/grpc-swift.git", from: "1.4.1")]
    #endif
  }
}

extension Array where Element == PackageDescription.Target.Dependency {
  static var dependencies: [PackageDescription.Target.Dependency] {
    #if os(Windows)
    ["FlatBuffers"]
    #else
    // Test only Dependency
    [
      .product(name: "GRPC", package: "grpc-swift"),
      "FlatBuffers",
    ]
    #endif
  }
}
