CMakeLists.txt
author Peter Kovacs <kpeter@inf.elte.hu>
Fri, 03 Apr 2009 18:59:15 +0200
changeset 608 6ac5d9ae1d3d
parent 518 8668e1b5dafb
child 549 ba659d676331
permissions -rw-r--r--
Support real types + numerical stability fix in NS (#254)

- Real types are supported by appropriate inicialization.
- A feature of the XTI spanning tree structure is removed to ensure
numerical stability (could cause problems using integer types).
The node potentials are updated always on the lower subtree,
in order to prevent overflow problems.
The former method isn't notably faster during to our tests.
     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)