@@ -49,6 +49,7 @@ OPTION( VALGRIND "Configure build for valgrind" OFF )
4949OPTION ( CURL "Use curl for HTTP if available" ON )
5050OPTION ( USE_EXT_HTTP_PARSER "Use system HTTP_Parser if available" ON )
5151OPTION ( DEBUG_POOL "Enable debug pool allocator" OFF )
52+ OPTION ( ENABLE_WERROR "Enable compilation with -Werror" OFF )
5253
5354IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
5455 SET ( USE_ICONV ON )
@@ -223,8 +224,23 @@ IF (MSVC)
223224ELSE ()
224225 SET (CMAKE_C_FLAGS "-D_GNU_SOURCE ${CMAKE_C_FLAGS} " )
225226
226- ADD_C_FLAG_IF_SUPPORTED(-Wall)
227- ADD_C_FLAG_IF_SUPPORTED(-Wextra)
227+ MACRO (ENABLE_WARNINGS flag)
228+ IF (ENABLE_WERROR)
229+ ADD_C_FLAG_IF_SUPPORTED(-Werror=${flag} )
230+ ELSE ()
231+ ADD_C_FLAG_IF_SUPPORTED(-W${flag} )
232+ ENDIF ()
233+ ENDMACRO ()
234+
235+ MACRO (DISABLE_WARNINGS flag)
236+ ADD_C_FLAG_IF_SUPPORTED(-Wno-${flag} )
237+ IF (ENABLE_WERROR)
238+ ADD_C_FLAG_IF_SUPPORTED(-Wno-error=${flag} )
239+ ENDIF ()
240+ ENDMACRO ()
241+
242+ ENABLE_WARNINGS(all )
243+ ENABLE_WARNINGS(extra)
228244
229245 IF (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)" )
230246 SET (CMAKE_C_FLAGS "-std=c99 -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS ${CMAKE_C_FLAGS} " )
@@ -247,16 +263,16 @@ ELSE ()
247263 ADD_DEFINITIONS (-D__USE_MINGW_ANSI_STDIO=1)
248264 ENDIF ()
249265
250- ADD_C_FLAG_IF_SUPPORTED(-Wdocumentation )
251- ADD_C_FLAG_IF_SUPPORTED(-Wno- missing-field-initializers)
252- ADD_C_FLAG_IF_SUPPORTED(-Wstrict -aliasing=2)
253- ADD_C_FLAG_IF_SUPPORTED(-Wstrict -prototypes)
254- ADD_C_FLAG_IF_SUPPORTED(-Wdeclaration -after-statement)
255- ADD_C_FLAG_IF_SUPPORTED(-Wno- unused-const-variable )
256- ADD_C_FLAG_IF_SUPPORTED(-Wno- unused-function)
266+ ENABLE_WARNINGS(documentation )
267+ DISABLE_WARNINGS( missing-field-initializers)
268+ ENABLE_WARNINGS(strict -aliasing=2)
269+ ENABLE_WARNINGS(strict -prototypes)
270+ ENABLE_WARNINGS(declaration -after-statement)
271+ DISABLE_WARNINGS( unused-const-variable )
272+ DISABLE_WARNINGS( unused-function)
257273
258274 IF (APPLE ) # Apple deprecated OpenSSL
259- ADD_C_FLAG_IF_SUPPORTED(-Wno- deprecated-declarations)
275+ DISABLE_WARNINGS( deprecated-declarations)
260276 ENDIF ()
261277
262278 IF (PROFILE)
0 commit comments