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

cc_defaults {
    name: "libbcc-defaults",
    defaults: [
        "llvm-defaults",
        "rs-version",
        "libbcc-targets",
    ],

    clang: true,
    cflags: [
        "-Wall",
        "-Wno-unused-parameter",
        "-Werror",
        "-D__DISABLE_ASSERTS",
    ],

    target: {
        android: {
            cflags: [
                "-DTARGET_BUILD",
            ],
        },
        host: {
            compile_multilib: "first",
            cflags: [
                "-D__HOST__",
            ],
        },
    },

    product_variables: {
        eng: {
            cflags: ["-U__DISABLE_ASSERTS"],
        },
    },

    include_dirs: [
        "frameworks/compile/libbcc/include",
        "frameworks/rs",
    ],
}

//=====================================================================
// Architecture Selection
//=====================================================================
// Note: We should only use -DFORCE_ARCH_CODEGEN on target build.
// For the host build, we will include as many architecture as possible,
// so that we can test the execution engine easily.

cc_defaults {
    name: "libbcc-targets",
    arch: {
        arm: {
            cflags: [
                "-DFORCE_ARM_CODEGEN",
                "-DARCH_ARM_HAVE_VFP",
            ],
            armv7_a_neon: {
                cflags: [
                    "-DARCH_ARM_HAVE_VFP_D32",
                    "-DARCH_ARM_HAVE_NEON",
                ],
            },
        },
        arm64: {
            cflags: [
                "-DFORCE_ARM64_CODEGEN",
                "-DARCH_ARM_HAVE_NEON",
                "-DARCH_ARM_HAVE_VFP",
                "-DARCH_ARM_HAVE_VFP_D32",
                "-DDISABLE_CLCORE_NEON",
            ],
        },
        mips: {
            cflags: ["-DFORCE_MIPS_CODEGEN"],
        },
        mips64: {
            cflags: ["-DFORCE_MIPS64_CODEGEN"],
        },
    },
    target: {
        android_x86: {
            cflags: ["-DFORCE_X86_CODEGEN"],
        },
        android_x86_64: {
            cflags: ["-DFORCE_X86_64_CODEGEN"],
        },
        arm_on_x86: {
            cflags: [
                "-DPROVIDE_ARM_CODEGEN",
                "-DFORCE_BUILD_ARM",
            ],
        },
        arm_on_x86_64: {
            cflags: [
                "-DPROVIDE_ARM_CODEGEN",
                "-DFORCE_BUILD_ARM",
                "-DPROVIDE_ARM64_CODEGEN",
            ],
        },
    },
}

subdirs = [
    "bcinfo",
    "lib",
    "tools",
]
