#################################################################################
#	Desmsd, MOEA with added diversity in descision space			#
#										#
#    Copyright (C) 2008  Matthias Jung (matthias.jung@tu-dortmund.de)		#
#										#
#	This program is free software: you can redistribute it and/or modify	#
#	it under the terms of the GNU General Public License as published by	#
#	the Free Software Foundation, either version 3 of the License, or	#
#	(at your option) any later version.					#
#										#
#	This program is distributed in the hope that it will be useful,		#
#	but WITHOUT ANY WARRANTY; without even the implied warranty of		#
#	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the		#
#	GNU General Public License for more details.				#
#										#
#	You should have received a copy of the GNU General Public License	#
#	along with this program.  If not, see <http://www.gnu.org/licenses/>.	#
#										#
#################################################################################

CC = g++
CONLY = gcc
STRIP = sstrip32
LANG = C

EXTFLAGS = -Wall -Wextra -c -g
FLAGS = -Wall -Wextra -ansi -pedantic -c -g $(EXTFLAGS)
CFLAGS = -O2 -march=i686 -pipe
CPPFLAGS = -O2 -march=i686 -pipe
LDFLAGS =

OBJECT_FILES = algorithm.o cec09.o ceccwrap.o cecowrap.o cecuwrap.o cluster.o desmsp.o desmspd.o smsemoade.o desmsdu1.o desmscd.o desmsu1.o desmsc.o filehandler.o fsuite.o gde3.o gde3d.o gde3sms.o gde3smsd.o genome.o main.o nsga2.o oka2.o population.o rdtlz2.o rzdt4.o sdtlz3.o sdtlz2.o smsemoa.o sympart.o msdtlz2.o mszdt1.o mszdt2.o szdt1.o szdt2.o szdt4.o szdt6.o tester.o testfunction.o zdt4.o Hypervolume.o
HEADER_FILES = algorithm.h cec07/fsuite.h cluster/cluster.h definitions.h filehandler.h helper.h hv/Hypervolume.h main.h myrand.h testfunction.h types.h

LIBS = boost_filesystem

all:		desmsd static

static:		$(OBJECT_FILES) $(HEADER_FILES)
		$(CC) $(OBJECT_FILES) -o desmsd-static $(addprefix -l,$(LIBS)) -lm -static $(LDFLAGS)
		$(STRIP) desmsd-static

desmsd:		$(OBJECT_FILES) $(HEADER_FILES)
		$(CC) $(OBJECT_FILES) -o desmsd $(addprefix -l,$(LIBS)) -lm $(LDFLAGS)

clean:
		rm -f *.o *~ desmsd desmsd-static

algorithm.o:	algorithm.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) algorithm.cpp

assessment.o:	assessment.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) assessment.cpp

cec09.o:	cec09/cec09.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) cec09/cec09.cpp

ceccwrap.o:	ceccwrap.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) ceccwrap.cpp

cecowrap.o:	cecowrap.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) cecowrap.cpp

cecuwrap.o:	cecuwrap.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) cecuwrap.cpp

cluster.o:	cluster/cluster.c $(HEADER_FILES)
		$(CONLY) $(FLAGS) $(CFLAGS) cluster/cluster.c

desmsp.o:	desmsp.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) desmsp.cpp

desmspd.o:	desmspd.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) desmspd.cpp

smsemoade.o:	smsemoade.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) smsemoade.cpp

desmsdu1.o:	desmsdu1.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) desmsdu1.cpp

desmscd.o:	desmscd.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) desmscd.cpp

desmsu1.o:	desmsu1.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) desmsu1.cpp

desmsc.o:	desmsc.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) desmsc.cpp

filehandler.o:	filehandler.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) filehandler.cpp

fsuite.o:	cec07/fsuite.c $(HEADER_FILES)
		$(CONLY) $(EXTFLAGS) $(CFLAGS) cec07/fsuite.c

gde3.o:		gde3.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) gde3.cpp

gde3d.o:	gde3d.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) gde3d.cpp

gde3sms.o:	gde3sms.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) gde3sms.cpp

gde3smsd.o:	gde3smsd.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) gde3smsd.cpp

genome.o:	genome.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) genome.cpp

Hypervolume.o:	hv/Hypervolume.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) hv/Hypervolume.cpp

main.o:		main.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) main.cpp

nsga2.o:	nsga2.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) nsga2.cpp

oka2.o:		oka2.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) oka2.cpp

population.o:	population.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) population.cpp

rdtlz2.o:	rdtlz2.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) rdtlz2.cpp

rzdt4.o:	rzdt4.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) rzdt4.cpp

sdtlz2.o:	sdtlz2.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) sdtlz2.cpp

sdtlz3.o:	sdtlz3.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) sdtlz3.cpp

smsemoa.o:	smsemoa.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) smsemoa.cpp

sympart.o:	sympart.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) sympart.cpp

msdtlz2.o:	msdtlz2.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) msdtlz2.cpp

mszdt1.o:	mszdt1.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) mszdt1.cpp

mszdt2.o:	mszdt1.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) mszdt2.cpp

szdt1.o:	szdt1.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) szdt1.cpp

szdt2.o:	szdt2.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) szdt2.cpp

szdt4.o:	szdt4.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) szdt4.cpp

szdt6.o:	szdt6.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) szdt6.cpp

tester.o:	tester.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) tester.cpp

testfunction.o:	testfunction.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) testfunction.cpp

zdt4.o:		zdt4.cpp $(HEADER_FILES)
		$(CC) $(FLAGS) $(CPPFLAGS) zdt4.cpp
