CompileFlags: # Named here rather than in the editor's settings because nothing vendors # this repo: the one build tree is the one an editor should read. CompilationDatabase: build/atmega328p-generated Add: # clang has no 24-bit integer and GCC's are keywords, not macros, so the # editor needs a stand-in for avr::uint24_t. The next width up is the only # one available — clang rejects _BitInt(24) on this target. - -D__uint24=unsigned long - -D__int24=long # clangd forwards the driver's system includes but not its own header # directory, so resolves to avr-libc's, which still gates the # limit and constant macros on the C++98 opt-in. - -D__STDC_LIMIT_MACROS - -D__STDC_CONSTANT_MACROS # isr::emit spells a vector number into [[gnu::signal(N)]], which clang # rejects rather than ignores — enough of them in one TU to reach the # default limit of 19 inside the headers and truncate the parse. - -ferror-limit=0 Remove: # The build promotes warnings for the compiler that has to be right about # them; in the editor the flag paints a second frontend's opinions in the # colour reserved for things that do not compile. - -Werror Diagnostics: Suppress: # clang's AVR `signal` attribute takes no arguments and it knows none of # progmem, naked or OS_main. A misspelling is what the build is for. - attribute_wrong_number_arguments - unknown-attributes