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

CLIENT_TARGET=Client
SERVER_TARGET=Server
SOURCE= \
	Util/Half/half.cpp \
	Util/XPlatform.cpp \
	Util/ChannelConverter.cpp \
	Util/BaseMultiStreamIO.cpp \
	Util/CmdLineParser.cpp \
	Util/JPEGStream.cpp \
	Util/MultiStreamIO.cpp \
	Util/PGMStream.cpp \
	Util/PNGStream.cpp \
	Util/TIFFStream.cpp \
	Util/BMPStream.cpp \
	Util/GridStream.cpp \
	Util/PFMStream.cpp \
	Util/KROStream.cpp \
	Util/Socket.cpp \
	Util/Time.cpp


CLIENT_SOURCE=$(SOURCE) ClientSocket/ClientSocket.cpp
SERVER_SOURCE=$(SOURCE) ServerSocket/ServerSocket.cpp


CFLAGS += -fpermissive -fopenmp -Wno-deprecated -msse2
LFLAGS += -lgomp -lz -lpng -ltiff -ljpeg -lboost_thread -lboost_system -lpthread

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++

##CLIENT_OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(CLIENT_SOURCE))))
##SERVER_OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(SERVER_SOURCE))))
CLIENT_OBJECTS=$(addprefix $(BIN_O), $(addsuffix .o, $(basename $(CLIENT_SOURCE))))
SERVER_OBJECTS=$(addprefix $(BIN_O), $(addsuffix .o, $(basename $(SERVER_SOURCE))))

all: CFLAGS += $(CFLAGS_DEBUG)
all: LFLAGS += $(LFLAGS_DEBUG)
all: $(BIN)$(CLIENT_TARGET)
all: $(BIN)$(SERVER_TARGET)

release: CFLAGS += $(CFLAGS_RELEASE)
release: LFLAGS += $(LFLAGS_RELEASE)
release: $(BIN)$(CLIENT_TARGET)
release: $(BIN)$(SERVER_TARGET)

clean:
	rm -f $(BIN)$(CLIENT_TARGET)
	rm -f $(BIN)$(SERVER_TARGET)
	rm -f $(CLIENT_OBJECTS)
	rm -f $(SERVER_OBJECTS)

$(BIN)$(CLIENT_TARGET): $(CLIENT_OBJECTS)
	$(CXX) -o $@ $(CLIENT_OBJECTS) $(LFLAGS)

$(BIN)$(SERVER_TARGET): $(SERVER_OBJECTS)
	$(CXX) -o $@ $(SERVER_OBJECTS) $(LFLAGS)

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

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

