
GCC_FLAGS = -Wall -Werror -g -rdynamic -I./yaml-cpp/include 

LINKER_FLAGS = -L./yaml-cpp -lassimp -lyaml-cpp -lpng -ltiff -llua5.4 -ldl

SRC_FILES = main.cpp $(shell find src/ -type f -name '*.cpp')

OBJ_FILES =	$(patsubst %.cpp, build/%.o, $(SRC_FILES))

LUA_SRC_FILES = $(shell find lua/ -type f -name '*.lua')

LUA_OBJ_FILES =	$(patsubst %.lua, build/%.o, $(LUA_SRC_FILES))

DEPS = $(patsubst %.cpp, build/%.d, $(SRC_FILES))

.PHONY: default
default: skeletool64

-include $(DEPS)

build/lua/%.o: lua/%.lua
	@mkdir -p $(@D)
	luac5.4 -o $(@:%.o=%.out) $<
	ld -r -b binary -o $@ $(@:%.o=%.out)

build/%.o: %.cpp
	@mkdir -p $(@D)
	g++ $(GCC_FLAGS) -c $< -o $@
	$(CC) $(GCC_FLAGS) -MM $^ -MF "$(@:.o=.d)" -MT"$@"

skeletool64: $(OBJ_FILES) $(LUA_OBJ_FILES)
	g++ -g -o skeletool64 $(OBJ_FILES) $(LUA_OBJ_FILES) $(LINKER_FLAGS)

clean:
	rm -rf build/
	rm -f skeletool64
	rm -f *.zip*
	rm -rf CImg-*
	rm -rf cimg
	@$(MAKE) -C yaml-cpp clean

init:
	

install: skeletool64
	cp skeletool64 ~/.local/bin

build/skeletool.deb: skeletool64 control
	mkdir build/skeletool/usr/local/bin -p
	cp skeletool64 build/skeletool/usr/local/bin
	mkdir build/skeletool/DEBIAN -p
	cp control build/skeletool/DEBIAN
	dpkg-deb --build build/skeletool

docs:
	ldoc .
