PROGNAME := cg SRCDIR := sources INCLUDEDIR := include BINDIR := bin DEBUG := yes VPATH = $(SRCDIR) $(INCLUDEDIR) vpath %.cpp $(SRCDIR) vpath %.h $(INCLUDEDIR) ifdef COMSPEC # windows CXX := C:/g++ CXXFLAGS := -Wall -I $(INCLUDEDIR) LIBS := EXESUFFIX := .exe MKDIR := mkdir -p ECHO := echo RM := rm else # better than windows CXX := g++ CXXFLAGS := -DUNIX -Wall `sdl-config --cflags` -I $(INCLUDEDIR) LIBS := `sdl-config --libs` -lGL -lGLU EXESUFFIX := RM := rm -f ECHO := echo MKDIR := mkdir -p endif ifeq "$(DEBUG)" "yes" CXXFLAGS := $(CXXFLAGS) -DDEBUG endif OBJECTS = main.o array.o poly.o model.o light.o vec.o color.o all: $(OBJECTS) @if [ ! -d $(BINDIR) ]; then \ $(call run,$(MKDIR) $(BINDIR)); \ fi $(CXX) $(CXXFLAGS) $(LIBS) $^ -o $(BINDIR)/$(PROGNAME)$(EXESUFFIX) run: $(BINDIR)/$(PROGNAME)$(EXESUFFIX) clean: $(RM) *.o distclean: clean $(RM) $(BINDIR)/$(PROGNAME)$(EXESUFFIX) .PHONY: all .PHONY: clean .PHONY: distclean run = $(ECHO) $(1); $(1) || exit $$?