# $Id: mk_ig,v 1.2 2001/03/18 18:41:57 formella Exp $

#
#  Copyright (C) 2001, Dr. Arno Formella
#                      Universidad de Vigo
#                      Departamento de Inform'atica
#

# un makefile un poco mas elaborado
# para cualquier duda o pregunta:
# http://www.ifh.de/computing/manuals/infohtml/make/make.html
# (mientras dicho enlace exista, no est'a bajo mi control)
# o a mi :-)

# donde encontrar los ficheros .h de los liberias OpenGL
INCLUDE = -I/usr/include/GL -I/usr/include/g++

# donde encontrar las librer'ias del entorno X
LIBDIR  = -L. -L/usr/X11R6/lib

# el compilador que vamos a usar
CC = g++

# unos comandos que se va a usar en lo siguiente
RM =  \rm -f    # para borrar ficheros
SH = /bin/bash  # para ejecutar comandos en un shell

# las opciones para el compilador
#   versi'on depurador y todos los mensajes de alerta habilitados
CPPFLAGS = -g -Wall $(INCLUDE)

# las librer'ias que vamos a usar en el programa:
#           las de OpenGL     las de X            matem'atica
LIBS = -g -lglut -lGL -lGLU -lXmu -lXext -lXi -lX11 -lm

# todos los ficheros .o (formato objecto) que pertenecen a nuestro proyecto
# aqu'i tenemos que a~nadir despues mas lineas cuando ampliemos el programa
# ==================================
include objs.make
# ==================================

# nuestro program se llama por defecto
BIN = ig

# este apartado nos define como crear autom'aticamente las dependencias
# necesarias usando el compilador con la opci'on -MM
# m'as concreto: un fichero .d
#                (que contiene las dependencias para un fichero .o)
#                depende del fichero .cpp correspondiente
#                y aqu'i se define como crear el dicho .d a partir del .cpp
# !!NO TE ASUSTES!! no hay por qu'e entenderlo en este curso :-)
%.d: %.cpp
	$(SH) -ec '$(CC) -MM $(CPPFLAGS) $< \
                   | sed "s/\($*\)\.o\[ :\]*/\1 $@/g" > $@'

# nuestro programa BIN depende de todos los ficheros .o (unidos en OBJS)
$(BIN): $(OBJS)
	$(CC) -o $@ $(LIBDIR) $(LIBS) $^

# si queremos limpiar un poco
clean:
	$(RM) *.o *.a *.d *~ core $(BIN)

# el truco del almendruco: un fichero .o depende de sus propias
#                          dependendias en su fichero .d correspondiente
include $(OBJS:.o=.d)

