@@ -32,6 +32,7 @@ option(CUDD_DIR "CUDD BDD package directory")
3232option (USE_TCL_READLINE "Use TCL readline package" ON )
3333option (ENABLE_TSAN "Compile with thread santizer enabled" OFF )
3434option (ENABLE_ASAN "Compile with address santizer enabled" OFF )
35+ option (ALLOW_WARNINGS "Allow compiler warnings without failing the build" OFF )
3536
3637# Turn on to debug compiler args.
3738set (CMAKE_VERBOSE_MAKEFILE OFF )
@@ -594,6 +595,18 @@ endif()
594595# common to gcc/clang
595596set (CXX_FLAGS -Wall -Wextra -pedantic -Wcast-qual -Wredundant-decls
596597 -Wformat-security -Werror=misleading-indentation -Wundef)
598+ if (NOT ALLOW_WARNINGS)
599+ list (APPEND CXX_FLAGS -Werror)
600+ endif ()
601+
602+ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
603+ set (STA_WARNING_FLAGS ${CXX_FLAGS} -Wno-format-zero-length)
604+ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
605+ OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" )
606+ set (STA_WARNING_FLAGS ${CXX_FLAGS} -Wno-gnu-zero-variadic-macro-arguments)
607+ else ()
608+ set (STA_WARNING_FLAGS ${CXX_FLAGS} )
609+ endif ()
597610
598611if (ENABLE_TSAN)
599612 message (STATUS "Thread sanitizer: ${ENABLE_TSAN} " )
@@ -607,12 +620,12 @@ if(ENABLE_ASAN)
607620 set (CMAKE_EXE_LINKER_FLAGS "-fsanitize=address" )
608621endif ()
609622
610- target_compile_options (OpenSTA
611- PRIVATE
612- $<$<CXX_COMPILER_ID :GNU >:${CXX_FLAGS} -Wno -format -zero -length >
613- $<$<CXX_COMPILER_ID :Clang >:${CXX_FLAGS} -Wno -gnu -zero -variadic -macro -arguments >
614- $<$<CXX_COMPILER_ID :AppleClang >:${CXX_FLAGS} -Wno -gnu -zero -variadic -macro -arguments >
623+ add_library (OpenSTAWarnings INTERFACE )
624+ target_compile_options (OpenSTAWarnings
625+ INTERFACE
626+ ${STA_WARNING_FLAGS}
615627 )
628+ target_link_libraries (OpenSTA OpenSTAWarnings )
616629
617630# Disable compiler specific extensions like gnu++11.
618631set_target_properties (OpenSTA PROPERTIES CXX_EXTENSIONS OFF )
0 commit comments