#########################################################################
#
# C/C++ module Makefile for 2D Dynamic mesh encoder/decoder
# University of Rochester
# Peter Van Beek, Wed Nov  4 13:28:39 1998
#
#########################################################################

########## General definitions ##########################################

# Suggest gcc on Sun; cc on SGI
CC 			= gcc
# CC 			= cc
# Suggest g++ on Sun; CC on SGI
CCC			= g++
# CCC			= CC

MV 			= /usr/bin/mv -f
RM 			= /usr/bin/rm -f
ARFLAGS		= cr


########## Module definitions ###########################################

PROJECT		= 	meshobject

TARGET		= 	../lib/lib$(PROJECT).a

SOURCES		= 	linkClass.cpp \
				listClass.cpp \
				pointClass.cpp \
				polyClass.cpp \
				triRefClass.cpp \
				triTessClass.cpp \
				delaunay.cpp \
				queueClass.cpp \
				bitstrm.cpp \
				huffman.cpp

OBJECTS		= 	$(TARGET)(linkClass.o) \
				$(TARGET)(listClass.o) \
				$(TARGET)(pointClass.o) \
				$(TARGET)(polyClass.o) \
				$(TARGET)(triRefClass.o) \
				$(TARGET)(triTessClass.o) \
				$(TARGET)(delaunay.o) \
				$(TARGET)(queueClass.o) \
				$(TARGET)(bitstrm.o) \
				$(TARGET)(huffman.o)


PROGRAMS 	= 	mesh_decode  mesh_encode  mesh_enc_anim

INC			= 	-I.

LIBS		= 	-lm 

CCFLAGS		= 	$(INC) -O

CFLAGS		= 	$(INC) -O 


.PRECIOUS: $(TARGET)
.KEEP_STATE:



########## Targets #########################################

# General targets 

$(PROJECT): $(TARGET)
	@echo "Done making $(PROJECT)"

$(TARGET): $(OBJECTS)
	$(AR) $(ARFLAGS) $@ *.o
	$(RM) *.o
	@echo library updated
	@echo "________________ Done making $(TARGET) _________________"
	@echo " "


$(TARGET)(linkClass.o): linkClass.cpp
	$(CCC) -c $(CCFLAGS) -o linkClass.o linkClass.cpp

$(TARGET)(listClass.o): listClass.cpp
	$(CCC) -c $(CCFLAGS) -o listClass.o listClass.cpp

$(TARGET)(pointClass.o): pointClass.cpp
	$(CCC) -c $(CCFLAGS) -o pointClass.o pointClass.cpp

$(TARGET)(polyClass.o): polyClass.cpp
	$(CCC) -c $(CCFLAGS) -o polyClass.o polyClass.cpp

$(TARGET)(triRefClass.o): triRefClass.cpp
	$(CCC) -c $(CCFLAGS) -o triRefClass.o triRefClass.cpp

$(TARGET)(triTessClass.o): triTessClass.cpp
	$(CCC) -c $(CCFLAGS) -o triTessClass.o triTessClass.cpp

$(TARGET)(queueClass.o): queueClass.cpp
	$(CCC) -c $(CCFLAGS) -o queueClass.o queueClass.cpp

$(TARGET)(delaunay.o): delaunay.cpp
	$(CCC) -c $(CCFLAGS) -o delaunay.o delaunay.cpp

$(TARGET)(bitstrm.o): bitstrm.cpp
	$(CCC) -c $(CCFLAGS) -o bitstrm.o bitstrm.cpp

$(TARGET)(huffman.o): huffman.cpp
	$(CCC) -c $(CCFLAGS) -o huffman.o huffman.cpp


# Program targets

all: $(TARGET) $(PROGRAMS)
	@echo "Done making all"


mesh_encode: $(TARGET) mesh_encode.cpp
	$(CCC) $(CCFLAGS) -DVISUAL_ENCODER -DDPRINTING -o mesh_encode mesh_encode.cpp $(TARGET) $(LIBS)
	@echo "Done making mesh_encode"
	@echo " "

mesh_decode: $(TARGET) mesh_decode.cpp
	$(CCC) $(CCFLAGS) -DVISUAL_DECODER -DDPRINTING -o mesh_decode mesh_decode.cpp $(TARGET) $(LIBS)
	@echo "Done making mesh_decode"
	@echo " "

mesh_enc_anim: $(TARGET) mesh_encode.cpp mesh_decode.cpp
	$(CCC) $(CCFLAGS) -DDPRINTING -o mesh_enc_anim mesh_encode.cpp $(TARGET) $(LIBS)
	@echo "Done making mesh_enc_anim"
	@echo " "

# Cleanup targets

clean:
	$(RM) core *.o
	@echo "Done cleaning"

cleaner:
	$(RM) core *.o $(PROGRAMS)
	@echo "Done cleaning"

realclean:
	$(RM) core *.o $(PROGRAMS) $(TARGET) 
	@echo "Done cleaning"

 
############################################################
