CC = LANG=C g++
LFLAGS += -lGLEW -lglfw -lGL -lGLU -lpthread
CFLAGS += -Wall -Werror
CFLAGS += -O2 -g

NAME = yabba
SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
HEADERS = $(wildcard *.hpp)

PREFIX ?= /usr/local
FILE_PREFIX = .
install: FILE_PREFIX = $(PREFIX)/share/$(NAME)
CFLAGS += -DFILE_PREFIX=\"$(FILE_PREFIX)\"

BGREEN = "\\033[1\;32m"
GREEN = "\\033[32m"
NORM = "\\033[0m"

$(NAME): $(OBJECTS)
    @echo "$(BGREEN)$(@)$(NORM)"
    $(CC) \
    -o $(@) \
    $(^) \
    $(LFLAGS)

%.o: %.cpp $(HEADERS) Makefile
    @echo "$(GREEN)$(@)$(NORM)"
    $(CC) -c \
    $(CFLAGS) \
    $(<) \
    -o $(@)

.PHONY: install
install: $(NAME)
    @install -v -t "$(DESTDIR)$(PREFIX)/bin" $(^)
    @install -v -d \
        "$(DESTDIR)$(PREFIX)/share/$(^)/shaders" \
        "$(DESTDIR)$(PREFIX)/share/$(^)/sokoban" \
        "$(DESTDIR)$(PREFIX)/share/$(^)/textures"
    @install -v -t "$(DESTDIR)$(PREFIX)/share/$(^)/shaders" shaders/*.glsl
    @install -v -t "$(DESTDIR)$(PREFIX)/share/$(^)/sokoban" sokoban/*.txt
    @install -v -t "$(DESTDIR)$(PREFIX)/share/$(^)/textures" textures/*.ppm

.PHONY: clean
clean:
    rm -f $(NAME) $(OBJECTS)