COMPILER=g++
FLAGS=-g -I. -pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused
#FLAGS=-g -I.
#FLAGS=-I.
O_DIR=obj

CLASS_DIR=src/class
INTER_DIR=src/interface
SYS_DIR=src/system

OBJ_CMD=$(COMPILER) $(FLAGS) -c $< -o $@

.PHONY : clean

version002 : main002.o character.o player.o monster.o battle.o creation.o info.o betatest.o memory.o flag.o base64.o
	$(COMPILER) $(FLAGS) -o $@ \
		main002.o \
		character.o player.o monster.o \
		info.o creation.o battle.o \
		betatest.o flag.o memory.o \
		base64.o

main002.o : main002.cpp $(CLASS_DIR)/player.hpp $(INTER_DIR)/creation.hpp $(INTER_DIR)/info.hpp $(SYS_DIR)/betatest.hpp 
	$(OBJ_CMD)

character.o :  $(CLASS_DIR)/character.cpp $(CLASS_DIR)/character.hpp
	$(OBJ_CMD)

player.o : $(CLASS_DIR)/player.cpp $(CLASS_DIR)/player.hpp $(CLASS_DIR)/character.hpp
	$(OBJ_CMD)

monster.o : $(CLASS_DIR)/monster.cpp $(CLASS_DIR)/monster.hpp $(CLASS_DIR)/character.hpp
	$(OBJ_CMD)

battle.o : $(INTER_DIR)/battle.cpp $(INTER_DIR)/battle.hpp $(CLASS_DIR)/monster.hpp $(CLASS_DIR)/character.hpp
	$(OBJ_CMD)

creation.o : $(INTER_DIR)/creation.cpp $(INTER_DIR)/creation.hpp $(CLASS_DIR)/player.hpp $(INTER_DIR)/info.hpp
	$(OBJ_CMD)

info.o : $(INTER_DIR)/info.cpp $(INTER_DIR)/info.hpp $(CLASS_DIR)/player.hpp $(CLASS_DIR)/character.hpp $(CLASS_DIR)/monster.hpp 
	$(OBJ_CMD)

betatest.o : $(SYS_DIR)/betatest.cpp $(SYS_DIR)/betatest.hpp
	$(OBJ_CMD)

flag.o : $(SYS_DIR)/flag.cpp $(SYS_DIR)/flag.hpp
	$(OBJ_CMD)

memory.o : $(SYS_DIR)/memory.cpp $(SYS_DIR)/memory.hpp $(CLASS_DIR)/player.hpp cpp-base64/base64.h
	$(OBJ_CMD)

base64.o : cpp-base64/base64.cpp cpp-base64/base64.h
	$(COMPILER) -I. -c $< -o $@

clean :
	rm -f *.o