[libc] Add platform independent floating point rounding mode checks.
[llvm-project.git] / libc / src / math / CMakeLists.txt
blobc47584039d5ddaf7f9572f1248fc64bb7716d47a
1 add_subdirectory(generic)
2 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_ARCHITECTURE})
3   add_subdirectory(${LIBC_TARGET_ARCHITECTURE})
4 endif()
6 function(add_math_entrypoint_object name)
7   # We prefer machine specific implementation if available. Hence we check
8   # that first and return early if we are able to add an alias target for the
9   # machine specific implementation.
10   get_fq_target_name("${LIBC_TARGET_ARCHITECTURE}.${name}" fq_machine_specific_target_name)
11   if(TARGET ${fq_machine_specific_target_name})
12     add_entrypoint_object(
13       ${name}
14       ALIAS
15       DEPENDS
16         .${LIBC_TARGET_ARCHITECTURE}.${name}
17     )
18     return()
19   endif()
21   get_fq_target_name("generic.${name}" fq_generic_target_name)
22   if(TARGET ${fq_generic_target_name})
23     add_entrypoint_object(
24       ${name}
25       ALIAS
26       DEPENDS
27         .generic.${name}
28     )
29     return()
30   endif()
32   # Add a dummy entrypoint object for missing implementations. They will be skipped
33   # anyway as there will be no entry for them in the target entrypoints list.
34   add_entrypoint_object(
35     ${name}
36     SRCS
37       dummy_srcs
38     HDRS
39       dummy_hdrs
40   )
41 endfunction()
43 add_math_entrypoint_object(acosf)
44 add_math_entrypoint_object(acoshf)
46 add_math_entrypoint_object(asinf)
47 add_math_entrypoint_object(asinhf)
49 add_math_entrypoint_object(atanf)
51 add_math_entrypoint_object(atanhf)
53 add_math_entrypoint_object(ceil)
54 add_math_entrypoint_object(ceilf)
55 add_math_entrypoint_object(ceill)
57 add_math_entrypoint_object(copysign)
58 add_math_entrypoint_object(copysignf)
59 add_math_entrypoint_object(copysignl)
61 add_math_entrypoint_object(cos)
62 add_math_entrypoint_object(cosf)
63 add_math_entrypoint_object(coshf)
65 add_math_entrypoint_object(expf)
67 add_math_entrypoint_object(exp2f)
69 add_math_entrypoint_object(exp10f)
71 add_math_entrypoint_object(expm1f)
73 add_math_entrypoint_object(fabs)
74 add_math_entrypoint_object(fabsf)
75 add_math_entrypoint_object(fabsl)
77 add_math_entrypoint_object(fdim)
78 add_math_entrypoint_object(fdimf)
79 add_math_entrypoint_object(fdiml)
81 add_math_entrypoint_object(floor)
82 add_math_entrypoint_object(floorf)
83 add_math_entrypoint_object(floorl)
85 add_math_entrypoint_object(fma)
86 add_math_entrypoint_object(fmaf)
88 add_math_entrypoint_object(fmax)
89 add_math_entrypoint_object(fmaxf)
90 add_math_entrypoint_object(fmaxl)
92 add_math_entrypoint_object(fmin)
93 add_math_entrypoint_object(fminf)
94 add_math_entrypoint_object(fminl)
96 add_math_entrypoint_object(fmod)
97 add_math_entrypoint_object(fmodf)
99 add_math_entrypoint_object(frexp)
100 add_math_entrypoint_object(frexpf)
101 add_math_entrypoint_object(frexpl)
103 add_math_entrypoint_object(hypot)
104 add_math_entrypoint_object(hypotf)
106 add_math_entrypoint_object(ilogb)
107 add_math_entrypoint_object(ilogbf)
108 add_math_entrypoint_object(ilogbl)
110 add_math_entrypoint_object(ldexp)
111 add_math_entrypoint_object(ldexpf)
112 add_math_entrypoint_object(ldexpl)
114 add_math_entrypoint_object(log10)
115 add_math_entrypoint_object(log10f)
117 add_math_entrypoint_object(log1p)
118 add_math_entrypoint_object(log1pf)
120 add_math_entrypoint_object(log2)
121 add_math_entrypoint_object(log2f)
123 add_math_entrypoint_object(log)
124 add_math_entrypoint_object(logf)
126 add_math_entrypoint_object(logb)
127 add_math_entrypoint_object(logbf)
128 add_math_entrypoint_object(logbl)
130 add_math_entrypoint_object(llrint)
131 add_math_entrypoint_object(llrintf)
132 add_math_entrypoint_object(llrintl)
134 add_math_entrypoint_object(llround)
135 add_math_entrypoint_object(llroundf)
136 add_math_entrypoint_object(llroundl)
138 add_math_entrypoint_object(lrint)
139 add_math_entrypoint_object(lrintf)
140 add_math_entrypoint_object(lrintl)
142 add_math_entrypoint_object(lround)
143 add_math_entrypoint_object(lroundf)
144 add_math_entrypoint_object(lroundl)
146 add_math_entrypoint_object(modf)
147 add_math_entrypoint_object(modff)
148 add_math_entrypoint_object(modfl)
150 add_math_entrypoint_object(nearbyint)
151 add_math_entrypoint_object(nearbyintf)
152 add_math_entrypoint_object(nearbyintl)
154 add_math_entrypoint_object(nextafter)
155 add_math_entrypoint_object(nextafterf)
156 add_math_entrypoint_object(nextafterl)
158 add_math_entrypoint_object(remainder)
159 add_math_entrypoint_object(remainderf)
160 add_math_entrypoint_object(remainderl)
162 add_math_entrypoint_object(remquo)
163 add_math_entrypoint_object(remquof)
164 add_math_entrypoint_object(remquol)
166 add_math_entrypoint_object(rint)
167 add_math_entrypoint_object(rintf)
168 add_math_entrypoint_object(rintl)
170 add_math_entrypoint_object(round)
171 add_math_entrypoint_object(roundf)
172 add_math_entrypoint_object(roundl)
174 add_math_entrypoint_object(scalbn)
175 add_math_entrypoint_object(scalbnf)
176 add_math_entrypoint_object(scalbnl)
178 add_math_entrypoint_object(sincosf)
180 add_math_entrypoint_object(sin)
181 add_math_entrypoint_object(sinf)
182 add_math_entrypoint_object(sinhf)
184 add_math_entrypoint_object(sqrt)
185 add_math_entrypoint_object(sqrtf)
186 add_math_entrypoint_object(sqrtl)
188 add_math_entrypoint_object(tan)
189 add_math_entrypoint_object(tanf)
190 add_math_entrypoint_object(tanhf)
192 add_math_entrypoint_object(trunc)
193 add_math_entrypoint_object(truncf)
194 add_math_entrypoint_object(truncl)