After 6e85fce0225f "dtc: Update requirement to v1.4.2" QEMU stopped compiling in CentOS7:
In file included from /home/aik/p/qemu/dtc/libfdt/libfdt.h:54:0, from /home/aik/p/qemu/device_tree.c:30: /home/aik/p/qemu/dtc/libfdt/libfdt_env.h:64:0: error: "__bitwise" redefined [-Werror] #define __bitwise ^ In file included from /usr/include/asm/ptrace.h:27:0, from /usr/include/asm/sigcontext.h:11, from /usr/include/bits/sigcontext.h:27, from /usr/include/signal.h:340, from /home/aik/p/qemu/include/qemu/osdep.h:86, from /home/aik/p/qemu/device_tree.c:14: /usr/include/linux/types.h:21:0: note: this is the location of the previous definition #define __bitwise __bitwise__ ^ cc1: all warnings being treated as errors make: *** [device_tree.o] Error 1 make: *** Waiting for unfinished jobs.... The reason is that CentOS7 comes with libfdt 1.4.0 so QEMU tries using the internal one which does not compile as CentOS7 comes with gcc v4.8.5 which reports warnings which it would not if the OS's libfdt was used (libfdt_env.h has not changed between 1.4.0 and 1.4.2). gcc 6.2.0 from Ubuntu v16.10 handles this fine. This replaces -I with -isystem to suppress the warning (which turns to an error because of -Werror). Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru> --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 6c21975f02..2c2a5df14a 100755 --- a/configure +++ b/configure @@ -3414,7 +3414,7 @@ EOF symlink "$source_path/dtc/Makefile" "dtc/Makefile" symlink "$source_path/dtc/scripts" "dtc/scripts" fi - fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" + fdt_cflags="-isystem\$(SRC_PATH)/dtc/libfdt" fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" elif test "$fdt" = "yes" ; then # have neither and want - prompt for system/submodule install -- 2.11.0