// Copyright (C) 2013 The Android Open Source Project
//
// 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.

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

cc_library_headers {
    name: "libminikin-headers-for-tests",
    export_include_dirs: ["."],
    shared_libs: ["libharfbuzz_ng"],
    export_shared_lib_headers: ["libharfbuzz_ng"],
}

cc_library {
    name: "libminikin",
    host_supported: true,
    srcs: [
        "BidiUtils.cpp",
        "BoundsCache.cpp",
        "CmapCoverage.cpp",
        "Emoji.cpp",
        "Font.cpp",
        "FontCollection.cpp",
        "FontFamily.cpp",
        "FontFeatureUtils.cpp",
        "FontFileParser.cpp",
        "FontUtils.cpp",
        "GraphemeBreak.cpp",
        "GreedyLineBreaker.cpp",
        "Hyphenator.cpp",
        "HyphenatorMap.cpp",
        "Layout.cpp",
        "LayoutCore.cpp",
        "LayoutUtils.cpp",
        "LineBreaker.cpp",
        "LineBreakerUtil.cpp",
        "Locale.cpp",
        "LocaleListCache.cpp",
        "MeasuredText.cpp",
        "Measurement.cpp",
        "MinikinInternal.cpp",
        "OptimalLineBreaker.cpp",
        "SparseBitSet.cpp",
        "SystemFonts.cpp",
        "WordBreaker.cpp",
    ],
    defaults: ["libminikin_defaults"],
    sanitize: {
        misc_undefined: [
            "signed-integer-overflow",
            "unsigned-integer-overflow",
            "bounds",
        ],
    },
    product_variables: {
        debuggable: {
            // Enable assertion on eng and userdebug build.
            cppflags: ["-DENABLE_ASSERTION"],
        },
    },
    shared_libs: [
        "liblog",
        "libharfbuzz_ng",
    ],
    header_libs: [
        "libbase_headers",
        "libminikin_headers",
        "libutils_headers",
    ],
    export_header_lib_headers: ["libminikin_headers"],

    target: {
        android: {
            shared_libs: [
                "libandroidicu",
            ],
            export_shared_lib_headers: [
                "libandroidicu",
            ],
        },
        host: {
            shared_libs: [
                "libicui18n",
                "libicuuc",
            ],
            export_shared_lib_headers: [
                "libicui18n",
                "libicuuc",
            ],
        },
        windows: {
            enabled: true,
            cppflags: [
                "-Wno-ignored-attributes",
                "-Wno-thread-safety",
            ],
        },
    },
}
