diff --git a/configure b/configure index 24d7ecc26e..f758f32061 100755 --- a/configure +++ b/configure @@ -103,7 +103,8 @@ update_cxxflags() { } compile_object() { - do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC + local_cflags="$1" + do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC } compile_prog() { @@ -4209,6 +4210,33 @@ if compile_prog "" "" ; then getauxval=yes fi +######################################## +# check if ccache is interfering with +# semantic analysis of macros + +ccache_cpp2=no +cat > $TMPC << EOF +static const int Z = 1; +#define fn() ({ Z; }) +#define TAUT(X) ((X) == Z) +#define PAREN(X, Y) (X == Y) +#define ID(X) (X) +int main(int argc, char *argv[]) +{ + int x = 0, y = 0; + x = ID(x); + x = fn(); + fn(); + if (PAREN(x, y)) return 0; + if (TAUT(Z)) return 0; + return 0; +} +EOF + +if ! compile_object "-Werror"; then + ccache_cpp2=yes +fi + ########################################## # End of CC checks # After here, no more $cc or $ld runs @@ -5502,6 +5530,10 @@ if test "$numa" = "yes"; then echo "CONFIG_NUMA=y" >> $config_host_mak fi +if test "$ccache_cpp2" = "yes"; then + echo "export CCACHE_CPP2=y" >> $config_host_mak +fi + # build tree in object directory in case the source is not in the current directory DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" DIRS="$DIRS fsdev"