For completeness's sake: the sqlite3 amalgamation compiles fine with gcc using `-std=c89 -Wall -Werror -Wextra -Wpedantic`, so long as a couple other flags are passed along with it: - `-Wno-long-long` because C89/C90 doesn't specify long long. - `-Wno-implicit-fallthrough` because gcc's devs broke a great many real-world builds when they "deprecated" implicit switch fall-through. *Grrrrrrr.* e.g.: ``` gcc -g -Wpedantic -Werror -Wall -Wextra \ -Wsign-compare -fPIC -std=c89 -Wno-long-long \ -Wno-implicit-fallthrough \ -c -o sqlite3.o sqlite3.c ``` Edit: depending on the build options and gcc version, it may also need: - `-Wno-cast-function-type` because sqlite apparently casts between (`void (*)(void)`) and (`int (*)(void)`) - `-Wno-unused-parameter` for interface-level parameters which may not be used by certain concrete implementations of the interface.