EX=steve
OBJS=main.o draw_steve.o

#  MinGW
ifeq "$(OS)" "Windows_NT"
CFLG=-O3 -Wall -DUSEGLEW
LIBS=-lglfw3 -lglew32 -lglu32 -lopengl32 -lm
CLEAN=del *.exe *.o *.d *.a
else
#  OSX
ifeq "$(shell uname)" "Darwin"
RES=$(shell uname -r|sed -E 's/(.).*/\1/'|tr 12 21)
CFLG=-O3 -w -Wno-deprecated-declarations -DRES=$(RES) -I/opt/homebrew/include
LIBS=-framework OpenGL -L/opt/homebrew/lib -lglfw
CLEAN=rm -f $(EX) *.o *.d *.a
#  Linux/Unix/Solaris
else
CFLG=-O3 -Wall -Werror
LIBS=-lglfw -lGLU -lGL -lm
CLEAN=rm -f $(EX) *.o *.d *.a
endif
endif

all: $(EX)

#  Link
$(EX): $(OBJS)
	gcc -o $@ $^ $(LIBS)

#  Compile each .c to a .o (-MMD -MP writes .d files so header changes trigger rebuilds)
%.o: %.c
	gcc -c $(CFLG) -MMD -MP -o $@ $<

#  Pull in generated header dependencies
-include $(OBJS:.o=.d)

#  Clean
clean:
	$(CLEAN)

.PHONY: all clean