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

package {
    default_applicable_licenses: ["external_fdlibm_license"],
}

// Added automatically by a large-scale-change
license {
    name: "external_fdlibm_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-BSD",
    ],
    license_text: [
        "NOTICE",
    ],
}

cc_library_static {
    name: "libfdlibm",
    host_supported: true,

    srcs: [
        "k_standard.c",
        "k_rem_pio2.c",
        "k_cos.c",
        "k_sin.c",
        "k_tan.c",
        "e_acos.c",
        "e_acosh.c",
        "e_asin.c",
        "e_atan2.c",
        "e_atanh.c",
        "e_cosh.c",
        "e_exp.c",
        "e_fmod.c",
        "e_gamma.c",
        "e_gamma_r.c",
        "e_hypot.c",
        "e_j0.c",
        "e_j1.c",
        "e_jn.c",
        "e_lgamma.c",
        "e_lgamma_r.c",
        "e_log.c",
        "e_log10.c",
        "e_pow.c",
        "e_rem_pio2.c",
        "e_remainder.c",
        "e_scalb.c",
        "e_sinh.c",
        "e_sqrt.c",
        "w_acos.c",
        "w_acosh.c",
        "w_asin.c",
        "w_atan2.c",
        "w_atanh.c",
        "w_cosh.c",
        "w_exp.c",
        "w_fmod.c",
        "w_gamma.c",
        "w_gamma_r.c",
        "w_hypot.c",
        "w_j0.c",
        "w_j1.c",
        "w_jn.c",
        "w_lgamma.c",
        "w_lgamma_r.c",
        "w_log.c",
        "w_log10.c",
        "w_pow.c",
        "w_remainder.c",
        "w_scalb.c",
        "w_sinh.c",
        "w_sqrt.c",
        "s_asinh.c",
        "s_atan.c",
        "s_cbrt.c",
        "s_ceil.c",
        "s_copysign.c",
        "s_cos.c",
        "s_erf.c",
        "s_expm1.c",
        "s_fabs.c",
        "s_finite.c",
        "s_floor.c",
        "s_frexp.c",
        "s_ilogb.c",
        "s_isnan.c",
        "s_ldexp.c",
        "s_lib_version.c",
        "s_log1p.c",
        "s_logb.c",
        "s_matherr.c",
        "s_modf.c",
        "s_nextafter.c",
        "s_rint.c",
        "s_scalbn.c",
        "s_signgam.c",
        "s_significand.c",
        "s_sin.c",
        "s_tan.c",
        "s_tanh.c",
    ],

    // c99 specifies a less relaxed floating point model that does not
    // enable floating point expession contraction (e.g: fused multiply-add
    // operations).
    c_std: "c99",

    cflags: [
        // This is necessary to guarantee that the FDLIBM functions are in
        // "IEEE spirit", i.e. to guarantee that the IEEE 754 core functions
        // are used.
        "-D_IEEE_LIBM",

        // Android only supports little-endian.
        "-D__LITTLE_ENDIAN",

        // Disable compiler optimizations that interact badly with this crufty
        // library (see their own admission in 'readme'). Without this, we
        // fail StrictMath tests on x86.
        "-fno-strict-aliasing",

        // Disable warnings. We need a specific version of fdlibm and can't fix this upstream.
        "-Werror",
        "-Wno-sign-compare",
        "-Wno-dangling-else",
        "-Wno-unknown-pragmas",

        "-Wno-dangling-else",
        "-Wno-logical-op-parentheses",
        "-Wno-sometimes-uninitialized",
    ],

    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    min_sdk_version: "S",
}
