-
-
Notifications
You must be signed in to change notification settings - Fork 192
86 lines (79 loc) · 24.3 KB
/
build-and-test.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
# Copyright (C) 2020 Matthew Glazar
# See end of file for extended copyright information.
name: build and test
on:
push:
pull_request:
types: [opened, synchronize]
jobs:
build:
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/quick-lint/quick-lint-js-github-clang:v1", 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/quick-lint/quick-lint-js-github-clang:v1", 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/quick-lint/quick-lint-js-github-clang:v1", 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/quick-lint/quick-lint-js-github-clang:v1", 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: "GCC 10", container: "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1", CC: gcc-10, CXX: g++-10, CFLAGS: "", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{0}", CMAKE_FLAGS: "-G Ninja"}
- {runs_on: ubuntu-latest, name: "GCC 10 ASAN+UBSAN", container: "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1", CC: gcc-10, CXX: g++-10, CFLAGS: "-fsanitize=address,undefined -fsanitize-address-use-after-scope -fno-sanitize-recover=address,undefined -fuse-ld=gold", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{0}", 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: "GCC 10 Release", container: "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1", CC: gcc-10, CXX: g++-10, CFLAGS: "", CMAKE_BUILD_TYPE: "Release", WARNINGS: "-Werror;{0}"}
# TODO(strager): Enable Ninja for this job.
- {runs_on: ubuntu-latest, name: "GCC 10 dev", container: "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1", CC: gcc-10, CXX: g++-10, CFLAGS: "", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{0}", CMAKE_FLAGS: "-DQUICK_LINT_JS_FEATURE_DEBUG_SERVER=ON -DQUICK_LINT_JS_FEATURE_EXTRA_DEBUG=ON -DQUICK_LINT_JS_FEATURE_VECTOR_PROFILING=ON"}
# TODO(strager): Also test MinGW-based builds.
- {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
QUICK_LINT_JS_CXX_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: checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- name: install dependencies (Homebrew)
if: ${{ matrix.toolchain.homebrew_packages }}
run: brew install ${{ matrix.toolchain.homebrew_packages }}
- name: configure
run: |
env | grep '^ASAN_OPTIONS\|^CMAKE\|^QUICK_LINT_JS' | sort
cmake -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DQUICK_LINT_JS_ENABLE_BENCHMARKS=YES -DBUILD_TESTING=YES ${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}" -DQUICK_LINT_JS_CXX_COMPILER_OPTIONS="${QUICK_LINT_JS_CXX_COMPILER_OPTIONS}" ${CMAKE_EXTRA_FLAGS} -S . -B .
shell: bash
- name: build
run: cmake --build . --config Debug
- name: test
run: ctest --build-config Debug --verbose
# quick-lint-js finds bugs in JavaScript programs.
# Copyright (C) 2020 Matthew Glazar
#
# This file is part of quick-lint-js.
#
# quick-lint-js is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# quick-lint-js is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with quick-lint-js. If not, see <https://www.gnu.org/licenses/>.