
RELEASE = -O3

OBJ = junk/
JUNK = junk/

SRC = src/
H = header/

EXTERNAL_SRC=external/src/



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

GPP = g++ 
EXEC = tp_cpe

LINKLIB =  -lm


F01=main
F02=image_drawable
F03=image
F04=color
F05=p2d
F06=exception_cpe
F07=v3
F08=v3_shaded
F09=mesh
F10=algorithm
F11=image_drawable_zbuffer
F12=render_engine



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 $(OBJ)$(F11).o $(OBJ)$(F12).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: $(SRC)$(F02).cpp $(H)$(F02).hpp
	@echo --------- build [$(F02)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(SRC)$(F02).cpp -o $(OBJ)$(F02).o
	@echo OK [$(F02)]
	@echo

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


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

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

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

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

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

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

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

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

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

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

