This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by breakpad configure 0.1, which was generated by GNU Autoconf 2.72. Invocation command line was $ ./configure --target=mips-buildroot-linux-gnu --host=mips-buildroot-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --program-prefix= --disable-gtk-doc --disable-gtk-doc-html --disable-doc --disable-docs --disable-documentation --with-xmlto=no --with-fop=no --disable-dependency-tracking --enable-ipv6 --enable-nls --disable-static --enable-shared --disable-zstd ## --------- ## ## Platform. ## ## --------- ## hostname = ns304657.ip-46-105-103.eu uname -m = x86_64 uname -r = 4.4.0-210-generic uname -s = Linux uname -v = #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 /usr/bin/uname -p = unknown /bin/uname -X = unknown /bin/arch = unknown /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown /usr/bin/hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown PATH: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/ PATH: /home/buildroot/autobuild/run/instance-0/output-1/host/sbin/ PATH: /usr/local/sbin/ PATH: /usr/local/bin/ PATH: /usr/sbin/ PATH: /usr/bin/ PATH: /sbin/ PATH: /bin/ PATH: /usr/games/ PATH: /usr/local/games/ PATH: /snap/bin/ ## ----------- ## ## Core tests. ## ## ----------- ## configure:2725: looking for aux files: compile ar-lib missing install-sh config.guess config.sub configure:2738: trying ./autotools/ configure:2767: ./autotools/compile found configure:2767: ./autotools/ar-lib found configure:2767: ./autotools/missing found configure:2749: ./autotools/install-sh found configure:2767: ./autotools/config.guess found configure:2767: ./autotools/config.sub found configure:2889: checking build system type configure:2905: result: x86_64-pc-linux-gnu configure:2925: checking host system type configure:2940: result: mips-buildroot-linux-gnu configure:2978: checking for a BSD-compatible install configure:3052: result: /usr/bin/install -c configure:3063: checking whether build environment is sane configure:3118: result: yes configure:3174: checking for mips-buildroot-linux-gnu-strip configure:3207: result: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-strip configure:3279: checking for a race-free mkdir -p configure:3322: result: /bin/mkdir -p configure:3329: checking for gawk configure:3365: result: no configure:3329: checking for mawk configure:3350: found /usr/bin/mawk configure:3362: result: mawk configure:3373: checking whether make sets $(MAKE) configure:3397: result: yes configure:3427: checking whether make supports nested variables configure:3446: result: yes configure:3531: checking whether UID '1000' is supported by ustar format configure:3534: result: yes configure:3541: checking whether GID '1000' is supported by ustar format configure:3544: result: yes configure:3552: checking how to create a ustar tar archive configure:3563: tar --version tar (GNU tar) 1.29 Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. configure:3566: $? = 0 configure:3606: tardir=conftest.dir && eval tar --format=ustar -chf - "$tardir" >conftest.tar configure:3609: $? = 0 configure:3613: tar -xf - &5 mips-linux-gnu-gcc (Sourcery CodeBench Lite 2016.05-8) 5.3.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:4267: $? = 0 configure:4256: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -v >&5 Using built-in specs. COLLECT_GCC=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/mips-linux-gnu-gcc COLLECT_LTO_WRAPPER=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/mips-linux-gnu/5.3.0/lto-wrapper Target: mips-linux-gnu Configured with: /scratch/cmoore/2016.05-8-mips-linux-gnu-lite/src/gcc-5-2016.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=mips-linux-gnu --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-arch-32=mips32r2 --with-arch-64=mips64r2 --with-float=hard --with-mips-plt --enable-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='-D__CS_SOURCERYGXX_MAJ__=2016 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=8' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-glibc-version=2.23 --with-pkgversion='Sourcery CodeBench Lite 2016.05-8' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/mips-linux-gnu/libc --with-build-sysroot=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/libc --with-gmp=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --enable-libgomp --disable-libitm --enable-libatomic --disable-libssp --disable-libcc1 --enable-poison-system-directories --with-python-dir=mips-linux-gnu/share/gdb/python --with-build-time-tools=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/bin --with-build-time-tools=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/bin SED=sed Thread model: posix gcc version 5.3.0 (Sourcery CodeBench Lite 2016.05-8) COMPILER_PATH=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/mips-linux-gnu/5.3.0/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ LIBRARY_PATH=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/soft-float/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/lib/soft-float/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/lib/:/home/buildroot/autobuild/run/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/soft-float/lib/:/home/buildroot/autobuild/run/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/soft-float/usr/lib/ COLLECT_GCC_OPTIONS='-mabi=32' '-mnan=legacy' '-msoft-float' '-EB' '-fstack-protector-strong' '-march=mips32r2' '-fPIE' '-pie' '-v' '-mllsc' '-D' '__CS_SOURCERYGXX_MAJ__=2016' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=8' ... rest of stderr output deleted ... configure:4267: $? = 1 configure:4256: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -V >&5 mips-linux-gnu-gcc: error: unrecognized command line option '-V' configure:4267: $? = 1 configure:4256: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -qversion >&5 mips-linux-gnu-gcc: error: unrecognized command line option '-qversion' configure:4267: $? = 1 configure:4256: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -version >&5 mips-linux-gnu-gcc: error: unrecognized command line option '-version' configure:4267: $? = 1 configure:4287: checking whether the C compiler works configure:4309: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:4313: $? = 0 configure:4364: result: yes configure:4368: checking for C compiler default output file name configure:4370: result: a.out configure:4376: checking for suffix of executables configure:4383: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:4387: $? = 0 configure:4411: result: configure:4435: checking whether we are cross compiling configure:4473: result: yes configure:4479: checking for suffix of object files configure:4502: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:4506: $? = 0 configure:4530: result: o configure:4534: checking whether the compiler supports GNU C configure:4554: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:4554: $? = 0 configure:4566: result: yes configure:4577: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc accepts -g configure:4598: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -g -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:4598: $? = 0 configure:4645: result: yes configure:4665: checking for /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc option to enable C11 features configure:4680: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:4680: $? = 0 configure:4699: result: none needed configure:4823: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc understands -c and -o together configure:4846: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c conftest.c -o conftest2.o configure:4849: $? = 0 configure:4846: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c conftest.c -o conftest2.o configure:4849: $? = 0 configure:4862: result: yes configure:4881: checking dependency style of /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc configure:4994: result: none configure:5016: checking for mips-buildroot-linux-gnu-ar configure:5049: result: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc-ar configure:5125: checking the archiver (/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc-ar) interface configure:5142: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:5142: $? = 0 configure:5145: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc-ar cru libconftest.a conftest.o >&5 configure:5148: $? = 0 configure:5177: result: ar configure:5206: checking dependency style of /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc configure:5317: result: none configure:5340: checking for mips-buildroot-linux-gnu-gcc configure:5373: result: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc configure:5778: checking for C compiler version configure:5787: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc --version >&5 mips-linux-gnu-gcc (Sourcery CodeBench Lite 2016.05-8) 5.3.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:5798: $? = 0 configure:5787: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -v >&5 Using built-in specs. COLLECT_GCC=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/mips-linux-gnu-gcc COLLECT_LTO_WRAPPER=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/mips-linux-gnu/5.3.0/lto-wrapper Target: mips-linux-gnu Configured with: /scratch/cmoore/2016.05-8-mips-linux-gnu-lite/src/gcc-5-2016.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=mips-linux-gnu --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-arch-32=mips32r2 --with-arch-64=mips64r2 --with-float=hard --with-mips-plt --enable-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='-D__CS_SOURCERYGXX_MAJ__=2016 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=8' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-glibc-version=2.23 --with-pkgversion='Sourcery CodeBench Lite 2016.05-8' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/mips-linux-gnu/libc --with-build-sysroot=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/libc --with-gmp=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --enable-libgomp --disable-libitm --enable-libatomic --disable-libssp --disable-libcc1 --enable-poison-system-directories --with-python-dir=mips-linux-gnu/share/gdb/python --with-build-time-tools=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/bin --with-build-time-tools=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/bin SED=sed Thread model: posix gcc version 5.3.0 (Sourcery CodeBench Lite 2016.05-8) COMPILER_PATH=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/mips-linux-gnu/5.3.0/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ LIBRARY_PATH=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/soft-float/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/lib/soft-float/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/lib/:/home/buildroot/autobuild/run/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/soft-float/lib/:/home/buildroot/autobuild/run/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/soft-float/usr/lib/ COLLECT_GCC_OPTIONS='-mabi=32' '-mnan=legacy' '-msoft-float' '-EB' '-fstack-protector-strong' '-march=mips32r2' '-fPIE' '-pie' '-v' '-mllsc' '-D' '__CS_SOURCERYGXX_MAJ__=2016' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=8' ... rest of stderr output deleted ... configure:5798: $? = 1 configure:5787: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -V >&5 mips-linux-gnu-gcc: error: unrecognized command line option '-V' configure:5798: $? = 1 configure:5787: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -qversion >&5 mips-linux-gnu-gcc: error: unrecognized command line option '-qversion' configure:5798: $? = 1 configure:5787: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -version >&5 mips-linux-gnu-gcc: error: unrecognized command line option '-version' configure:5798: $? = 1 configure:5802: checking whether the compiler supports GNU C configure:5834: result: yes configure:5845: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc accepts -g configure:5913: result: yes configure:5933: checking for /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc option to enable C11 features configure:5967: result: none needed configure:6091: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc understands -c and -o together configure:6130: result: yes configure:6149: checking dependency style of /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc configure:6262: result: none configure:6283: checking how to run the C preprocessor configure:6354: result: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-cpp configure:6368: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-cpp -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c configure:6368: $? = 0 configure:6384: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-cpp -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory compilation terminated. configure:6384: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | /* end confdefs.h. */ | #include configure:6546: checking for C++ compiler version configure:6555: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ --version >&5 mips-linux-gnu-g++ (Sourcery CodeBench Lite 2016.05-8) 5.3.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:6566: $? = 0 configure:6555: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -v >&5 Using built-in specs. COLLECT_GCC=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/mips-linux-gnu-g++ COLLECT_LTO_WRAPPER=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/mips-linux-gnu/5.3.0/lto-wrapper Target: mips-linux-gnu Configured with: /scratch/cmoore/2016.05-8-mips-linux-gnu-lite/src/gcc-5-2016.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=mips-linux-gnu --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-arch-32=mips32r2 --with-arch-64=mips64r2 --with-float=hard --with-mips-plt --enable-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='-D__CS_SOURCERYGXX_MAJ__=2016 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=8' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-glibc-version=2.23 --with-pkgversion='Sourcery CodeBench Lite 2016.05-8' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/mips-linux-gnu/libc --with-build-sysroot=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/libc --with-gmp=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/obj/pkg-2016.05-8-mips-linux-gnu/mips-2016.05-8-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --enable-libgomp --disable-libitm --enable-libatomic --disable-libssp --disable-libcc1 --enable-poison-system-directories --with-python-dir=mips-linux-gnu/share/gdb/python --with-build-time-tools=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/bin --with-build-time-tools=/scratch/cmoore/2016.05-8-mips-linux-gnu-lite/install/opt/codesourcery/mips-linux-gnu/bin SED=sed Thread model: posix gcc version 5.3.0 (Sourcery CodeBench Lite 2016.05-8) COMPILER_PATH=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/mips-linux-gnu/5.3.0/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../libexec/gcc/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ LIBRARY_PATH=/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/soft-float/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/lib/soft-float/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/:/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/lib/:/home/buildroot/autobuild/run/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/soft-float/lib/:/home/buildroot/autobuild/run/instance-0/output-1/host/mips-buildroot-linux-gnu/sysroot/soft-float/usr/lib/ COLLECT_GCC_OPTIONS='-mabi=32' '-mnan=legacy' '-msoft-float' '-EB' '-fstack-protector-strong' '-march=mips32r2' '-fPIE' '-pie' '-v' '-shared-libgcc' '-mllsc' '-D' '__CS_SOURCERYGXX_MAJ__=2016' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=8' ... rest of stderr output deleted ... configure:6566: $? = 1 configure:6555: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -V >&5 mips-linux-gnu-g++: error: unrecognized command line option '-V' configure:6566: $? = 1 configure:6555: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -qversion >&5 mips-linux-gnu-g++: error: unrecognized command line option '-qversion' configure:6566: $? = 1 configure:6570: checking whether the compiler supports GNU C++ configure:6590: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 configure:6590: $? = 0 configure:6602: result: yes configure:6613: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ accepts -g configure:6634: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -c -g -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 configure:6634: $? = 0 configure:6681: result: yes configure:6701: checking for /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ option to enable C++11 features configure:6716: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 conftest.cpp:57:3: error: #error "Compiler does not advertise C++11 conformance" # error "Compiler does not advertise C++11 conformance" ^ conftest.cpp:62:3: error: 'constexpr' does not name a type constexpr int get_val() { return 20; } ^ conftest.cpp:62:3: note: C++11 'constexpr' only available with -std=c++11 or -std=gnu++11 conftest.cpp: In constructor 'cxx11test::delegate::delegate()': conftest.cpp:74:30: warning: delegating constructors only available with -std=c++11 or -std=gnu++11 delegate(): delegate(2354) {} ^ conftest.cpp: At global scope: conftest.cpp:85:24: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 virtual int getval() override final { return this->n * 2; } ^ conftest.cpp:85:26: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 virtual int getval() override final { return this->n * 2; } ^ conftest.cpp:92:16: warning: defaulted and deleted functions only available with -std=c++11 or -std=gnu++11 nocopy() = default; ^ conftest.cpp:93:29: warning: defaulted and deleted functions only available with -std=c++11 or -std=gnu++11 nocopy(const nocopy&) = delete; ^ conftest.cpp:94:41: warning: defaulted and deleted functions only available with -std=c++11 or -std=gnu++11 nocopy & operator=(const nocopy&) = delete; ^ conftest.cpp:106:46: error: ISO C++ forbids declaration of 'sum' with no type [-fpermissive] template auto sum(V first) -> V ^ conftest.cpp:106:46: error: top-level declaration of 'sum' specifies 'auto' conftest.cpp:106:46: error: trailing return type only available with -std=c++11 or -std=gnu++11 conftest.cpp:110:33: warning: variadic templates only available with -std=c++11 or -std=gnu++11 template auto sum(V first, Args... rest) -> V ^ conftest.cpp:110:69: warning: variadic templates only available with -std=c++11 or -std=gnu++11 template auto sum(V first, Args... rest) -> V ^ conftest.cpp:110:78: error: ISO C++ forbids declaration of 'sum' with no type [-fpermissive] template auto sum(V first, Args... rest) -> V ^ conftest.cpp:110:78: error: top-level declaration of 'sum' specifies 'auto' conftest.cpp:110:78: error: trailing return type only available with -std=c++11 or -std=gnu++11 conftest.cpp: In function 'int main(int, char**)': conftest.cpp:134:8: error: 'a1' does not name a type auto a1 = 6538; ^ conftest.cpp:135:8: error: 'a2' does not name a type auto a2 = 48573953.4; ^ conftest.cpp:136:8: error: 'a3' does not name a type auto a3 = "String literal"; ^ conftest.cpp:139:13: error: 'i' does not name a type for (auto i = a3; *i; ++i) { total += *i; } ^ conftest.cpp:139:21: error: expected ';' before '*' token for (auto i = a3; *i; ++i) { total += *i; } ^ conftest.cpp:139:22: error: 'i' was not declared in this scope for (auto i = a3; *i; ++i) { total += *i; } ^ conftest.cpp:141:12: error: 'a2' was not declared in this scope decltype(a2) a4 = 34895.034; ^ conftest.cpp:141:14: error: 'decltype' was not declared in this scope decltype(a2) a4 = 34895.034; ^ conftest.cpp:145:12: error: 'get_val' is not a member of 'cxx11test' short sa[cxx11test::get_val()] = { 0 }; ^ conftest.cpp:155:14: error: ISO C++ forbids declaration of 'x' with no type [-fpermissive] for (auto &x : array) { x += 23; } ^ conftest.cpp:155:18: warning: range-based 'for' loops only available with -std=c++11 or -std=gnu++11 for (auto &x : array) { x += 23; } ^ conftest.cpp:160:41: warning: lambda expressions only available with -std=c++11 or -std=gnu++11 assert (eval ([](int x) { return x*2; }, 21) == 42); ^ conftest.cpp:160:46: error: no matching function for call to 'eval(main(int, char**)::, int)' assert (eval ([](int x) { return x*2; }, 21) == 42); ^ conftest.cpp:100:44: note: candidate: template Ret cxx11test::eval(Fn, Ret) template Ret eval(Fn f, Ret v) ^ conftest.cpp:100:44: note: template argument deduction/substitution failed: conftest.cpp: In substitution of 'template Ret cxx11test::eval(Fn, Ret) [with Ret = int; Fn = main(int, char**)::]': conftest.cpp:160:46: required from here conftest.cpp:160:46: error: template argument for 'template Ret cxx11test::eval(Fn, Ret)' uses local type 'main(int, char**)::' assert (eval ([](int x) { return x*2; }, 21) == 42); ^ conftest.cpp:160:46: error: trying to instantiate 'template Ret cxx11test::eval(Fn, Ret)' conftest.cpp:162:48: warning: lambda expressions only available with -std=c++11 or -std=gnu++11 assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); ^ conftest.cpp:162:54: error: no matching function for call to 'eval(main(int, char**)::, double)' assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); ^ conftest.cpp:100:44: note: candidate: template Ret cxx11test::eval(Fn, Ret) template Ret eval(Fn f, Ret v) ^ conftest.cpp:100:44: note: template argument deduction/substitution failed: conftest.cpp: In substitution of 'template Ret cxx11test::eval(Fn, Ret) [with Ret = double; Fn = main(int, char**)::]': conftest.cpp:162:54: required from here conftest.cpp:162:54: error: template argument for 'template Ret cxx11test::eval(Fn, Ret)' uses local type 'main(int, char**)::' assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); ^ conftest.cpp:162:54: error: trying to instantiate 'template Ret cxx11test::eval(Fn, Ret)' conftest.cpp:164:56: warning: lambda expressions only available with -std=c++11 or -std=gnu++11 assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); ^ conftest.cpp:164:62: error: no matching function for call to 'eval(main(int, char**)::, double)' assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); ^ conftest.cpp:100:44: note: candidate: template Ret cxx11test::eval(Fn, Ret) template Ret eval(Fn f, Ret v) ^ conftest.cpp:100:44: note: template argument deduction/substitution failed: conftest.cpp: In substitution of 'template Ret cxx11test::eval(Fn, Ret) [with Ret = double; Fn = main(int, char**)::]': conftest.cpp:164:62: required from here conftest.cpp:164:62: error: template argument for 'template Ret cxx11test::eval(Fn, Ret)' uses local type 'main(int, char**)::' assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); ^ conftest.cpp:164:62: error: trying to instantiate 'template Ret cxx11test::eval(Fn, Ret)' conftest.cpp:169:20: error: 'cxx11test::sum' has not been declared using cxx11test::sum; ^ conftest.cpp:170:8: error: 'a' does not name a type auto a = sum(1); ^ conftest.cpp:171:8: error: 'b' does not name a type auto b = sum(1, 2); ^ conftest.cpp:172:8: error: 'c' does not name a type auto c = sum(1.0, 2.0, 3.0); ^ conftest.cpp:186:13: error: 'nullptr' was not declared in this scope char *c = nullptr; ^ conftest.cpp:190:36: error: '>>' should be '> >' within a nested template argument list test_template<::test_template> v(test_template(12)); ^ conftest.cpp:190:16: error: '<::' cannot begin a template-argument list [-fpermissive] test_template<::test_template> v(test_template(12)); ^ conftest.cpp:190:16: note: '<:' is an alternate spelling for '['. Insert whitespace between '<' and '::' conftest.cpp:190:16: note: (if you use '-fpermissive' or '-std=c++11', or '-std=gnu++11' G++ will accept your code) conftest.cpp:194:22: error: 'u8' was not declared in this scope char const *utf8 = u8"UTF-8 string \u2500"; ^ conftest.cpp:195:3: error: 'char16_t' was not declared in this scope char16_t const *utf16 = u"UTF-8 string \u2500"; ^ conftest.cpp:196:3: error: 'char32_t' was not declared in this scope char32_t const *utf32 = U"UTF-32 string \u2500"; ^ configure:6716: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | /* end confdefs.h. */ | | // Does the compiler advertise C++98 conformance? | #if !defined __cplusplus || __cplusplus < 199711L | # error "Compiler does not advertise C++98 conformance" | #endif | | // These inclusions are to reject old compilers that | // lack the unsuffixed header files. | #include | #include | | // and are *not* freestanding headers in C++98. | extern void assert (int); | namespace std { | extern int strcmp (const char *, const char *); | } | | // Namespaces, exceptions, and templates were all added after "C++ 2.0". | using std::exception; | using std::strcmp; | | namespace { | | void test_exception_syntax() | { | try { | throw "test"; | } catch (const char *s) { | // Extra parentheses suppress a warning when building autoconf itself, | // due to lint rules shared with more typical C programs. | assert (!(strcmp) (s, "test")); | } | } | | template struct test_template | { | T const val; | explicit test_template(T t) : val(t) {} | template T add(U u) { return static_cast(u) + val; } | }; | | } // anonymous namespace | | | // Does the compiler advertise C++ 2011 conformance? | #if !defined __cplusplus || __cplusplus < 201103L | # error "Compiler does not advertise C++11 conformance" | #endif | | namespace cxx11test | { | constexpr int get_val() { return 20; } | | struct testinit | { | int i; | double d; | }; | | class delegate | { | public: | delegate(int n) : n(n) {} | delegate(): delegate(2354) {} | | virtual int getval() { return this->n; }; | protected: | int n; | }; | | class overridden : public delegate | { | public: | overridden(int n): delegate(n) {} | virtual int getval() override final { return this->n * 2; } | }; | | class nocopy | { | public: | nocopy(int i): i(i) {} | nocopy() = default; | nocopy(const nocopy&) = delete; | nocopy & operator=(const nocopy&) = delete; | private: | int i; | }; | | // for testing lambda expressions | template Ret eval(Fn f, Ret v) | { | return f(v); | } | | // for testing variadic templates and trailing return types | template auto sum(V first) -> V | { | return first; | } | template auto sum(V first, Args... rest) -> V | { | return first + sum(rest...); | } | } | | | int | main (int argc, char **argv) | { | int ok = 0; | | assert (argc); | assert (! argv[0]); | { | test_exception_syntax (); | test_template tt (2.0); | assert (tt.add (4) == 6.0); | assert (true && !false); | } | | | { | // Test auto and decltype | auto a1 = 6538; | auto a2 = 48573953.4; | auto a3 = "String literal"; | | int total = 0; | for (auto i = a3; *i; ++i) { total += *i; } | | decltype(a2) a4 = 34895.034; | } | { | // Test constexpr | short sa[cxx11test::get_val()] = { 0 }; | } | { | // Test initializer lists | cxx11test::testinit il = { 4323, 435234.23544 }; | } | { | // Test range-based for | int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, | 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; | for (auto &x : array) { x += 23; } | } | { | // Test lambda expressions | using cxx11test::eval; | assert (eval ([](int x) { return x*2; }, 21) == 42); | double d = 2.0; | assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); | assert (d == 5.0); | assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); | assert (d == 5.0); | } | { | // Test use of variadic templates | using cxx11test::sum; | auto a = sum(1); | auto b = sum(1, 2); | auto c = sum(1.0, 2.0, 3.0); | } | { | // Test constructor delegation | cxx11test::delegate d1; | cxx11test::delegate d2(); | cxx11test::delegate d3(45); | } | { | // Test override and final | cxx11test::overridden o1(55464); | } | { | // Test nullptr | char *c = nullptr; | } | { | // Test template brackets | test_template<::test_template> v(test_template(12)); | } | { | // Unicode literals | char const *utf8 = u8"UTF-8 string \u2500"; | char16_t const *utf16 = u"UTF-8 string \u2500"; | char32_t const *utf32 = U"UTF-32 string \u2500"; | } | | return ok; | } | configure:6716: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 configure:6716: $? = 0 configure:6738: result: -std=gnu++11 configure:6806: checking dependency style of /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 configure:6919: result: none configure:6937: checking for mips-buildroot-linux-gnu-ranlib configure:6970: result: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc-ranlib configure:7060: checking for /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc option to enable large file support configure:7095: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7095: $? = 0 configure:7101: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -DFTYPE=ino_t -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7101: $? = 0 configure:7126: result: none needed configure:7407: checking for the pthreads library -lpthreads configure:7445: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c -lpthreads >&5 /home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: cannot find -lpthreads collect2: error: ld returned 1 exit status configure:7445: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | /* end confdefs.h. */ | #include | static void routine(void* a) {a=0;} | static void* start_routine(void* a) {return a;} | int | main (void) | { | pthread_t th; pthread_attr_t attr; | pthread_join(th, 0); | pthread_attr_init(&attr); | pthread_cleanup_push(routine, 0); | pthread_create(&th,0,start_routine,0); | pthread_cleanup_pop(0); | ; | return 0; | } configure:7455: result: no configure:7346: checking whether pthreads work without any flags configure:7445: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 /tmp/cck1fFxr.o: In function `main': conftest.c:(.text.startup+0x14): undefined reference to `pthread_join' conftest.c:(.text.startup+0x34): undefined reference to `pthread_join' conftest.c:(.text.startup+0x74): undefined reference to `__pthread_register_cancel' conftest.c:(.text.startup+0x7c): undefined reference to `__pthread_register_cancel' conftest.c:(.text.startup+0x98): undefined reference to `pthread_create' conftest.c:(.text.startup+0x9c): undefined reference to `pthread_create' conftest.c:(.text.startup+0xa8): undefined reference to `__pthread_unregister_cancel' conftest.c:(.text.startup+0xac): undefined reference to `__pthread_unregister_cancel' collect2: error: ld returned 1 exit status configure:7445: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | /* end confdefs.h. */ | #include | static void routine(void* a) {a=0;} | static void* start_routine(void* a) {return a;} | int | main (void) | { | pthread_t th; pthread_attr_t attr; | pthread_join(th, 0); | pthread_attr_init(&attr); | pthread_cleanup_push(routine, 0); | pthread_create(&th,0,start_routine,0); | pthread_cleanup_pop(0); | ; | return 0; | } configure:7455: result: no configure:7351: checking whether pthreads work with -Kthread configure:7445: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -Kthread -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 mips-linux-gnu-gcc: error: unrecognized command line option '-Kthread' configure:7445: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | /* end confdefs.h. */ | #include | static void routine(void* a) {a=0;} | static void* start_routine(void* a) {return a;} | int | main (void) | { | pthread_t th; pthread_attr_t attr; | pthread_join(th, 0); | pthread_attr_init(&attr); | pthread_cleanup_push(routine, 0); | pthread_create(&th,0,start_routine,0); | pthread_cleanup_pop(0); | ; | return 0; | } configure:7455: result: no configure:7351: checking whether pthreads work with -kthread configure:7445: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -kthread -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 mips-linux-gnu-gcc: error: unrecognized command line option '-kthread' configure:7445: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | /* end confdefs.h. */ | #include | static void routine(void* a) {a=0;} | static void* start_routine(void* a) {return a;} | int | main (void) | { | pthread_t th; pthread_attr_t attr; | pthread_join(th, 0); | pthread_attr_init(&attr); | pthread_cleanup_push(routine, 0); | pthread_create(&th,0,start_routine,0); | pthread_cleanup_pop(0); | ; | return 0; | } configure:7455: result: no configure:7407: checking for the pthreads library -llthread configure:7445: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c -llthread >&5 /home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: cannot find -llthread collect2: error: ld returned 1 exit status configure:7445: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | /* end confdefs.h. */ | #include | static void routine(void* a) {a=0;} | static void* start_routine(void* a) {return a;} | int | main (void) | { | pthread_t th; pthread_attr_t attr; | pthread_join(th, 0); | pthread_attr_init(&attr); | pthread_cleanup_push(routine, 0); | pthread_create(&th,0,start_routine,0); | pthread_cleanup_pop(0); | ; | return 0; | } configure:7455: result: no configure:7351: checking whether pthreads work with -pthread configure:7445: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -pthread -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7445: $? = 0 configure:7455: result: yes configure:7474: checking for joinable pthread attribute configure:7489: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -pthread -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7489: $? = 0 configure:7496: result: PTHREAD_CREATE_JOINABLE configure:7504: checking if more special flags are required for pthreads configure:7511: result: no configure:7603: checking for stdio.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7603: checking for stdlib.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7603: checking for string.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7603: checking for inttypes.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7603: checking for stdint.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7603: checking for strings.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7603: checking for sys/stat.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7603: checking for sys/types.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7603: checking for unistd.h configure:7603: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7603: $? = 0 configure:7603: result: yes configure:7628: checking for a.out.h configure:7628: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7628: $? = 0 configure:7628: result: yes configure:7634: checking for sys/mman.h configure:7634: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7634: $? = 0 configure:7634: result: yes configure:7640: checking for sys/random.h configure:7640: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 conftest.c:52:24: fatal error: sys/random.h: No such file or directory compilation terminated. configure:7640: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_STDIO_H | # include | #endif | #ifdef HAVE_STDLIB_H | # include | #endif | #ifdef HAVE_STRING_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:7640: result: no configure:7647: checking for arc4random configure:7647: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 /tmp/ccmD11Ab.o: In function `main': conftest.c:(.text.startup+0x10): undefined reference to `arc4random' conftest.c:(.text.startup+0x1c): undefined reference to `arc4random' collect2: error: ld returned 1 exit status configure:7647: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | /* end confdefs.h. */ | /* Define arc4random to an innocuous variant, in case declares arc4random. | For example, HP-UX 11i declares gettimeofday. */ | #define arc4random innocuous_arc4random | | /* System header to define __stub macros and hopefully few prototypes, | which can conflict with char arc4random (void); below. */ | | #include | #undef arc4random | | /* Override any GCC internal prototype to avoid an error. | Use char because int might match the return type of a GCC | builtin and then its argument prototype would still apply. */ | #ifdef __cplusplus | extern "C" | #endif | char arc4random (void); | /* The GNU C library defines this for functions which it implements | to always fail with ENOSYS. Some functions are actually named | something starting with __ and the normal name is an alias. */ | #if defined __stub_arc4random || defined __stub___arc4random | choke me | #endif | | int | main (void) | { | return arc4random (); | ; | return 0; | } configure:7647: result: no configure:7653: checking for getcontext configure:7653: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 configure:7653: $? = 0 configure:7653: result: yes configure:7659: checking for getrandom configure:7659: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 /tmp/ccECl77q.o: In function `main': conftest.c:(.text.startup+0x10): undefined reference to `getrandom' conftest.c:(.text.startup+0x1c): undefined reference to `getrandom' collect2: error: ld returned 1 exit status configure:7659: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | /* Define getrandom to an innocuous variant, in case declares getrandom. | For example, HP-UX 11i declares gettimeofday. */ | #define getrandom innocuous_getrandom | | /* System header to define __stub macros and hopefully few prototypes, | which can conflict with char getrandom (void); below. */ | | #include | #undef getrandom | | /* Override any GCC internal prototype to avoid an error. | Use char because int might match the return type of a GCC | builtin and then its argument prototype would still apply. */ | #ifdef __cplusplus | extern "C" | #endif | char getrandom (void); | /* The GNU C library defines this for functions which it implements | to always fail with ENOSYS. Some functions are actually named | something starting with __ and the normal name is an alias. */ | #if defined __stub_getrandom || defined __stub___getrandom | choke me | #endif | | int | main (void) | { | return getrandom (); | ; | return 0; | } configure:7659: result: no configure:7665: checking for memfd_create configure:7665: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 /tmp/ccGSzmCy.o: In function `main': conftest.c:(.text.startup+0x10): undefined reference to `memfd_create' conftest.c:(.text.startup+0x1c): undefined reference to `memfd_create' collect2: error: ld returned 1 exit status configure:7665: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | /* Define memfd_create to an innocuous variant, in case declares memfd_create. | For example, HP-UX 11i declares gettimeofday. */ | #define memfd_create innocuous_memfd_create | | /* System header to define __stub macros and hopefully few prototypes, | which can conflict with char memfd_create (void); below. */ | | #include | #undef memfd_create | | /* Override any GCC internal prototype to avoid an error. | Use char because int might match the return type of a GCC | builtin and then its argument prototype would still apply. */ | #ifdef __cplusplus | extern "C" | #endif | char memfd_create (void); | /* The GNU C library defines this for functions which it implements | to always fail with ENOSYS. Some functions are actually named | something starting with __ and the normal name is an alias. */ | #if defined __stub_memfd_create || defined __stub___memfd_create | choke me | #endif | | int | main (void) | { | return memfd_create (); | ; | return 0; | } configure:7665: result: no configure:7698: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features by default configure:8497: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 conftest.cpp:327:2: error: #error "This is not a C++14 compiler" #error "This is not a C++14 compiler" ^ conftest.cpp:447:2: error: #error "This is not a C++17 compiler" #error "This is not a C++17 compiler" ^ configure:8497: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:8507: result: no configure:8517: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features with -std=gnu++17 configure:9318: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 -std=gnu++17 -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 conftest.cpp:447:2: error: #error "This is not a C++17 compiler" #error "This is not a C++17 compiler" ^ configure:9318: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:9330: result: no configure:8517: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features with -std=gnu++1z configure:9318: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 -std=gnu++1z -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 conftest.cpp:447:2: error: #error "This is not a C++17 compiler" #error "This is not a C++17 compiler" ^ configure:9318: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:9330: result: no configure:9347: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features with -std=c++17 configure:10148: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 -std=c++17 -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 conftest.cpp:447:2: error: #error "This is not a C++17 compiler" #error "This is not a C++17 compiler" ^ configure:10148: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:10160: result: no configure:9347: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features with +std=c++17 configure:10148: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 +std=c++17 -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 mips-linux-gnu-g++: error: +std=c++17: No such file or directory configure:10148: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:10160: result: no configure:9347: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features with -h std=c++17 configure:10148: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 -h std=c++17 -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 conftest.cpp:327:2: error: #error "This is not a C++14 compiler" #error "This is not a C++14 compiler" ^ conftest.cpp:447:2: error: #error "This is not a C++17 compiler" #error "This is not a C++17 compiler" ^ configure:10148: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:10160: result: no configure:9347: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features with -std=c++1z configure:10148: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 -std=c++1z -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 conftest.cpp:447:2: error: #error "This is not a C++17 compiler" #error "This is not a C++17 compiler" ^ configure:10148: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:10160: result: no configure:9347: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features with +std=c++1z configure:10148: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 +std=c++1z -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 mips-linux-gnu-g++: error: +std=c++1z: No such file or directory configure:10148: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:10160: result: no configure:9347: checking whether /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 supports C++17 features with -h std=c++1z configure:10148: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11 -h std=c++1z -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 conftest.cpp:327:2: error: #error "This is not a C++14 compiler" #error "This is not a C++14 compiler" ^ conftest.cpp:447:2: error: #error "This is not a C++17 compiler" #error "This is not a C++17 compiler" ^ configure:10148: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "breakpad" | #define PACKAGE_TARNAME "breakpad" | #define PACKAGE_VERSION "0.1" | #define PACKAGE_STRING "breakpad 0.1" | #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" | #define PACKAGE_URL "" | #define PACKAGE "breakpad" | #define VERSION "0.1" | #define HAVE_PTHREAD 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_A_OUT_H 1 | #define HAVE_SYS_MMAN_H 1 | #define HAVE_GETCONTEXT 1 | /* end confdefs.h. */ | | | // If the compiler admits that it is not ready for C++11, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | // MSVC always sets __cplusplus to 199711L in older versions; newer versions | // only set it correctly if /Zc:__cplusplus is specified as well as a | // /std:c++NN switch: | // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ | #elif __cplusplus < 201103L && !defined _MSC_VER | | #error "This is not a C++11 compiler" | | #else | | namespace cxx11 | { | | namespace test_static_assert | { | | template | struct check | { | static_assert(sizeof(int) <= sizeof(T), "not big enough"); | }; | | } | | namespace test_final_override | { | | struct Base | { | virtual ~Base() {} | virtual void f() {} | }; | | struct Derived : public Base | { | virtual ~Derived() override {} | virtual void f() override {} | }; | | } | | namespace test_double_right_angle_brackets | { | | template < typename T > | struct check {}; | | typedef check single_type; | typedef check> double_type; | typedef check>> triple_type; | typedef check>>> quadruple_type; | | } | | namespace test_decltype | { | | int | f() | { | int a = 1; | decltype(a) b = 2; | return a + b; | } | | } | | namespace test_type_deduction | { | | template < typename T1, typename T2 > | struct is_same | { | static const bool value = false; | }; | | template < typename T > | struct is_same | { | static const bool value = true; | }; | | template < typename T1, typename T2 > | auto | add(T1 a1, T2 a2) -> decltype(a1 + a2) | { | return a1 + a2; | } | | int | test(const int c, volatile int v) | { | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == false, ""); | auto ac = c; | auto av = v; | auto sumi = ac + av + 'x'; | auto sumf = ac + av + 1.0; | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == true, ""); | static_assert(is_same::value == false, ""); | static_assert(is_same::value == true, ""); | return (sumf > 0.0) ? sumi : add(c, v); | } | | } | | namespace test_noexcept | { | | int f() { return 0; } | int g() noexcept { return 0; } | | static_assert(noexcept(f()) == false, ""); | static_assert(noexcept(g()) == true, ""); | | } | | namespace test_constexpr | { | | template < typename CharT > | unsigned long constexpr | strlen_c_r(const CharT *const s, const unsigned long acc) noexcept | { | return *s ? strlen_c_r(s + 1, acc + 1) : acc; | } | | template < typename CharT > | unsigned long constexpr | strlen_c(const CharT *const s) noexcept | { | return strlen_c_r(s, 0UL); | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("1") == 1UL, ""); | static_assert(strlen_c("example") == 7UL, ""); | static_assert(strlen_c("another\0example") == 7UL, ""); | | } | | namespace test_rvalue_references | { | | template < int N > | struct answer | { | static constexpr int value = N; | }; | | answer<1> f(int&) { return answer<1>(); } | answer<2> f(const int&) { return answer<2>(); } | answer<3> f(int&&) { return answer<3>(); } | | void | test() | { | int i = 0; | const int c = 0; | static_assert(decltype(f(i))::value == 1, ""); | static_assert(decltype(f(c))::value == 2, ""); | static_assert(decltype(f(0))::value == 3, ""); | } | | } | | namespace test_uniform_initialization | { | | struct test | { | static const int zero {}; | static const int one {1}; | }; | | static_assert(test::zero == 0, ""); | static_assert(test::one == 1, ""); | | } | | namespace test_lambdas | { | | void | test1() | { | auto lambda1 = [](){}; | auto lambda2 = lambda1; | lambda1(); | lambda2(); | } | | int | test2() | { | auto a = [](int i, int j){ return i + j; }(1, 2); | auto b = []() -> int { return '0'; }(); | auto c = [=](){ return a + b; }(); | auto d = [&](){ return c; }(); | auto e = [a, &b](int x) mutable { | const auto identity = [](int y){ return y; }; | for (auto i = 0; i < a; ++i) | a += b--; | return x + identity(a + b); | }(0); | return a + b + c + d + e; | } | | int | test3() | { | const auto nullary = [](){ return 0; }; | const auto unary = [](int x){ return x; }; | using nullary_t = decltype(nullary); | using unary_t = decltype(unary); | const auto higher1st = [](nullary_t f){ return f(); }; | const auto higher2nd = [unary](nullary_t f1){ | return [unary, f1](unary_t f2){ return f2(unary(f1())); }; | }; | return higher1st(nullary) + higher2nd(nullary)(unary); | } | | } | | namespace test_variadic_templates | { | | template | struct sum; | | template | struct sum | { | static constexpr auto value = N0 + sum::value; | }; | | template <> | struct sum<> | { | static constexpr auto value = 0; | }; | | static_assert(sum<>::value == 0, ""); | static_assert(sum<1>::value == 1, ""); | static_assert(sum<23>::value == 23, ""); | static_assert(sum<1, 2>::value == 3, ""); | static_assert(sum<5, 5, 11>::value == 21, ""); | static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); | | } | | // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae | // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function | // because of this. | namespace test_template_alias_sfinae | { | | struct foo {}; | | template | using member = typename T::member_type; | | template | void func(...) {} | | template | void func(member*) {} | | void test(); | | void test() { func(0); } | | } | | } // namespace cxx11 | | #endif // __cplusplus >= 201103L | | | | | // If the compiler admits that it is not ready for C++14, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201402L && !defined _MSC_VER | | #error "This is not a C++14 compiler" | | #else | | namespace cxx14 | { | | namespace test_polymorphic_lambdas | { | | int | test() | { | const auto lambda = [](auto&&... args){ | const auto istiny = [](auto x){ | return (sizeof(x) == 1UL) ? 1 : 0; | }; | const int aretiny[] = { istiny(args)... }; | return aretiny[0]; | }; | return lambda(1, 1L, 1.0f, '1'); | } | | } | | namespace test_binary_literals | { | | constexpr auto ivii = 0b0000000000101010; | static_assert(ivii == 42, "wrong value"); | | } | | namespace test_generalized_constexpr | { | | template < typename CharT > | constexpr unsigned long | strlen_c(const CharT *const s) noexcept | { | auto length = 0UL; | for (auto p = s; *p; ++p) | ++length; | return length; | } | | static_assert(strlen_c("") == 0UL, ""); | static_assert(strlen_c("x") == 1UL, ""); | static_assert(strlen_c("test") == 4UL, ""); | static_assert(strlen_c("another\0test") == 7UL, ""); | | } | | namespace test_lambda_init_capture | { | | int | test() | { | auto x = 0; | const auto lambda1 = [a = x](int b){ return a + b; }; | const auto lambda2 = [a = lambda1(x)](){ return a; }; | return lambda2(); | } | | } | | namespace test_digit_separators | { | | constexpr auto ten_million = 100'000'000; | static_assert(ten_million == 100000000, ""); | | } | | namespace test_return_type_deduction | { | | auto f(int& x) { return x; } | decltype(auto) g(int& x) { return x; } | | template < typename T1, typename T2 > | struct is_same | { | static constexpr auto value = false; | }; | | template < typename T > | struct is_same | { | static constexpr auto value = true; | }; | | int | test() | { | auto x = 0; | static_assert(is_same::value, ""); | static_assert(is_same::value, ""); | return x; | } | | } | | } // namespace cxx14 | | #endif // __cplusplus >= 201402L | | | | | // If the compiler admits that it is not ready for C++17, why torture it? | // Hopefully, this will speed up the test. | | #ifndef __cplusplus | | #error "This is not a C++ compiler" | | #elif __cplusplus < 201703L && !defined _MSC_VER | | #error "This is not a C++17 compiler" | | #else | | #include | #include | #include | | namespace cxx17 | { | | namespace test_constexpr_lambdas | { | | constexpr int foo = [](){return 42;}(); | | } | | namespace test::nested_namespace::definitions | { | | } | | namespace test_fold_expression | { | | template | int multiply(Args... args) | { | return (args * ... * 1); | } | | template | bool all(Args... args) | { | return (args && ...); | } | | } | | namespace test_extended_static_assert | { | | static_assert (true); | | } | | namespace test_auto_brace_init_list | { | | auto foo = {5}; | auto bar {5}; | | static_assert(std::is_same, decltype(foo)>::value); | static_assert(std::is_same::value); | } | | namespace test_typename_in_template_template_parameter | { | | template typename X> struct D; | | } | | namespace test_fallthrough_nodiscard_maybe_unused_attributes | { | | int f1() | { | return 42; | } | | [[nodiscard]] int f2() | { | [[maybe_unused]] auto unused = f1(); | | switch (f1()) | { | case 17: | f1(); | [[fallthrough]]; | case 42: | f1(); | } | return f1(); | } | | } | | namespace test_extended_aggregate_initialization | { | | struct base1 | { | int b1, b2 = 42; | }; | | struct base2 | { | base2() { | b3 = 42; | } | int b3; | }; | | struct derived : base1, base2 | { | int d; | }; | | derived d1 {{1, 2}, {}, 4}; // full initialization | derived d2 {{}, {}, 4}; // value-initialized bases | | } | | namespace test_general_range_based_for_loop | { | | struct iter | { | int i; | | int& operator* () | { | return i; | } | | const int& operator* () const | { | return i; | } | | iter& operator++() | { | ++i; | return *this; | } | }; | | struct sentinel | { | int i; | }; | | bool operator== (const iter& i, const sentinel& s) | { | return i.i == s.i; | } | | bool operator!= (const iter& i, const sentinel& s) | { | return !(i == s); | } | | struct range | { | iter begin() const | { | return {0}; | } | | sentinel end() const | { | return {5}; | } | }; | | void f() | { | range r {}; | | for (auto i : r) | { | [[maybe_unused]] auto v = i; | } | } | | } | | namespace test_lambda_capture_asterisk_this_by_value | { | | struct t | { | int i; | int foo() | { | return [*this]() | { | return i; | }(); | } | }; | | } | | namespace test_enum_class_construction | { | | enum class byte : unsigned char | {}; | | byte foo {42}; | | } | | namespace test_constexpr_if | { | | template | int f () | { | if constexpr(cond) | { | return 13; | } | else | { | return 42; | } | } | | } | | namespace test_selection_statement_with_initializer | { | | int f() | { | return 13; | } | | int f2() | { | if (auto i = f(); i > 0) | { | return 3; | } | | switch (auto i = f(); i + 4) | { | case 17: | return 2; | | default: | return 1; | } | } | | } | | namespace test_template_argument_deduction_for_class_templates | { | | template | struct pair | { | pair (T1 p1, T2 p2) | : m1 {p1}, | m2 {p2} | {} | | T1 m1; | T2 m2; | }; | | void f() | { | [[maybe_unused]] auto p = pair{13, 42u}; | } | | } | | namespace test_non_type_auto_template_parameters | { | | template | struct B | {}; | | B<5> b1; | B<'a'> b2; | | } | | namespace test_structured_bindings | { | | int arr[2] = { 1, 2 }; | std::pair pr = { 1, 2 }; | | auto f1() -> int(&)[2] | { | return arr; | } | | auto f2() -> std::pair& | { | return pr; | } | | struct S | { | int x1 : 2; | volatile double y1; | }; | | S f3() | { | return {}; | } | | auto [ x1, y1 ] = f1(); | auto& [ xr1, yr1 ] = f1(); | auto [ x2, y2 ] = f2(); | auto& [ xr2, yr2 ] = f2(); | const auto [ x3, y3 ] = f3(); | | } | | namespace test_exception_spec_type_system | { | | struct Good {}; | struct Bad {}; | | void g1() noexcept; | void g2(); | | template | Bad | f(T*, T*); | | template | Good | f(T1*, T2*); | | static_assert (std::is_same_v); | | } | | namespace test_inline_variables | { | | template void f(T) | {} | | template inline T g(T) | { | return T{}; | } | | template<> inline void f<>(int) | {} | | template<> int g<>(int) | { | return 5; | } | | } | | } // namespace cxx17 | | #endif // __cplusplus < 201703L && !defined _MSC_VER | | | configure:10160: result: no configure:10184: error: *** A compiler with support for C++17 language features is required. ## ---------------- ## ## Cache variables. ## ## ---------------- ## ac_cv_build=x86_64-pc-linux-gnu ac_cv_c_bigendian=yes ac_cv_c_compiler_gnu=yes ac_cv_cxx_compiler_gnu=yes ac_cv_env_CCASFLAGS_set= ac_cv_env_CCASFLAGS_value= ac_cv_env_CCAS_set= ac_cv_env_CCAS_value= ac_cv_env_CCC_set= ac_cv_env_CCC_value= ac_cv_env_CC_set=set ac_cv_env_CC_value=/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc ac_cv_env_CFLAGS_set=set ac_cv_env_CFLAGS_value='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1' ac_cv_env_CPPFLAGS_set=set ac_cv_env_CPPFLAGS_value='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' ac_cv_env_CPP_set=set ac_cv_env_CPP_value=/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-cpp ac_cv_env_CXXFLAGS_set=set ac_cv_env_CXXFLAGS_value='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1' ac_cv_env_CXX_set=set ac_cv_env_CXX_value=/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ ac_cv_env_GMOCK_CFLAGS_set= ac_cv_env_GMOCK_CFLAGS_value= ac_cv_env_GMOCK_LIBS_set= ac_cv_env_GMOCK_LIBS_value= ac_cv_env_GTEST_CFLAGS_set= ac_cv_env_GTEST_CFLAGS_value= ac_cv_env_GTEST_LIBS_set= ac_cv_env_GTEST_LIBS_value= ac_cv_env_LDFLAGS_set=set ac_cv_env_LDFLAGS_value= ac_cv_env_LIBS_set= ac_cv_env_LIBS_value= ac_cv_env_RUSTC_DEMANGLE_CFLAGS_set= ac_cv_env_RUSTC_DEMANGLE_CFLAGS_value= ac_cv_env_RUSTC_DEMANGLE_LIBS_set= ac_cv_env_RUSTC_DEMANGLE_LIBS_value= ac_cv_env_build_alias_set=set ac_cv_env_build_alias_value=x86_64-pc-linux-gnu ac_cv_env_host_alias_set=set ac_cv_env_host_alias_value=mips-buildroot-linux-gnu ac_cv_env_target_alias_set=set ac_cv_env_target_alias_value=mips-buildroot-linux-gnu ac_cv_func_arc4random=no ac_cv_func_calloc_0_nonnull=yes ac_cv_func_getcontext=yes ac_cv_func_getrandom=no ac_cv_func_malloc_0_nonnull=yes ac_cv_func_memcmp_working=yes ac_cv_func_memfd_create=no ac_cv_func_mmap_fixed_mapped=yes ac_cv_func_realloc_0_nonnull=yes ac_cv_have_decl_malloc=yes ac_cv_header_a_out_h=yes ac_cv_header_inttypes_h=yes ac_cv_header_stdint_h=yes ac_cv_header_stdio_h=yes ac_cv_header_stdlib_h=yes ac_cv_header_string_h=yes ac_cv_header_strings_h=yes ac_cv_header_sys_mman_h=yes ac_cv_header_sys_random_h=no ac_cv_header_sys_stat_h=yes ac_cv_header_sys_types_h=yes ac_cv_header_unistd_h=yes ac_cv_host=mips-buildroot-linux-gnu ac_cv_lbl_unaligned_fail=yes ac_cv_objext=o ac_cv_path_install='/usr/bin/install -c' ac_cv_path_mkdir=/bin/mkdir ac_cv_prog_AR=/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc-ar ac_cv_prog_AWK=mawk ac_cv_prog_CC=/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc ac_cv_prog_CPP=/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-cpp ac_cv_prog_RANLIB=/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc-ranlib ac_cv_prog_STRIP=/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-strip ac_cv_prog_cc_c11= ac_cv_prog_cc_g=yes ac_cv_prog_cc_stdc= ac_cv_prog_cxx_cxx11=-std=gnu++11 ac_cv_prog_cxx_g=yes ac_cv_prog_cxx_stdcxx=-std=gnu++11 ac_cv_prog_make_make_set=yes ac_cv_sys_largefile_opts='none needed' am_cv_CCAS_dependencies_compiler_type=none am_cv_CC_dependencies_compiler_type=none am_cv_CXX_dependencies_compiler_type=none am_cv_ar_interface=ar am_cv_make_support_nested_variables=yes am_cv_prog_cc_c_o=yes am_cv_prog_tar_ustar=gnutar ax_cv_cxx_compile_cxx17=no ax_cv_cxx_compile_cxx17__h_std_cpp17=no ax_cv_cxx_compile_cxx17__h_std_cpp1z=no ax_cv_cxx_compile_cxx17__std_cpp17=no ax_cv_cxx_compile_cxx17__std_cpp1z=no ax_cv_cxx_compile_cxx17__std_gnupp17=no ax_cv_cxx_compile_cxx17__std_gnupp1z=no ax_cv_cxx_compile_cxx17_pstd_cpp17=no ax_cv_cxx_compile_cxx17_pstd_cpp1z=no gl_cv_func_malloc_0_nonnull=yes lt_cv_sys_lib_search_path_spec= ## ----------------- ## ## Output variables. ## ## ----------------- ## ACLOCAL='${SHELL} '\''/home/buildroot/autobuild/run/instance-0/output-1/build/google-breakpad-f49c2f1a2023da0cb055874fba050563dfea57db/autotools/missing'\'' aclocal-1.16' AMDEPBACKSLASH='' AMDEP_FALSE='' AMDEP_TRUE='#' AMTAR='$${TAR-tar}' AM_BACKSLASH='\' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' AM_DEFAULT_VERBOSITY='1' AM_V='$(V)' ANDROID_HOST_FALSE='' ANDROID_HOST_TRUE='' AR='/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc-ar' AUTOCONF='${SHELL} '\''/home/buildroot/autobuild/run/instance-0/output-1/build/google-breakpad-f49c2f1a2023da0cb055874fba050563dfea57db/autotools/missing'\'' autoconf' AUTOHEADER='${SHELL} '\''/home/buildroot/autobuild/run/instance-0/output-1/build/google-breakpad-f49c2f1a2023da0cb055874fba050563dfea57db/autotools/missing'\'' autoheader' AUTOMAKE='${SHELL} '\''/home/buildroot/autobuild/run/instance-0/output-1/build/google-breakpad-f49c2f1a2023da0cb055874fba050563dfea57db/autotools/missing'\'' automake-1.16' AWK='mawk' CC='/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc' CCAS='/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc' CCASDEPMODE='depmode=none' CCASFLAGS='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1' CCDEPMODE='depmode=none' CFLAGS='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1' CPP='/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-cpp' CPPFLAGS='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' CSCOPE='cscope' CTAGS='ctags' CXX='/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-g++ -std=gnu++11' CXXDEPMODE='depmode=none' CXXFLAGS='-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1' CYGPATH_W='echo' DEFS='' DEPDIR='.deps' DISABLE_PROCESSOR_FALSE='' DISABLE_PROCESSOR_TRUE='' DISABLE_TOOLS_FALSE='' DISABLE_TOOLS_TRUE='' ECHO_C='' ECHO_N='-n' ECHO_T='' ETAGS='etags' EXEEXT='' GMOCK_CFLAGS='' GMOCK_LIBS='' GTEST_CFLAGS='' GTEST_LIBS='' HAVE_CXX17='' HAVE_GETCONTEXT_FALSE='#' HAVE_GETCONTEXT_TRUE='' HAVE_MEMFD_CREATE_FALSE='' HAVE_MEMFD_CREATE_TRUE='#' INSTALL_DATA='${INSTALL} -m 644' INSTALL_PROGRAM='${INSTALL}' INSTALL_SCRIPT='${INSTALL}' INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' LDFLAGS='' LIBOBJS='' LIBS='' LINUX_HOST_FALSE='' LINUX_HOST_TRUE='' LTLIBOBJS='' MAINT='#' MAINTAINER_MODE_FALSE='' MAINTAINER_MODE_TRUE='#' MAKEINFO='${SHELL} '\''/home/buildroot/autobuild/run/instance-0/output-1/build/google-breakpad-f49c2f1a2023da0cb055874fba050563dfea57db/autotools/missing'\'' makeinfo' MKDIR_P='/bin/mkdir -p' OBJEXT='o' PACKAGE='breakpad' PACKAGE_BUGREPORT='google-breakpad-dev@googlegroups.com' PACKAGE_NAME='breakpad' PACKAGE_STRING='breakpad 0.1' PACKAGE_TARNAME='breakpad' PACKAGE_URL='' PACKAGE_VERSION='0.1' PATH_SEPARATOR=':' PTHREAD_CC='/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc' PTHREAD_CFLAGS='-pthread' PTHREAD_LIBS='' RANLIB='/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-gcc-ranlib' RUSTC_DEMANGLE_CFLAGS='' RUSTC_DEMANGLE_LIBS='' SELFTEST_FALSE='' SELFTEST_TRUE='' SET_MAKE='' SHELL='/bin/sh' STRIP='/home/buildroot/autobuild/run/instance-0/output-1/host/bin/mips-linux-gnu-strip' SYSTEM_TEST_LIBS_FALSE='' SYSTEM_TEST_LIBS_TRUE='' TESTS_AS_ROOT_FALSE='' TESTS_AS_ROOT_TRUE='' VERSION='0.1' WARN_CXXFLAGS='' X86_HOST_FALSE='' X86_HOST_TRUE='' ac_ct_AR='' ac_ct_CC='' ac_ct_CXX='' am__EXEEXT_FALSE='' am__EXEEXT_TRUE='' am__fastdepCCAS_FALSE='' am__fastdepCCAS_TRUE='#' am__fastdepCC_FALSE='' am__fastdepCC_TRUE='#' am__fastdepCXX_FALSE='' am__fastdepCXX_TRUE='#' am__include='include' am__isrc='' am__leading_dot='.' am__nodep='' am__quote='' am__tar='tar --format=ustar -chf - "$$tardir"' am__untar='tar -xf -' ax_pthread_config='' bindir='${exec_prefix}/bin' build='x86_64-pc-linux-gnu' build_alias='x86_64-pc-linux-gnu' build_cpu='x86_64' build_os='linux-gnu' build_vendor='pc' datadir='${datarootdir}' datarootdir='${prefix}/share' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' dvidir='${docdir}' exec_prefix='/usr' host='mips-buildroot-linux-gnu' host_alias='mips-buildroot-linux-gnu' host_cpu='mips' host_os='linux-gnu' host_vendor='buildroot' htmldir='${docdir}' includedir='${prefix}/include' infodir='${datarootdir}/info' install_sh='${SHELL} /home/buildroot/autobuild/run/instance-0/output-1/build/google-breakpad-f49c2f1a2023da0cb055874fba050563dfea57db/autotools/install-sh' libdir='${exec_prefix}/lib' libexecdir='${exec_prefix}/libexec' localedir='${datarootdir}/locale' localstatedir='/var' mandir='${datarootdir}/man' mkdir_p='$(MKDIR_P)' oldincludedir='/usr/include' pdfdir='${docdir}' prefix='/usr' program_transform_name='s&^&&' psdir='${docdir}' runstatedir='${localstatedir}/run' sbindir='${exec_prefix}/sbin' sharedstatedir='${prefix}/com' sysconfdir='/etc' target_alias='mips-buildroot-linux-gnu' ## ----------- ## ## confdefs.h. ## ## ----------- ## /* confdefs.h */ #define PACKAGE_NAME "breakpad" #define PACKAGE_TARNAME "breakpad" #define PACKAGE_VERSION "0.1" #define PACKAGE_STRING "breakpad 0.1" #define PACKAGE_BUGREPORT "google-breakpad-dev@googlegroups.com" #define PACKAGE_URL "" #define PACKAGE "breakpad" #define VERSION "0.1" #define HAVE_PTHREAD 1 #define HAVE_STDIO_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_INTTYPES_H 1 #define HAVE_STDINT_H 1 #define HAVE_STRINGS_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_UNISTD_H 1 #define STDC_HEADERS 1 #define HAVE_A_OUT_H 1 #define HAVE_SYS_MMAN_H 1 #define HAVE_GETCONTEXT 1 configure: exit 1