CMakeLists.txt
author Peter Kovacs <kpeter@inf.elte.hu>
Tue, 24 Mar 2009 00:18:25 +0100
changeset 604 8c3112a66878
parent 518 8668e1b5dafb
child 549 ba659d676331
permissions -rw-r--r--
Use XTI implementation instead of ATI in NetworkSimplex (#234)

XTI (eXtended Threaded Index) is an imporved version of the widely
known ATI (Augmented Threaded Index) method for storing and updating
the spanning tree structure in Network Simplex algorithms.

In the ATI data structure three indices are stored for each node:
predecessor, thread and depth. In the XTI data structure depth is
replaced by the number of successors and the last successor
(according to the thread index).
     1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
     2 
     3 IF(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
     4   INCLUDE(${CMAKE_SOURCE_DIR}/cmake/version.cmake)
     5 ELSE(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
     6   SET(PROJECT_NAME "LEMON")
     7   SET(PROJECT_VERSION "hg-tip" CACHE STRING "LEMON version string.")
     8 ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
     9 
    10 PROJECT(${PROJECT_NAME})
    11 
    12 SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
    13 
    14 INCLUDE(FindDoxygen)
    15 INCLUDE(FindGhostscript)
    16 FIND_PACKAGE(GLPK 4.33)
    17 
    18 ADD_DEFINITIONS(-DHAVE_CONFIG_H)
    19 
    20 IF(MSVC)
    21   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4250 /wd4355 /wd4800 /wd4996")
    22 # Suppressed warnings:
    23 # C4250: 'class1' : inherits 'class2::member' via dominance
    24 # C4355: 'this' : used in base member initializer list
    25 # C4800: 'type' : forcing value to bool 'true' or 'false' (performance warning)
    26 # C4996: 'function': was declared deprecated
    27 ENDIF(MSVC)
    28 
    29 IF(GLPK_FOUND)
    30   SET(HAVE_LP TRUE)
    31   SET(HAVE_MIP TRUE)
    32   SET(HAVE_GLPK TRUE)
    33 ENDIF(GLPK_FOUND)
    34 
    35 INCLUDE(CheckTypeSize)
    36 CHECK_TYPE_SIZE("long long" LONG_LONG)
    37 
    38 ENABLE_TESTING()
    39 
    40 ADD_SUBDIRECTORY(lemon)
    41 ADD_SUBDIRECTORY(demo)
    42 ADD_SUBDIRECTORY(tools)
    43 ADD_SUBDIRECTORY(doc)
    44 ADD_SUBDIRECTORY(test)
    45 
    46 IF(WIN32)
    47   SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
    48   SET(CPACK_PACKAGE_VENDOR "EGRES")
    49   SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
    50     "LEMON - Library of Efficient Models and Optimization in Networks")
    51   SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
    52 
    53   SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    54 
    55   SET(CPACK_PACKAGE_INSTALL_DIRECTORY
    56     "${PROJECT_NAME} ${PROJECT_VERSION}")
    57   SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
    58     "${PROJECT_NAME} ${PROJECT_VERSION}")
    59 
    60   SET(CPACK_COMPONENTS_ALL headers library html_documentation bin)
    61 
    62   SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ headers")
    63   SET(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "Dynamic-link library")
    64   SET(CPACK_COMPONENT_BIN_DISPLAY_NAME "Command line utilities")
    65   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DISPLAY_NAME "HTML documentation")
    66 
    67   SET(CPACK_COMPONENT_HEADERS_DESCRIPTION
    68     "C++ header files")
    69   SET(CPACK_COMPONENT_LIBRARY_DESCRIPTION
    70     "DLL and import library")
    71   SET(CPACK_COMPONENT_BIN_DESCRIPTION
    72     "Command line utilities")
    73   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DESCRIPTION
    74     "Doxygen generated documentation")
    75 
    76   SET(CPACK_COMPONENT_HEADERS_DEPENDS library)
    77 
    78   SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
    79   SET(CPACK_COMPONENT_LIBRARY_GROUP "Development")
    80   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_GROUP "Documentation")
    81 
    82   SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
    83     "Components needed to develop software using LEMON")
    84   SET(CPACK_COMPONENT_GROUP_DOCUMENTATION_DESCRIPTION
    85     "Documentation of LEMON")
    86 
    87   SET(CPACK_ALL_INSTALL_TYPES Full Developer)
    88 
    89   SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
    90   SET(CPACK_COMPONENT_LIBRARY_INSTALL_TYPES Developer Full)
    91   SET(CPACK_COMPONENT_HTML_DOCUMENTATION_INSTALL_TYPES Full)
    92 
    93   SET(CPACK_GENERATOR "NSIS")
    94   SET(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/cmake/nsis/lemon.ico")
    95   SET(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}/cmake/nsis/uninstall.ico")
    96   #SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/cmake/nsis\\\\installer.bmp")
    97   SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\lemon.ico")
    98   SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
    99   SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lemon.cs.elte.hu")
   100   SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lemon.cs.elte.hu")
   101   SET(CPACK_NSIS_CONTACT "lemon-user@lemon.cs.elte.hu")
   102   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "
   103     CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\index.html\\\"
   104     ")
   105   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "
   106     !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
   107     Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation.lnk\\\"
   108     ")
   109 
   110   INCLUDE(CPack)
   111 ENDIF(WIN32)