# 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.

LOCAL_PATH:= $(call my-dir)

#
# Common definitions for host and device.
#

src_files := \
	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

# 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.
cflags := -D_IEEE_LIBM

# Android only supports little-endian.
cflags += -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.
cflags += -fno-strict-aliasing

# c99 specifies a less relaxed floating point model that does not enable
# floating point expession contraction (e.g: fused multiply-add operations).
cflags += -std=c99

# Disable warnings. We need a specific version of fdlibm and can't fix this upstream.
cflags += -Wno-sign-compare -Wno-dangling-else -Wno-unknown-pragmas
clang_cflags := -Wno-dangling-else -Wno-logical-op-parentheses -Wno-sometimes-uninitialized

#
# Build for the target (device).
#

include $(CLEAR_VARS)
LOCAL_CFLAGS := $(cflags)
LOCAL_CLANG_CFLAGS := $(clang_cflags)
LOCAL_CLANG := true
LOCAL_MODULE := libfdlibm
LOCAL_SRC_FILES:= $(src_files)
include $(BUILD_STATIC_LIBRARY)


#
# Build for the host.
#

include $(CLEAR_VARS)
LOCAL_CFLAGS := $(cflags)
LOCAL_CLANG_CFLAGS := $(clang_cflags)
LOCAL_CLANG := true
LOCAL_MODULE := libfdlibm
LOCAL_MULTILIB := both
LOCAL_SRC_FILES:= $(src_files)
include $(BUILD_HOST_STATIC_LIBRARY)
