##
## 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/

PATH_LIBRARY_HEADER = header/
PATH_LIBRARY_TINYXML = external_lib/


CFLAGS = -pipe -Wall $(RELEASE)
INCPATH = -I$(PATH_LIBRARY_HEADER) -I$(PATH_LIBRARY_TINYXML)

GPP = g++ 
LIB = $(H)library.h


TINYXML = external_lib/tinyXml/

EXEC = skinning_banane
LINKLIB =  -lm -lglut32 -lglu32 -lopengl32

1 = main
2 = V_3D
3 = int_vector
4 = Mesh
5 = File_parser
6 = Matrix
7 = Joint
8 = OpenGL_drawer
9 = Navigator_tool
10 = Animation_transformation
11 = Skeleton
12 = Skinned
13 = Curve_3D
14 = subdivision
15 = double_vector



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  $(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 $(LIB)
	@echo --------- build [$(1)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(SRC)$(1).cpp -o $(OBJ)$(1).o
	@echo OK [$(1)]
	@echo

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

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

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

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

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

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

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

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

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

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

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

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

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

$(OBJ)$(15).o: $(SRC)$(15).cpp $(LIB)
	@echo --------- build [$(15)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(SRC)$(15).cpp -o $(OBJ)$(15).o
	@echo OK [$(15)]
	@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

