
SHELL = /bin/sh
CXX = g++
CXXFLAGS = -std=c++11 -g -ggdb3 -Wall \
	-Iinclude \
	-I/usr/include/SDL2 \
	-Iext/stb_libs
EXAMPLEDIR = examples
OBJDIR = build
SRCDIR = src
LIBNAME = libTangerine.a

RENDER_SOURCES = $(wildcard $(SRCDIR)/*.cpp)
RENDER_OBJECTS = $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(RENDER_SOURCES))

# NOTE: target to automatically build a current release of assimp. Fixes
# 	issue on Fedora where the default assimp version doesn't support glTF2
ASSIMP_DIR=ext/assimp

ifeq ($(USE_INTERNAL_ASSIMP), y)
CXXFLAGS += -I$(ASSIMP_DIR)/include -I$(ASSIMP_DIR)/build/include
ASSIMP_LIB := $(ASSIMP_DIR)/build/code/libassimp.a
CLEAN_ASSIMP_TARGET := $(MAKE) -C $(ASSIMP_DIR)/build clean
endif


all: mkdirs $(LIBNAME)
ifeq ($(USE_INTERNAL_ASSIMP), y)
	$(MAKE) $(ASSIMP_LIB)
endif
	$(MAKE) examples
.PHONY: all

-include $(OBJDIR)/*.d

$(ASSIMP_LIB):
	@if [ ! -d $(ASSIMP_DIR) ]; then	\
		git clone -n "https://github.com/assimp/assimp" $(ASSIMP_DIR); \
		cd $(ASSIMP_DIR); \
		git checkout -q v5.0.1; \
	fi

	cmake -S $(ASSIMP_DIR) -B $(ASSIMP_DIR)/build \
		-DBUILD_SHARED_LIBS=OFF \
		-DASSIMP_BUILD_TOOLS=OFF -DASSIMP_BUILD_TESTS=OFF \
		-DASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT=OFF \
		-DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=OFF \
		-DASSIMP_BUILD_GLTF_IMPORTER=ON ./
	$(MAKE) -C $(ASSIMP_DIR)/build

mkdirs:
	@mkdir -p $(OBJDIR)
.PHONY: mkdirs

$(LIBNAME): $(RENDER_OBJECTS)
	ar -crsuU $(OBJDIR)/$(LIBNAME) $(RENDER_OBJECTS)

$(RENDER_OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
	$(CXX) $(CXXFLAGS) -c -MMD $< -o $@

examples:
	ASSIMP_DIR=$(ASSIMP_DIR) $(MAKE) -C $(EXAMPLEDIR)
.PHONY: examples

clean:
	rm -rf $(OBJDIR)/*
	$(MAKE) clean -C $(EXAMPLEDIR)
	$(CLEAN_ASSIMP_TARGET)
.PHONY: clean
