|
|
@@ -0,0 +1,55 @@
|
|
|
+cmake_minimum_required(VERSION 4.1)
|
|
|
+project(template C)
|
|
|
+
|
|
|
+set(CMAKE_C_STANDARD 23)
|
|
|
+
|
|
|
+set(SRC
|
|
|
+ "src/Main.c"
|
|
|
+)
|
|
|
+
|
|
|
+set(COMPILER_ARGUMENTS
|
|
|
+ -Wall -Wvla -Werror
|
|
|
+ -Wextra -Wundef -Walloca
|
|
|
+ -Wshadow -Wformat=2 -Wcast-qual
|
|
|
+ -Wdate-time -Winit-self -Wmultichar
|
|
|
+ -Wnarrowing -Wcast-align -Wconversion
|
|
|
+ -Wfloat-equal -Winvalid-pch -Warray-bounds
|
|
|
+ -Wenum-compare -Winvalid-utf8 -Wwrite-strings
|
|
|
+ -Wmissing-braces -Wnested-externs -Wshift-overflow
|
|
|
+ -Warray-parameter -Wenum-conversion -Wformat-overflow
|
|
|
+ -Wredundant-decls -Wsign-conversion -Wstack-protector
|
|
|
+ -Wdouble-promotion -Wjump-misses-init -Wnull-dereference
|
|
|
+ -Wunreachable-code -Wbad-function-cast -Wformat-signedness
|
|
|
+ -Wformat-truncation -Wstrict-overflow=2 -Wstrict-prototypes
|
|
|
+ -Winfinite-recursion -Wmissing-prototypes -Woverlength-strings
|
|
|
+ -Wimplicit-fallthrough -Wmissing-declarations -Wmissing-include-dirs
|
|
|
+ -Wold-style-definition -Wdisabled-optimization -Wunused-const-variable
|
|
|
+ -Wlarger-than=1073741824 -Wdeprecated-non-prototype
|
|
|
+ -Wframe-larger-than=8388608 -Wmissing-variable-declarations
|
|
|
+ -Wzero-as-null-pointer-constant
|
|
|
+ -fdiagnostics-color=always -fstrict-flex-arrays=3
|
|
|
+ -pedantic -pedantic-errors
|
|
|
+)
|
|
|
+if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
|
|
+ set(COMPILER_ARGUMENTS ${COMPILER_ARGUMENTS}
|
|
|
+ -Walloc-zero -Wlogical-op -Wtrampolines
|
|
|
+ -Wbidi-chars=any -Wduplicated-cond -Wnormalized=nfkc
|
|
|
+ -Warith-conversion -Wuse-after-free=3 -Wattribute-alias=2
|
|
|
+ -Wstrict-flex-arrays -Wduplicated-branches -Wstack-usage=8388608
|
|
|
+ -Wstringop-overflow=4 -Wanalyzer-too-complex -Wtrivial-auto-var-init
|
|
|
+ -Wanalyzer-symbol-too-complex -Wflex-array-member-not-at-end
|
|
|
+ )
|
|
|
+elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
|
|
+ set(COMPILER_ARGUMENTS ${COMPILER_ARGUMENTS}
|
|
|
+ -Wmissing-variable-declarations -Wconditional-uninitialized
|
|
|
+ -Wold-style-definition -Wmissing-prototypes
|
|
|
+ -Wstrict-prototypes -Wbad-function-cast
|
|
|
+ -Wmissing-noreturn -Wextra-semi-stmt
|
|
|
+ -Wnested-externs -Wnarrowing
|
|
|
+ )
|
|
|
+endif()
|
|
|
+
|
|
|
+add_executable(${PROJECT_NAME} ${SRC})
|
|
|
+target_compile_options(${PROJECT_NAME} PUBLIC
|
|
|
+ ${COMPILER_ARGUMENTS}
|
|
|
+)
|