# 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.m",
    ],
    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",
    ],
)
