Home | History | Annotate | Download | only in libffi
      1 // Copyright (C) 2017 The Android Open Source Project
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //      http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 genrule {
     16     name: "ffi_header",
     17     cmd: "$(location gen_ffi_header.sh) < $(in) > $(out)",
     18     srcs: ["include/ffi.h.in"],
     19     out: ["ffi_gen.h"],
     20     tool_files: ["gen_ffi_header.sh"],
     21 }
     22 
     23 cc_library_static {
     24     name: "libffi",
     25     vendor_available: true,
     26     cflags: [
     27         "-Wall",
     28         "-Werror",
     29         "-Wno-error=incompatible-pointer-types",
     30         "-Wno-pointer-arith",
     31         "-Wno-sign-compare",
     32         "-Wno-unused-parameter",
     33     ],
     34     local_include_dirs: ["include"],
     35     generated_headers: ["ffi_header"],
     36     export_generated_headers: ["ffi_header"],
     37     srcs: [
     38         "src/debug.c",
     39         "src/java_raw_api.c",
     40         "src/prep_cif.c",
     41         "src/raw_api.c",
     42         "src/types.c",
     43     ],
     44     arch: {
     45         arm: {
     46             srcs: [
     47                 "src/arm/sysv.S",
     48                 "src/arm/ffi.c",
     49             ],
     50             export_include_dirs: ["linux-arm"],
     51         },
     52         arm64: {
     53             srcs: [
     54                 "src/aarch64/sysv.S",
     55                 "src/aarch64/ffi.c",
     56             ],
     57             export_include_dirs: ["linux-arm64"],
     58         },
     59         x86: {
     60             srcs: [
     61                 "src/x86/ffi.c",
     62                 "src/x86/sysv.S",
     63                 "src/x86/win32.S",
     64             ],
     65             asflags: [
     66                 "-DHAVE_AS_X86_PCREL",
     67                 "-DHAVE_AS_ASCII_PSEUDO_OP",
     68             ],
     69             export_include_dirs: ["linux-x86"],
     70         },
     71         x86_64: {
     72             srcs: [
     73                 "src/x86/ffi64.c",
     74                 "src/x86/unix64.S",
     75             ],
     76             asflags: [
     77                 "-DHAVE_AS_X86_PCREL",
     78                 "-DHAVE_AS_ASCII_PSEUDO_OP",
     79             ],
     80             export_include_dirs: ["linux-x86_64"],
     81         },
     82     },
     83 }
     84