//#
//# Copyright (C) 2012 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.
//#

//############################################################
//   Note:
//
//   This file is used to build HarfBuzz within the Android
//   platform itself.  If you need to compile HarfBuzz to
//   ship with your Android NDK app, you can use the autotools
//   build system to do so.  To do that you need to install a
//   "standalone" toolchain with the NDK, eg:
//
//       ndk/build/tools/make-standalone-toolchain.sh
//           --platform=android-18
//           --install-dir=/prefix
//
//   Set PLATFORM_PREFIX eng var to that prefix and make sure
//   the cross-compile tools from PLATFORM_PREFIX are in path.
//   Configure and install HarfBuzz:
//
//       ./configure --host=arm-linux-androideabi
//           --prefix=$PLATFORM_PREFIX
//           --enable-static
//           --with-freetype
//           PKG_CONFIG_LIBDIR=$PLATFORM_PREFIX/lib/pkgconfig
//       make install
//
//   You can first build FreeType the same way:
//
//       ./configure --host=arm-linux-androideabi
//           --prefix=$PLATFORM_PREFIX
//           --enable-stati
//           --without-png
//           PKG_CONFIG_LIBDIR=$PLATFORM_PREFIX/lib/pkgconfig
//       make install
//

//############################################################
//   build the harfbuzz shared library
//
cc_library_shared {
    name: "libharfbuzz_ng",
    host_supported: true,
    arch: {
        arm: {
            instruction_set: "arm",
        },
    },
    srcs: [
        "src/hb-aat-layout.cc",
        "src/hb-aat-map.cc",
        "src/hb-blob.cc",
        "src/hb-buffer-serialize.cc",
        "src/hb-buffer.cc",
        "src/hb-common.cc",
        "src/hb-face.cc",
        "src/hb-font.cc",
        "src/hb-icu.cc",
        "src/hb-ot-cff1-table.cc",
        "src/hb-ot-cff2-table.cc",
        "src/hb-ot-face.cc",
        "src/hb-ot-font.cc",
        "src/hb-ot-layout.cc",
        "src/hb-ot-map.cc",
        "src/hb-ot-math.cc",
        "src/hb-ot-shape-complex-arabic.cc",
        "src/hb-ot-shape-complex-default.cc",
        "src/hb-ot-shape-complex-hangul.cc",
        "src/hb-ot-shape-complex-hebrew.cc",
        "src/hb-ot-shape-complex-indic-table.cc",
        "src/hb-ot-shape-complex-indic.cc",
        "src/hb-ot-shape-complex-khmer.cc",
        "src/hb-ot-shape-complex-myanmar.cc",
        "src/hb-ot-shape-complex-thai.cc",
        "src/hb-ot-shape-complex-use-table.cc",
        "src/hb-ot-shape-complex-use.cc",
        "src/hb-ot-shape-complex-vowel-constraints.cc",
        "src/hb-ot-shape-fallback.cc",
        "src/hb-ot-shape-normalize.cc",
        "src/hb-ot-shape.cc",
        "src/hb-ot-tag.cc",
        "src/hb-ot-var.cc",
        "src/hb-set.cc",
        "src/hb-shape-plan.cc",
        "src/hb-shape.cc",
        "src/hb-shaper.cc",
        "src/hb-static.cc",
        "src/hb-unicode.cc",
        "src/hb-warning.cc",
    ],

    target: {
        android: {
            shared_libs: [
                "libcutils",
                "libutils",
            ],
        },
        host: {
            static_libs: [
                "libcutils",
                "libutils",
            ],
        },
        windows: {
            enabled: true,
        },
    },

    shared_libs: [
        "libandroidicu",
        "liblog",
    ],

    export_include_dirs: ["src"],
    cflags: [
        "-DHAVE_INTEL_ATOMIC_PRIMITIVES",
        "-DHAVE_OT",
        "-DHAVE_ICU",
        "-DHAVE_ICU_BUILTIN",
        "-Werror",
        "-Wno-unused-parameter",
        "-Wno-missing-field-initializers",
    ],
}
