##
## makefile
##  
## Made by damien
## Login   <damienortie.inrialpes.fr>
##
## Started on  Fri Feb 15 16:52:58 2008 damien
## Last update Fri Feb 15 16:52:58 2008 damien
## 


RELEASE = -O3

OBJ = junk/
JUNK = junk/
DATA_JUNK = data_junk/
SRC = src/
H = header/
EXTERNAL_LIB = external_lib/

CFLAGS = -pipe -Wall -D_REENTRANT $(RELEASE) -ansi
INCPATH = -I$(H) -I$(EXTERNAL_LIB) 

GPP = g++ 

TINYXML = external_lib/tinyXml/

EXEC = build_skeleton
LINKLIB =  -lm -lGLU -lGL -lglut -lpng -ljpeg

1 = main
2 = V_3D
3 = int_vector
4 = File_parser
5 = Matrix
6 = Joint
7 = OpenGL_drawer
8 = Navigator_tool
9 = Animation_transformation
10 = Skeleton
11 = Skinned
12 = Curve_3D
13 = double_vector
14 = Mesh_object
15 = Point_set
16 = Triangle
17 = Connectivity
18 = Segment
19 = Polygon
20 = Vector_parameter
21 = Edge
22 = Texture



DEPENDTINYXML = $(OBJ)tinyxml.o $(OBJ)tinystr.o $(OBJ)tinyxmlerror.o $(OBJ)tinyxmlparser.o 



EVERYTHING = $(OBJ)$(1).o $(OBJ)$(2).o $(OBJ)$(3).o $(OBJ)$(4).o $(OBJ)$(5).o $(OBJ)$(6).o $(OBJ)$(7).o $(OBJ)$(8).o $(OBJ)$(9).o $(OBJ)$(10).o $(OBJ)$(11).o $(OBJ)$(12).o $(OBJ)$(13).o $(OBJ)$(14).o $(OBJ)$(15).o $(OBJ)$(16).o $(OBJ)$(17).o $(OBJ)$(18).o $(OBJ)$(19).o $(OBJ)$(20).o $(OBJ)$(21).o $(OBJ)$(22).o $(DEPENDTINYXML)


all: $(EXEC)


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


















$(OBJ)tinyxml.o: $(TINYXML)tinyxml.cpp $(TINYXML)tinyxml.h
	@echo --------- build [TINY XML] ----------
	$(GPP) -c  $(CFLAGS)  $(TINYXML)tinyxml.cpp -o $(OBJ)tinyxml.o
$(OBJ)tinystr.o: $(TINYXML)tinystr.cpp $(TINYXML)tinystr.h
	$(GPP) -c  $(CFLAGS)  $(TINYXML)tinystr.cpp -o $(OBJ)tinystr.o
$(OBJ)tinyxmlerror.o: $(TINYXML)tinyxmlerror.cpp
	$(GPP) -c  $(CFLAGS)  $(TINYXML)tinyxmlerror.cpp -o $(OBJ)tinyxmlerror.o
$(OBJ)tinyxmlparser.o: $(TINYXML)tinyxmlparser.cpp
	$(GPP) -c $(CFLAGS) $(TINYXML)tinyxmlparser.cpp -o $(OBJ)tinyxmlparser.o
	@echo OK [TINY XML]
	@echo




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


memory: $(EXEC)
	valgrind --leak-check=full --show-reachable=yes --log-fd=1 ./$(EXEC) #> $(JUNK)valgrind.log
	@echo
	@echo valgrind log written in file [junk/valgrind.log]
	@echo


test: $(EXEC)
	./$(EXEC) data/banana_low.g