#makefile for life
#by Brent Feulbach
#with lots of help from https://stackoverflow.com/questions/714100/os-detecting-makefile

PROG:=life
LINK_FLAGS = -Wall -Werror
CXX_FLAGS = -Wall -Werror -std=c++11
CXX  = g++
OBJS = life.o lifepars.o gif.o

ifeq ($(OS),Windows_NT)
	uname_S := Windows
	RM:=del /q
else
	uname_S := $(shell uname -s)
	RM:=rm -f
endif

ifeq ($(uname_S), Windows)
	target = $(PROG).exe
endif
ifeq ($(uname_S), Linux)
	target = $(PROG)
endif

ifeq ($(MAKECMDGOALS),debug)
debug:CXX_FLAGS += -DDEBUG -g
debug:LINK_FLAGS += -DDEBUG -g
debug:all
else
release:CXX_FLAGS += -O3
release:LINK_FLAGS += -O3
release:all
endif

#ifeq ($(MAKECMDCOALS),profile)
profile:CXX_FLAGS += -pg
profile:LINK_FLAGS += -pg
profile:all
#endif


all: $(target)
.PHONEY: clean all
#ifeq ($(uname_S), .....) #See https://stackoverflow.com/a/27776822/938111
#    target = .....
#endif

%.o: %.cpp
	gcc  $(CXX_FLAGS) -c $< -I ../lib  -o $@

$(target): $(PROG).o gif.o lifepars.o
	$(CXX) $(LINK_FLAGS) $^  -L../lib  -o $@

gif.o: gif.cpp gif.h
lifepars.o: lifepars.cpp lifepars.h

clean:
	$(RM) $(target) $(OBJS)
