From a810e30a3d560d3e6ced41c74032c54ea365a88e Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sun, 16 Aug 2020 20:17:26 +0200 Subject: [PATCH] CMakeLists.txt: fix build with gcc 4.8 -Werror=incompatible-pointer-types is unconditionally used since version 2.1.4 and 137a14e106d75d1260f78acc1a19c5a936ef75b2. This will raise a build failure when checking for threads on gcc 4.8: /home/buildroot/autobuild/run/instance-3/output-1/host/bin/arm-none-linux-gnueabi-gcc --sysroot=/home/buildroot/autobuild/run/instance-3/output-1/host/arm-buildroot-linux-gnueabi/sysroot -DTESTKEYWORD=inline -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall -W -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wno-unused-parameter -Wdeclaration-after-statement -Werror=implicit-function-declaration -Werror=incompatible-pointer-types -Wbad-function-cast -Wcast-align -DNDEBUG -fPIE -o CMakeFiles/cmTC_98946.dir/CheckIncludeFile.c.o -c /home/buildroot/autobuild/run/instance-3/output-1/build/fluidsynth-2.1.4/CMakeFiles/CMakeTmp/CheckIncludeFile.c cc1: error: -Werror=incompatible-pointer-types: no option -Wincompatible-pointer-types Fixes: - http://autobuild.buildroot.org/results/13cbba871db56ef8657a3d13c6ac8e1b4da0d244 Signed-off-by: Fabrice Fontaine --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78448899a..0f6c16985 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,6 +146,7 @@ endif ( POLICY CMP0063 ) include ( DefaultDirs ) # Basic C library checks +include ( CheckCCompilerFlag ) include ( CheckSTDC ) include ( CheckIncludeFile ) include ( CheckFunctionExists ) @@ -196,7 +197,11 @@ if ( CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_C endif ( NOT APPLE AND NOT OS2 ) # define some warning flags - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wno-unused-parameter -Wdeclaration-after-statement -Werror=implicit-function-declaration -Werror=incompatible-pointer-types" ) + set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wno-unused-parameter -Wdeclaration-after-statement -Werror=implicit-function-declaration" ) + check_c_compiler_flag ( "-Werror=incompatible-pointer-types" HAVE_INCOMPATIBLE_POINTER_TYPES ) + if ( HAVE_INCOMPATIBLE_POINTER_TYPES ) + set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=incompatible-pointer-types" ) + endif ( HAVE_INCOMPATIBLE_POINTER_TYPES ) set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -W -Wpointer-arith -Wcast-qual -Wno-unused-parameter" ) # prepend to build type specific flags, to allow users to override