// Mesa 3-D graphics library
//
// Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
// Copyright (C) 2010-2011 LunarG Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.

soong_namespace {}

build = ["Android.gen.bp"]

cc_library_headers {
    name: "mesa_common_headers",
    export_include_dirs: [
        "src",
        "include",
    ],
    host_supported: true,
    vendor: true,
    visibility: [":__subpackages__"],
}

// This needs to be kept in sync with Android.common.mk
cc_defaults {
    name: "mesa_common_defaults",
    defaults: ["mesa_version_defaults"],

    // uncomment to keep the debug symbols
    // strip: { none: true, },

    vendor: true,
    header_libs: ["mesa_common_headers"],

    cflags: [
        "-Wno-error",
        "-Werror=incompatible-pointer-types",
        "-Wno-unused-parameter",
        "-Wno-pointer-arith",
        "-Wno-missing-field-initializers",
        "-Wno-initializer-overrides",
        "-Wno-mismatched-tags",
        // PACKAGE_VERSION is in mesa_version_defaults
        "-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"",

        // XXX: The following __STDC_*_MACROS defines should not be needed.
        // It's likely due to a bug elsewhere, but let's temporarily add them
        // here to fix the radeonsi build.
        "-DENABLE_SHADER_CACHE",
        "-D__STDC_CONSTANT_MACROS",
        "-D__STDC_LIMIT_MACROS",
        "-DHAVE___BUILTIN_EXPECT",
        "-DHAVE___BUILTIN_FFS",
        "-DHAVE___BUILTIN_FFSLL",
        "-DHAVE_DLFCN_H",
        "-DHAVE_FUNC_ATTRIBUTE_FLATTEN",
        "-DHAVE_FUNC_ATTRIBUTE_UNUSED",
        "-DHAVE_FUNC_ATTRIBUTE_FORMAT",
        "-DHAVE_FUNC_ATTRIBUTE_PACKED",
        "-DHAVE_FUNC_ATTRIBUTE_ALIAS",
        "-DHAVE_FUNC_ATTRIBUTE_NORETURN",
        "-DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL",
        "-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT",
        "-DHAVE___BUILTIN_CTZ",
        "-DHAVE___BUILTIN_POPCOUNT",
        "-DHAVE___BUILTIN_POPCOUNTLL",
        "-DHAVE___BUILTIN_CLZ",
        "-DHAVE___BUILTIN_CLZLL",
        "-DHAVE___BUILTIN_UNREACHABLE",
        "-DHAVE_PTHREAD=1",
        "-DHAVE_DLADDR",
        "-DHAVE_DL_ITERATE_PHDR",
        "-DHAVE_LINUX_FUTEX_H",
        "-DHAVE_ENDIAN_H",
        "-DHAVE_ZLIB",
        "-DMAJOR_IN_SYSMACROS",
        "-DVK_USE_PLATFORM_ANDROID_KHR",
        "-fvisibility=hidden",
        "-fno-math-errno",
        "-fno-trapping-math",
        "-Werror",
        "-Wno-#warnings",
        "-Wno-asm-operand-widths",
        "-Wno-cast-calling-convention",
        "-Wno-constant-logical-operand",
        "-Wno-enum-conversion",
        "-Wno-format",
        "-Wno-gnu-variable-sized-type-not-at-end",
        "-Wno-implicit-fallthrough",
        "-Wno-incompatible-pointer-types",
        "-Wno-missing-braces",
        "-Wno-overloaded-virtual",
        "-Wno-self-assign",
        "-Wno-shift-negative-value",
        "-Wno-sign-compare",
        "-Wno-sometimes-uninitialized",
        "-Wno-switch",
        "-Wno-typedef-redefinition",
        "-Wno-uninitialized",
        "-DHAVE_TIMESPEC_GET",
    ],

    // mesa requires at least c99 compiler
    c_std: "c99",

    cppflags: [
        "-D__STDC_CONSTANT_MACROS",
        "-D__STDC_FORMAT_MACROS",
        "-D__STDC_LIMIT_MACROS",
        "-Wno-error=non-virtual-dtor",
        "-Wno-non-virtual-dtor",
    ],

    arch: {
        arm: {
            neon: {
                cflags: ["-DUSE_ARM_ASM"],
            },
        },
        arm64: {
            cflags: ["-DUSE_AARCH64_ASM"],
        },
    },

    multilib: {
        lib32: {
            cflags: ["-DDEFAULT_DRIVER_DIR=\"/vendor/lib/dri\""],
        },
        lib64: {
            cflags: ["-DDEFAULT_DRIVER_DIR=\"/vendor/lib64/dri\""],
        },
    },

    product_variables: {
        platform_sdk_version: {
            cflags: ["-DANDROID_API_LEVEL=%d"],
        },
    },

    target: {
        host: {
            cflags: [
                "-D_GNU_SOURCE",
                "-DHAVE_LIBDRM",
            ],
            shared_libs: ["libdrm"],
        },
    },
}

genrule {
    name: "mesa_genxml_genX",
    cmd: "cp $(in) $(genDir)/genxml/",
    srcs: [
        "prebuilt-intermediates/genxml/genX_bits.h",
        "prebuilt-intermediates/genxml/genX_xml.h",
    ],
    out: [
        "genxml/genX_bits.h",
        "genxml/genX_xml.h",
    ],
}
