### This Makefile is part of the tutorial of the EO library
# Unlike other Makefiles in EO, it is not using the automake/autoconf
# so that it stays easy to understant (you are in the tutorial, remember!)
# MS, Oct. 2002

# if you use this Makefile as a starting point for another application
# you might need to modify the following
DIR_EO = ../../src

.SUFFIXES: .cpp

# Warning: $(CXX) in Linux (RedHat and Mandrake at least) is g++
# However, if you are using this Makefile within xemacs,
# and have problems with the interpretation of the output (and its colors)
# then you should use c++ instead (make CXX=c++ will do)

.cpp: ; $(CXX)  -DPACKAGE=\"eo\" -DVERSION=\"0.9.3\" -I. -I$(DIR_EO) -Wall -g -o $@  $*.cpp $(DIR_EO)/utils/libeoutils.a $(DIR_EO)/libeo.a

.cpp.o: ; $(CXX) -DPACKAGE=\"eo\" -DVERSION=\"0.9.3\" -I. -I$(DIR_EO) -Wall -g -c $*.cpp

# local sources
COMMON_SOURCES =    eoOneMax.h \
   eoOneMaxEvalFunc.h \
   eoOneMaxInit.h \
   eoOneMaxMutation.h \
   eoOneMaxQuadCrossover.h \
   make_genotype_OneMax.h \
   make_op_OneMax.h

NO_LIB_SOURCES = OneMaxEA.cpp

LIB_SOURCES = OneMaxLibEA.cpp make_OneMax.cpp


SOURCES = $(COMMON_SOURCES) OneMaxEA.cpp OneMaxLibEA.cpp make_OneMax.cpp

LIB_EO = $(DIR_EO)/utils/libeoutils.a $(DIR_EO)/libeo.a

ALL = OneMaxEA OneMaxLibEA

OneMaxEA : OneMaxEA.o
	$(CXX) -g -o $@ OneMaxEA.o $(DIR_EO)/utils/libeoutils.a $(DIR_EO)/libeo.a -lm

OneMaxLibEA : OneMaxLibEA.o make_OneMax.o
	$(CXX) -g -o $@ OneMaxLibEA.o make_OneMax.o $(DIR_EO)/utils/libeoutils.a $(DIR_EO)/libeo.a -lm

tar : ; tar czvf OneMax.tgz *.h *.cpp Makefile

all : $(ALL)

clean : ; /bin/rm  *.o $(ALL)

########## local dependencies
OneMaxEA.o : $(COMMON_SOURCES) OneMaxEA.cpp
OneMaxLibEA.o : $(COMMON_SOURCES) OneMaxLibEA.cpp
make_OneMax.o : make_OneMax.cpp eoOneMax.h
