CMakeLists.txt
author Dmitriy Morozov <dmitriy@mrzv.org>
Mon, 12 Jan 2009 15:33:04 -0800
branchdev
changeset 109 75eb7a4628f2
parent 105 051af83fba4c
child 111 958dec48d946
permissions -rw-r--r--
Debugged ZigzagPersistence (having added heavier consistency checking) * Added DEBUG_CONTAINERS option (uses std::__debug::* containers for chains and in ZigzagPersistence) * Added SizeStorage specialization for std::deque<T> * ZigzagPersistence got a lot more consistency checking (in debug mode only, which now crawls); as a result it's been debugged (running on non-trivial examples) * examples/rips/rips-zigzag takes command-line options * added ChainWrapper::clear() * added Simplex::VertexDimensionComparison * added PairwiseDistances class (for computing distances between points in a container according to a distance functor)

project                     (Dionysus)
cmake_minimum_required      (VERSION 2.4)

option                      (logging            "Build Dionysus with logging on"        OFF)
option                      (counters           "Build Dionysus with counters on"       OFF)
option                      (debug              "Build Dionysus with debugging on"      OFF)
option                      (optimize           "Build Dionysus with optimization"      ON)
option                      (use_dsrpdb         "Build examples that use DSR-PDB"       OFF)
option                      (use_synaps         "Build examples that use SYNAPS"        OFF)

# Find everything that's always required
find_package                (Boost REQUIRED COMPONENTS program_options python serialization signals)
find_package                (Doxygen)
if                          (use_dsrpdb)
    find_library            (dsrpdb_LIBRARY             NAMES dsrpdb)
    find_path               (dsrpdb_INCLUDE_DIR         dsrpdb/Protein.h)
endif                       (use_dsrpdb)

#CGAL
execute_process             (COMMAND ${CMAKE_MAKE_PROGRAM} -f ${CMAKE_CURRENT_SOURCE_DIR}/FindCGAL.Makefile libpaths
                             OUTPUT_VARIABLE cgal_libpaths)
execute_process             (COMMAND ${CMAKE_MAKE_PROGRAM} -f ${CMAKE_CURRENT_SOURCE_DIR}/FindCGAL.Makefile ldflags
                             OUTPUT_VARIABLE cgal_ldflags)
execute_process             (COMMAND ${CMAKE_MAKE_PROGRAM} -f ${CMAKE_CURRENT_SOURCE_DIR}/FindCGAL.Makefile cxxflags
                             OUTPUT_VARIABLE cgal_cxxflags)
execute_process             (COMMAND ${CMAKE_MAKE_PROGRAM} -f ${CMAKE_CURRENT_SOURCE_DIR}/FindCGAL.Makefile libpath
                             OUTPUT_VARIABLE cgal_libpath)
#string                     (REPLACE "\n" "" cgal_libpaths  ${cgal_libpaths})
#string                     (REPLACE "\n" "" cgal_ldflags   ${cgal_ldflags})
string                      (REPLACE "\n" "" cgal_cxxflags  ${cgal_cxxflags})
string                      (REPLACE "\n" "" cgal_libpath   ${cgal_libpath})
find_library                (cgal_LIBRARY               NAMES CGAL
                                                        PATHS ${cgal_libpath})
find_library                (core_LIBRARY               NAMES CGALcore++
                                                        PATHS ${cgal_libpath})
find_library                (mpfr_LIBRARY               NAMES mpfr)
find_library                (gmp_LIBRARY                NAMES gmp)
find_library                (gmpxx_LIBRARY              NAMES gmpxx)
find_library                (m_LIBRARY                  NAMES m)

set                         (cgal_libraries             ${cgal_LIBRARY} 
                                                        ${core_LIBRARY}
                                                        ${mpfr_LIBRARY} 
                                                        ${gmp_LIBRARY} 
                                                        ${gmpxx_LIBRARY} 
                                                        ${m_LIBRARY})
add_definitions             (-DCGAL_NO_ASSERTIONS -DCGAL_NO_PRECONDITIONS)

# SYNAPS
if                          (use_synaps)
    add_definitions         (-DBOOST_UBLAS_TYPE_CHECK=0)
    find_library            (synaps_LIBRARY             NAMES synaps)
    set                     (synaps_libraries           ${synaps_LIBRARY}
                                                        ${gmp_LIBRARY}
                                                        ${gmpxx_LIBRARY})
endif                       (use_synaps)

# Debugging
if                          (debug)
    if                      (optimize)
            set             (cxx_flags                  ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
    else                    (optimize)
            set             (cxx_flags                  ${CMAKE_CXX_FLAGS_DEBUG})
    endif                   (optimize)
else                        (debug)
    if                      (optimize)
            set             (cxx_flags                  ${CMAKE_CXX_FLAGS_RELEASE})
    else                    (optimize)
            set             (cxx_flags                  ${CMAKE_CXX_FLAGS})
    endif                   (optimize)
endif                       (debug)
add_definitions             (${cxx_flags})

# Logging
if                          (logging)
    find_library            (rlog_LIBRARY               NAMES rlog)
    find_path               (rlog_INCLUDE_DIR           rlog/rlog.h)
    set                     (rlog_INCLUDE_DIR           ${rlog_INCLUDE_DIR})
    add_definitions         (-DLOGGING -DRLOG_COMPONENT=dionysus)
    set                     (libraries                  ${libraries} ${rlog_LIBRARY})
endif                       (logging)

# Counters
if                          (counters)
    add_definitions         (-DCOUNTERS)
endif                       (counters)


# Set includes
include_directories         (${CMAKE_CURRENT_BINARY_DIR}
                             ${CMAKE_CURRENT_SOURCE_DIR}/include
                             ${Boost_INCLUDE_DIR}
                             ${dsrpdb_INCLUDE_DIR}
                             ${cwd_INCLUDE_DIR}
                             ${rlog_INCLUDE_DIR})

# Doxygen (FIXME)
if                          (DOXYGEN_FOUND)
#   add_custom_target       (docs ALL 
#                           ${DOXYGEN_EXECUTABLE} Doxyfile
#                           DEPENDS Doxyfile)
endif                       (DOXYGEN_FOUND)

# Process subdirectories
add_subdirectory            (examples)
add_subdirectory            (tests)
add_subdirectory            (tools)
add_subdirectory            (bindings)