COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMakeLists.txt

    r1125 r1234  
    1313ELSE()
    1414  EXECUTE_PROCESS(
    15     COMMAND ${PYTHON_EXECUTABLE} ./scripts/chg-len.py
     15    COMMAND
     16    hg log -r. --template "{latesttag}"
    1617    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    17     OUTPUT_VARIABLE HG_REVISION_PATH
     18    OUTPUT_VARIABLE HG_REVISION_TAG
    1819    ERROR_QUIET
    1920    OUTPUT_STRIP_TRAILING_WHITESPACE
    2021  )
    2122  EXECUTE_PROCESS(
    22     COMMAND hg id -i
     23    COMMAND
     24    hg log -r. --template "{latesttagdistance}"
    2325    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    24     OUTPUT_VARIABLE HG_REVISION
     26    OUTPUT_VARIABLE HG_REVISION_DIST
    2527    ERROR_QUIET
    2628    OUTPUT_STRIP_TRAILING_WHITESPACE
    2729  )
    28   IF(HG_REVISION STREQUAL "")
     30  EXECUTE_PROCESS(
     31    COMMAND
     32    hg log -r. --template "{node|short}"
     33    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
     34    OUTPUT_VARIABLE HG_REVISION_ID
     35    ERROR_QUIET
     36    OUTPUT_STRIP_TRAILING_WHITESPACE
     37  )
     38
     39  IF(HG_REVISION_TAG STREQUAL "")
    2940    SET(HG_REVISION_ID "hg-tip")
    3041  ELSE()
    31     IF(HG_REVISION_PATH STREQUAL "")
    32       SET(HG_REVISION_ID ${HG_REVISION})
     42    IF(HG_REVISION_TAG STREQUAL "null")
     43      SET(HG_REVISION_TAG "trunk")
     44    ELSEIF(HG_REVISION_TAG MATCHES "^r")
     45      STRING(SUBSTRING ${HG_REVISION_TAG} 1 -1 HG_REVISION_TAG)
     46    ENDIF()
     47    IF(HG_REVISION_DIST STREQUAL "0")
     48      SET(HG_REVISION ${HG_REVISION_TAG})
    3349    ELSE()
    34       SET(HG_REVISION_ID ${HG_REVISION_PATH}.${HG_REVISION})
     50      SET(HG_REVISION
     51        "${HG_REVISION_TAG}+${HG_REVISION_DIST}-${HG_REVISION_ID}")
    3552    ENDIF()
    3653  ENDIF()
    37   SET(LEMON_VERSION ${HG_REVISION_ID} CACHE STRING "LEMON version string.")
     54
     55  SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.")
    3856ENDIF()
    3957
     
    4462FIND_PACKAGE(Doxygen)
    4563FIND_PACKAGE(Ghostscript)
    46 FIND_PACKAGE(GLPK 4.33)
    47 FIND_PACKAGE(CPLEX)
    48 FIND_PACKAGE(COIN)
     64
     65SET(LEMON_ENABLE_GLPK YES CACHE STRING "Enable GLPK solver backend.")
     66SET(LEMON_ENABLE_ILOG YES CACHE STRING "Enable ILOG (CPLEX) solver backend.")
     67SET(LEMON_ENABLE_COIN YES CACHE STRING "Enable COIN solver backend.")
     68
     69IF(LEMON_ENABLE_GLPK)
     70  FIND_PACKAGE(GLPK 4.33)
     71ENDIF(LEMON_ENABLE_GLPK)
     72IF(LEMON_ENABLE_ILOG)
     73  FIND_PACKAGE(ILOG)
     74ENDIF(LEMON_ENABLE_ILOG)
     75IF(LEMON_ENABLE_COIN)
     76  FIND_PACKAGE(COIN)
     77ENDIF(LEMON_ENABLE_COIN)
     78
     79IF(GLPK_FOUND)
     80  SET(LEMON_HAVE_LP TRUE)
     81  SET(LEMON_HAVE_MIP TRUE)
     82  SET(LEMON_HAVE_GLPK TRUE)
     83ENDIF(GLPK_FOUND)
     84IF(ILOG_FOUND)
     85  SET(LEMON_HAVE_LP TRUE)
     86  SET(LEMON_HAVE_MIP TRUE)
     87  SET(LEMON_HAVE_CPLEX TRUE)
     88ENDIF(ILOG_FOUND)
     89IF(COIN_FOUND)
     90  SET(LEMON_HAVE_LP TRUE)
     91  SET(LEMON_HAVE_MIP TRUE)
     92  SET(LEMON_HAVE_CLP TRUE)
     93  SET(LEMON_HAVE_CBC TRUE)
     94ENDIF(COIN_FOUND)
     95
     96IF(ILOG_FOUND)
     97  SET(DEFAULT_LP "CPLEX")
     98  SET(DEFAULT_MIP "CPLEX")
     99ELSEIF(COIN_FOUND)
     100  SET(DEFAULT_LP "CLP")
     101  SET(DEFAULT_MIP "CBC")
     102ELSEIF(GLPK_FOUND)
     103  SET(DEFAULT_LP "GLPK")
     104  SET(DEFAULT_MIP "GLPK")
     105ENDIF()
     106
     107IF(NOT LEMON_DEFAULT_LP OR
     108    (NOT ILOG_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CPLEX")) OR
     109    (NOT COIN_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CLP")) OR
     110    (NOT GLPK_FOUND AND (LEMON_DEFAULT_LP STREQUAL "GLPK")))
     111  SET(LEMON_DEFAULT_LP ${DEFAULT_LP} CACHE STRING
     112    "Default LP solver backend (GLPK, CPLEX or CLP)" FORCE)
     113ENDIF()
     114IF(NOT LEMON_DEFAULT_MIP OR
     115    (NOT ILOG_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CPLEX")) OR
     116    (NOT COIN_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CBC")) OR
     117    (NOT GLPK_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "GLPK")))
     118  SET(LEMON_DEFAULT_MIP ${DEFAULT_MIP} CACHE STRING
     119    "Default MIP solver backend (GLPK, CPLEX or CBC)" FORCE)
     120ENDIF()
     121
    49122
    50123IF(DEFINED ENV{LEMON_CXX_WARNING})
     
    74147SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LEMON_CXX_WARNING_FLAGS}")
    75148
    76 SET( CMAKE_CXX_FLAGS_MAINTAINER "-Werror -ggdb -O0" CACHE STRING
     149IF(MSVC)
     150  SET( CMAKE_CXX_FLAGS_MAINTAINER "/WX ${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING
    77151    "Flags used by the C++ compiler during maintainer builds."
    78     FORCE )
    79 SET( CMAKE_C_FLAGS_MAINTAINER "-Werror -O0" CACHE STRING
     152    )
     153  SET( CMAKE_C_FLAGS_MAINTAINER "/WX ${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING
    80154    "Flags used by the C compiler during maintainer builds."
    81     FORCE )
    82 SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER
     155    )
     156  SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER
     157    "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE STRING
     158    "Flags used for linking binaries during maintainer builds."
     159    )
     160  SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER
     161    "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE STRING
     162    "Flags used by the shared libraries linker during maintainer builds."
     163    )
     164ELSE()
     165  SET( CMAKE_CXX_FLAGS_MAINTAINER "-Werror -ggdb -O0" CACHE STRING
     166    "Flags used by the C++ compiler during maintainer builds."
     167    )
     168  SET( CMAKE_C_FLAGS_MAINTAINER "-Werror -O0" CACHE STRING
     169    "Flags used by the C compiler during maintainer builds."
     170    )
     171  SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER
    83172    "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING
    84173    "Flags used for linking binaries during maintainer builds."
    85     FORCE )
    86 SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER
     174    )
     175  SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER
    87176    "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING
    88177    "Flags used by the shared libraries linker during maintainer builds."
    89     FORCE )
     178    )
     179ENDIF()
     180
    90181MARK_AS_ADVANCED(
    91182    CMAKE_CXX_FLAGS_MAINTAINER
     
    115206SET(LEMON_HAVE_LONG_LONG ${HAVE_LONG_LONG})
    116207
     208INCLUDE(FindThreads)
     209
     210IF(NOT LEMON_THREADING)
     211  IF(CMAKE_USE_PTHREADS_INIT)
     212    SET(LEMON_THREADING "Pthread")
     213  ELSEIF(CMAKE_USE_WIN32_THREADS_INIT)
     214    SET(LEMON_THREADING "Win32")
     215  ELSE()
     216    SET(LEMON_THREADING "None")
     217  ENDIF()
     218ENDIF()
     219
     220SET( LEMON_THREADING "${LEMON_THREADING}" CACHE STRING
     221  "Choose the threading library, options are: Pthread Win32 None."
     222  FORCE )
     223
     224IF(LEMON_THREADING STREQUAL "Pthread")
     225  SET(LEMON_USE_PTHREAD TRUE)
     226ELSEIF(LEMON_THREADING STREQUAL "Win32")
     227  SET(LEMON_USE_WIN32_THREADS TRUE)
     228ENDIF()
     229
    117230ENABLE_TESTING()
    118231
     
    125238ADD_SUBDIRECTORY(lemon)
    126239IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
     240  ADD_SUBDIRECTORY(contrib)
    127241  ADD_SUBDIRECTORY(demo)
    128242  ADD_SUBDIRECTORY(tools)
     
    148262ENDIF()
    149263
     264CONFIGURE_FILE(
     265  ${PROJECT_SOURCE_DIR}/cmake/version.cmake.in
     266  ${PROJECT_BINARY_DIR}/cmake/version.cmake
     267  @ONLY
     268)
     269
     270SET(ARCHIVE_BASE_NAME ${CMAKE_PROJECT_NAME})
     271STRING(TOLOWER ${ARCHIVE_BASE_NAME} ARCHIVE_BASE_NAME)
     272SET(ARCHIVE_NAME ${ARCHIVE_BASE_NAME}-${PROJECT_VERSION})
     273ADD_CUSTOM_TARGET(dist
     274  COMMAND cmake -E remove_directory ${ARCHIVE_NAME}
     275  COMMAND hg archive ${ARCHIVE_NAME}
     276  COMMAND cmake -E copy cmake/version.cmake ${ARCHIVE_NAME}/cmake/version.cmake
     277  COMMAND tar -czf ${ARCHIVE_BASE_NAME}-nodoc-${PROJECT_VERSION}.tar.gz ${ARCHIVE_NAME}
     278  COMMAND zip -r ${ARCHIVE_BASE_NAME}-nodoc-${PROJECT_VERSION}.zip ${ARCHIVE_NAME}
     279  COMMAND cmake -E copy_directory doc/html ${ARCHIVE_NAME}/doc/html
     280  COMMAND tar -czf ${ARCHIVE_NAME}.tar.gz ${ARCHIVE_NAME}
     281  COMMAND zip -r ${ARCHIVE_NAME}.zip ${ARCHIVE_NAME}
     282  COMMAND cmake -E copy_directory doc/html ${ARCHIVE_BASE_NAME}-doc-${PROJECT_VERSION}
     283  COMMAND tar -czf ${ARCHIVE_BASE_NAME}-doc-${PROJECT_VERSION}.tar.gz ${ARCHIVE_BASE_NAME}-doc-${PROJECT_VERSION}
     284  COMMAND zip -r ${ARCHIVE_BASE_NAME}-doc-${PROJECT_VERSION}.zip ${ARCHIVE_BASE_NAME}-doc-${PROJECT_VERSION}
     285  COMMAND cmake -E remove_directory ${ARCHIVE_NAME}
     286  COMMAND cmake -E remove_directory ${ARCHIVE_BASE_NAME}-doc-${PROJECT_VERSION}
     287  DEPENDS html
     288  WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
     289
     290# CPACK config (Basically for NSIS)
    150291IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
    151292  SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
Note: See TracChangeset for help on using the changeset viewer.