##
## makefile
##  

RELEASE = -O3

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

PATH_EXTERNAL_LIB = external_lib/
PATH_LIB_1=lib_1/
PATH_LIB_2=lib_2/
PATH_LIB_3=lib_3/
TINYXML = external_lib/tinyXml/


CFLAGS = -pipe -Wall -W -g -D_REENTRANT  -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT

INCPATH = -I/usr/share/qt3/mkspecs/default -I. -I.. -I/usr/include/qt3 -I/usr/X11R6/include -I/usr/X11R6/include -I./$(PATH_EXTERNAL_LIB) -I./$(PATH_LIB_1)$(H) -I./$(PATH_LIB_2)$(H) -I./$(PATH_LIB_3)$(H)

LIBS     = $(SUBLIBS) -L/usr/share/qt3/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -L.. -lCoin -lSoQt -lqt-mt -lGLU -lGL -lXmu -lXext -lX11 -lm -lpthread

EXEC = skinning_banane

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



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)

GPP = g++

all: $(EXEC)

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

$(OBJ)$(15).o: $(PATH_LIB_3)$(SRC)$(15).cpp $(PATH_LIB_3)$(H)$(15).h
	@echo --------- build [$(15)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(PATH_LIB_3)$(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 *.obj *.off *.pov *.dat
	@echo
	@echo cleaning done
	@echo