+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
+macro(addflags_c args)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${args}")
+endmacro()
+macro(addflags_cxx args)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${args}")
+endmacro()
+macro(addflags args)
+ addflags_c("${args}")
+ addflags_cxx("${args}")
+endmacro()
+addflags("-fno-strict-aliasing")
+if (NOT WIN32)
+ addflags("-fvisibility=hidden")
+endif ()
+
+if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ addflags("-Werror")
+ addflags("-pedantic-errors")
+ set(CMAKE_VERBOSE_MAKEFILE ON)
+ addflags(-fstack-protector -fstack-protector-strong -fstack-protector-all)
+ #addflags("-fsanitize=address,undefined") # break __asan::ReportGenericError
+
+ #add_definitions(-D_GLIBCXX_DEBUG=1)
+ #add_definitions(-D_GLIBCXX_DEBUG_PEDANTIC=1)
+endif ()
+
+addflags("-Wall")
+addflags("-Wextra")
+addflags("-pedantic")
+
+addflags_c("-Wno-deprecated-declarations") # vfs.c: g_strdown
+addflags_cxx("-Wno-deprecated-declarations") # various gtk
+
+addflags("-Wno-unused-function")
+addflags("-Wno-unused-variable")
+addflags("-Wno-unused-parameter")
+