EXE = ./bin/glslViewer

INC = -I ../common/include
LOC_LIB = ../common/linux_x86_64/libglfw3.a
SYS_LIB = -lGL -lX11 -lXxf86vm -lXrandr -lpthread -lXi

CXX = g++
SOURCES := $(wildcard include/*/*.cc) $(wildcard src/*.cpp) $(wildcard src/*/*.cpp)
HEADERS := $(wildcard include/*/*.h) $(wildcard src/*.h) $(wildcard src/*.h) $(wildcard src/*/*.h)
OBJECTS := $(SOURCES:.cpp=.o)

PLATFORM = $(shell uname)
ifneq ("$(wildcard /etc/os-release)","")
PLATFORM = $(shell . /etc/os-release && echo $$NAME)
endif

#override platform selection on RPi:
ifneq ("$(wildcard /opt/vc/include/bcm_host.h)","")
    PLATFORM = Raspbian GNU/Linux
endif

#$(info Platform ${PLATFORM}) 

INCLUDES += -Isrc/ -Iinclude/ 
CFLAGS += -Wall -O3 -std=c++11 -fpermissive

ifeq ($(PLATFORM),Raspbian GNU/Linux)
CFLAGS += -DGLM_FORCE_CXX98 -DPLATFORM_RPI -fno-strict-aliasing 
INCLUDES += -I$(SDKSTAGE)/opt/vc/include/ \
			-I$(SDKSTAGE)/opt/vc/include/interface/vcos/pthreads \
			-I$(SDKSTAGE)/opt/vc/include/interface/vmcs_host/linux
LDFLAGS += -L$(SDKSTAGE)/opt/vc/lib/ \
			-lGLESv2 -lEGL \
			-lbcm_host \
			-lpthread

else ifeq ($(shell uname),Linux)
CFLAGS += -DPLATFORM_LINUX $(shell pkg-config --cflags  glu gl) 
LDFLAGS += $(shell pkg-config --libs  glu gl x11 xrandr xi xxf86vm xcursor xinerama xrender xext xdamage) -lpthread -ldl 

else ifeq ($(PLATFORM),Darwin)
CXX = /usr/bin/clang++
ARCH = -arch x86_64
CFLAGS += $(ARCH) -DPLATFORM_OSX -stdlib=libc++ $(shell pkg-config --cflags glfw3)
INCLUDES += -I/Library/Frameworks/GLUI.framework
LDFLAGS += $(ARCH) -framework OpenGL -framework Cocoa -framework CoreVideo -framework IOKit $(shell pkg-config --libs glfw3)

endif

all: $(EXE)

%.o: %.cpp
	@echo $@
	$(CXX) $(CFLAGS) $(INCLUDES) $(INC) $(LOC_LIB) $(SYS_LIB) -g -c $< -o $@ -Wno-deprecated-declarations

$(EXE): $(OBJECTS) $(HEADERS)
	$(CXX) $(CFLAGS) $(OBJECTS) $(LDFLAGS) $(INC) $(LOC_LIB) $(SYS_LIB) -rdynamic -o $@

clean:
	@rm -rvf $(EXE) src/*.o src/*/*.o include/*/*.o *.dSYM

install:
	@cp $(EXE) /usr/local/bin
	@cp bin/glslLoader /usr/local/bin

uninstall:
	@rm /usr/local/$(EXE)
	@rm /usr/local/bin/glslLoader
