CC=/usr/local/gcc6/bin/gcc
CPPFLAGS=
CFLAGS=-O2 -Wall -Wextra -std=c11

all: ss-darwin-strict-aliasing ss-darwin-no-strict-aliasing
all: ss-musl0-strict-aliasing ss-musl0-no-strict-aliasing
all: ss-musl1-strict-aliasing ss-musl1-no-strict-aliasing
all: ss-musl2-strict-aliasing ss-musl2-no-strict-aliasing

ss-darwin-strict-aliasing ss-darwin-no-strict-aliasing: ss.c
	$(CC) -o $@ ss.c $(CPPFLAGS) $(CFLAGS) -f$(@:ss-darwin-%=%)

ss-musl0-strict-aliasing ss-musl0-no-strict-aliasing: ss.c
	$(CC) -o $@ ss.c $(CPPFLAGS) -DMUSL_PATCH=0 $(CFLAGS) -f$(@:ss-musl0-%=%)

ss-musl1-strict-aliasing ss-musl1-no-strict-aliasing: ss.c
	$(CC) -o $@ ss.c $(CPPFLAGS) -DMUSL_PATCH=1 $(CFLAGS) -f$(@:ss-musl1-%=%)

ss-musl2-strict-aliasing ss-musl2-no-strict-aliasing: ss.c
	$(CC) -o $@ ss.c $(CPPFLAGS) -DMUSL_PATCH=2 $(CFLAGS) -f$(@:ss-musl2-%=%)

test: all
	@for T in ss-darwin* ss-musl*; do \
		printf "== %s ==\n" "$${T}"; \
		"./$${T}"; \
		printf "\n"; \
	done

clean:
	rm -f -- ./ss-darwin* ./ss-musl*