## Makfile for classical linux systems


#DIRECTORY
OBJ = junk/
JUNK = junk/
DATA = data/
SRC = src/
H = header/



#Compiler
GPP = g++

#Debug or Release
DEBUG = -g
RELEASE = -O3
EXEC_TYPE = ${RELEASE}

#Compiler options
CFLAGS = -pipe -W -Wall -Wextra -ansi -Wunused-variable -pedantic-errors ${EXEC_TYPE}

#PATH
PATH_X = 
PATH_OPENGL = 
OTHER_PATH = -I${SRC} -I${H}
INCPATH = ${PATH_X} ${PATH_OPENGL} ${OTHER_PATH}

#FLAGS
FLAGS_X = -L/usr/X11R6/lib -lX11 -lXext -lXi -lXmu
FLAGS_OPENGL = -lopengl32 -lglu32 -lglut32
OTHER_FLAGS = -lm
LDFLAGS = ${FLAGS_X} ${FLAGS_OPENGL} ${OTHER_FLAGS}

#executable name
EXEC = multires_mesh







#SRC NAME

1 = main
2 = V_3D
3 = Matrix
4 = Point_set
5 = Connectivity
6 = int_vector
7 = double_vector
8 = Vector_parameter
9 = Mesh_object
10 = OpenGL_drawer
11 = Navigator_tool
12 = Polygon
13 = Segment
14 = Triangle
15 = Mesh_object_loader
16 = Texture
17 = Drawable_mesh
18 = V_4D



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 


all: $(EXEC)

$(EXEC): $(EVERYTHING)
	@echo 
	@echo ================ [LINKAGE ...]  ================ 
	@echo
	$(GPP) $(EVERYTHING) -o $(EXEC) $(LDFLAGS)
	@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 $(H)$(2).h
	@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 $(H)$(4).h
	@echo --------- build [$(4)] ----------
	$(GPP) -c  $(CFLAGS) $(INCPATH) $(SRC)$(4).cpp -o $(OBJ)$(4).o
	@echo OK [$(4)]
	@echo

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

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

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

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

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

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

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

$(OBJ)$(12).o: $(SRC)$(12).cpp $(H)$(12).h
	@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 $(H)$(14).h
	@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








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

