########################################################################
# SGA - A C++ library to help develop Simple Genetic Algorithms        #
# Copyright (C) 2005 Dorival M. Pedroso                                #
#                                                                      #
# 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    #
# 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/>  #
########################################################################

INCLUDE(${SGA_SOURCE_DIR}/Modules/FindSFMT.cmake)
INCLUDE(${SGA_SOURCE_DIR}/Modules/FindDSFMT.cmake)
INCLUDE(${SGA_SOURCE_DIR}/Modules/FindFLTK.cmake)
INCLUDE(${SGA_SOURCE_DIR}/Modules/FindMPICXX.cmake)
INCLUDE(${SGA_SOURCE_DIR}/Modules/FindATLAS.cmake)

SET(RND_LIBS "")

IF(SFMT_FOUND)
	SET(RND_LIBS  ${RND_LIBS} sfmt)
ENDIF(SFMT_FOUND)

IF(DSFMT_FOUND)
	SET(RND_LIBS  ${RND_LIBS} dsfmt)
ENDIF(DSFMT_FOUND)

IF(FLTK_FOUND)
	ADD_EXECUTABLE        (tfltk1 tfltk1.cpp)
	ADD_EXECUTABLE        (tfltk2 tfltk2.cpp)
	TARGET_LINK_LIBRARIES (tfltk1 ${FLTK_LIBRARIES})
	TARGET_LINK_LIBRARIES (tfltk2 ${FLTK_LIBRARIES})
ENDIF(FLTK_FOUND)

IF(SFMT_FOUND AND FLTK_FOUND)
	ADD_EXECUTABLE        (tplot1    tplot1.cpp)
	ADD_EXECUTABLE        (tplot2    tplot2.cpp)
	ADD_EXECUTABLE        (ttriangle ttriangle.cpp)
	TARGET_LINK_LIBRARIES (tplot1                         ${FLTK_LIBRARIES})
	TARGET_LINK_LIBRARIES (tplot2    ${RND_LIBS}          ${FLTK_LIBRARIES})
	TARGET_LINK_LIBRARIES (ttriangle ${RND_LIBS} triangle ${FLTK_LIBRARIES})
ENDIF(SFMT_FOUND AND FLTK_FOUND)

IF(SFMT_FOUND)
	ADD_EXECUTABLE        (tsfmt    tsfmt.cpp  )
	ADD_EXECUTABLE        (trandom  trandom.cpp)
	TARGET_LINK_LIBRARIES (tsfmt    ${RND_LIBS})
	TARGET_LINK_LIBRARIES (trandom  ${RND_LIBS})
ENDIF(SFMT_FOUND)

IF(SFMT_FOUND AND DSFMT_FOUND)
	ADD_EXECUTABLE        (tdsfmt   tdsfmt.cpp )
	ADD_EXECUTABLE        (tboth    tboth.cpp  )
	TARGET_LINK_LIBRARIES (tdsfmt   ${RND_LIBS})
	TARGET_LINK_LIBRARIES (tboth    ${RND_LIBS})
ENDIF(SFMT_FOUND AND DSFMT_FOUND)

IF(SFMT_FOUND AND MPICXX_FOUND)
	ADD_EXECUTABLE        (tsga1  tsga1.cpp  )
	ADD_EXECUTABLE        (tsga2  tsga2.cpp  )
	TARGET_LINK_LIBRARIES (tsga1  ${RND_LIBS})
	TARGET_LINK_LIBRARIES (tsga2  ${RND_LIBS})
ENDIF(SFMT_FOUND AND MPICXX_FOUND)

IF(SFMT_FOUND AND MPICXX_FOUND AND FLTK_FOUND AND ATLAS_FOUND)
	SET(CMAKE_CXX_COMPILER ${MPICXX})
	ADD_EXECUTABLE        (tcircles  tcircles.cpp)
	TARGET_LINK_LIBRARIES (tcircles  triangle ${RND_LIBS} ${FLTK_LIBRARIES} ${ATLAS_LIBRARIES})
ENDIF(SFMT_FOUND AND MPICXX_FOUND AND FLTK_FOUND AND ATLAS_FOUND)

IF(ATLAS_FOUND)
	ADD_EXECUTABLE        (ttruss1 ttruss1.cpp)
	TARGET_LINK_LIBRARIES (ttruss1 triangle ${ATLAS_LIBRARIES})
ENDIF(ATLAS_FOUND)

IF(FLTK_FOUND AND ATLAS_FOUND)
	ADD_EXECUTABLE        (ttruss2 ttruss2.cpp)
	TARGET_LINK_LIBRARIES (ttruss2 triangle ${FLTK_LIBRARIES} ${ATLAS_LIBRARIES})
ENDIF(FLTK_FOUND AND ATLAS_FOUND)
