xref: /aosp_15_r20/external/fdlibm/Android.bp (revision 1e651e1ef2b613db2c4b29ae59c1de74cf0222ae)
1*1e651e1eSRoland Levillain// Copyright (C) 2007 The Android Open Source Project
2*1e651e1eSRoland Levillain//
3*1e651e1eSRoland Levillain// Licensed under the Apache License, Version 2.0 (the "License");
4*1e651e1eSRoland Levillain// you may not use this file except in compliance with the License.
5*1e651e1eSRoland Levillain// You may obtain a copy of the License at
6*1e651e1eSRoland Levillain//
7*1e651e1eSRoland Levillain//      http://www.apache.org/licenses/LICENSE-2.0
8*1e651e1eSRoland Levillain//
9*1e651e1eSRoland Levillain// Unless required by applicable law or agreed to in writing, software
10*1e651e1eSRoland Levillain// distributed under the License is distributed on an "AS IS" BASIS,
11*1e651e1eSRoland Levillain// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*1e651e1eSRoland Levillain// See the License for the specific language governing permissions and
13*1e651e1eSRoland Levillain// limitations under the License.
14*1e651e1eSRoland Levillain
15*1e651e1eSRoland Levillainpackage {
16*1e651e1eSRoland Levillain    default_applicable_licenses: ["external_fdlibm_license"],
17*1e651e1eSRoland Levillain}
18*1e651e1eSRoland Levillain
19*1e651e1eSRoland Levillain// Added automatically by a large-scale-change
20*1e651e1eSRoland Levillainlicense {
21*1e651e1eSRoland Levillain    name: "external_fdlibm_license",
22*1e651e1eSRoland Levillain    visibility: [":__subpackages__"],
23*1e651e1eSRoland Levillain    license_kinds: [
24*1e651e1eSRoland Levillain        "SPDX-license-identifier-BSD",
25*1e651e1eSRoland Levillain    ],
26*1e651e1eSRoland Levillain    license_text: [
27*1e651e1eSRoland Levillain        "NOTICE",
28*1e651e1eSRoland Levillain    ],
29*1e651e1eSRoland Levillain}
30*1e651e1eSRoland Levillain
31*1e651e1eSRoland Levillaincc_library_static {
32*1e651e1eSRoland Levillain    name: "libfdlibm",
33*1e651e1eSRoland Levillain    host_supported: true,
34*1e651e1eSRoland Levillain
35*1e651e1eSRoland Levillain    srcs: [
36*1e651e1eSRoland Levillain        "k_standard.c",
37*1e651e1eSRoland Levillain        "k_rem_pio2.c",
38*1e651e1eSRoland Levillain        "k_cos.c",
39*1e651e1eSRoland Levillain        "k_sin.c",
40*1e651e1eSRoland Levillain        "k_tan.c",
41*1e651e1eSRoland Levillain        "e_acos.c",
42*1e651e1eSRoland Levillain        "e_acosh.c",
43*1e651e1eSRoland Levillain        "e_asin.c",
44*1e651e1eSRoland Levillain        "e_atan2.c",
45*1e651e1eSRoland Levillain        "e_atanh.c",
46*1e651e1eSRoland Levillain        "e_cosh.c",
47*1e651e1eSRoland Levillain        "e_exp.c",
48*1e651e1eSRoland Levillain        "e_fmod.c",
49*1e651e1eSRoland Levillain        "e_gamma.c",
50*1e651e1eSRoland Levillain        "e_gamma_r.c",
51*1e651e1eSRoland Levillain        "e_hypot.c",
52*1e651e1eSRoland Levillain        "e_j0.c",
53*1e651e1eSRoland Levillain        "e_j1.c",
54*1e651e1eSRoland Levillain        "e_jn.c",
55*1e651e1eSRoland Levillain        "e_lgamma.c",
56*1e651e1eSRoland Levillain        "e_lgamma_r.c",
57*1e651e1eSRoland Levillain        "e_log.c",
58*1e651e1eSRoland Levillain        "e_log10.c",
59*1e651e1eSRoland Levillain        "e_pow.c",
60*1e651e1eSRoland Levillain        "e_rem_pio2.c",
61*1e651e1eSRoland Levillain        "e_remainder.c",
62*1e651e1eSRoland Levillain        "e_scalb.c",
63*1e651e1eSRoland Levillain        "e_sinh.c",
64*1e651e1eSRoland Levillain        "e_sqrt.c",
65*1e651e1eSRoland Levillain        "w_acos.c",
66*1e651e1eSRoland Levillain        "w_acosh.c",
67*1e651e1eSRoland Levillain        "w_asin.c",
68*1e651e1eSRoland Levillain        "w_atan2.c",
69*1e651e1eSRoland Levillain        "w_atanh.c",
70*1e651e1eSRoland Levillain        "w_cosh.c",
71*1e651e1eSRoland Levillain        "w_exp.c",
72*1e651e1eSRoland Levillain        "w_fmod.c",
73*1e651e1eSRoland Levillain        "w_gamma.c",
74*1e651e1eSRoland Levillain        "w_gamma_r.c",
75*1e651e1eSRoland Levillain        "w_hypot.c",
76*1e651e1eSRoland Levillain        "w_j0.c",
77*1e651e1eSRoland Levillain        "w_j1.c",
78*1e651e1eSRoland Levillain        "w_jn.c",
79*1e651e1eSRoland Levillain        "w_lgamma.c",
80*1e651e1eSRoland Levillain        "w_lgamma_r.c",
81*1e651e1eSRoland Levillain        "w_log.c",
82*1e651e1eSRoland Levillain        "w_log10.c",
83*1e651e1eSRoland Levillain        "w_pow.c",
84*1e651e1eSRoland Levillain        "w_remainder.c",
85*1e651e1eSRoland Levillain        "w_scalb.c",
86*1e651e1eSRoland Levillain        "w_sinh.c",
87*1e651e1eSRoland Levillain        "w_sqrt.c",
88*1e651e1eSRoland Levillain        "s_asinh.c",
89*1e651e1eSRoland Levillain        "s_atan.c",
90*1e651e1eSRoland Levillain        "s_cbrt.c",
91*1e651e1eSRoland Levillain        "s_ceil.c",
92*1e651e1eSRoland Levillain        "s_copysign.c",
93*1e651e1eSRoland Levillain        "s_cos.c",
94*1e651e1eSRoland Levillain        "s_erf.c",
95*1e651e1eSRoland Levillain        "s_expm1.c",
96*1e651e1eSRoland Levillain        "s_fabs.c",
97*1e651e1eSRoland Levillain        "s_finite.c",
98*1e651e1eSRoland Levillain        "s_floor.c",
99*1e651e1eSRoland Levillain        "s_frexp.c",
100*1e651e1eSRoland Levillain        "s_ilogb.c",
101*1e651e1eSRoland Levillain        "s_isnan.c",
102*1e651e1eSRoland Levillain        "s_ldexp.c",
103*1e651e1eSRoland Levillain        "s_lib_version.c",
104*1e651e1eSRoland Levillain        "s_log1p.c",
105*1e651e1eSRoland Levillain        "s_logb.c",
106*1e651e1eSRoland Levillain        "s_matherr.c",
107*1e651e1eSRoland Levillain        "s_modf.c",
108*1e651e1eSRoland Levillain        "s_nextafter.c",
109*1e651e1eSRoland Levillain        "s_rint.c",
110*1e651e1eSRoland Levillain        "s_scalbn.c",
111*1e651e1eSRoland Levillain        "s_signgam.c",
112*1e651e1eSRoland Levillain        "s_significand.c",
113*1e651e1eSRoland Levillain        "s_sin.c",
114*1e651e1eSRoland Levillain        "s_tan.c",
115*1e651e1eSRoland Levillain        "s_tanh.c",
116*1e651e1eSRoland Levillain    ],
117*1e651e1eSRoland Levillain
118*1e651e1eSRoland Levillain    // c99 specifies a less relaxed floating point model that does not
119*1e651e1eSRoland Levillain    // enable floating point expession contraction (e.g: fused multiply-add
120*1e651e1eSRoland Levillain    // operations).
121*1e651e1eSRoland Levillain    c_std: "c99",
122*1e651e1eSRoland Levillain
123*1e651e1eSRoland Levillain    cflags: [
124*1e651e1eSRoland Levillain        // This is necessary to guarantee that the FDLIBM functions are in
125*1e651e1eSRoland Levillain        // "IEEE spirit", i.e. to guarantee that the IEEE 754 core functions
126*1e651e1eSRoland Levillain        // are used.
127*1e651e1eSRoland Levillain        "-D_IEEE_LIBM",
128*1e651e1eSRoland Levillain
129*1e651e1eSRoland Levillain        // Android only supports little-endian.
130*1e651e1eSRoland Levillain        "-D__LITTLE_ENDIAN",
131*1e651e1eSRoland Levillain
132*1e651e1eSRoland Levillain        // Disable compiler optimizations that interact badly with this crufty
133*1e651e1eSRoland Levillain        // library (see their own admission in 'readme'). Without this, we
134*1e651e1eSRoland Levillain        // fail StrictMath tests on x86.
135*1e651e1eSRoland Levillain        "-fno-strict-aliasing",
136*1e651e1eSRoland Levillain
137*1e651e1eSRoland Levillain        // Disable warnings. We need a specific version of fdlibm and can't fix this upstream.
138*1e651e1eSRoland Levillain        "-Werror",
139*1e651e1eSRoland Levillain        "-Wno-sign-compare",
140*1e651e1eSRoland Levillain        "-Wno-dangling-else",
141*1e651e1eSRoland Levillain        "-Wno-unknown-pragmas",
142*1e651e1eSRoland Levillain
143*1e651e1eSRoland Levillain        "-Wno-dangling-else",
144*1e651e1eSRoland Levillain        "-Wno-logical-op-parentheses",
145*1e651e1eSRoland Levillain        "-Wno-sometimes-uninitialized",
146*1e651e1eSRoland Levillain    ],
147*1e651e1eSRoland Levillain
148*1e651e1eSRoland Levillain    apex_available: [
149*1e651e1eSRoland Levillain        "com.android.art",
150*1e651e1eSRoland Levillain        "com.android.art.debug",
151*1e651e1eSRoland Levillain    ],
152*1e651e1eSRoland Levillain    min_sdk_version: "S",
153*1e651e1eSRoland Levillain}
154