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

genrule {
    name: "ffi_header",
    cmd: "$(location gen_ffi_header.sh) < $(in) > $(out)",
    srcs: ["include/ffi.h.in"],
    out: ["ffi_gen.h"],
    tool_files: ["gen_ffi_header.sh"],
}

cc_library_static {
    name: "libffi",
    host_supported: true,
    vendor_available: true,
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-error=incompatible-pointer-types",
        "-Wno-incompatible-pointer-types",
        "-Wno-null-pointer-arithmetic",
        "-Wno-pointer-arith",
        "-Wno-sign-compare",
        "-Wno-unused-parameter",
        "-Wno-unused-result",
    ],
    local_include_dirs: ["include"],
    generated_headers: ["ffi_header"],
    export_generated_headers: ["ffi_header"],
    srcs: [
        "src/closures.c",
        "src/debug.c",
        "src/java_raw_api.c",
        "src/prep_cif.c",
        "src/raw_api.c",
        "src/types.c",
    ],
    arch: {
        arm: {
            srcs: [
                "src/arm/sysv.S",
                "src/arm/ffi.c",
            ],
            export_include_dirs: ["linux-arm"],
        },
        arm64: {
            srcs: [
                "src/aarch64/sysv.S",
                "src/aarch64/ffi.c",
            ],
            export_include_dirs: ["linux-arm64"],
        },
        x86: {
            srcs: [
                "src/x86/ffi.c",
                "src/x86/sysv.S",
                "src/x86/win32.S",
            ],
            asflags: [
                "-DHAVE_AS_X86_PCREL",
                "-DHAVE_AS_ASCII_PSEUDO_OP",
            ],
            export_include_dirs: ["linux-x86"],
        },
        x86_64: {
            srcs: [
                "src/x86/ffi64.c",
                "src/x86/unix64.S",
            ],
            asflags: [
                "-DHAVE_AS_X86_PCREL",
                "-DHAVE_AS_ASCII_PSEUDO_OP",
            ],
            export_include_dirs: ["linux-x86_64"],
        },
    },
    target: {
        darwin_x86_64: {
            exclude_srcs: ["src/x86/unix64.S"],
            srcs: [
                "src/x86/darwin.S",
                "src/x86/darwin64.S",
            ],
        },
    },
}
