

ENTRIES = $(shell cat $(BUILD_DIR)/entries_gl) $(shell cat $(BUILD_DIR)/entries_sw)
CPPFLAGS = -Iinclude/
CFLAGS = -std=c99 -pedantic -W -Wall
CXXFLAGS = -ansi -pedantic -W -Wall
SDL_FLAGS = `sdl-config --cflags`
SDL_LIBS = `sdl-config --libs`
LDLIBS = -lm
GLLIBS = -lGL -lGLU
BUILD_DIR = build
GET_SOURCE = build/sourcefile.sh
CXX_SOURCE = $(GET_SOURCE) --cxx

TARGETS = $(ENTRIES)

all: $(TARGETS)

entries:
	@ls src/gl | perl -pe 's#\ #\\ #g' > $(BUILD_DIR)/entries_gl
	@ls src/sw | perl -pe 's#\ #\\ #g' > $(BUILD_DIR)/entries_sw

%: src/sw/%
	@if $(CXX_SOURCE) "$<"; then \
	  echo building "$@"; \
	  $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(SDL_FLAGS) $(LDFLAGS) $(LOADLIBES) $(LDLIBS) $(SDL_LIBS) -o "$@" "$<"/`$(GET_SOURCE) "$<"`; \
	else \
	  echo building "$@"; \
	  $(CC) $(CPPFLAGS) $(CFLAGS) $(SDL_FLAGS) $(LDFLAGS) $(LOADLIBES) $(LDLIBS) $(SDL_LIBS) -o "$@" "$<"/`$(GET_SOURCE) "$<"`; \
	fi

%: src/gl/%
	@if $(CXX_SOURCE) "$<"; then \
	  echo building "$@"; \
	  $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(SDL_FLAGS) $(LDFLAGS) $(LOADLIBES) $(LDLIBS) $(GLLIBS) $(SDL_LIBS) -o "$@" "$<"/`$(GET_SOURCE) "$<"`; \
	else \
	  echo building "$@"; \
	  $(CC) $(CPPFLAGS) $(CFLAGS) $(SDL_FLAGS) $(LDFLAGS) $(LOADLIBES) $(LDLIBS) $(GLLIBS) $(SDL_LIBS) -o "$@" "$<"/`$(GET_SOURCE) "$<"`; \
	fi

count:
	@echo " <8k |  <4k | entry file name"
	@echo "-----+------+----------------------------------------"
	@cat $(BUILD_DIR)/entries_gl | while read ENTRY; do \
	  $(BUILD_DIR)/count "src/gl/$$ENTRY" `$(GET_SOURCE) "src/gl/$$ENTRY"`; \
	done
	@cat $(BUILD_DIR)/entries_sw | while read ENTRY; do \
	  $(BUILD_DIR)/count "src/sw/$$ENTRY" `$(GET_SOURCE) "src/sw/$$ENTRY"`; \
	done

clean:
	@cat $(BUILD_DIR)/entries_gl | while read ENTRY; do \
	  rm -f "$$ENTRY"; \
	done
	@cat $(BUILD_DIR)/entries_sw | while read ENTRY; do \
	  rm -f "$$ENTRY"; \
	done

