CMakeLists.txt
author Peter Kovacs <kpeter@inf.elte.hu>
Thu, 12 Nov 2009 23:26:13 +0100
changeset 806 fa6f37d7a25b
parent 680 257e91516e09
child 897 e20fecd1945f
child 964 2b6bffe0e7e8
permissions -rw-r--r--
Entirely rework CapacityScaling (#180)

- Use the new interface similarly to NetworkSimplex.
- Rework the implementation using an efficient internal structure
for handling the residual network. This improvement made the
code much faster (up to 2-5 times faster on large graphs).
- Handle GEQ supply type (LEQ is not supported).
- Handle negative costs for arcs of finite capacity.
(Note that this algorithm cannot handle arcs of negative cost
and infinite upper bound, thus it returns UNBOUNDED if such
an arc exists.)
- Extend the documentation.
     1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
     2 
     3 SET(PROJECT_NAME "LEMON")
     4 PROJECT(${PROJECT_NAME})
     5 
     6 IF(EXISTS ${PROJECT_SOURCE_DIR}/cmake/version.cmake)
     7   INCLUDE(${PROJECT_SOURCE_DIR}/cmake/version.cmake)
     8 ELSEIF(DEFINED ENV{LEMON_VERSION})
     9   SET(LEMON_VERSION $ENV{LEMON_VERSION} CACHE STRING "LEMON version string.")
    10 ELSE()
    11   EXECUTE_PROCESS(
    12     COMMAND hg id -i
    13     WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    14     OUTPUT_VARIABLE HG_REVISION
    15     ERROR_QUIET
    16     OUTPUT_STRIP_TRAILING_WHITESPACE
    17   )
    18   IF(HG_REVISION STREQUAL "")
    19     SET(HG_REVISION "hg-tip")
    20   ENDIF()
    21   SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.")
    22 ENDIF()
    23 
    24 SET(PROJECT_VERSION ${LEMON_VERSION})
    25 
    26 SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
    27 
    28 FIND_PACKAGE(Doxygen)
    29 FIND_PACKAGE(Ghostscript)
    30 FIND_PACKAGE(GLPK 4.33)
    31 FIND_PACKAGE(CPLEX)
    32 FIND_PACKAGE(COIN)
    33 
    34 INCLUDE(CheckTypeSize)
    35 CHECK_TYPE_SIZE("long long" LONG_LONG)
    36 SET(LEMON_HAVE_LONG_LONG ${HAVE_LONG_LONG})
    37 
    38 INCLUDE(FindPythonInterp)
    39 
    40 ENABLE_TESTING()
    41 
    42 ADD_SUBDIRECTORY(lemon)
    43 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
    44   ADD_SUBDIRECTORY(demo)
    45   ADD_SUBDIRECTORY(tools)
    46   ADD_SUBDIRECTORY(doc)
    47   ADD_SUBDIRECTORY(test)
    48 ENDIF()
    49 
    50 CONFIGURE_FILE(
    51   ${PROJECT_SOURCE_DIR}/cmake/LEMONConfig.cmake.in
    52   ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    53   @ONLY
    54 )
    55 IF(UNIX)
    56   INSTALL(
    57     FILES ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    58     DESTINATION share/lemon/cmake
    59   )
    60 ELSEIF(WIN32)
    61   INSTALL(
    62     FILES ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    63     DESTINATION cmake
    64   )
    65 ENDIF()
    66 
    67 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} AND WIN32)
    68   SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
    69   SET(CPACK_PACKAGE_VENDOR "EGRES")
    70   SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
    71     "LEMON - Library for Efficient Modeling and Optimization in Networks")
    72   SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
    73 
    74   SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    75 
    76   SET(CPACK_PACKAGE_INSTALL_DIRECTORY
    77     "${PROJECT_NAME} ${PROJECT_VERSION}")
    78   SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
    79     "${PROJECT_NAME} ${PROJECT_VERSION}")
    80 
    81   SET(CPACK_COMPONENTS_ALL headers library html_documentation bin)
    82 
    83   SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ headers")
    84   SET(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "Dynamic-link library")
    85   SET(CPACK_COMPONENT_BIN_DISPLAY_NAME "Command line utilities")
    86   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DISPLAY_NAME "HTML documentation")
    87 
    88   SET(CPACK_COMPONENT_HEADERS_DESCRIPTION
    89     "C++ header files")
    90   SET(CPACK_COMPONENT_LIBRARY_DESCRIPTION
    91     "DLL and import library")
    92   SET(CPACK_COMPONENT_BIN_DESCRIPTION
    93     "Command line utilities")
    94   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DESCRIPTION
    95     "Doxygen generated documentation")
    96 
    97   SET(CPACK_COMPONENT_HEADERS_DEPENDS library)
    98 
    99   SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
   100   SET(CPACK_COMPONENT_LIBRARY_GROUP "Development")
   101   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_GROUP "Documentation")
   102 
   103   SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
   104     "Components needed to develop software using LEMON")
   105   SET(CPACK_COMPONENT_GROUP_DOCUMENTATION_DESCRIPTION
   106     "Documentation of LEMON")
   107 
   108   SET(CPACK_ALL_INSTALL_TYPES Full Developer)
   109 
   110   SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
   111   SET(CPACK_COMPONENT_LIBRARY_INSTALL_TYPES Developer Full)
   112   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_INSTALL_TYPES Full)
   113 
   114   SET(CPACK_GENERATOR "NSIS")
   115   SET(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis/lemon.ico")
   116   SET(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}/cmake/nsis/uninstall.ico")
   117   #SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis\\\\installer.bmp")
   118   SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\lemon.ico")
   119   SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
   120   SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lemon.cs.elte.hu")
   121   SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lemon.cs.elte.hu")
   122   SET(CPACK_NSIS_CONTACT "lemon-user@lemon.cs.elte.hu")
   123   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "
   124     CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\index.html\\\"
   125     ")
   126   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "
   127     !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
   128     Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation.lnk\\\"
   129     ")
   130 
   131   INCLUDE(CPack)
   132 ENDIF()