
RELEASE = -O3

OBJ = junk/
JUNK = junk/

SRC = src/
H = header/

EXTERNAL_SRC=external/src/
EXTERNAL_INCLUDE=external/include/


CFLAGS = -pipe -Wall -Wextra
INCPATH = -I${H} -I${EXTERNAL_INCLUDE}

GPP = g++ 
EXEC = projet_cpe

LINKLIB =  -lm -lGL -lGLU -lglut 


F01=main
F02=v3
F03=v4
F04=matrix3
F05=quaternion
F06=string_helper
F07=trackball
F08=navigator_tool
F09=glut_helper
F10=texture


EVERYTHING = $(OBJ)$(F01).o $(OBJ)$(F02).o $(OBJ)$(F03).o $(OBJ)$(F04).o $(OBJ)$(F05).o $(OBJ)$(F06).o $(OBJ)$(F07).o $(OBJ)$(F08).o $(OBJ)$(F09).o $(OBJ)$(F10).o


all: $(EXEC)


$(EXEC): $(EVERYTHING)
	@echo 
	@echo ================ [LINKAGE ...]  ================ 
	@echo

	$(GPP) $(EVERYTHING) -o $(EXEC) $(LINKLIB)
	@echo
	@echo [OK]
	@echo 
	@echo ================ [progam compiled succesfully] ================ 
	@echo


$(OBJ)$(F01).o: $(SRC)$(F01).cpp
	@echo --------- build [$(1)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(SRC)$(F01).cpp -o $(OBJ)$(F01).o
	@echo OK [$(F01)]
	@echo

$(OBJ)$(F02).o: $(EXTERNAL_SRC)$(F02).cpp $(EXTERNAL_INCLUDE)$(F02).hpp
	@echo --------- build [$(F02)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F02).cpp -o $(OBJ)$(F02).o
	@echo OK [$(F02)]
	@echo

$(OBJ)$(F03).o: $(EXTERNAL_SRC)$(F03).cpp $(EXTERNAL_INCLUDE)$(F03).hpp
	@echo --------- build [$(F03)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F03).cpp -o $(OBJ)$(F03).o
	@echo OK [$(F03)]
	@echo


$(OBJ)$(F04).o: $(EXTERNAL_SRC)$(F04).cpp $(EXTERNAL_INCLUDE)$(F04).hpp
	@echo --------- build [$(F04)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F04).cpp -o $(OBJ)$(F04).o
	@echo OK [$(F04)]
	@echo

$(OBJ)$(F05).o: $(EXTERNAL_SRC)$(F05).cpp $(EXTERNAL_INCLUDE)$(F05).hpp
	@echo --------- build [$(F05)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F05).cpp -o $(OBJ)$(F05).o
	@echo OK [$(F05)]
	@echo

$(OBJ)$(F06).o: $(EXTERNAL_SRC)$(F06).cpp $(EXTERNAL_INCLUDE)$(F06).hpp
	@echo --------- build [$(F06)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F06).cpp -o $(OBJ)$(F06).o
	@echo OK [$(F06)]
	@echo

$(OBJ)$(F07).o: $(EXTERNAL_SRC)$(F07).cpp $(EXTERNAL_INCLUDE)$(F07).hpp
	@echo --------- build [$(F07)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F07).cpp -o $(OBJ)$(F07).o
	@echo OK [$(F07)]
	@echo

$(OBJ)$(F08).o: $(EXTERNAL_SRC)$(F08).cpp $(EXTERNAL_INCLUDE)$(F08).hpp
	@echo --------- build [$(F08)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F08).cpp -o $(OBJ)$(F08).o
	@echo OK [$(F08)]
	@echo

$(OBJ)$(F09).o: $(EXTERNAL_SRC)$(F09).cpp $(EXTERNAL_INCLUDE)$(F09).hpp
	@echo --------- build [$(F09)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F09).cpp -o $(OBJ)$(F09).o
	@echo OK [$(F09)]
	@echo

$(OBJ)$(F10).o: $(EXTERNAL_SRC)$(F10).cpp $(EXTERNAL_INCLUDE)$(F10).hpp
	@echo --------- build [$(F10)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(EXTERNAL_SRC)$(F10).cpp -o $(OBJ)$(F10).o
	@echo OK [$(F10)]
	@echo


clean:
	rm -f *~ *.o $(OBJ)*.o $(SRC)*~ $(H)*~ *# $(H)*# $(SRC)*# 
	@echo
	@echo cleaning done
	@echo

