# /********************************************************************************************
# * File:		Makefile
# * Author:		$LastChangedBy: matthew $
# * Revision:	$Revision: 233 $
# * Last Updated:	$LastChangedDate: 2006-11-10 15:03:28 -0500 (Fri, 10 Nov 2006) $
# ********************************************************************************************/

SPHERICAL_GD_TARGET=SphericalGradientDomainProcessing
SOR_WAVE_TARGET=SoRWaveVisualization
SOR_FLOW_TARGET=SoRFlowVisualization

SPHERICAL_GD_SOURCE=SphericalGradientDomainProcessing/SphericalGradientDomainProcessing.cpp
SOR_WAVE_SOURCE=SoRWaveVisualization/SoRWaveVisualization.cpp Visualization/glew.c
SOR_FLOW_SOURCE=SoRFlowVisualization/SoRFlowVisualization.cpp Visualization/glew.c


CFLAGS += -fpermissive -fopenmp -Wno-deprecated -Wno-unused-result -msse2 -std=c++11
LFLAGS += -lgomp -lz -lpng -ltiff -ljpeg -lpthread -lGL -lGLU -lfftw3 -lfftw3f -lglut

CFLAGS_DEBUG = -DDEBUG -g3
LFLAGS_DEBUG =

CFLAGS_RELEASE = -O3 -DRELEASE -funroll-loops -ffast-math
LFLAGS_RELEASE = -O3 

SRC = ./
BIN = Bin/
BIN_O = ./
INCLUDE = /usr/include/ -I.

CC=gcc
CXX=g++
MD=mkdir

SPHERICAL_GD_OBJECTS=$(addprefix $(BIN_O), $(addsuffix .o, $(basename $(SPHERICAL_GD_SOURCE))))
SOR_WAVE_OBJECTS=$(addprefix $(BIN_O), $(addsuffix .o, $(basename $(SOR_WAVE_SOURCE))))
SOR_FLOW_OBJECTS=$(addprefix $(BIN_O), $(addsuffix .o, $(basename $(SOR_FLOW_SOURCE))))

all: CFLAGS += $(CFLAGS_DEBUG)
all: LFLAGS += $(LFLAGS_DEBUG)
all: $(BIN)
all: $(BIN)$(SPHERICAL_GD_TARGET)
all: $(BIN)$(SOR_WAVE_TARGET)
all: $(BIN)$(SOR_FLOW_TARGET)

release: CFLAGS += $(CFLAGS_RELEASE)
release: LFLAGS += $(LFLAGS_RELEASE)
release: $(BIN)
release: $(BIN)$(SPHERICAL_GD_TARGET)
release: $(BIN)$(SOR_WAVE_TARGET)
release: $(BIN)$(SOR_FLOW_TARGET)

clean:
	rm -f $(BIN)$(SPHERICAL_GD_TARGET)
	rm -f $(BIN)$(SOR_WAVE_TARGET)
	rm -f $(BIN)$(SOR_FLOW_TARGET)
	rm -f $(SPHERICAL_GD_OBJECTS)
	rm -f $(SOR_WAVE_OBJECTS)
	rm -f $(SOR_FLOW_OBJECTS)

$(BIN):
	$(MD) -p $(BIN)

$(BIN)$(SPHERICAL_GD_TARGET): $(SPHERICAL_GD_OBJECTS)
	$(CXX) -o $@ $(SPHERICAL_GD_OBJECTS) $(LFLAGS)

$(BIN)$(SOR_WAVE_TARGET): $(SOR_WAVE_OBJECTS)
	$(CXX) -o $@ $(SOR_WAVE_OBJECTS) $(LFLAGS)

$(BIN)$(SOR_FLOW_TARGET): $(SOR_FLOW_OBJECTS)
	$(CXX) -o $@ $(SOR_FLOW_OBJECTS) $(LFLAGS)

$(BIN_O)%.o: $(SRC)%.c
	$(CC) -c -o $@ $(CFLAGS) -I$(INCLUDE) $<

$(BIN_O)%.o: $(SRC)%.cpp
	$(CXX) -c -o $@ $(CFLAGS) -I$(INCLUDE) $<


