Config.in 16 KB

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