//
// Copyright (C) 2010 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: "rs-version",
    cflags: [
        "-DRS_VERSION=24",
    ],
}

cc_defaults {
    name: "slang-defaults",
    defaults: [
        "clang-defaults",
        "rs-version",
    ],

    cflags: [
        "-Wall",
        "-Werror",
        "-std=c++11",

        "-D__DISABLE_ASSERTS",

        "-DTARGET_BUILD_VARIANT=user",
    ],

    product_variables: {
        debuggable: {
            cflags: [
                "-U__DISABLE_ASSERTS",

                "-UTARGET_BUILD_VARIANT",
                "-DTARGET_BUILD_VARIANT=userdebug",
            ],
        },
        eng: {
            cflags: [
                "-O0",
                "-D__ENABLE_INTERNAL_OPTIONS",

                "-UTARGET_BUILD_VARIANT",
                "-DTARGET_BUILD_VARIANT=eng",
            ],
        },
    },
}

static_libraries_needed_by_slang = [
    "libLLVMBitWriter_2_9",
    "libLLVMBitWriter_2_9_func",
    "libLLVMBitWriter_3_2",
    "libStripUnkAttr",
]

// Exported header files
cc_library_headers {
    name: "slang_headers",
    export_include_dirs: ["."],
    host_supported: true,
    target: {
        windows: {
	    enabled: true,
	},
    },
}

// Static library libslang for host
// ========================================================
cc_library_host_static {
    name: "libslang",
    defaults: ["slang-defaults"],
    compile_multilib: "first",

    target: {
        windows: {
            // Skip missing-field-initializer warnings for mingw.
            cflags: ["-Wno-error=missing-field-initializers"],
        },
    },

    srcs: [
        "slang.cpp",
        "slang_bitcode_gen.cpp",
        "slang_backend.cpp",
        "slang_diagnostic_buffer.cpp",
    ],

    shared_libs: ["libbcinfo"],

    product_variables: {
        unbundled_build: {
            enabled: false,
        },
    },
}

// ========================================================

cc_binary_host {
    name: "llvm-rs-as",
    defaults: ["slang-defaults"],

    srcs: ["llvm-rs-as.cpp"],

    static_libs: ["libslang"] + static_libraries_needed_by_slang,
    shared_libs: ["libLLVM_android"],

    product_variables: {
        unbundled_build: {
            enabled: false,
        },
    },
}

// Executable llvm-rs-cc for host
// ========================================================

// For build RSCCOptions.inc from RSCCOptions.td
llvm_tblgen {
    name: "slang-gen-options",
    in: "RSCCOptions.td",
    outs: ["RSCCOptions.inc"],
}

cc_binary_host {
    name: "llvm-rs-cc",
    defaults: ["slang-defaults"],

    generated_headers: ["slang-gen-options"],
    srcs: [
        "llvm-rs-cc.cpp",
        "rs_cc_options.cpp",
        "slang_rs_foreach_lowering.cpp",
        "slang_rs_ast_replace.cpp",
        "slang_rs_check_ast.cpp",
        "slang_rs_context.cpp",
        "slang_rs_pragma_handler.cpp",
        "slang_rs_exportable.cpp",
        "slang_rs_export_type.cpp",
        "slang_rs_export_element.cpp",
        "slang_rs_export_var.cpp",
        "slang_rs_export_func.cpp",
        "slang_rs_export_foreach.cpp",
        "slang_rs_export_reduce.cpp",
        "slang_rs_object_ref_count.cpp",
        "slang_rs_reflection.cpp",
        "slang_rs_reflection_cpp.cpp",
        "slang_rs_reflection_state.cpp",
        "slang_rs_reflect_utils.cpp",
        "slang_rs_special_func.cpp",
        "slang_rs_special_kernel_param.cpp",
    ],

    static_libs: ["libslang"] + static_libraries_needed_by_slang,

    shared_libs: [
        "libbcinfo",
        "libclang_android",
        "libLLVM_android",
    ],

    target: {
        windows: {
            host_ldlibs: [
                "-limagehlp",
                "-lpsapi",
            ],
            cflags: [
                // Skip missing-field-initializer warnings for mingw.
                "-Wno-error=missing-field-initializers",
            ],
        },
    },

    product_variables: {
        unbundled_build: {
            enabled: false,
        },
    },
}

subdirs = [
    "BitWriter_2_9",
    "BitWriter_2_9_func",
    "BitWriter_3_2",
    "StripUnkAttr",
]
