# Copyright 2016 The Tulsi Authors. 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.

# mock BUILD file using Swift targets for aspect testing.

load(
    "@build_bazel_rules_apple//apple:ios.bzl",
    "ios_application",
)
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")

ios_application(
    name = "Application",
    bundle_id = "com.example.invalid",
    families = [
        "iphone",
        "ipad",
    ],
    infoplists = ["Info.plist"],
    minimum_os_version = "8.0",
    deps = [":ApplicationLibrary"],
)

objc_library(
    name = "ApplicationLibrary",
    srcs = [
        "//tools/objc:objc_dummy.mm",
    ],
    deps = [
        ":SwiftLibrary",
        ":SwiftLibraryV3",
        ":SwiftLibraryV4",
    ],
)

swift_library(
    name = "SwiftLibraryV3",
    srcs = [
        "SwiftLibraryV3/srcs/a.swift",
        "SwiftLibraryV3/srcs/b.swift",
    ],
    copts = [
        "-swift-version",
        "3",
    ],
    defines = [
        "LIBRARY_DEFINE_V3",
    ],
)

swift_library(
    name = "SwiftLibraryV4",
    srcs = [
        "SwiftLibraryV4/srcs/a.swift",
        "SwiftLibraryV4/srcs/b.swift",
    ],
    copts = [
        "-swift-version",
        "4",
    ],
    defines = [
        "LIBRARY_DEFINE_V4",
    ],
)

swift_library(
    name = "SwiftLibrary",
    srcs = [
        "SwiftLibrary/srcs/a.swift",
        "SwiftLibrary/srcs/b.swift",
    ],
    defines = [
        "LIBRARY_DEFINE",
    ],
    deps = [
        ":SubSwiftLibrary",
    ],
)

swift_library(
    name = "SubSwiftLibrary",
    defines = [
        "SUB_LIBRARY_DEFINE",
    ],
)
