
RELEASE = -O3
DEBUG = -g

OBJ = junk/
JUNK = junk/

LIB_3D = lib_3D/
LIB_IMAGE = lib_image/
HEADER = header/
SRC = src/

CFLAGS = -pipe -Wall -Wextra $(DEBUG)
INCPATH = -I$(HEADER) -I$(LIB_3D)$(HEADER) -I$(LIB_IMAGE)$(HEADER)

GPP = g++ 
EXEC = tp_cpe

LINKLIB = -lm


F01=main
F02=camera
F03=light
F04=mesh
F05=mesh_io
F06=render_engine
F07=shading
F08=triangle
F09=v3
F10=vertex
F11=vertex_shader
F12=algorithm
F13=color
F14=image
F15=image_drawable
F16=image_drawable_zbuffer
F17=image_io
F18=p2d
F19=pixel_interp
F20=scanline_buffer
F21=scanline_data
F22=z_buffer
F23=exception_cpe




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 $(OBJ)$(F13).o $(OBJ)$(F14).o $(OBJ)$(F15).o $(OBJ)$(F16).o $(OBJ)$(F17).o $(OBJ)$(F18).o $(OBJ)$(F19).o $(OBJ)$(F20).o $(OBJ)$(F21).o $(OBJ)$(F22).o $(OBJ)$(F23).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: $(LIB_3D)$(SRC)$(F02).cpp $(LIB_3D)$(HEADER)$(F02).hpp
	@echo --------- build [$(F02)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(LIB_3D)$(SRC)$(F02).cpp -o $(OBJ)$(F02).o
	@echo OK [$(F02)]
	@echo

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

