xref: /aosp_15_r20/external/libffi/Android.bp (revision 1fd5a2e1d639cd1ddf29dd0c484c123bbd850c21)
1*1fd5a2e1SPrashanth Swaminathan// Copyright (C) 2017 The Android Open Source Project
2*1fd5a2e1SPrashanth Swaminathan//
3*1fd5a2e1SPrashanth Swaminathan// Licensed under the Apache License, Version 2.0 (the "License");
4*1fd5a2e1SPrashanth Swaminathan// you may not use this file except in compliance with the License.
5*1fd5a2e1SPrashanth Swaminathan// You may obtain a copy of the License at
6*1fd5a2e1SPrashanth Swaminathan//
7*1fd5a2e1SPrashanth Swaminathan//      http://www.apache.org/licenses/LICENSE-2.0
8*1fd5a2e1SPrashanth Swaminathan//
9*1fd5a2e1SPrashanth Swaminathan// Unless required by applicable law or agreed to in writing, software
10*1fd5a2e1SPrashanth Swaminathan// distributed under the License is distributed on an "AS IS" BASIS,
11*1fd5a2e1SPrashanth Swaminathan// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*1fd5a2e1SPrashanth Swaminathan// See the License for the specific language governing permissions and
13*1fd5a2e1SPrashanth Swaminathan// limitations under the License.
14*1fd5a2e1SPrashanth Swaminathan
15*1fd5a2e1SPrashanth Swaminathanpackage {
16*1fd5a2e1SPrashanth Swaminathan    default_applicable_licenses: ["external_libffi_license"],
17*1fd5a2e1SPrashanth Swaminathan}
18*1fd5a2e1SPrashanth Swaminathan
19*1fd5a2e1SPrashanth Swaminathan// Added automatically by a large-scale-change that took the approach of
20*1fd5a2e1SPrashanth Swaminathan// 'apply every license found to every target'. While this makes sure we respect
21*1fd5a2e1SPrashanth Swaminathan// every license restriction, it may not be entirely correct.
22*1fd5a2e1SPrashanth Swaminathan//
23*1fd5a2e1SPrashanth Swaminathan// e.g. GPL in an MIT project might only apply to the contrib/ directory.
24*1fd5a2e1SPrashanth Swaminathan//
25*1fd5a2e1SPrashanth Swaminathan// Please consider splitting the single license below into multiple licenses,
26*1fd5a2e1SPrashanth Swaminathan// taking care not to lose any license_kind information, and overriding the
27*1fd5a2e1SPrashanth Swaminathan// default license using the 'licenses: [...]' property on targets as needed.
28*1fd5a2e1SPrashanth Swaminathan//
29*1fd5a2e1SPrashanth Swaminathan// For unused files, consider creating a 'fileGroup' with "//visibility:private"
30*1fd5a2e1SPrashanth Swaminathan// to attach the license to, and including a comment whether the files may be
31*1fd5a2e1SPrashanth Swaminathan// used in the current project.
32*1fd5a2e1SPrashanth Swaminathan//
33*1fd5a2e1SPrashanth Swaminathan// large-scale-change included anything that looked like it might be a license
34*1fd5a2e1SPrashanth Swaminathan// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
35*1fd5a2e1SPrashanth Swaminathan//
36*1fd5a2e1SPrashanth Swaminathan// Please consider removing redundant or irrelevant files from 'license_text:'.
37*1fd5a2e1SPrashanth Swaminathan// See: http://go/android-license-faq
38*1fd5a2e1SPrashanth Swaminathanlicense {
39*1fd5a2e1SPrashanth Swaminathan    name: "external_libffi_license",
40*1fd5a2e1SPrashanth Swaminathan    visibility: [":__subpackages__"],
41*1fd5a2e1SPrashanth Swaminathan    license_kinds: [
42*1fd5a2e1SPrashanth Swaminathan        "SPDX-license-identifier-Apache-2.0",
43*1fd5a2e1SPrashanth Swaminathan        "SPDX-license-identifier-GPL",
44*1fd5a2e1SPrashanth Swaminathan        "SPDX-license-identifier-GPL-2.0",
45*1fd5a2e1SPrashanth Swaminathan        "SPDX-license-identifier-GPL-3.0",
46*1fd5a2e1SPrashanth Swaminathan        "SPDX-license-identifier-LGPL",
47*1fd5a2e1SPrashanth Swaminathan        "SPDX-license-identifier-LGPL-2.1",
48*1fd5a2e1SPrashanth Swaminathan        "SPDX-license-identifier-MIT",
49*1fd5a2e1SPrashanth Swaminathan        "SPDX-license-identifier-MPL",
50*1fd5a2e1SPrashanth Swaminathan        "legacy_unencumbered",
51*1fd5a2e1SPrashanth Swaminathan    ],
52*1fd5a2e1SPrashanth Swaminathan    license_text: [
53*1fd5a2e1SPrashanth Swaminathan        "LICENSE",
54*1fd5a2e1SPrashanth Swaminathan        "LICENSE-BUILDTOOLS",
55*1fd5a2e1SPrashanth Swaminathan    ],
56*1fd5a2e1SPrashanth Swaminathan}
57*1fd5a2e1SPrashanth Swaminathan
58*1fd5a2e1SPrashanth Swaminathangenrule {
59*1fd5a2e1SPrashanth Swaminathan    name: "ffi_header",
60*1fd5a2e1SPrashanth Swaminathan    cmd: "$(location gen_ffi_header.sh) < $(in) > $(out)",
61*1fd5a2e1SPrashanth Swaminathan    srcs: ["include/ffi.h.in"],
62*1fd5a2e1SPrashanth Swaminathan    out: ["ffi_gen.h"],
63*1fd5a2e1SPrashanth Swaminathan    tool_files: ["gen_ffi_header.sh"],
64*1fd5a2e1SPrashanth Swaminathan}
65*1fd5a2e1SPrashanth Swaminathan
66*1fd5a2e1SPrashanth Swaminathancc_library {
67*1fd5a2e1SPrashanth Swaminathan    name: "libffi",
68*1fd5a2e1SPrashanth Swaminathan    host_supported: true,
69*1fd5a2e1SPrashanth Swaminathan    vendor_available: true,
70*1fd5a2e1SPrashanth Swaminathan    cflags: [
71*1fd5a2e1SPrashanth Swaminathan        "-Wall",
72*1fd5a2e1SPrashanth Swaminathan        "-Werror",
73*1fd5a2e1SPrashanth Swaminathan
74*1fd5a2e1SPrashanth Swaminathan        "-Wno-error=incompatible-pointer-types",
75*1fd5a2e1SPrashanth Swaminathan        "-Wno-incompatible-pointer-types",
76*1fd5a2e1SPrashanth Swaminathan
77*1fd5a2e1SPrashanth Swaminathan        "-Wno-deprecated-declarations",
78*1fd5a2e1SPrashanth Swaminathan        "-Wno-missing-field-initializers",
79*1fd5a2e1SPrashanth Swaminathan        "-Wno-null-pointer-arithmetic",
80*1fd5a2e1SPrashanth Swaminathan        "-Wno-pointer-arith",
81*1fd5a2e1SPrashanth Swaminathan        "-Wno-sign-compare",
82*1fd5a2e1SPrashanth Swaminathan        "-Wno-unused-parameter",
83*1fd5a2e1SPrashanth Swaminathan        "-Wno-unused-result",
84*1fd5a2e1SPrashanth Swaminathan    ],
85*1fd5a2e1SPrashanth Swaminathan    local_include_dirs: ["include"],
86*1fd5a2e1SPrashanth Swaminathan    generated_headers: ["ffi_header"],
87*1fd5a2e1SPrashanth Swaminathan    export_generated_headers: ["ffi_header"],
88*1fd5a2e1SPrashanth Swaminathan    srcs: [
89*1fd5a2e1SPrashanth Swaminathan        "src/closures.c",
90*1fd5a2e1SPrashanth Swaminathan        "src/debug.c",
91*1fd5a2e1SPrashanth Swaminathan        "src/java_raw_api.c",
92*1fd5a2e1SPrashanth Swaminathan        "src/prep_cif.c",
93*1fd5a2e1SPrashanth Swaminathan        "src/raw_api.c",
94*1fd5a2e1SPrashanth Swaminathan        "src/types.c",
95*1fd5a2e1SPrashanth Swaminathan    ],
96*1fd5a2e1SPrashanth Swaminathan    arch: {
97*1fd5a2e1SPrashanth Swaminathan        arm: {
98*1fd5a2e1SPrashanth Swaminathan            srcs: [
99*1fd5a2e1SPrashanth Swaminathan                "src/arm/sysv.S",
100*1fd5a2e1SPrashanth Swaminathan                "src/arm/ffi.c",
101*1fd5a2e1SPrashanth Swaminathan            ],
102*1fd5a2e1SPrashanth Swaminathan            export_include_dirs: ["linux-arm"],
103*1fd5a2e1SPrashanth Swaminathan        },
104*1fd5a2e1SPrashanth Swaminathan        arm64: {
105*1fd5a2e1SPrashanth Swaminathan            srcs: [
106*1fd5a2e1SPrashanth Swaminathan                "src/aarch64/sysv.S",
107*1fd5a2e1SPrashanth Swaminathan                "src/aarch64/ffi.c",
108*1fd5a2e1SPrashanth Swaminathan            ],
109*1fd5a2e1SPrashanth Swaminathan            export_include_dirs: ["linux-arm64"],
110*1fd5a2e1SPrashanth Swaminathan        },
111*1fd5a2e1SPrashanth Swaminathan        x86: {
112*1fd5a2e1SPrashanth Swaminathan            srcs: [
113*1fd5a2e1SPrashanth Swaminathan                "src/x86/ffi.c",
114*1fd5a2e1SPrashanth Swaminathan                "src/x86/sysv.S",
115*1fd5a2e1SPrashanth Swaminathan            ],
116*1fd5a2e1SPrashanth Swaminathan            asflags: [
117*1fd5a2e1SPrashanth Swaminathan                "-DHAVE_AS_X86_PCREL",
118*1fd5a2e1SPrashanth Swaminathan                "-DHAVE_AS_ASCII_PSEUDO_OP",
119*1fd5a2e1SPrashanth Swaminathan            ],
120*1fd5a2e1SPrashanth Swaminathan            export_include_dirs: ["linux-x86"],
121*1fd5a2e1SPrashanth Swaminathan        },
122*1fd5a2e1SPrashanth Swaminathan        x86_64: {
123*1fd5a2e1SPrashanth Swaminathan            srcs: [
124*1fd5a2e1SPrashanth Swaminathan                "src/x86/ffi64.c",
125*1fd5a2e1SPrashanth Swaminathan                "src/x86/ffiw64.c",
126*1fd5a2e1SPrashanth Swaminathan                "src/x86/unix64.S",
127*1fd5a2e1SPrashanth Swaminathan                "src/x86/win64.S",
128*1fd5a2e1SPrashanth Swaminathan            ],
129*1fd5a2e1SPrashanth Swaminathan            asflags: [
130*1fd5a2e1SPrashanth Swaminathan                "-DHAVE_AS_X86_PCREL",
131*1fd5a2e1SPrashanth Swaminathan                "-DHAVE_AS_ASCII_PSEUDO_OP",
132*1fd5a2e1SPrashanth Swaminathan            ],
133*1fd5a2e1SPrashanth Swaminathan            export_include_dirs: ["linux-x86_64"],
134*1fd5a2e1SPrashanth Swaminathan        },
135*1fd5a2e1SPrashanth Swaminathan        riscv64: {
136*1fd5a2e1SPrashanth Swaminathan            srcs: [
137*1fd5a2e1SPrashanth Swaminathan                "src/riscv/ffi.c",
138*1fd5a2e1SPrashanth Swaminathan                "src/riscv/sysv.S",
139*1fd5a2e1SPrashanth Swaminathan            ],
140*1fd5a2e1SPrashanth Swaminathan            export_include_dirs: ["linux-riscv64"],
141*1fd5a2e1SPrashanth Swaminathan        },
142*1fd5a2e1SPrashanth Swaminathan    },
143*1fd5a2e1SPrashanth Swaminathan    apex_available: [
144*1fd5a2e1SPrashanth Swaminathan        "//apex_available:platform",
145*1fd5a2e1SPrashanth Swaminathan        "com.android.virt",
146*1fd5a2e1SPrashanth Swaminathan    ],
147*1fd5a2e1SPrashanth Swaminathan}
148