# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
load("//tools/build_defs/oss:yoga_defs.bzl", "BASE_COMPILER_FLAGS", "GTEST_TARGET", "LIBRARY_COMPILER_FLAGS", "YOGA_ROOTS", "subdir_glob", "yoga_cxx_library", "yoga_cxx_test", "yoga_dep", "yoga_prebuilt_cxx_library")

GMOCK_OVERRIDE_FLAGS = [
    # gmock does not mark mocked methods as override, ignore the warnings in tests
    "-Wno-inconsistent-missing-override",
]

TEST_COMPILER_FLAGS = BASE_COMPILER_FLAGS + GMOCK_OVERRIDE_FLAGS + [
    "-DDEBUG",
    "-DYG_ENABLE_EVENTS",
]

yoga_prebuilt_cxx_library(
    name = "ndklog",
    exported_platform_linker_flags = [
        (
            "^android.*",
            ["-llog"],
        ),
    ],
    header_only = True,
    visibility = YOGA_ROOTS,
)

yoga_cxx_library(
    name = "yoga",
    srcs = glob(["yoga/**/*.cpp"]),
    compiler_flags = LIBRARY_COMPILER_FLAGS,
    public_include_directories = ["."],
    raw_headers = glob(["yoga/**/*.h"]),
    soname = "libyogacore.$(ext)",
    tests = [":YogaTests"],
    visibility = ["PUBLIC"],
    deps = [
        ":ndklog",
    ],
)

yoga_cxx_library(
    name = "yoga-static",
    srcs = glob(["yoga/**/*.cpp"]),
    compiler_flags = LIBRARY_COMPILER_FLAGS,
    preferred_linkage = "static",
    public_include_directories = ["."],
    raw_headers = glob(["yoga/**/*.h"]),
    tests = [":YogaTests"],
    visibility = ["PUBLIC"],
    deps = [
        ":ndklog",
    ],
)

yoga_cxx_library(
    name = "yogaForDebug",
    srcs = glob(["yoga/**/*.cpp"]),
    compiler_flags = TEST_COMPILER_FLAGS,
    public_include_directories = ["."],
    raw_headers = glob(["yoga/**/*.h"]),
    soname = "libyogacore.$(ext)",
    tests = [":YogaTests"],
    visibility = ["PUBLIC"],
    deps = [
        ":yoga",
    ],
)

yoga_cxx_test(
    name = "YogaTests",
    srcs = glob(["tests/*.cpp"]),
    headers = subdir_glob([("", "yoga/**/*.h")]),
    compiler_flags = TEST_COMPILER_FLAGS,
    contacts = ["emilsj@fb.com"],
    visibility = ["PUBLIC"],
    deps = [
        ":yogaForDebug",
        yoga_dep("testutil:testutil"),
        GTEST_TARGET,
    ],
)
