#***************************************************************************/
#**    Author: Sam Way                                                     */
#**    Date: 1/1/2012                                                      */
#**    Description: Makefile for "nSpect"                                  */
#***************************************************************************/

#default cmdline flags

#***************************************************************************/

EXEC     = nSpect 
CXX      = g++
CXXFLAGS = -O3 -funroll-loops -Wall
LDFLAGS	= -framework OpenGL -framework GLUT
OBJS     = Main.o Parms.o DistanceMatrix.o nSpectUpdateThread.o nSpectSecondaryUpdateThread.o nSpectDisplayThread.o nSpectVisualizer.o 
SOURCE   = Main.cpp Parms.cpp DistanceMatrix.cpp nSpectUpdateThread.cpp nSpectSecondaryUpdateThread.cpp nSpectDisplayThread.cpp nSpectVisualizer.cpp

#***************************************************************************/

# Default is MacOS, check if the user prefers Linux. 
UNAME := $(shell uname)
ifeq ($(UNAME), Linux)
	LDFLAGS	= -lGL -lglut -lGLU
endif

#***************************************************************************/

${EXEC}: ${OBJS} ${SOURCE}
	${CXX} ${CXXFLAGS} ${OBJS} ${LDFLAGS} -o ${EXEC} 

Main.o: Main.cpp Globals.h Parms.h DistanceMatrix.h nSpectVisualizer.h
	${CXX} -c ${CXXFLAGS} Main.cpp

Parms.o: Parms.cpp Globals.h Parms.h
	${CXX} -c ${CXXFLAGS} Parms.cpp

DistanceMatrix.o: DistanceMatrix.cpp Globals.h Parms.h DistanceMatrix.h
	${CXX} -c ${CXXFLAGS} DistanceMatrix.cpp

nSpectVisualizer.o: nSpectVisualizer.cpp Globals.h Parms.h DistanceMatrix.h nSpectUpdateThread.h nSpectDisplayThread.h nSpectVisualizer.h
	${CXX} -c ${CXXFLAGS} nSpectVisualizer.cpp

nSpectUpdateThread.o: nSpectUpdateThread.cpp Globals.h Parms.h DistanceMatrix.h nSpectVisualizer.h nSpectUpdateThread.h
	${CXX} -c ${CXXFLAGS} nSpectUpdateThread.cpp

nSpectSecondaryUpdateThread.o: nSpectSecondaryUpdateThread.cpp Globals.h Parms.h DistanceMatrix.h nSpectVisualizer.h nSpectSecondaryUpdateThread.h
	${CXX} -c ${CXXFLAGS} nSpectSecondaryUpdateThread.cpp

nSpectDisplayThread.o: nSpectDisplayThread.cpp Globals.h Parms.h DistanceMatrix.h nSpectVisualizer.h nSpectDisplayThread.h
	${CXX} -c ${CXXFLAGS} nSpectDisplayThread.cpp

clean:
	rm -rf *.o ${EXEC}
