-
Notifications
You must be signed in to change notification settings - Fork 1
219 lines (202 loc) · 41.6 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
name: Continuous Integration
on:
push:
branches:
- main
pull_request:
branches:
- main
concurrency:
group: ${{ format('ci-{0}', github.ref) }}
cancel-in-progress: true
jobs:
Lint:
runs-on: ubuntu-latest
container:
image: "ghcr.io/hrzlgnm/monkey-github-builder-void-linux-musl-clang:v2"
steps:
- name: Checkout
uses: classabbyamp/treeless-checkout-action@v1
- name: Lint
run: cmake -D FORMAT_COMMAND=clang-format -P cmake/lint.cmake
- name: Spell check
if: always()
run: cmake -P cmake/spell.cmake
Build-And-Test:
needs: [Lint]
name: ${{ matrix.toolchain.name }}
strategy:
fail-fast: false
matrix:
toolchain:
- {
runs_on: macos-12,
name: "macOS Clang",
CC: clang,
CXX: clang++,
CFLAGS: "",
CMAKE_BUILD_TYPE: "Debug",
WARNINGS: "-Werror;{1}",
CMAKE_FLAGS: "-G Ninja",
homebrew_packages: "ninja",
}
- {
runs_on: ubuntu-latest,
name: "Clang 13 libc++",
container: "ghcr.io/hrzlgnm/monkey-github-builder-clang:v2",
CC: clang-13,
CXX: clang++-13,
CFLAGS: "-stdlib=libc++",
CMAKE_BUILD_TYPE: "Debug",
WARNINGS: "-Werror;{1}",
CMAKE_FLAGS: "-G Ninja",
}
- {
runs_on: ubuntu-latest,
name: "Clang 13 libstdc++",
container: "ghcr.io/hrzlgnm/monkey-github-builder-clang:v2",
CC: clang-13,
CXX: clang++-13,
CFLAGS: "-stdlib=libstdc++",
CMAKE_BUILD_TYPE: "Debug",
WARNINGS: "-Werror;{1}",
CMAKE_FLAGS: "-G Ninja",
}
- {
runs_on: ubuntu-latest,
name: "Clang 13 ASAN+UBSAN libstdc++",
container: "ghcr.io/hrzlgnm/monkey-github-builder-clang:v2",
CC: clang-13,
CXX: clang++-13,
CFLAGS: "-fsanitize=address,undefined -fsanitize-address-use-after-scope -fno-sanitize-recover=address,undefined -stdlib=libstdc++",
CMAKE_BUILD_TYPE: "Debug",
WARNINGS: "-Werror;{1}",
ASAN_OPTIONS: "strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1",
CMAKE_FLAGS: "-G Ninja",
}
- {
runs_on: ubuntu-latest,
name: "Clang 13 Release libstdc++",
container: "ghcr.io/hrzlgnm/monkey-github-builder-clang:v2",
CC: clang-13,
CXX: clang++-13,
CFLAGS: "-stdlib=libstdc++",
CMAKE_BUILD_TYPE: "Release",
WARNINGS: "-Werror;{1}",
CMAKE_FLAGS: "-G Ninja",
}
- {
runs_on: ubuntu-latest,
name: "Clang 15 musl",
container: "ghcr.io/hrzlgnm/monkey-github-builder-void-linux-musl-clang:v2",
CC: clang,
CXX: clang++,
CFLAGS: "",
CMAKE_BUILD_TYPE: "Debug",
WARNINGS: "-Werror;{1}",
CMAKE_FLAGS: "-G Ninja",
}
- {
runs_on: ubuntu-latest,
name: "Clang 15 musl ASAN+UBSAN",
container: "ghcr.io/hrzlgnm/monkey-github-builder-void-linux-musl-clang:v2",
CC: clang,
CXX: clang++,
CFLAGS: "-fsanitize=address,undefined -fsanitize-address-use-after-scope -fno-sanitize-recover=address,undefined -fuse-ld=gold",
CMAKE_BUILD_TYPE: "Debug",
WARNINGS: "-Werror;{1}",
CMAKE_FLAGS: "-G Ninja",
ASAN_OPTIONS: "strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1",
}
- {
runs_on: ubuntu-latest,
name: "Clang 15 musl Release",
container: "ghcr.io/hrzlgnm/monkey-github-builder-void-linux-musl-clang:v2",
CC: clang,
CXX: clang++,
CFLAGS: "",
CMAKE_BUILD_TYPE: "Release",
WARNINGS: "-Werror;{1}",
CMAKE_FLAGS: "-G Ninja",
}
- {
runs_on: windows-latest,
name: "MSVC",
CFLAGS: "",
CMAKE_BUILD_TYPE: "Debug",
WARNINGS: "",
}
- {
runs_on: windows-latest,
name: "MSVC Release",
CFLAGS: "",
CMAKE_BUILD_TYPE: "Release",
WARNINGS: "",
}
runs-on: ${{ matrix.toolchain.runs_on }}
container: ${{ matrix.toolchain.container }}
env:
ASAN_OPTIONS: ${{ matrix.toolchain.ASAN_OPTIONS }}
CMAKE_BUILD_TYPE: ${{ matrix.toolchain.CMAKE_BUILD_TYPE }}
CMAKE_C_COMPILER: ${{ matrix.toolchain.CC }}
CMAKE_C_FLAGS: ${{ matrix.toolchain.CFLAGS }}
CMAKE_CXX_COMPILER: ${{ matrix.toolchain.CXX }}
CMAKE_CXX_FLAGS: ${{ matrix.toolchain.CFLAGS }}
CMAKE_EXE_LINKER_FLAGS: ${{ matrix.toolchain.CFLAGS }}
CMAKE_EXTRA_FLAGS: ${{ matrix.toolchain.CMAKE_FLAGS }}
CMAKE_SHARED_LINKER_FLAGS: ${{ matrix.toolchain.CFLAGS }}
# Format of WARNINGS:
# {0} GCC warnings
# {1} Clang warnings
MONKEY_COMPILER_OPTIONS: |-
${{ format(matrix.toolchain.WARNINGS,
'-Waddress;-Waggressive-loop-optimizations;-Wall;-Walloc-zero;-Walloca;-Warray-bounds;-Wattributes;-Wbool-compare;-Wbool-operation;-Wbuiltin-declaration-mismatch;-Wbuiltin-macro-redefined;-Wcast-align;-Wcast-qual;-Wchar-subscripts;-Wclobbered;-Wcomment;-Wcomments;-Wconditionally-supported;-Wconversion;-Wconversion-null;-Wcoverage-mismatch;-Wcpp;-Wctor-dtor-privacy;-Wdangling-else;-Wdate-time;-Wdelete-incomplete;-Wdelete-non-virtual-dtor;-Wdeprecated;-Wdeprecated-declarations;-Wdisabled-optimization;-Wdiv-by-zero;-Wdouble-promotion;-Wduplicated-branches;-Wduplicated-cond;-Wempty-body;-Wendif-labels;-Wenum-compare;-Wexpansion-to-defined;-Wextra;-Wfloat-conversion;-Wfloat-equal;-Wformat;-Wformat-contains-nul;-Wformat-extra-args;-Wformat-nonliteral;-Wformat-security;-Wformat-signedness;-Wformat-truncation;-Wformat-y2k;-Wformat-zero-length;-Wframe-address;-Wfree-nonheap-object;-Whsa;-Wignored-attributes;-Wignored-qualifiers;-Wimplicit-fallthrough;-Winherited-variadic-ctor;-Winit-self;-Wint-in-bool-context;-Wint-to-pointer-cast;-Winvalid-memory-model;-Winvalid-offsetof;-Winvalid-pch;-Wliteral-suffix;-Wlogical-not-parentheses;-Wlogical-op;-Wlto-type-mismatch;-Wmain;-Wmaybe-uninitialized;-Wmemset-elt-size;-Wmemset-transposed-args;-Wmisleading-indentation;-Wmissing-declarations;-Wmissing-field-initializers;-Wmissing-format-attribute;-Wmissing-include-dirs;-Wmissing-noreturn;-Wmultichar;-Wnarrowing;-Wnoexcept-type;-Wnon-template-friend;-Wnonnull;-Wnonnull-compare;-Wnormalized;-Wnull-dereference;-Wodr;-Wold-style-cast;-Wopenmp-simd;-Woverflow;-Woverloaded-virtual;-Wpacked;-Wpacked-bitfield-compat;-Wparentheses;-Wpedantic;-Wplacement-new;-Wpmf-conversions;-Wno-overlength-strings;-Wpointer-arith;-Wpointer-compare;-Wpragmas;-Wpsabi;-Wredundant-decls;-Wregister;-Wreorder;-Wrestrict;-Wreturn-local-addr;-Wreturn-type;-Wscalar-storage-order;-Wsequence-point;-Wshadow=local;-Wshift-count-negative;-Wshift-count-overflow;-Wshift-negative-value;-Wshift-overflow;-Wsign-compare;-Wsign-conversion;-Wsign-promo;-Wsized-deallocation;-Wsizeof-array-argument;-Wsizeof-pointer-memaccess;-Wstack-protector;-Wstrict-aliasing;-Wstrict-null-sentinel;-Wstrict-overflow;-Wstringop-overflow;-Wsubobject-linkage;-Wsuggest-final-methods;-Wsuggest-final-types;-Wsuggest-override;-Wswitch;-Wswitch-bool;-Wswitch-unreachable;-Wsync-nand;-Wsynth;-Wtautological-compare;-Wterminate;-Wtrampolines;-Wtrigraphs;-Wtype-limits;-Wundef;-Wuninitialized;-Wunknown-pragmas;-Wunreachable-code;-Wunsafe-loop-optimizations;-Wunused;-Wunused-but-set-parameter;-Wunused-but-set-variable;-Wunused-const-variable;-Wunused-function;-Wunused-label;-Wunused-local-typedefs;-Wunused-macros;-Wunused-parameter;-Wunused-result;-Wunused-value;-Wunused-variable;-Wuseless-cast;-Wvarargs;-Wvariadic-macros;-Wvector-operation-performance;-Wvirtual-inheritance;-Wvirtual-move-assign;-Wvla;-Wvolatile-register-var;-Wwrite-strings;-Wzero-as-null-pointer-constant',
'-W#pragma-messages;-W#warnings;-WCFString-literal;-WCL4;-WIndependentClass-attribute;-WNSObject-attribute;-Wabi;-Wabsolute-value;-Wabstract-final-class;-Wabstract-vbase-init;-Waddress;-Waddress-of-packed-member;-Waddress-of-temporary;-Waggregate-return;-Wall;-Wambiguous-delete;-Wambiguous-ellipsis;-Wambiguous-macro;-Wambiguous-member-template;-Wanalyzer-incompatible-plugin;-Wanonymous-pack-parens;-Warc;-Warc-bridge-casts-disallowed-in-nonarc;-Warc-maybe-repeated-use-of-weak;-Warc-non-pod-memaccess;-Warc-performSelector-leaks;-Warc-repeated-use-of-weak;-Warc-retain-cycles;-Warc-unsafe-retained-assign;-Wargument-outside-range;-Warray-bounds;-Warray-bounds-pointer-arithmetic;-Wasm;-Wasm-operand-widths;-Wassign-enum;-Wassume;-Wat-protocol;-Watimport-in-framework-header;-Watomic-alignment;-Watomic-implicit-seq-cst;-Watomic-memory-ordering;-Watomic-properties;-Watomic-property-with-user-defined-accessor;-Wattribute-packed-for-bitfield;-Wattributes;-Wauto-disable-vptr-sanitizer;-Wauto-import;-Wauto-storage-class;-Wauto-var-id;-Wavailability;-Wavr-rtlib-linking-quirks;-Wbackend-plugin;-Wbackslash-newline-escape;-Wbad-function-cast;-Wbinding-in-condition;-Wbitfield-constant-conversion;-Wbitfield-enum-conversion;-Wbitfield-width;-Wbitwise-op-parentheses;-Wblock-capture-autoreleasing;-Wbool-conversion;-Wbool-conversions;-Wbraced-scalar-init;-Wbridge-cast;-Wbuiltin-macro-redefined;-Wbuiltin-memcpy-chk-size;-Wbuiltin-requires-header;-Wc++17-compat-mangling;-Wc++17-extensions;-Wcall-to-pure-virtual-from-ctor-dtor;-Wcast-align;-Wcast-calling-convention;-Wcast-of-sel-type;-Wcast-qual;-Wcast-qual-unrelated;-Wchar-align;-Wchar-subscripts;-Wclang-cl-pch;-Wclass-varargs;-Wcomma;-Wcomment;-Wcomments;-Wcompare-distinct-pointer-types;-Wcomplex-component-init;-Wconditional-type-mismatch;-Wconditional-uninitialized;-Wconfig-macros;-Wconstant-conversion;-Wconstant-logical-operand;-Wconstexpr-not-const;-Wconsumed;-Wconversion;-Wconversion-null;-Wcoroutine;-Wcoroutine-missing-unhandled-exception;-Wcovered-switch-default;-Wcpp;-Wcstring-format-directive;-Wctor-dtor-privacy;-Wctu;-Wcustom-atomic-properties;-Wdangling;-Wdangling-else;-Wdangling-field;-Wdangling-initializer-list;-Wdarwin-sdk-settings;-Wdate-time;-Wdealloc-in-category;-Wdebug-compression-unavailable;-Wdeclaration-after-statement;-Wdefaulted-function-deleted;-Wdelegating-ctor-cycles;-Wdelete-abstract-non-virtual-dtor;-Wdelete-incomplete;-Wdelete-non-abstract-non-virtual-dtor;-Wdelete-non-virtual-dtor;-Wdeprecated;-Wdeprecated-attributes;-Wdeprecated-declarations;-Wdeprecated-implementations;-Wdeprecated-increment-bool;-Wdeprecated-objc-isa-usage;-Wdeprecated-objc-pointer-introspection;-Wdeprecated-objc-pointer-introspection-performSelector;-Wdeprecated-register;-Wdeprecated-this-capture;-Wdeprecated-writable-strings;-Wdirect-ivar-access;-Wdisabled-optimization;-Wdiscard-qual;-Wdistributed-object-modifiers;-Wdiv-by-zero;-Wdivision-by-zero;-Wdll-attribute-on-redeclaration;-Wdllexport-explicit-instantiation-decl;-Wdllimport-static-field-def;-Wdocumentation-deprecated-sync;-Wdocumentation-html;-Wdollar-in-identifier-extension;-Wdouble-promotion;-Wduplicate-decl-specifier;-Wduplicate-enum;-Wduplicate-method-arg;-Wduplicate-method-match;-Wduplicate-protocol;-Wdynamic-class-memaccess;-Wdynamic-exception-spec;-Weffc++;-Wembedded-directive;-Wempty-body;-Wempty-decomposition;-Wempty-init-stmt;-Wempty-translation-unit;-Wencode-type;-Wendif-labels;-Wenum-compare;-Wenum-compare-switch;-Wenum-conversion;-Wenum-too-large;-Wexceptions;-Wexpansion-to-defined;-Wexplicit-initialize-call;-Wexplicit-ownership-type;-Wexport-unnamed;-Wexport-using-directive;-Wextern-c-compat;-Wextern-initializer;-Wextra;-Wextra-qualification;-Wextra-semi;-Wextra-semi-stmt;-Wextra-tokens;-Wfixed-enum-extension;-Wflag-enum;-Wflexible-array-extensions;-Wfloat-conversion;-Wfloat-equal;-Wfloat-overflow-conversion;-Wfloat-zero-conversion;-Wfor-loop-analysis;-Wformat;-Wformat-extra-args;-Wformat-invalid-specifier;-Wformat-non-iso;-Wformat-nonliteral;-Wformat-pedantic;-Wformat-security;-Wformat-y2k;-Wformat-zero-length;-Wformat=2;-Wfortify-source;-Wfour-char-constants;-Wframework-include-private-from-public;-Wfunction-def-in-objc-container;-Wfunction-multiversion;-Wfuture-compat;-Wgcc-compat;-Wgnu;-Wgnu-alignof-expression;-Wgnu-anonymous-struct;-Wgnu-array-member-paren-init;-Wgnu-auto-type;-Wgnu-binary-literal;-Wgnu-case-range;-Wgnu-complex-integer;-Wgnu-compound-literal-initializer;-Wgnu-conditional-omitted-operand;-Wgnu-designator;-Wgnu-empty-initializer;-Wgnu-empty-struct;-Wgnu-flexible-array-initializer;-Wgnu-flexible-array-union-member;-Wgnu-folding-constant;-Wgnu-imaginary-constant;-Wgnu-include-next;-Wgnu-label-as-value;-Wgnu-redeclared-enum;-Wgnu-statement-expression;-Wgnu-static-float-init;-Wgnu-string-literal-operator-template;-Wgnu-union-cast;-Wgnu-variable-sized-type-not-at-end;-Wgnu-zero-line-directive;-Wgnu-zero-variadic-macro-arguments;-Wheader-guard;-Wheader-hygiene;-Widiomatic-parentheses;-Wignored-attributes;-Wignored-optimization-argument;-Wignored-pragma-intrinsic;-Wignored-pragma-optimize;-Wignored-pragmas;-Wignored-qualifiers;-Wimplicit;-Wimplicit-atomic-properties;-Wimplicit-conversion-floating-point-to-bool;-Wimplicit-exception-spec-mismatch;-Wimplicit-fallthrough;-Wimplicit-fallthrough-per-function;-Wimplicit-fixed-point-conversion;-Wimplicit-float-conversion;-Wimplicit-function-declaration;-Wimplicit-int;-Wimplicit-int-conversion;-Wimplicit-retain-self;-Wimplicitly-unsigned-literal;-Wimport;-Wimport-preprocessor-directive-pedantic;-Winaccessible-base;-Winclude-next-absolute-path;-Winclude-next-outside-header;-Wincompatible-exception-spec;-Wincompatible-function-pointer-types;-Wincompatible-library-redeclaration;-Wincompatible-ms-struct;-Wincompatible-pointer-types;-Wincompatible-pointer-types-discards-qualifiers;-Wincompatible-property-type;-Wincompatible-sysroot;-Wincomplete-framework-module-declaration;-Wincomplete-implementation;-Wincomplete-module;-Wincomplete-umbrella;-Winconsistent-dllimport;-Winconsistent-missing-destructor-override;-Winconsistent-missing-override;-Wincrement-bool;-Winfinite-recursion;-Winit-self;-Winitializer-overrides;-Winjected-class-name;-Winline;-Winline-asm;-Winline-new-delete;-Winstantiation-after-specialization;-Wint-conversion;-Wint-conversions;-Wint-to-pointer-cast;-Wint-to-void-pointer-cast;-Winteger-overflow;-Winvalid-command-line-argument;-Winvalid-constexpr;-Winvalid-iboutlet;-Winvalid-initializer-from-system-header;-Winvalid-ios-deployment-target;-Winvalid-noreturn;-Winvalid-offsetof;-Winvalid-or-nonexistent-directory;-Winvalid-partial-specialization;-Winvalid-pch;-Winvalid-pp-token;-Winvalid-source-encoding;-Winvalid-token-paste;-Wjump-seh-finally;-Wkeyword-compat;-Wkeyword-macro;-Wknr-promoted-parameter;-Wlanguage-extension-token;-Wlarge-by-value-copy;-Wliblto;-Wliteral-conversion;-Wliteral-range;-Wlogical-not-parentheses;-Wlogical-op-parentheses;-Wlong-long;-Wloop-analysis;-Wmacro-redefined;-Wmain;-Wmain-return-type;-Wmalformed-warning-check;-Wmany-braces-around-scalar-init;-Wmax-unsigned-zero;-Wmemset-transposed-args;-Wmemsize-comparison;-Wmethod-signatures;-Wmicrosoft;-Wmicrosoft-anon-tag;-Wmicrosoft-cast;-Wmicrosoft-charize;-Wmicrosoft-comment-paste;-Wmicrosoft-const-init;-Wmicrosoft-cpp-macro;-Wmicrosoft-default-arg-redefinition;-Wmicrosoft-end-of-file;-Wmicrosoft-enum-forward-reference;-Wmicrosoft-enum-value;-Wmicrosoft-exception-spec;-Wmicrosoft-exists;-Wmicrosoft-explicit-constructor-call;-Wmicrosoft-extra-qualification;-Wmicrosoft-fixed-enum;-Wmicrosoft-flexible-array;-Wmicrosoft-goto;-Wmicrosoft-inaccessible-base;-Wmicrosoft-include;-Wmicrosoft-mutable-reference;-Wmicrosoft-pure-definition;-Wmicrosoft-redeclare-static;-Wmicrosoft-sealed;-Wmicrosoft-template;-Wmicrosoft-union-member-reference;-Wmicrosoft-unqualified-friend;-Wmicrosoft-using-decl;-Wmicrosoft-void-pseudo-dtor;-Wmismatched-new-delete;-Wmismatched-parameter-types;-Wmismatched-return-types;-Wmismatched-tags;-Wmissing-braces;-Wmissing-declarations;-Wmissing-exception-spec;-Wmissing-field-initializers;-Wmissing-format-attribute;-Wmissing-include-dirs;-Wmissing-method-return-type;-Wmissing-noescape;-Wmissing-noreturn;-Wmissing-prototype-for-cc;-Wmissing-prototypes;-Wmissing-selector-name;-Wmissing-sysroot;-Wmissing-variable-declarations;-Wmodule-conflict;-Wmodule-file-config-mismatch;-Wmodule-file-extension;-Wmodule-import-in-extern-c;-Wmodules-ambiguous-internal-linkage;-Wmodules-import-nested-redundant;-Wmost;-Wmove;-Wmsvc-include;-Wmsvc-not-found;-Wmultichar;-Wmultiple-move-vbase;-Wnarrowing;-Wnested-anon-types;-Wnested-externs;-Wnew-returns-null;-Wnewline-eof;-Wnoderef;-Wnoexcept-type;-Wnon-gcc;-Wnon-literal-null-conversion;-Wnon-modular-include-in-framework-module;-Wnon-modular-include-in-module;-Wnon-pod-varargs;-Wnonnull;-Wnonportable-include-path;-Wnonportable-system-include-path;-Wnonportable-vector-initialization;-Wnontrivial-memaccess;-Wnsconsumed-mismatch;-Wnsreturns-mismatch;-Wnull-arithmetic;-Wnull-character;-Wnull-conversion;-Wnull-dereference;-Wnull-pointer-arithmetic;-Wnullability;-Wnullability-completeness;-Wnullability-completeness-on-arrays;-Wnullability-declspec;-Wnullability-extension;-Wnullability-inferred-on-nested-type;-Wnullable-to-nonnull-conversion;-Wobjc-autosynthesis-property-ivar-name-match;-Wobjc-bool-constant-conversion;-Wobjc-boxing;-Wobjc-circular-container;-Wobjc-cocoa-api;-Wobjc-designated-initializers;-Wobjc-flexible-array;-Wobjc-forward-class-redefinition;-Wobjc-interface-ivars;-Wobjc-literal-compare;-Wobjc-literal-conversion;-Wobjc-macro-redefinition;-Wobjc-messaging-id;-Wobjc-method-access;-Wobjc-missing-property-synthesis;-Wobjc-missing-super-calls;-Wobjc-multiple-method-names;-Wobjc-noncopy-retain-block-property;-Wobjc-nonunified-exceptions;-Wobjc-property-assign-on-object-type;-Wobjc-property-implementation;-Wobjc-property-implicit-mismatch;-Wobjc-property-matches-cocoa-ownership-rule;-Wobjc-property-no-attribute;-Wobjc-property-synthesis;-Wobjc-protocol-method-implementation;-Wobjc-protocol-property-synthesis;-Wobjc-protocol-qualifiers;-Wobjc-readonly-with-setter-property;-Wobjc-redundant-api-use;-Wobjc-redundant-literal-use;-Wobjc-root-class;-Wobjc-string-compare;-Wobjc-string-concatenation;-Wobjc-unsafe-perform-selector;-Wodr;-Wold-style-cast;-Wold-style-definition;-Wopencl-unsupported-rgba;-Woption-ignored;-Wordered-compare-function-pointers;-Wout-of-line-declaration;-Wout-of-scope-function;-Wover-aligned;-Woverflow;-Woverloaded-shift-op-parentheses;-Woverloaded-virtual;-Woverride-init;-Woverride-module;-Woverriding-method-mismatch;-Woverriding-t-option;-Wpacked;-Wparentheses;-Wparentheses-equality;-Wpartial-availability;-Wpass-failed;-Wpch-date-time;-Wpedantic;-Wpedantic-core-features;-Wno-overlength-strings;-Wpessimizing-move;-Wpointer-arith;-Wpointer-bool-conversion;-Wpointer-integer-compare;-Wpointer-sign;-Wpointer-to-int-cast;-Wpointer-to-int-cast;-Wpointer-type-mismatch;-Wpotentially-evaluated-expression;-Wpragma-clang-attribute;-Wpragma-once-outside-header;-Wpragma-pack;-Wpragma-pack-suspicious-include;-Wpragma-system-header-outside-header;-Wpragmas;-Wpredefined-identifier-outside-function;-Wprivate-extern;-Wprivate-header;-Wprivate-module;-Wprofile-instr-missing;-Wprofile-instr-out-of-date;-Wprofile-instr-unprofiled;-Wproperty-access-dot-syntax;-Wproperty-attribute-mismatch;-Wprotocol;-Wprotocol-property-synthesis-ambiguity;-Wqualified-void-return-type;-Wquoted-include-in-framework-header;-Wrange-loop-analysis;-Wreadonly-iboutlet-property;-Wreceiver-expr;-Wreceiver-forward-class;-Wredeclared-class-member;-Wredundant-decls;-Wredundant-move;-Wredundant-parens;-Wregister;-Wreinterpret-base-class;-Wreorder;-Wrequires-super-attribute;-Wreserved-user-defined-literal;-Wretained-language-linkage;-Wreturn-stack-address;-Wreturn-std-move;-Wreturn-type;-Wreturn-type-c-linkage;-Wsection;-Wselector;-Wselector-type-mismatch;-Wself-assign;-Wself-assign-field;-Wself-assign-overloaded;-Wself-move;-Wsemicolon-before-method-body;-Wsentinel;-Wsequence-point;-Wserialized-diagnostics;-Wshadow-field;-Wshadow-field-in-constructor-modified;-Wshadow-ivar;-Wshadow-uncaptured-local;-Wshift-count-negative;-Wshift-count-overflow;-Wshift-negative-value;-Wshift-op-parentheses;-Wshift-overflow;-Wshift-sign-overflow;-Wshorten-64-to-32;-Wsign-compare;-Wsign-conversion;-Wsign-promo;-Wsigned-enum-bitfield;-Wsizeof-array-argument;-Wsizeof-array-decay;-Wsizeof-pointer-div;-Wsizeof-pointer-memaccess;-Wslash-u-filename;-Wsometimes-uninitialized;-Wsource-uses-openmp;-Wstack-protector;-Wstack-protector;-Wstatic-float-init;-Wstatic-in-inline;-Wstatic-inline-explicit-instantiation;-Wstatic-local-in-inline;-Wstatic-self-init;-Wstdlibcxx-not-found;-Wstrict-aliasing;-Wstrict-aliasing=0;-Wstrict-aliasing=1;-Wstrict-aliasing=2;-Wstrict-overflow;-Wstrict-overflow=0;-Wstrict-overflow=1;-Wstrict-overflow=2;-Wstrict-overflow=3;-Wstrict-overflow=4;-Wstrict-overflow=5;-Wstrict-prototypes;-Wstrict-prototypes;-Wstrict-selector-match;-Wstring-compare;-Wstring-conversion;-Wstring-plus-char;-Wstring-plus-int;-Wstrlcpy-strlcat-size;-Wstrncat-size;-Wsuper-class-method-mismatch;-Wsuspicious-bzero;-Wsuspicious-memaccess;-Wswitch;-Wswitch-bool;-Wswitch-default;-Wsync-fetch-and-nand-semantics-changed;-Wsynth;-Wtautological-compare;-Wtautological-constant-compare;-Wtautological-constant-in-range-compare;-Wtautological-constant-out-of-range-compare;-Wtautological-objc-bool-compare;-Wtautological-overlap-compare;-Wtautological-pointer-compare;-Wtautological-type-limit-compare;-Wtautological-undefined-compare;-Wtautological-unsigned-enum-zero-compare;-Wtautological-unsigned-zero-compare;-Wtentative-definition-incomplete-type;-Wthread-safety;-Wthread-safety-analysis;-Wthread-safety-attributes;-Wthread-safety-beta;-Wthread-safety-negative;-Wthread-safety-precise;-Wthread-safety-reference;-Wthread-safety-verbose;-Wtrigraphs;-Wtype-limits;-Wtype-safety;-Wtypedef-redefinition;-Wtypename-missing;-Wunable-to-open-stats-file;-Wunavailable-declarations;-Wundeclared-selector;-Wundef;-Wundefined-bool-conversion;-Wundefined-func-template;-Wundefined-inline;-Wundefined-internal;-Wundefined-internal-type;-Wundefined-reinterpret-cast;-Wundefined-var-template;-Wunderaligned-exception-object;-Wunevaluated-expression;-Wunguarded-availability;-Wunguarded-availability-new;-Wunicode;-Wunicode-homoglyph;-Wunicode-whitespace;-Wunicode-zero-width;-Wuninitialized;-Wunknown-argument;-Wunknown-attributes;-Wunknown-escape-sequence;-Wunknown-pragmas;-Wunknown-sanitizers;-Wunknown-warning-option;-Wunneeded-internal-declaration;-Wunneeded-member-function;-Wunreachable-code;-Wunreachable-code-loop-increment;-Wunreachable-code-return;-Wunsequenced;-Wunsupported-abs;-Wunsupported-availability-guard;-Wunsupported-cb;-Wunsupported-dll-base-class-template;-Wunsupported-friend;-Wunsupported-gpopt;-Wunsupported-nan;-Wunsupported-target-opt;-Wunsupported-visibility;-Wunusable-partial-specialization;-Wunused;-Wunused-argument;-Wunused-command-line-argument;-Wunused-comparison;-Wunused-const-variable;-Wunused-exception-parameter;-Wunused-function;-Wunused-getter-return-value;-Wunused-label;-Wunused-lambda-capture;-Wunused-local-typedef;-Wunused-local-typedefs;-Wunused-macros;-Wunused-member-function;-Wunused-parameter;-Wunused-private-field;-Wunused-property-ivar;-Wunused-result;-Wunused-template;-Wunused-value;-Wunused-variable;-Wunused-volatile-lvalue;-Wuser-defined-literals;-Wuser-defined-warnings;-Wvarargs;-Wvariadic-macros;-Wvec-elem-size;-Wvector-conversion;-Wvector-conversions;-Wvexing-parse;-Wvisibility;-Wvla;-Wvla-extension;-Wvoid-ptr-dereference;-Wvolatile-register-var;-Wweak-template-vtables;-Wwritable-strings;-Wwrite-strings;-Wzero-as-null-pointer-constant;-Wzero-length-array;-Wno-c99-extensions;-Wno-deprecated-dynamic-exception-spec;-Wno-non-virtual-dtor'
) }}
steps:
- name: Install dependencies (Homebrew)
if: ${{ matrix.toolchain.homebrew_packages }}
run: brew install ${{ matrix.toolchain.homebrew_packages }}
- name: Checkout (non macos)
if: ${{ ! startsWith(matrix.toolchain.runs_on, 'macos') }}
uses: classabbyamp/treeless-checkout-action@v1
- name: Checkout (macos)
if: ${{ startsWith(matrix.toolchain.runs_on, 'macos') }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Configure
run: |
env | grep '^ASAN_OPTIONS\|^CMAKE\|^MONKEY' | sort
cmake -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" ${CMAKE_C_COMPILER+-DCMAKE_C_COMPILER="${CMAKE_C_COMPILER}"} ${CMAKE_CXX_COMPILER+-DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER}"} -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS}" -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" ${CMAKE_EXTRA_FLAGS} -S . -B ../build
shell: bash
- name: build
run: cmake --build ../build --config ${{matrix.toolchain.CMAKE_BUILD_TYPE}}
- name: test
working-directory: ../build
run: ctest --verbose --config ${{matrix.toolchain.CMAKE_BUILD_TYPE}}
Static-Analysis:
needs: [Lint]
runs-on: ubuntu-latest
container:
image: "ghcr.io/hrzlgnm/monkey-github-builder-void-linux-musl-clang:v2"
steps:
- name: Checkout
uses: classabbyamp/treeless-checkout-action@v1
- name: Configure
run: >-
cmake
-GNinja
-DCMAKE_CXX_COMPILER=clang++
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_CXX_FLAGS="-W#pragma-messages -W#warnings -WCFString-literal -WCL4 -WIndependentClass-attribute -WNSObject-attribute -Wabi -Wabsolute-value -Wabstract-final-class -Wabstract-vbase-init -Waddress -Waddress-of-packed-member -Waddress-of-temporary -Waggregate-return -Wall -Wambiguous-delete -Wambiguous-ellipsis -Wambiguous-macro -Wambiguous-member-template -Wanalyzer-incompatible-plugin -Wanonymous-pack-parens -Warc -Warc-bridge-casts-disallowed-in-nonarc -Warc-maybe-repeated-use-of-weak -Warc-non-pod-memaccess -Warc-performSelector-leaks -Warc-repeated-use-of-weak -Warc-retain-cycles -Warc-unsafe-retained-assign -Wargument-outside-range -Warray-bounds -Warray-bounds-pointer-arithmetic -Wasm -Wasm-operand-widths -Wassign-enum -Wassume -Wat-protocol -Watimport-in-framework-header -Watomic-alignment -Watomic-implicit-seq-cst -Watomic-memory-ordering -Watomic-properties -Watomic-property-with-user-defined-accessor -Wattribute-packed-for-bitfield -Wattributes -Wauto-disable-vptr-sanitizer -Wauto-import -Wauto-storage-class -Wauto-var-id -Wavailability -Wavr-rtlib-linking-quirks -Wbackend-plugin -Wbackslash-newline-escape -Wbad-function-cast -Wbinding-in-condition -Wbitfield-constant-conversion -Wbitfield-enum-conversion -Wbitfield-width -Wbitwise-op-parentheses -Wblock-capture-autoreleasing -Wbool-conversion -Wbool-conversions -Wbraced-scalar-init -Wbridge-cast -Wbuiltin-macro-redefined -Wbuiltin-memcpy-chk-size -Wbuiltin-requires-header -Wc++17-compat-mangling -Wc++17-extensions -Wcall-to-pure-virtual-from-ctor-dtor -Wcast-align -Wcast-calling-convention -Wcast-of-sel-type -Wcast-qual -Wcast-qual-unrelated -Wchar-align -Wchar-subscripts -Wclang-cl-pch -Wclass-varargs -Wcomma -Wcomment -Wcomments -Wcompare-distinct-pointer-types -Wcomplex-component-init -Wconditional-type-mismatch -Wconditional-uninitialized -Wconfig-macros -Wconstant-conversion -Wconstant-logical-operand -Wconstexpr-not-const -Wconsumed -Wconversion -Wconversion-null -Wcoroutine -Wcoroutine-missing-unhandled-exception -Wcovered-switch-default -Wcpp -Wcstring-format-directive -Wctor-dtor-privacy -Wctu -Wcustom-atomic-properties -Wdangling -Wdangling-else -Wdangling-field -Wdangling-initializer-list -Wdarwin-sdk-settings -Wdate-time -Wdealloc-in-category -Wdebug-compression-unavailable -Wdeclaration-after-statement -Wdefaulted-function-deleted -Wdelegating-ctor-cycles -Wdelete-abstract-non-virtual-dtor -Wdelete-incomplete -Wdelete-non-abstract-non-virtual-dtor -Wdelete-non-virtual-dtor -Wdeprecated -Wdeprecated-attributes -Wdeprecated-declarations -Wdeprecated-implementations -Wdeprecated-increment-bool -Wdeprecated-objc-isa-usage -Wdeprecated-objc-pointer-introspection -Wdeprecated-objc-pointer-introspection-performSelector -Wdeprecated-register -Wdeprecated-this-capture -Wdeprecated-writable-strings -Wdirect-ivar-access -Wdisabled-optimization -Wdiscard-qual -Wdistributed-object-modifiers -Wdiv-by-zero -Wdivision-by-zero -Wdll-attribute-on-redeclaration -Wdllexport-explicit-instantiation-decl -Wdllimport-static-field-def -Wdocumentation-deprecated-sync -Wdocumentation-html -Wdollar-in-identifier-extension -Wdouble-promotion -Wduplicate-decl-specifier -Wduplicate-enum -Wduplicate-method-arg -Wduplicate-method-match -Wduplicate-protocol -Wdynamic-class-memaccess -Wdynamic-exception-spec -Weffc++ -Wembedded-directive -Wempty-body -Wempty-decomposition -Wempty-init-stmt -Wempty-translation-unit -Wencode-type -Wendif-labels -Wenum-compare -Wenum-compare-switch -Wenum-conversion -Wenum-too-large -Wexceptions -Wexpansion-to-defined -Wexplicit-initialize-call -Wexplicit-ownership-type -Wexport-unnamed -Wexport-using-directive -Wextern-c-compat -Wextern-initializer -Wextra -Wextra-qualification -Wextra-semi -Wextra-semi-stmt -Wextra-tokens -Wfixed-enum-extension -Wflag-enum -Wflexible-array-extensions -Wfloat-conversion -Wfloat-equal -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wfor-loop-analysis -Wformat -Wformat-extra-args -Wformat-invalid-specifier -Wformat-non-iso -Wformat-nonliteral -Wformat-pedantic -Wformat-security -Wformat-y2k -Wformat-zero-length -Wformat=2 -Wfortify-source -Wfour-char-constants -Wframework-include-private-from-public -Wfunction-def-in-objc-container -Wfunction-multiversion -Wfuture-compat -Wgcc-compat -Wgnu -Wgnu-alignof-expression -Wgnu-anonymous-struct -Wgnu-array-member-paren-init -Wgnu-auto-type -Wgnu-binary-literal -Wgnu-case-range -Wgnu-complex-integer -Wgnu-compound-literal-initializer -Wgnu-conditional-omitted-operand -Wgnu-designator -Wgnu-empty-initializer -Wgnu-empty-struct -Wgnu-flexible-array-initializer -Wgnu-flexible-array-union-member -Wgnu-folding-constant -Wgnu-imaginary-constant -Wgnu-include-next -Wgnu-label-as-value -Wgnu-redeclared-enum -Wgnu-statement-expression -Wgnu-static-float-init -Wgnu-string-literal-operator-template -Wgnu-union-cast -Wgnu-variable-sized-type-not-at-end -Wgnu-zero-line-directive -Wgnu-zero-variadic-macro-arguments -Wheader-guard -Wheader-hygiene -Widiomatic-parentheses -Wignored-attributes -Wignored-optimization-argument -Wignored-pragma-intrinsic -Wignored-pragma-optimize -Wignored-pragmas -Wignored-qualifiers -Wimplicit -Wimplicit-atomic-properties -Wimplicit-conversion-floating-point-to-bool -Wimplicit-exception-spec-mismatch -Wimplicit-fallthrough -Wimplicit-fallthrough-per-function -Wimplicit-fixed-point-conversion -Wimplicit-float-conversion -Wimplicit-function-declaration -Wimplicit-int -Wimplicit-int-conversion -Wimplicit-retain-self -Wimplicitly-unsigned-literal -Wimport -Wimport-preprocessor-directive-pedantic -Winaccessible-base -Winclude-next-absolute-path -Winclude-next-outside-header -Wincompatible-exception-spec -Wincompatible-function-pointer-types -Wincompatible-library-redeclaration -Wincompatible-ms-struct -Wincompatible-pointer-types -Wincompatible-pointer-types-discards-qualifiers -Wincompatible-property-type -Wincompatible-sysroot -Wincomplete-framework-module-declaration -Wincomplete-implementation -Wincomplete-module -Wincomplete-umbrella -Winconsistent-dllimport -Winconsistent-missing-destructor-override -Winconsistent-missing-override -Wincrement-bool -Winfinite-recursion -Winit-self -Winitializer-overrides -Winjected-class-name -Winline -Winline-asm -Winline-new-delete -Winstantiation-after-specialization -Wint-conversion -Wint-conversions -Wint-to-pointer-cast -Wint-to-void-pointer-cast -Winteger-overflow -Winvalid-command-line-argument -Winvalid-constexpr -Winvalid-iboutlet -Winvalid-initializer-from-system-header -Winvalid-ios-deployment-target -Winvalid-noreturn -Winvalid-offsetof -Winvalid-or-nonexistent-directory -Winvalid-partial-specialization -Winvalid-pch -Winvalid-pp-token -Winvalid-source-encoding -Winvalid-token-paste -Wjump-seh-finally -Wkeyword-compat -Wkeyword-macro -Wknr-promoted-parameter -Wlanguage-extension-token -Wlarge-by-value-copy -Wliblto -Wliteral-conversion -Wliteral-range -Wlogical-not-parentheses -Wlogical-op-parentheses -Wlong-long -Wloop-analysis -Wmacro-redefined -Wmain -Wmain-return-type -Wmalformed-warning-check -Wmany-braces-around-scalar-init -Wmax-unsigned-zero -Wmemset-transposed-args -Wmemsize-comparison -Wmethod-signatures -Wmicrosoft -Wmicrosoft-anon-tag -Wmicrosoft-cast -Wmicrosoft-charize -Wmicrosoft-comment-paste -Wmicrosoft-const-init -Wmicrosoft-cpp-macro -Wmicrosoft-default-arg-redefinition -Wmicrosoft-end-of-file -Wmicrosoft-enum-forward-reference -Wmicrosoft-enum-value -Wmicrosoft-exception-spec -Wmicrosoft-exists -Wmicrosoft-explicit-constructor-call -Wmicrosoft-extra-qualification -Wmicrosoft-fixed-enum -Wmicrosoft-flexible-array -Wmicrosoft-goto -Wmicrosoft-inaccessible-base -Wmicrosoft-include -Wmicrosoft-mutable-reference -Wmicrosoft-pure-definition -Wmicrosoft-redeclare-static -Wmicrosoft-sealed -Wmicrosoft-template -Wmicrosoft-union-member-reference -Wmicrosoft-unqualified-friend -Wmicrosoft-using-decl -Wmicrosoft-void-pseudo-dtor -Wmismatched-new-delete -Wmismatched-parameter-types -Wmismatched-return-types -Wmismatched-tags -Wmissing-braces -Wmissing-declarations -Wmissing-exception-spec -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-method-return-type -Wmissing-noescape -Wmissing-noreturn -Wmissing-prototype-for-cc -Wmissing-prototypes -Wmissing-selector-name -Wmissing-sysroot -Wmissing-variable-declarations -Wmodule-conflict -Wmodule-file-config-mismatch -Wmodule-file-extension -Wmodule-import-in-extern-c -Wmodules-ambiguous-internal-linkage -Wmodules-import-nested-redundant -Wmost -Wmove -Wmsvc-include -Wmsvc-not-found -Wmultichar -Wmultiple-move-vbase -Wnarrowing -Wnested-anon-types -Wnested-externs -Wnew-returns-null -Wnewline-eof -Wnoderef -Wnoexcept-type -Wnon-gcc -Wnon-literal-null-conversion -Wnon-modular-include-in-framework-module -Wnon-modular-include-in-module -Wnon-pod-varargs -Wnonnull -Wnonportable-include-path -Wnonportable-system-include-path -Wnonportable-vector-initialization -Wnontrivial-memaccess -Wnsconsumed-mismatch -Wnsreturns-mismatch -Wnull-arithmetic -Wnull-character -Wnull-conversion -Wnull-dereference -Wnull-pointer-arithmetic -Wnullability -Wnullability-completeness -Wnullability-completeness-on-arrays -Wnullability-declspec -Wnullability-extension -Wnullability-inferred-on-nested-type -Wnullable-to-nonnull-conversion -Wobjc-autosynthesis-property-ivar-name-match -Wobjc-bool-constant-conversion -Wobjc-boxing -Wobjc-circular-container -Wobjc-cocoa-api -Wobjc-designated-initializers -Wobjc-flexible-array -Wobjc-forward-class-redefinition -Wobjc-interface-ivars -Wobjc-literal-compare -Wobjc-literal-conversion -Wobjc-macro-redefinition -Wobjc-messaging-id -Wobjc-method-access -Wobjc-missing-property-synthesis -Wobjc-missing-super-calls -Wobjc-multiple-method-names -Wobjc-noncopy-retain-block-property -Wobjc-nonunified-exceptions -Wobjc-property-assign-on-object-type -Wobjc-property-implementation -Wobjc-property-implicit-mismatch -Wobjc-property-matches-cocoa-ownership-rule -Wobjc-property-no-attribute -Wobjc-property-synthesis -Wobjc-protocol-method-implementation -Wobjc-protocol-property-synthesis -Wobjc-protocol-qualifiers -Wobjc-readonly-with-setter-property -Wobjc-redundant-api-use -Wobjc-redundant-literal-use -Wobjc-root-class -Wobjc-string-compare -Wobjc-string-concatenation -Wobjc-unsafe-perform-selector -Wodr -Wold-style-cast -Wold-style-definition -Wopencl-unsupported-rgba -Woption-ignored -Wordered-compare-function-pointers -Wout-of-line-declaration -Wout-of-scope-function -Wover-aligned -Woverflow -Woverloaded-shift-op-parentheses -Woverloaded-virtual -Woverride-init -Woverride-module -Woverriding-method-mismatch -Woverriding-t-option -Wpacked -Wparentheses -Wparentheses-equality -Wpartial-availability -Wpass-failed -Wpch-date-time -Wpedantic -Wpedantic-core-features -Wno-overlength-strings -Wpessimizing-move -Wpointer-arith -Wpointer-bool-conversion -Wpointer-integer-compare -Wpointer-sign -Wpointer-to-int-cast -Wpointer-to-int-cast -Wpointer-type-mismatch -Wpotentially-evaluated-expression -Wpragma-clang-attribute -Wpragma-once-outside-header -Wpragma-pack -Wpragma-pack-suspicious-include -Wpragma-system-header-outside-header -Wpragmas -Wpredefined-identifier-outside-function -Wprivate-extern -Wprivate-header -Wprivate-module -Wprofile-instr-missing -Wprofile-instr-out-of-date -Wprofile-instr-unprofiled -Wproperty-access-dot-syntax -Wproperty-attribute-mismatch -Wprotocol -Wprotocol-property-synthesis-ambiguity -Wqualified-void-return-type -Wquoted-include-in-framework-header -Wrange-loop-analysis -Wreadonly-iboutlet-property -Wreceiver-expr -Wreceiver-forward-class -Wredeclared-class-member -Wredundant-decls -Wredundant-move -Wredundant-parens -Wregister -Wreinterpret-base-class -Wreorder -Wrequires-super-attribute -Wreserved-user-defined-literal -Wretained-language-linkage -Wreturn-stack-address -Wreturn-std-move -Wreturn-type -Wreturn-type-c-linkage -Wsection -Wselector -Wselector-type-mismatch -Wself-assign -Wself-assign-field -Wself-assign-overloaded -Wself-move -Wsemicolon-before-method-body -Wsentinel -Wsequence-point -Wserialized-diagnostics -Wshadow-field -Wshadow-field-in-constructor-modified -Wshadow-ivar -Wshadow-uncaptured-local -Wshift-count-negative -Wshift-count-overflow -Wshift-negative-value -Wshift-op-parentheses -Wshift-overflow -Wshift-sign-overflow -Wshorten-64-to-32 -Wsign-compare -Wsign-conversion -Wsign-promo -Wsigned-enum-bitfield -Wsizeof-array-argument -Wsizeof-array-decay -Wsizeof-pointer-div -Wsizeof-pointer-memaccess -Wslash-u-filename -Wsometimes-uninitialized -Wsource-uses-openmp -Wstack-protector -Wstack-protector -Wstatic-float-init -Wstatic-in-inline -Wstatic-inline-explicit-instantiation -Wstatic-local-in-inline -Wstatic-self-init -Wstdlibcxx-not-found -Wstrict-aliasing -Wstrict-aliasing=0 -Wstrict-aliasing=1 -Wstrict-aliasing=2 -Wstrict-overflow -Wstrict-overflow=0 -Wstrict-overflow=1 -Wstrict-overflow=2 -Wstrict-overflow=3 -Wstrict-overflow=4 -Wstrict-overflow=5 -Wstrict-prototypes -Wstrict-prototypes -Wstrict-selector-match -Wstring-compare -Wstring-conversion -Wstring-plus-char -Wstring-plus-int -Wstrlcpy-strlcat-size -Wstrncat-size -Wsuper-class-method-mismatch -Wsuspicious-bzero -Wsuspicious-memaccess -Wswitch -Wswitch-bool -Wswitch-default -Wsync-fetch-and-nand-semantics-changed -Wsynth -Wtautological-compare -Wtautological-constant-compare -Wtautological-constant-in-range-compare -Wtautological-constant-out-of-range-compare -Wtautological-objc-bool-compare -Wtautological-overlap-compare -Wtautological-pointer-compare -Wtautological-type-limit-compare -Wtautological-undefined-compare -Wtautological-unsigned-enum-zero-compare -Wtautological-unsigned-zero-compare -Wtentative-definition-incomplete-type -Wthread-safety -Wthread-safety-analysis -Wthread-safety-attributes -Wthread-safety-beta -Wthread-safety-negative -Wthread-safety-precise -Wthread-safety-reference -Wthread-safety-verbose -Wtrigraphs -Wtype-limits -Wtype-safety -Wtypedef-redefinition -Wtypename-missing -Wunable-to-open-stats-file -Wunavailable-declarations -Wundeclared-selector -Wundef -Wundefined-bool-conversion -Wundefined-func-template -Wundefined-inline -Wundefined-internal -Wundefined-internal-type -Wundefined-reinterpret-cast -Wundefined-var-template -Wunderaligned-exception-object -Wunevaluated-expression -Wunguarded-availability -Wunguarded-availability-new -Wunicode -Wunicode-homoglyph -Wunicode-whitespace -Wunicode-zero-width -Wuninitialized -Wunknown-argument -Wunknown-attributes -Wunknown-escape-sequence -Wunknown-pragmas -Wunknown-sanitizers -Wunknown-warning-option -Wunneeded-internal-declaration -Wunneeded-member-function -Wunreachable-code -Wunreachable-code-loop-increment -Wunreachable-code-return -Wunsequenced -Wunsupported-abs -Wunsupported-availability-guard -Wunsupported-cb -Wunsupported-dll-base-class-template -Wunsupported-friend -Wunsupported-gpopt -Wunsupported-nan -Wunsupported-target-opt -Wunsupported-visibility -Wunusable-partial-specialization -Wunused -Wunused-argument -Wunused-command-line-argument -Wunused-comparison -Wunused-const-variable -Wunused-exception-parameter -Wunused-function -Wunused-getter-return-value -Wunused-label -Wunused-lambda-capture -Wunused-local-typedef -Wunused-local-typedefs -Wunused-macros -Wunused-member-function -Wunused-parameter -Wunused-private-field -Wunused-property-ivar -Wunused-result -Wunused-template -Wunused-value -Wunused-variable -Wunused-volatile-lvalue -Wuser-defined-literals -Wuser-defined-warnings -Wvarargs -Wvariadic-macros -Wvec-elem-size -Wvector-conversion -Wvector-conversions -Wvexing-parse -Wvisibility -Wvla -Wvla-extension -Wvoid-ptr-dereference -Wvolatile-register-var -Wweak-template-vtables -Wwritable-strings -Wwrite-strings -Wzero-as-null-pointer-constant -Wzero-length-array -Wno-c99-extensions -Wno-deprecated-dynamic-exception-spec -Wno-non-virtual-dtor"
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-shlib-undefined,--as-needed,-z,noexecstack,-z,relro,-z,now"
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--allow-shlib-undefined,--as-needed,-z,noexecstack,-z,relro,-z,now"
-DCMAKE_CXX_CLANG_TIDY="clang-tidy;--header-filter=^/__w/monkey/monkey/source"
-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON
-DCMAKE_CXX_CPPCHECK="cppcheck;--inline-suppr;--library=/__w/monkey/monkey/cppcheck/monkey.cfg"
-DCMAKE_CXX_EXTENSIONS=OFF
-DCMAKE_CXX_STANDARD=20
-DCMAKE_CXX_STANDARD_REQUIRED=ON
-S .
-B ../build
- name: Build
run: cmake --build ../build -j 2