https://github.com/geometryprocessing/voroffset
Raw File
Tip revision: ce7b61f6469975795455bd85fcf23e23ff1ba102 authored by Jérémie Dumas on 17 January 2024, 15:28:36 UTC
Update README.md
Tip revision: ce7b61f
SetWarnings.cmake
################################################################################
cmake_minimum_required(VERSION 2.6.3)
################################################################################
# See comments and discussions here:
# http://stackoverflow.com/questions/5088460/flags-to-enable-thorough-and-verbose-g-warnings
################################################################################

set(MY_FLAGS
		-Wall
		-Wextra
		-pedantic

		# -Wconversion
		#-Wunsafe-loop-optimizations # broken with C++11 loops
		-Wunused

		-Wno-long-long
		-Wpointer-arith
		-Wformat=2
		-Wuninitialized
		-Wcast-qual
		-Wmissing-noreturn
		-Wmissing-format-attribute
		-Wredundant-decls

		-Werror=implicit
		-Werror=nonnull
		-Werror=init-self
		-Werror=main
		-Werror=missing-braces
		-Werror=sequence-point
		-Werror=return-type
		-Werror=trigraphs
		-Werror=array-bounds
		-Werror=write-strings
		-Werror=address
		-Werror=int-to-pointer-cast
		-Werror=pointer-to-int-cast

		-Wno-unused-variable
		-Wunused-but-set-variable
		-Wno-unused-parameter

		#-Weffc++
		-Wno-old-style-cast
		-Wno-sign-conversion
		#-Wsign-conversion
		-Wno-sign-compare

		-Wshadow

		-Wstrict-null-sentinel
		-Woverloaded-virtual
		-Wsign-promo
		-Wstack-protector
		-Wstrict-aliasing
		-Wstrict-aliasing=2
		-Wswitch-default
		-Wswitch-enum
		-Wswitch-unreachable

		-Wcast-align
		-Wdisabled-optimization
		#-Winline # produces warning on default implicit destructor
		-Winvalid-pch
		-Wmissing-include-dirs
		-Wpacked
		-Wno-padded
		# -Wstrict-overflow
		# -Wstrict-overflow=2

		-Wctor-dtor-privacy
		-Wlogical-op
		-Wnoexcept
		-Woverloaded-virtual
		-Wundef

		-Wnon-virtual-dtor
		-Wdelete-non-virtual-dtor

		###########
		# GCC 6.1 #
		###########

		-Wnull-dereference
		-fdelete-null-pointer-checks
		-Wduplicated-cond
		-Wmisleading-indentation

		#-Weverything

		###########################
		# Enabled by -Weverything #
		###########################

		#-Wdocumentation
		#-Wdocumentation-unknown-command
		#-Wfloat-equal
		#-Wcovered-switch-default

		#-Wglobal-constructors
		#-Wexit-time-destructors
		#-Wmissing-variable-declarations
		#-Wextra-semi
		#-Wweak-vtables
		#-Wno-source-uses-openmp
		#-Wdeprecated
		#-Wnewline-eof
		#-Wmissing-prototypes

		#-Wno-c++98-compat
		#-Wno-c++98-compat-pedantic

		###########################
		# Need to check if those are still valid today
		###########################

		#-Wimplicit-atomic-properties
		#-Wmissing-declarations
		#-Wmissing-prototypes
		#-Wstrict-selector-match
		#-Wundeclared-selector
		#-Wunreachable-code

		# Not a warning, but enable link-time-optimization
		#-flto

		# Gives meaningful stack traces
		-fno-omit-frame-pointer
)

# Flags above don't make sense for MSVC
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
	set(MY_FLAGS)
endif()

include(CheckCXXCompilerFlag)

set(ALL_WARNINGS)
foreach(FLAG ${MY_FLAGS})
	check_cxx_compiler_flag("${FLAG}" IS_SUPPORTED_${FLAG})
	if(IS_SUPPORTED_${FLAG})
		set(ALL_WARNINGS ${ALL_WARNINGS} ${FLAG})
	endif()
endforeach()
back to top