Bumping libupnpp to version 0.15.0 introduced a build error for some architectures: ``` ./libupnpp/workqueue.h:308:29: error: field 'res' has incomplete type std::future<void *> res; ^ ./libupnpp/workqueue.h: In member function 'bool WorkQueue<T>::start(int, void* (*)(void*), void*)': ./libupnpp/workqueue.h:81:25: error: invalid use of incomplete type 'class std::packaged_task<void*(void*)>' w.res = task.get_future(); ``` The problem is that `std::future` is not available for all architectures, e.g. it is missing for ARMv5 (soft-float). libstdc++ enables `std::future` only if `ATOMIC_INT_LOCK_FREE > 1`, which according the the libstdc++ documentation means that operations on atomic ints are guaranteed to be lock-free. This check is not true for some target, e.g. the toolchain for the ARMv5 target defines: ``` $ echo | /usr/bin/arm-linux-g++ -dM -E - | grep ATOMIC_INT_LOCK_FREE #define __GCC_ATOMIC_INT_LOCK_FREE 1 ``` We add a patch from upstream which detects if `std::future` is available and opts-out the functionality for unsupported targets. Fixes: http://autobuild.buildroot.net/results/f8eb38ef79160e1f646dae0be19f27fae82a58bc http://autobuild.buildroot.net/results/158e0ceeff009146b78a0d2bb278c76479bafc34 http://autobuild.buildroot.net/results/1760cf53c77e16bb2b5bc795bd0ce5eb65f258f2 http://autobuild.buildroot.net/results/5b73e52495aa1bbb2c704492237da784b9d74bc2 http://autobuild.buildroot.net/results/6d922a1bbace024fcf040beb49bbb119036865ef http://autobuild.buildroot.net/results/bebb8983e7579ee4b4bcf18f037c7797ab86f8db http://autobuild.buildroot.net/results/0f1a5832ced2a6ec2e18f9f14197446fda6af692 http://autobuild.buildroot.net/results/94a9cc349f23a47246b06619a019bcb917493415 http://autobuild.buildroot.net/results/19fba094098af5c1ce1e1371e5e88393c4a6ac9c http://autobuild.buildroot.net/results/578935b5c04005d1f096059387d16911f953ec6f http://autobuild.buildroot.net/results/2ad698f1665b7b886141672181cb76ec3c40a743 and more... Note, that we enable autoreconf as the patch touches configure.ac. Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
||
---|---|---|
arch | ||
board | ||
boot | ||
configs | ||
docs | ||
fs | ||
linux | ||
package | ||
support | ||
system | ||
toolchain | ||
.defconfig | ||
.gitignore | ||
CHANGES | ||
Config.in | ||
Config.in.legacy | ||
COPYING | ||
Makefile | ||
Makefile.legacy | ||
README |
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at http://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on Freenode IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches