CMakeLists.txt
branch1.1
changeset 683 f1909b4c38d6
parent 681 9c7639f3a741
child 742 16d466589b54
     1.1 --- a/CMakeLists.txt	Thu May 28 16:59:51 2009 +0100
     1.2 +++ b/CMakeLists.txt	Mon Jun 01 17:49:43 2009 +0100
     1.3 @@ -1,24 +1,39 @@
     1.4  CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
     1.5  
     1.6 -IF(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
     1.7 -  INCLUDE(${CMAKE_SOURCE_DIR}/cmake/version.cmake)
     1.8 -ELSE(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
     1.9 -  SET(PROJECT_NAME "LEMON")
    1.10 -  SET(PROJECT_VERSION "hg-tip" CACHE STRING "LEMON version string.")
    1.11 -ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
    1.12 +SET(PROJECT_NAME "LEMON")
    1.13 +PROJECT(${PROJECT_NAME})
    1.14  
    1.15 -PROJECT(${PROJECT_NAME})
    1.16 +IF(EXISTS ${PROJECT_SOURCE_DIR}/cmake/version.cmake)
    1.17 +  INCLUDE(${PROJECT_SOURCE_DIR}/cmake/version.cmake)
    1.18 +ELSEIF(DEFINED ENV{LEMON_VERSION})
    1.19 +  SET(LEMON_VERSION $ENV{LEMON_VERSION} CACHE STRING "LEMON version string.")
    1.20 +ELSE()
    1.21 +  EXECUTE_PROCESS(
    1.22 +    COMMAND hg id -i
    1.23 +    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    1.24 +    OUTPUT_VARIABLE HG_REVISION
    1.25 +    ERROR_QUIET
    1.26 +    OUTPUT_STRIP_TRAILING_WHITESPACE
    1.27 +  )
    1.28 +  IF(HG_REVISION STREQUAL "")
    1.29 +    SET(HG_REVISION "hg-tip")
    1.30 +  ENDIF()
    1.31 +  SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.")
    1.32 +ENDIF()
    1.33 +
    1.34 +SET(PROJECT_VERSION ${LEMON_VERSION})
    1.35  
    1.36  SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
    1.37  
    1.38 -INCLUDE(FindDoxygen)
    1.39 -INCLUDE(FindGhostscript)
    1.40 +FIND_PACKAGE(Doxygen)
    1.41 +FIND_PACKAGE(Ghostscript)
    1.42  FIND_PACKAGE(GLPK 4.33)
    1.43  FIND_PACKAGE(CPLEX)
    1.44  FIND_PACKAGE(COIN)
    1.45  
    1.46  INCLUDE(CheckTypeSize)
    1.47 -CHECK_TYPE_SIZE("long long" LEMON_LONG_LONG)
    1.48 +CHECK_TYPE_SIZE("long long" LONG_LONG)
    1.49 +SET(LEMON_HAVE_LONG_LONG ${HAVE_LONG_LONG})
    1.50  
    1.51  ENABLE_TESTING()
    1.52  
    1.53 @@ -28,73 +43,88 @@
    1.54    ADD_SUBDIRECTORY(tools)
    1.55    ADD_SUBDIRECTORY(doc)
    1.56    ADD_SUBDIRECTORY(test)
    1.57 -ENDIF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
    1.58 +ENDIF()
    1.59  
    1.60 -IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
    1.61 -  IF(WIN32)
    1.62 -    SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
    1.63 -    SET(CPACK_PACKAGE_VENDOR "EGRES")
    1.64 -    SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
    1.65 -      "LEMON - Library for Efficient Modeling and Optimization in Networks")
    1.66 -    SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
    1.67 +CONFIGURE_FILE(
    1.68 +  ${PROJECT_SOURCE_DIR}/cmake/LEMONConfig.cmake.in
    1.69 +  ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    1.70 +  @ONLY
    1.71 +)
    1.72 +IF(UNIX)
    1.73 +  INSTALL(
    1.74 +    FILES ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    1.75 +    DESTINATION share/lemon/cmake
    1.76 +  )
    1.77 +ELSEIF(WIN32)
    1.78 +  INSTALL(
    1.79 +    FILES ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
    1.80 +    DESTINATION cmake
    1.81 +  )
    1.82 +ENDIF()
    1.83  
    1.84 -    SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    1.85 +IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} AND WIN32)
    1.86 +  SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
    1.87 +  SET(CPACK_PACKAGE_VENDOR "EGRES")
    1.88 +  SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
    1.89 +    "LEMON - Library for Efficient Modeling and Optimization in Networks")
    1.90 +  SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
    1.91  
    1.92 -    SET(CPACK_PACKAGE_INSTALL_DIRECTORY
    1.93 -      "${PROJECT_NAME} ${PROJECT_VERSION}")
    1.94 -    SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
    1.95 -      "${PROJECT_NAME} ${PROJECT_VERSION}")
    1.96 +  SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    1.97  
    1.98 -    SET(CPACK_COMPONENTS_ALL headers library html_documentation bin)
    1.99 +  SET(CPACK_PACKAGE_INSTALL_DIRECTORY
   1.100 +    "${PROJECT_NAME} ${PROJECT_VERSION}")
   1.101 +  SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
   1.102 +    "${PROJECT_NAME} ${PROJECT_VERSION}")
   1.103  
   1.104 -    SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ headers")
   1.105 -    SET(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "Dynamic-link library")
   1.106 -    SET(CPACK_COMPONENT_BIN_DISPLAY_NAME "Command line utilities")
   1.107 -    SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DISPLAY_NAME "HTML documentation")
   1.108 +  SET(CPACK_COMPONENTS_ALL headers library html_documentation bin)
   1.109  
   1.110 -    SET(CPACK_COMPONENT_HEADERS_DESCRIPTION
   1.111 -      "C++ header files")
   1.112 -    SET(CPACK_COMPONENT_LIBRARY_DESCRIPTION
   1.113 -      "DLL and import library")
   1.114 -    SET(CPACK_COMPONENT_BIN_DESCRIPTION
   1.115 -      "Command line utilities")
   1.116 -    SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DESCRIPTION
   1.117 -      "Doxygen generated documentation")
   1.118 +  SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ headers")
   1.119 +  SET(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "Dynamic-link library")
   1.120 +  SET(CPACK_COMPONENT_BIN_DISPLAY_NAME "Command line utilities")
   1.121 +  SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DISPLAY_NAME "HTML documentation")
   1.122  
   1.123 -    SET(CPACK_COMPONENT_HEADERS_DEPENDS library)
   1.124 +  SET(CPACK_COMPONENT_HEADERS_DESCRIPTION
   1.125 +    "C++ header files")
   1.126 +  SET(CPACK_COMPONENT_LIBRARY_DESCRIPTION
   1.127 +    "DLL and import library")
   1.128 +  SET(CPACK_COMPONENT_BIN_DESCRIPTION
   1.129 +    "Command line utilities")
   1.130 +  SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DESCRIPTION
   1.131 +    "Doxygen generated documentation")
   1.132  
   1.133 -    SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
   1.134 -    SET(CPACK_COMPONENT_LIBRARY_GROUP "Development")
   1.135 -    SET(CPACK_COMPONENT_HTML_DOCUMENTATION_GROUP "Documentation")
   1.136 +  SET(CPACK_COMPONENT_HEADERS_DEPENDS library)
   1.137  
   1.138 -    SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
   1.139 -      "Components needed to develop software using LEMON")
   1.140 -    SET(CPACK_COMPONENT_GROUP_DOCUMENTATION_DESCRIPTION
   1.141 -      "Documentation of LEMON")
   1.142 +  SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
   1.143 +  SET(CPACK_COMPONENT_LIBRARY_GROUP "Development")
   1.144 +  SET(CPACK_COMPONENT_HTML_DOCUMENTATION_GROUP "Documentation")
   1.145  
   1.146 -    SET(CPACK_ALL_INSTALL_TYPES Full Developer)
   1.147 +  SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
   1.148 +    "Components needed to develop software using LEMON")
   1.149 +  SET(CPACK_COMPONENT_GROUP_DOCUMENTATION_DESCRIPTION
   1.150 +    "Documentation of LEMON")
   1.151  
   1.152 -    SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
   1.153 -    SET(CPACK_COMPONENT_LIBRARY_INSTALL_TYPES Developer Full)
   1.154 -    SET(CPACK_COMPONENT_HTML_DOCUMENTATION_INSTALL_TYPES Full)
   1.155 +  SET(CPACK_ALL_INSTALL_TYPES Full Developer)
   1.156  
   1.157 -    SET(CPACK_GENERATOR "NSIS")
   1.158 -    SET(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis/lemon.ico")
   1.159 -    SET(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}/cmake/nsis/uninstall.ico")
   1.160 -    #SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis\\\\installer.bmp")
   1.161 -    SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\lemon.ico")
   1.162 -    SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
   1.163 -    SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lemon.cs.elte.hu")
   1.164 -    SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lemon.cs.elte.hu")
   1.165 -    SET(CPACK_NSIS_CONTACT "lemon-user@lemon.cs.elte.hu")
   1.166 -    SET(CPACK_NSIS_CREATE_ICONS_EXTRA "
   1.167 -      CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\index.html\\\"
   1.168 -      ")
   1.169 -    SET(CPACK_NSIS_DELETE_ICONS_EXTRA "
   1.170 -      !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
   1.171 -      Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation.lnk\\\"
   1.172 -      ")
   1.173 +  SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
   1.174 +  SET(CPACK_COMPONENT_LIBRARY_INSTALL_TYPES Developer Full)
   1.175 +  SET(CPACK_COMPONENT_HTML_DOCUMENTATION_INSTALL_TYPES Full)
   1.176  
   1.177 -    INCLUDE(CPack)
   1.178 -  ENDIF(WIN32)
   1.179 -ENDIF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
   1.180 +  SET(CPACK_GENERATOR "NSIS")
   1.181 +  SET(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis/lemon.ico")
   1.182 +  SET(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}/cmake/nsis/uninstall.ico")
   1.183 +  #SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis\\\\installer.bmp")
   1.184 +  SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\lemon.ico")
   1.185 +  SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
   1.186 +  SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lemon.cs.elte.hu")
   1.187 +  SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lemon.cs.elte.hu")
   1.188 +  SET(CPACK_NSIS_CONTACT "lemon-user@lemon.cs.elte.hu")
   1.189 +  SET(CPACK_NSIS_CREATE_ICONS_EXTRA "
   1.190 +    CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\index.html\\\"
   1.191 +    ")
   1.192 +  SET(CPACK_NSIS_DELETE_ICONS_EXTRA "
   1.193 +    !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
   1.194 +    Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation.lnk\\\"
   1.195 +    ")
   1.196 +
   1.197 +  INCLUDE(CPack)
   1.198 +ENDIF()