all: aocdbg aoc aocclang
clean:
rm aocdbg aoc
aocdbg: *.c *.h
gcc -std=c99 -pedantic -pedantic-errors \
-Werror -Wall -Wextra \
-Wc99-c11-compat \
-Wc11-c2x-compat \
-Wbad-function-cast \
-Wcast-align \
-Wcast-qual \
-Wfloat-equal \
-Wformat=2 \
-Wformat-signedness \
-Winline \
-Wlogical-op \
-Wnested-externs \
-Wno-missing-braces \
-Wno-missing-field-initializers \
-Wold-style-definition \
-Wpointer-arith \
-Wredundant-decls \
-Wsign-conversion \
-Wshadow \
-Wstrict-aliasing=2 \
-Wstrict-overflow=5 \
-Wstrict-prototypes \
-Wswitch-default \
-Wswitch-enum \
-Wundef \
-Wunreachable-code \
-Wvla \
-fno-omit-frame-pointer -ffloat-store -fno-common -fstrict-aliasing \
-Og -ggdb3 \
*.c \
-o aocdbg
aoc: *.c *.h
gcc -std=c99 -pedantic -pedantic-errors \
-flto -fno-omit-frame-pointer -ffloat-store -fno-common -fstrict-aliasing \
-O3 -DNDEBUG \
*.c \
-o aoc
aocclang: *.c *.h
clang -std=c99 -pedantic \
-Weverything \
-Wno-declaration-after-statement \
-Wno-implicit-int-conversion \
-Wno-shorten-64-to-32 \
*.c \
-o aocclang