crossconfig.m4 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. dnl
  2. dnl This file contains details for non-native builds.
  3. dnl
  4. AC_DEFUN([GLIBCXX_CROSSCONFIG],[
  5. # Base decisions on target environment.
  6. case "${host}" in
  7. arm*-*-symbianelf*)
  8. # This is a freestanding configuration; there is nothing to do here.
  9. ;;
  10. avr*-*-*)
  11. AC_DEFINE(HAVE_ACOSF)
  12. AC_DEFINE(HAVE_ASINF)
  13. AC_DEFINE(HAVE_ATAN2F)
  14. AC_DEFINE(HAVE_ATANF)
  15. AC_DEFINE(HAVE_CEILF)
  16. AC_DEFINE(HAVE_COSF)
  17. AC_DEFINE(HAVE_COSHF)
  18. AC_DEFINE(HAVE_EXPF)
  19. AC_DEFINE(HAVE_FABSF)
  20. AC_DEFINE(HAVE_FLOORF)
  21. AC_DEFINE(HAVE_FMODF)
  22. AC_DEFINE(HAVE_FREXPF)
  23. AC_DEFINE(HAVE_SQRTF)
  24. AC_DEFINE(HAVE_HYPOTF)
  25. AC_DEFINE(HAVE_LDEXPF)
  26. AC_DEFINE(HAVE_LOG10F)
  27. AC_DEFINE(HAVE_LOGF)
  28. AC_DEFINE(HAVE_MODFF)
  29. AC_DEFINE(HAVE_POWF)
  30. AC_DEFINE(HAVE_SINF)
  31. AC_DEFINE(HAVE_SINHF)
  32. AC_DEFINE(HAVE_TANF)
  33. AC_DEFINE(HAVE_TANHF)
  34. ;;
  35. mips*-sde-elf*)
  36. # These definitions are for the SDE C library rather than newlib.
  37. SECTION_FLAGS='-ffunction-sections -fdata-sections'
  38. AC_SUBST(SECTION_FLAGS)
  39. GLIBCXX_CHECK_COMPILER_FEATURES
  40. GLIBCXX_CHECK_LINKER_FEATURES
  41. GLIBCXX_CHECK_MATH_SUPPORT
  42. GLIBCXX_CHECK_STDLIB_SUPPORT
  43. AC_DEFINE(HAVE_FINITE)
  44. AC_DEFINE(HAVE_HYPOT)
  45. AC_DEFINE(HAVE_ISNAN)
  46. AC_DEFINE(HAVE_ISINF)
  47. AC_DEFINE(HAVE_LDEXPF)
  48. AC_DEFINE(HAVE_MODF)
  49. AC_DEFINE(HAVE_SQRTF)
  50. ;;
  51. *-aix*)
  52. GLIBCXX_CHECK_LINKER_FEATURES
  53. GLIBCXX_CHECK_MATH_SUPPORT
  54. GLIBCXX_CHECK_STDLIB_SUPPORT
  55. AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
  56. AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
  57. # We don't yet support AIX's TLS ABI.
  58. #GCC_CHECK_TLS
  59. AM_ICONV
  60. AC_DEFINE(HAVE_USELOCALE)
  61. ;;
  62. *-darwin*)
  63. # Darwin versions vary, but the linker should work in a cross environment,
  64. # so we just check for all the features here.
  65. # Check for available headers.
  66. # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
  67. GLIBCXX_CHECK_MATH_SUPPORT
  68. GLIBCXX_CHECK_STDLIB_SUPPORT
  69. AC_CHECK_FUNCS(uselocale)
  70. ;;
  71. *djgpp)
  72. # GLIBCXX_CHECK_MATH_SUPPORT
  73. AC_DEFINE(HAVE_ISINF)
  74. AC_DEFINE(HAVE_ISNAN)
  75. AC_DEFINE(HAVE_FINITE)
  76. AC_DEFINE(HAVE_SINCOS)
  77. AC_DEFINE(HAVE_HYPOT)
  78. ;;
  79. *-freebsd*)
  80. SECTION_FLAGS='-ffunction-sections -fdata-sections'
  81. AC_SUBST(SECTION_FLAGS)
  82. GLIBCXX_CHECK_LINKER_FEATURES
  83. AC_DEFINE(HAVE_SETENV)
  84. AC_DEFINE(HAVE_FINITEF)
  85. AC_DEFINE(HAVE_FINITE)
  86. AC_DEFINE(HAVE_FREXPF)
  87. AC_DEFINE(HAVE_HYPOT)
  88. AC_DEFINE(HAVE_HYPOTF)
  89. AC_DEFINE(HAVE_ISINF)
  90. AC_DEFINE(HAVE_ISNAN)
  91. AC_DEFINE(HAVE_ISNANF)
  92. AC_DEFINE(HAVE_ACOSF)
  93. AC_DEFINE(HAVE_ASINF)
  94. AC_DEFINE(HAVE_ATAN2F)
  95. AC_DEFINE(HAVE_ATANF)
  96. AC_DEFINE(HAVE_CEILF)
  97. AC_DEFINE(HAVE_COSF)
  98. AC_DEFINE(HAVE_COSHF)
  99. AC_DEFINE(HAVE_EXPF)
  100. AC_DEFINE(HAVE_FABSF)
  101. AC_DEFINE(HAVE_FLOORF)
  102. AC_DEFINE(HAVE_FMODF)
  103. AC_DEFINE(HAVE_FREXPF)
  104. AC_DEFINE(HAVE_LDEXPF)
  105. AC_DEFINE(HAVE_LOG10F)
  106. AC_DEFINE(HAVE_LOGF)
  107. AC_DEFINE(HAVE_MODFF)
  108. AC_DEFINE(HAVE_POWF)
  109. AC_DEFINE(HAVE_SINF)
  110. AC_DEFINE(HAVE_SINHF)
  111. AC_DEFINE(HAVE_SQRTF)
  112. AC_DEFINE(HAVE_TANF)
  113. AC_DEFINE(HAVE_TANHF)
  114. if test x"long_double_math_on_this_cpu" = x"yes"; then
  115. AC_DEFINE(HAVE_FINITEL)
  116. AC_DEFINE(HAVE_ISINFL)
  117. AC_DEFINE(HAVE_ISNANL)
  118. fi
  119. AC_CHECK_FUNCS(__cxa_thread_atexit)
  120. AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
  121. AC_CHECK_FUNCS(timespec_get)
  122. AC_CHECK_FUNCS(sockatmark)
  123. AC_CHECK_FUNCS(uselocale)
  124. ;;
  125. *-fuchsia*)
  126. SECTION_FLAGS='-ffunction-sections -fdata-sections'
  127. AC_SUBST(SECTION_FLAGS)
  128. ;;
  129. *-hpux*)
  130. SECTION_FLAGS='-ffunction-sections -fdata-sections'
  131. AC_SUBST(SECTION_FLAGS)
  132. GLIBCXX_CHECK_LINKER_FEATURES
  133. # GLIBCXX_CHECK_MATH_SUPPORT
  134. AC_DEFINE(HAVE_ISNAN)
  135. AC_DEFINE(HAVE_HYPOT)
  136. AC_DEFINE(HAVE_ACOSF)
  137. AC_DEFINE(HAVE_ASINF)
  138. AC_DEFINE(HAVE_ATANF)
  139. AC_DEFINE(HAVE_COSF)
  140. AC_DEFINE(HAVE_COSHF)
  141. AC_DEFINE(HAVE_SINF)
  142. AC_DEFINE(HAVE_SINHF)
  143. AC_DEFINE(HAVE_TANF)
  144. AC_DEFINE(HAVE_TANHF)
  145. AC_DEFINE(HAVE_EXPF)
  146. AC_DEFINE(HAVE_ATAN2F)
  147. AC_DEFINE(HAVE_FABSF)
  148. AC_DEFINE(HAVE_FMODF)
  149. AC_DEFINE(HAVE_FREXPF)
  150. AC_DEFINE(HAVE_LOGF)
  151. AC_DEFINE(HAVE_LOG10F)
  152. AC_DEFINE(HAVE_MODF)
  153. AC_DEFINE(HAVE_POWF)
  154. AC_DEFINE(HAVE_SQRTF)
  155. # GLIBCXX_CHECK_STDLIB_SUPPORT
  156. AC_DEFINE(HAVE_STRTOLD)
  157. GCC_CHECK_TLS
  158. case "$target" in
  159. *-hpux10*)
  160. AC_DEFINE(HAVE_ISINF)
  161. AC_DEFINE(HAVE_ISINFF)
  162. AC_DEFINE(HAVE_ISNANF)
  163. AC_DEFINE(HAVE_FINITE)
  164. AC_DEFINE(HAVE_FINITEF)
  165. ;;
  166. esac
  167. ;;
  168. *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-cygwin* | *-solaris*)
  169. GLIBCXX_CHECK_COMPILER_FEATURES
  170. GLIBCXX_CHECK_LINKER_FEATURES
  171. GLIBCXX_CHECK_MATH_SUPPORT
  172. GLIBCXX_CHECK_STDLIB_SUPPORT
  173. AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
  174. AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
  175. GCC_CHECK_TLS
  176. AC_CHECK_FUNCS(__cxa_thread_atexit_impl)
  177. AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
  178. AC_CHECK_FUNCS(timespec_get)
  179. AC_CHECK_FUNCS(sockatmark)
  180. AC_CHECK_FUNCS(uselocale)
  181. AM_ICONV
  182. ;;
  183. *-mingw32*)
  184. GLIBCXX_CHECK_LINKER_FEATURES
  185. GLIBCXX_CHECK_MATH_SUPPORT
  186. GLIBCXX_CHECK_STDLIB_SUPPORT
  187. AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
  188. AC_CHECK_FUNCS(_wfopen)
  189. GCC_CHECK_TLS
  190. ;;
  191. *-netbsd* | *-openbsd*)
  192. SECTION_FLAGS='-ffunction-sections -fdata-sections'
  193. AC_SUBST(SECTION_FLAGS)
  194. GLIBCXX_CHECK_LINKER_FEATURES
  195. AC_DEFINE(HAVE_FINITEF)
  196. AC_DEFINE(HAVE_FINITE)
  197. AC_DEFINE(HAVE_FREXPF)
  198. AC_DEFINE(HAVE_HYPOTF)
  199. AC_DEFINE(HAVE_ISINF)
  200. AC_DEFINE(HAVE_ISINFF)
  201. AC_DEFINE(HAVE_ISNAN)
  202. AC_DEFINE(HAVE_ISNANF)
  203. if test x"long_double_math_on_this_cpu" = x"yes"; then
  204. AC_DEFINE(HAVE_FINITEL)
  205. AC_DEFINE(HAVE_ISINFL)
  206. AC_DEFINE(HAVE_ISNANL)
  207. fi
  208. AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
  209. AC_CHECK_FUNCS(timespec_get)
  210. AC_CHECK_FUNCS(sockatmark)
  211. ;;
  212. *-qnx6.1* | *-qnx6.2*)
  213. SECTION_FLAGS='-ffunction-sections -fdata-sections'
  214. AC_SUBST(SECTION_FLAGS)
  215. GLIBCXX_CHECK_LINKER_FEATURES
  216. AC_DEFINE(HAVE_COSF)
  217. AC_DEFINE(HAVE_COSL)
  218. AC_DEFINE(HAVE_COSHF)
  219. AC_DEFINE(HAVE_COSHL)
  220. AC_DEFINE(HAVE_LOGF)
  221. AC_DEFINE(HAVE_LOGL)
  222. AC_DEFINE(HAVE_LOG10F)
  223. AC_DEFINE(HAVE_LOG10L)
  224. AC_DEFINE(HAVE_SINF)
  225. AC_DEFINE(HAVE_SINL)
  226. AC_DEFINE(HAVE_SINHF)
  227. AC_DEFINE(HAVE_SINHL)
  228. ;;
  229. *-rtems*)
  230. GLIBCXX_CHECK_COMPILER_FEATURES
  231. GLIBCXX_CHECK_LINKER_FEATURES
  232. GLIBCXX_CHECK_MATH_SUPPORT
  233. GLIBCXX_CHECK_STDLIB_SUPPORT
  234. ;;
  235. *-tpf)
  236. SECTION_FLAGS='-ffunction-sections -fdata-sections'
  237. SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS'
  238. AC_SUBST(SECTION_FLAGS)
  239. AC_DEFINE(HAVE_FINITE)
  240. AC_DEFINE(HAVE_FINITEF)
  241. AC_DEFINE(HAVE_FREXPF)
  242. AC_DEFINE(HAVE_HYPOTF)
  243. AC_DEFINE(HAVE_ISINF)
  244. AC_DEFINE(HAVE_ISINFF)
  245. AC_DEFINE(HAVE_ISNAN)
  246. AC_DEFINE(HAVE_ISNANF)
  247. AC_DEFINE(HAVE_SINCOS)
  248. AC_DEFINE(HAVE_SINCOSF)
  249. if test x"long_double_math_on_this_cpu" = x"yes"; then
  250. AC_DEFINE(HAVE_FINITEL)
  251. AC_DEFINE(HAVE_HYPOTL)
  252. AC_DEFINE(HAVE_ISINFL)
  253. AC_DEFINE(HAVE_ISNANL)
  254. fi
  255. ;;
  256. *-*vms*)
  257. # Check for available headers.
  258. # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld
  259. GLIBCXX_CHECK_MATH_SUPPORT
  260. GLIBCXX_CHECK_STDLIB_SUPPORT
  261. ;;
  262. *-vxworks*)
  263. AC_DEFINE(HAVE_ACOSF)
  264. AC_DEFINE(HAVE_ASINF)
  265. AC_DEFINE(HAVE_ATAN2F)
  266. AC_DEFINE(HAVE_ATANF)
  267. AC_DEFINE(HAVE_CEILF)
  268. AC_DEFINE(HAVE_COSF)
  269. AC_DEFINE(HAVE_COSHF)
  270. AC_DEFINE(HAVE_EXPF)
  271. AC_DEFINE(HAVE_FABSF)
  272. AC_DEFINE(HAVE_FLOORF)
  273. AC_DEFINE(HAVE_FMODF)
  274. AC_DEFINE(HAVE_HYPOT)
  275. AC_DEFINE(HAVE_LOG10F)
  276. AC_DEFINE(HAVE_LOGF)
  277. AC_DEFINE(HAVE_POWF)
  278. AC_DEFINE(HAVE_SINF)
  279. AC_DEFINE(HAVE_SINHF)
  280. AC_DEFINE(HAVE_SQRTF)
  281. AC_DEFINE(HAVE_TANF)
  282. AC_DEFINE(HAVE_TANHF)
  283. dnl # Different versions and execution modes implement different
  284. dnl # subsets of these functions. Instead of hard-coding, test for C
  285. dnl # declarations in headers. The C primitives could be defined as
  286. dnl # macros, in which case the tests might fail, and we might have to
  287. dnl # switch to more elaborate tests.
  288. GLIBCXX_CHECK_MATH_DECLS([
  289. acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl
  290. frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl hypotl
  291. ldexpf modff hypotf frexpf])
  292. dnl # sincosl is the only one missing here, compared with the *l
  293. dnl # functions in the list guarded by
  294. dnl # long_double_math_on_this_cpu in configure.ac, right after
  295. dnl # the expansion of the present macro.
  296. ;;
  297. *)
  298. AC_MSG_ERROR([No support for this host/target combination.])
  299. ;;
  300. esac
  301. ])
  302. dnl
  303. dnl Check to see if the (math function) argument passed is
  304. dnl declared when using the c compiler
  305. dnl
  306. dnl Define HAVE_CARGF etc if "cargf" is declared
  307. dnl
  308. dnl argument 1 is name of function to check
  309. dnl
  310. dnl ASSUMES argument is a math function
  311. dnl
  312. dnl GLIBCXX_CHECK_MATH_DECL
  313. AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
  314. AC_CACHE_CHECK([for $1 declaration],
  315. [glibcxx_cv_func_$1_use], [
  316. AC_LANG_SAVE
  317. AC_LANG_C
  318. AC_TRY_COMPILE([
  319. #include <math.h>
  320. #ifdef HAVE_IEEEFP_H
  321. # include <ieeefp.h>
  322. #endif
  323. #undef $1
  324. ], [
  325. void (*f)(void) = (void (*)(void))$1;
  326. ], [glibcxx_cv_func_$1_use=yes
  327. ], [glibcxx_cv_func_$1_use=no])])
  328. if test "x$glibcxx_cv_func_$1_use" = xyes; then
  329. AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]))
  330. fi
  331. ])
  332. dnl
  333. dnl Check to see whether multiple math functions are
  334. dnl declared when using the c compiler
  335. dnl
  336. dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl"
  337. dnl are declared
  338. dnl
  339. dnl argument 1 is a word list naming function to check
  340. dnl
  341. dnl ASSUMES arguments are math functions
  342. dnl
  343. dnl GLIBCXX_CHECK_MATH_DECLS
  344. AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [
  345. m4_foreach_w([glibcxx_func], [$1], [
  346. GLIBCXX_CHECK_MATH_DECL(glibcxx_func)
  347. ])
  348. ])