]> ruin.nu Git - germs.git/blobdiff - src/CMakeLists.txt
Check for TR1 or Boost
[germs.git] / src / CMakeLists.txt
index ba506141bcee98fdf64fad862c8b639da67163a9..9bdaf401e2ed40883a3a4fe745bd729b13ad6c52 100644 (file)
@@ -1,4 +1,5 @@
-PROJECT(GeneSort)
+INCLUDE(CheckIncludeFile)
+INCLUDE(CheckIncludeFileCXX)
 
 SET(CMAKE_VERBOSE_MAKEFILE OFF)
 
@@ -9,15 +10,35 @@ ADD_DEFINITIONS(-Wall -pedantic -g)
 
 #INCLUDE(CheckCXXSourceCompiles)
 
-#CheckCXXSourceCompiles(test HAVE_TR1)
-
 INCLUDE_DIRECTORIES(.)
 ADD_LIBRARY(GeneSort geneorder genealgorithms modelidentifier genesorter model
        models componenttree)
-ADD_EXECUTABLE(genesort main.cpp)
 
-SET(GENELIBS doublefann GeneSort)
+ADD_EXECUTABLE(germs main.cpp)
+
+CHECK_INCLUDE_FILE("doublefann.h" HAVE_FANN)
+
+IF (HAVE_FANN)
+       SET(GENELIBS doublefann GeneSort)
+ELSE(HAVE_FANN)
+       INCLUDE_DIRECTORIES(. ${CMAKE_SOURCE_DIR}/fann/src/include)
+       ADD_LIBRARY(doublefann ${CMAKE_SOURCE_DIR}/fann/src/doublefann.c)
+       TARGET_LINK_LIBRARIES(GeneSort doublefann)
+       SET(GENELIBS GeneSort)
+ENDIF(HAVE_FANN)
+
+
+CHECK_INCLUDE_FILE_CXX("tr1/memory" HAVE_TR1)
+
+IF(HAVE_TR1)
+       ADD_DEFINITIONS(-DHAVE_TR1)
+ELSE(HAVE_TR1)
+       CHECK_INCLUDE_FILE_CXX("boost/shared_ptr.hpp" HAVE_BOOST)
+       IF(NOT HAVE_BOOST)
+               MESSAGE(FATAL_ERROR "Neither Boost nor TR1 found, need a shared_ptr implementation")
+       ENDIF(NOT HAVE_BOOST)
+ENDIF(HAVE_TR1)
 
-TARGET_LINK_LIBRARIES(genesort ${GENELIBS})
+TARGET_LINK_LIBRARIES(germs ${GENELIBS})
 
 SUBDIRS(test)