Config.in 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531
  1. menu "Toolchain"
  2. # Invisible option that makes sure the toolchain package always gets
  3. # built
  4. config BR2_TOOLCHAIN
  5. bool
  6. default y
  7. # Should be selected for glibc or eglibc
  8. config BR2_TOOLCHAIN_USES_GLIBC
  9. bool
  10. select BR2_USE_WCHAR
  11. select BR2_ENABLE_LOCALE
  12. select BR2_TOOLCHAIN_HAS_FULL_GETTEXT
  13. select BR2_TOOLCHAIN_HAS_THREADS
  14. select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
  15. select BR2_TOOLCHAIN_HAS_THREADS_NPTL
  16. select BR2_TOOLCHAIN_SUPPORTS_PIE
  17. config BR2_TOOLCHAIN_USES_UCLIBC
  18. bool
  19. select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_m68k && !BR2_microblaze && !BR2_STATIC_LIBS
  20. config BR2_TOOLCHAIN_USES_MUSL
  21. bool
  22. select BR2_USE_WCHAR
  23. select BR2_ENABLE_LOCALE
  24. select BR2_TOOLCHAIN_HAS_THREADS
  25. select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
  26. select BR2_TOOLCHAIN_HAS_THREADS_NPTL
  27. select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS
  28. choice
  29. prompt "Toolchain type"
  30. help
  31. Select whether to use the toolchain provided by buildroot
  32. or an external toolchain.
  33. Some vendors provide toolchains in binary form, some in
  34. source form.
  35. config BR2_TOOLCHAIN_BUILDROOT
  36. bool "Buildroot toolchain"
  37. depends on BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT
  38. config BR2_TOOLCHAIN_EXTERNAL
  39. bool "External toolchain"
  40. help
  41. Select if you want to use an existing cross-compiling
  42. toolchain. Buildroot can either download automatically a
  43. toolchain, or use an already installed toolchain.
  44. endchoice
  45. source "toolchain/toolchain-buildroot/Config.in"
  46. source "toolchain/toolchain-external/Config.in"
  47. # Generic toolchain options
  48. # we want gdb config in the middle of both source and external
  49. # toolchains, but mconf won't let us source the same file twice,
  50. # so put it here instead
  51. source "package/gdb/Config.in.host"
  52. comment "Toolchain Generic Options"
  53. # https://sourceware.org/bugzilla/show_bug.cgi?id=19615
  54. # Affect toolchains built with binutils 2.26 (fixed in binutils 2.26.1).
  55. config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19615
  56. bool
  57. # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735
  58. # exception_ptr, nested_exception, and future from libstdc++ are not
  59. # available for architectures not supporting always lock-free atomic
  60. # ints before GCC 7
  61. config BR2_TOOLCHAIN_HAS_GCC_BUG_64735
  62. bool
  63. default y if BR2_nios2
  64. default y if BR2_ARM_CPU_ARMV4
  65. default y if BR2_ARM_CPU_ARMV5
  66. default y if BR2_sparc_v8
  67. default y if BR2_m68k_cf5208
  68. depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7
  69. config BR2_TOOLCHAIN_HAS_NATIVE_RPC
  70. bool
  71. config BR2_USE_WCHAR
  72. bool
  73. config BR2_ENABLE_LOCALE
  74. bool
  75. config BR2_INSTALL_LIBSTDCPP
  76. bool
  77. config BR2_TOOLCHAIN_HAS_FORTRAN
  78. bool
  79. config BR2_TOOLCHAIN_HAS_THREADS
  80. bool
  81. config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
  82. bool
  83. config BR2_TOOLCHAIN_HAS_THREADS_NPTL
  84. bool
  85. config BR2_TOOLCHAIN_HAS_SSP
  86. bool
  87. config BR2_TOOLCHAIN_SUPPORTS_PIE
  88. bool
  89. config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
  90. bool "Copy gconv libraries"
  91. depends on BR2_TOOLCHAIN_USES_GLIBC
  92. help
  93. The gconv libraries are used to convert between different
  94. character sets (charsets).
  95. Say 'y' if you need to store and/or display different
  96. charsets.
  97. config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST
  98. string "Gconv libraries to copy"
  99. depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
  100. help
  101. Set to the list of gconv libraries to copy.
  102. Leave empty to copy all gconv libraries.
  103. Specify only the basename of the libraries, leave
  104. out the .so extension. Eg.:
  105. IBM850 ISO8859-15 UNICODE
  106. Note: the full set of gconv libs are ~8MiB (on ARM).
  107. # This boolean is true if the toolchain provides a built-in full
  108. # featured gettext implementation (glibc), and false if only a stub
  109. # gettext implementation is provided (uclibc, musl)
  110. config BR2_TOOLCHAIN_HAS_FULL_GETTEXT
  111. bool
  112. config BR2_USE_MMU
  113. bool "Enable MMU support" if BR2_ARCH_HAS_MMU_OPTIONAL
  114. default y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY
  115. help
  116. If your target has a MMU, you should say Y here. If you
  117. are unsure, just say Y.
  118. config BR2_TARGET_OPTIMIZATION
  119. string "Target Optimizations"
  120. default ""
  121. help
  122. Optimizations to use when building for the target host.
  123. NOTE: gcc optimization level is defined in build options.
  124. config BR2_TARGET_LDFLAGS
  125. string "Target linker options"
  126. help
  127. Extra options to pass to the linker when building for the
  128. target.
  129. Note that options with a '$' sign (eg.
  130. -Wl,-rpath='$ORIGIN/../lib') are not supported.
  131. config BR2_ECLIPSE_REGISTER
  132. bool "Register toolchain within Eclipse Buildroot plug-in"
  133. help
  134. This options tells Buildroot to generate the necessary
  135. configuration files to make your toolchain appear within
  136. Eclipse, through the Eclipse Buildroot plugin.
  137. # Options for packages to depend on, if they require at least a
  138. # specific version of the kernel headers.
  139. # Toolchains should choose the adequate option (ie. the highest
  140. # version, not all of them).
  141. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
  142. bool
  143. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
  144. bool
  145. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
  146. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
  147. bool
  148. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
  149. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
  150. bool
  151. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
  152. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
  153. bool
  154. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
  155. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
  156. bool
  157. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
  158. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
  159. bool
  160. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
  161. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
  162. bool
  163. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
  164. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
  165. bool
  166. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
  167. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
  168. bool
  169. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
  170. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
  171. bool
  172. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
  173. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
  174. bool
  175. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
  176. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
  177. bool
  178. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
  179. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
  180. bool
  181. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
  182. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
  183. bool
  184. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
  185. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
  186. bool
  187. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
  188. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
  189. bool
  190. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
  191. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
  192. bool
  193. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
  194. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
  195. bool
  196. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
  197. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
  198. bool
  199. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
  200. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
  201. bool
  202. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
  203. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
  204. bool
  205. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
  206. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
  207. bool
  208. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
  209. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
  210. bool
  211. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
  212. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
  213. bool
  214. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
  215. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
  216. bool
  217. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
  218. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
  219. bool
  220. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
  221. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
  222. bool
  223. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
  224. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
  225. bool
  226. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
  227. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
  228. bool
  229. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
  230. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
  231. bool
  232. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
  233. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
  234. bool
  235. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
  236. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
  237. bool
  238. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
  239. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
  240. bool
  241. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
  242. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
  243. bool
  244. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
  245. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
  246. bool
  247. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
  248. config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
  249. bool
  250. select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
  251. # This order guarantees that the highest version is set, as kconfig
  252. # stops affecting a value on the first matching default.
  253. config BR2_TOOLCHAIN_HEADERS_AT_LEAST
  254. string
  255. default "4.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
  256. default "4.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
  257. default "4.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
  258. default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
  259. default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
  260. default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
  261. default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
  262. default "4.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
  263. default "4.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
  264. default "4.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
  265. default "4.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
  266. default "4.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
  267. default "4.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
  268. default "4.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
  269. default "4.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
  270. default "4.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
  271. default "4.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
  272. default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
  273. default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
  274. default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
  275. default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
  276. default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
  277. default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
  278. default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
  279. default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
  280. default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
  281. default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
  282. default "3.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
  283. default "3.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
  284. default "3.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
  285. default "3.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
  286. default "3.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
  287. default "3.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
  288. default "3.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
  289. default "3.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
  290. default "3.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
  291. default "3.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
  292. default "2.6"
  293. config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
  294. bool
  295. config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
  296. bool
  297. select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
  298. config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
  299. bool
  300. select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
  301. config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
  302. bool
  303. select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
  304. config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
  305. bool
  306. select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
  307. config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
  308. bool
  309. select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
  310. config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
  311. bool
  312. select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
  313. config BR2_TOOLCHAIN_GCC_AT_LEAST_5
  314. bool
  315. select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
  316. config BR2_TOOLCHAIN_GCC_AT_LEAST_6
  317. bool
  318. select BR2_TOOLCHAIN_GCC_AT_LEAST_5
  319. config BR2_TOOLCHAIN_GCC_AT_LEAST_7
  320. bool
  321. select BR2_TOOLCHAIN_GCC_AT_LEAST_6
  322. # This order guarantees that the highest version is set, as kconfig
  323. # stops affecting a value on the first matching default.
  324. config BR2_TOOLCHAIN_GCC_AT_LEAST
  325. string
  326. default "7" if BR2_TOOLCHAIN_GCC_AT_LEAST_7
  327. default "6" if BR2_TOOLCHAIN_GCC_AT_LEAST_6
  328. default "5" if BR2_TOOLCHAIN_GCC_AT_LEAST_5
  329. default "4.9" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
  330. default "4.8" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
  331. default "4.7" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
  332. default "4.6" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
  333. default "4.5" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
  334. default "4.4" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
  335. default "4.3" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
  336. config BR2_TOOLCHAIN_HAS_MNAN_OPTION
  337. bool
  338. default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
  339. config BR2_TOOLCHAIN_HAS_SYNC_1
  340. bool
  341. default y
  342. depends on !BR2_m68k_cf
  343. depends on !BR2_microblaze
  344. depends on !BR2_sparc
  345. depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
  346. config BR2_TOOLCHAIN_HAS_SYNC_2
  347. bool
  348. default y if BR2_TOOLCHAIN_HAS_SYNC_1
  349. config BR2_TOOLCHAIN_HAS_SYNC_4
  350. bool
  351. default y
  352. depends on !BR2_m68k_cf
  353. depends on !BR2_sparc
  354. depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
  355. # The availability of __sync for 8-byte types on ARM is somewhat
  356. # complicated:
  357. #
  358. # - It appeared in gcc starting with gcc 4.7.
  359. #
  360. # - On ARMv7, there is no problem, it can be directly implemented in
  361. # userspace.
  362. #
  363. # - On < ARMv7, it requires help from the kernel. Unfortunately, the
  364. # libgcc code implementing 8-byte __sync with the help from the
  365. # kernel calls __write() when a failure occurs, which is a function
  366. # internal to glibc, not available in uClibc and musl. This means
  367. # that the 8-byte __sync operations are not available on < ARMv7
  368. # with uClibc and musl. This problem was fixed as part of gcc
  369. # PR68059, which was backported to the gcc 5 branch, but isn't yet
  370. # part of any gcc 5.x release.
  371. #
  372. config BR2_TOOLCHAIN_ARM_HAS_SYNC_8
  373. bool
  374. default y
  375. depends on BR2_arm || BR2_armeb
  376. depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
  377. depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A
  378. # 8-byte intrinsics available on most x86 CPUs, except a few old ones
  379. config BR2_TOOLCHAIN_X86_HAS_SYNC_8
  380. bool
  381. default y
  382. depends on BR2_i386
  383. depends on !BR2_x86_i486
  384. depends on !BR2_x86_c3
  385. depends on !BR2_x86_winchip_c6
  386. depends on !BR2_x86_winchip2
  387. # 8-byte intrinsics available:
  388. # - On all 64 bits architecture
  389. # - On a certain combinations of ARM platforms
  390. # - On certain x86 32 bits CPUs
  391. config BR2_TOOLCHAIN_HAS_SYNC_8
  392. bool
  393. default y if BR2_ARCH_IS_64
  394. default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
  395. default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8
  396. # libatomic is available since gcc 4.8, when thread support is
  397. # enabled. Also, libatomic doesn't recognize "uclinux" as a valid OS
  398. # part of the tuple, and is therefore not build on uclinux targets,
  399. # which is why BR2_BINFMT_FLAT configurations are excluded.
  400. config BR2_TOOLCHAIN_HAS_LIBATOMIC
  401. bool
  402. default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
  403. BR2_TOOLCHAIN_HAS_THREADS && \
  404. !BR2_BINFMT_FLAT
  405. # __atomic intrinsics are available:
  406. # - with gcc 4.8, either through built-ins or libatomic, on all
  407. # architectures. Since we don't want to separate the cases where
  408. # libatomic is needed vs. not needed, we simplify thing and only
  409. # support situations where libatomic is available, even if on some
  410. # architectures libatomic is not strictly needed as all __atomic
  411. # intrinsics might be built-in. The only case where libatomic is
  412. # missing entirely is when the toolchain does not have support for
  413. # threads. However, a package that does not need threads but still
  414. # uses atomics is quite a corner case, which does not warrant the
  415. # added complexity.
  416. # - with gcc 4.7, libatomic did not exist, so only built-ins are
  417. # available. This means that __atomic can only be used in a subset
  418. # of the architectures
  419. config BR2_TOOLCHAIN_HAS_ATOMIC
  420. bool
  421. default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
  422. default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm
  423. default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb
  424. default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa
  425. default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64
  426. # - libquadmath is not needed/available on all architectures (but gcc
  427. # correctly handles this already).
  428. # - At least, libquadmath is available on:
  429. # - i*86
  430. # - x86_64
  431. # - When available, libquadmath requires wchar support.
  432. config BR2_TOOLCHAIN_HAS_LIBQUADMATH
  433. bool
  434. default y if BR2_i386 || BR2_x86_64
  435. endmenu