CMakeLists.txt
author Balazs Dezso <deba@inf.elte.hu>
Thu, 24 Jun 2010 09:27:53 +0200
changeset 982 bb70ad62c95f
parent 726 9c7639f3a741
child 791 f8c468367dab
child 1033 16d466589b54
permissions -rw-r--r--
Fix critical bug in preflow (#372)

The wrong transition between the bound decrease and highest active
heuristics caused the bug. The last node chosen in bound decrease mode
is used in the first iteration in highest active mode.
     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 ENABLE_TESTING()
    39 
    40 ADD_SUBDIRECTORY(lemon)
    41 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
    42   ADD_SUBDIRECTORY(demo)
    43   ADD_SUBDIRECTORY(tools)
    44   ADD_SUBDIRECTORY(doc)
    45   ADD_SUBDIRECTORY(test)
    46 ENDIF()
    47 
    48 CONFIGURE_FILE(
    49   ${PROJECT_SOURCE_DIR}/cmake/LEMONConfig.cmake.in
    50   ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    51   @ONLY
    52 )
    53 IF(UNIX)
    54   INSTALL(
    55     FILES ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    56     DESTINATION share/lemon/cmake
    57   )
    58 ELSEIF(WIN32)
    59   INSTALL(
    60     FILES ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    61     DESTINATION cmake
    62   )
    63 ENDIF()
    64 
    65 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} AND WIN32)
    66   SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
    67   SET(CPACK_PACKAGE_VENDOR "EGRES")
    68   SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
    69     "LEMON - Library for Efficient Modeling and Optimization in Networks")
    70   SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
    71 
    72   SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    73 
    74   SET(CPACK_PACKAGE_INSTALL_DIRECTORY
    75     "${PROJECT_NAME} ${PROJECT_VERSION}")
    76   SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
    77     "${PROJECT_NAME} ${PROJECT_VERSION}")
    78 
    79   SET(CPACK_COMPONENTS_ALL headers library html_documentation bin)
    80 
    81   SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ headers")
    82   SET(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "Dynamic-link library")
    83   SET(CPACK_COMPONENT_BIN_DISPLAY_NAME "Command line utilities")
    84   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DISPLAY_NAME "HTML documentation")
    85 
    86   SET(CPACK_COMPONENT_HEADERS_DESCRIPTION
    87     "C++ header files")
    88   SET(CPACK_COMPONENT_LIBRARY_DESCRIPTION
    89     "DLL and import library")
    90   SET(CPACK_COMPONENT_BIN_DESCRIPTION
    91     "Command line utilities")
    92   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DESCRIPTION
    93     "Doxygen generated documentation")
    94 
    95   SET(CPACK_COMPONENT_HEADERS_DEPENDS library)
    96 
    97   SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
    98   SET(CPACK_COMPONENT_LIBRARY_GROUP "Development")
    99   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_GROUP "Documentation")
   100 
   101   SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
   102     "Components needed to develop software using LEMON")
   103   SET(CPACK_COMPONENT_GROUP_DOCUMENTATION_DESCRIPTION
   104     "Documentation of LEMON")
   105 
   106   SET(CPACK_ALL_INSTALL_TYPES Full Developer)
   107 
   108   SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
   109   SET(CPACK_COMPONENT_LIBRARY_INSTALL_TYPES Developer Full)
   110   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_INSTALL_TYPES Full)
   111 
   112   SET(CPACK_GENERATOR "NSIS")
   113   SET(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis/lemon.ico")
   114   SET(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}/cmake/nsis/uninstall.ico")
   115   #SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis\\\\installer.bmp")
   116   SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\lemon.ico")
   117   SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
   118   SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lemon.cs.elte.hu")
   119   SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lemon.cs.elte.hu")
   120   SET(CPACK_NSIS_CONTACT "lemon-user@lemon.cs.elte.hu")
   121   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "
   122     CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\index.html\\\"
   123     ")
   124   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "
   125     !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
   126     Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation.lnk\\\"
   127     ")
   128 
   129   INCLUDE(CPack)
   130 ENDIF()