From e9c2e6f1276f14659d2e013bb61e511f6984abec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=88=20Graham=20=E2=9C=88?= Date: Sun, 24 Sep 2017 13:52:49 -0400 Subject: [PATCH] Only add warning and std flags if supported by compiler (#144) This fixes errors like those reported in #143 on Solaris (and probably other platforms where gcc is not the native compiler): c99: -W option with unknown program all This only fixes it for cmake, but presumably similar checks could be added for autoconf as well. --- CMakeLists.txt | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b9a9bd0..a9d5206 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,27 @@ IF (WIN32) # Ignore warning C4996: 'strncpy' ADD_DEFINITIONS("-D_CRT_SECURE_NO_WARNINGS=1") ELSE() - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wformat=2 -std=gnu99 -O2 -g") + INCLUDE(CheckCCompilerFlag) + CHECK_C_COMPILER_FLAG("-Wall" COMPILER_HAS_WALL) + IF (COMPILER_HAS_WALL) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") + ENDIF() + CHECK_C_COMPILER_FLAG("-Wextra" COMPILER_HAS_WEXTRA) + IF (COMPILER_HAS_WEXTRA) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra") + ENDIF() + CHECK_C_COMPILER_FLAG("-Wformat=2" COMPILER_HAS_WFORMAT) + IF (COMPILER_HAS_WFORMAT) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat=2") + ENDIF() + CHECK_C_COMPILER_FLAG("-std=gnu99" COMPILER_HAS_STD_GNU99) + CHECK_C_COMPILER_FLAG("-std=c99" COMPILER_HAS_STD_C99) + IF (COMPILER_HAS_STD_GNU99) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") + ELSEIF (COMPILER_HAS_STD_C99) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") + ENDIF() + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -g") ENDIF() INCLUDE_DIRECTORIES(${pkgconf_SOURCE_DIR} ${pkgconf_BINARY_DIR})