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()