[Lemon-commits] Alpar Juttner: Merge several CMAKE related impro...
Lemon HG
hg at lemon.cs.elte.hu
Sun Jun 7 18:32:59 CEST 2009
details: http://lemon.cs.elte.hu/hg/lemon/rev/f1909b4c38d6
changeset: 728:f1909b4c38d6
user: Alpar Juttner <alpar [at] cs.elte.hu>
date: Mon Jun 01 17:49:43 2009 +0100
description:
Merge several CMAKE related improvements
diffstat:
CMakeLists.txt | 164 ++++++++++++++++++++++++----------------
cmake/LEMONConfig.cmake.in | 13 +++
cmake/version.cmake.in | 3 +-
configure.ac | 15 ++-
demo/CMakeLists.txt | 9 +-
doc/CMakeLists.txt | 81 +++++++++----------
doc/Makefile.am | 10 +-
lemon/CMakeLists.txt | 22 +++--
lemon/config.h.cmake | 1 +
lemon/config.h.in | 3 +
test/CMakeLists.txt | 55 ++++++++-----
tools/CMakeLists.txt | 9 +-
tools/Makefile.am | 3 +
13 files changed, 229 insertions(+), 159 deletions(-)
diffs (truncated from 631 to 300 lines):
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,24 +1,39 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-IF(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
- INCLUDE(${CMAKE_SOURCE_DIR}/cmake/version.cmake)
-ELSE(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
- SET(PROJECT_NAME "LEMON")
- SET(PROJECT_VERSION "hg-tip" CACHE STRING "LEMON version string.")
-ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake)
+SET(PROJECT_NAME "LEMON")
+PROJECT(${PROJECT_NAME})
-PROJECT(${PROJECT_NAME})
+IF(EXISTS ${PROJECT_SOURCE_DIR}/cmake/version.cmake)
+ INCLUDE(${PROJECT_SOURCE_DIR}/cmake/version.cmake)
+ELSEIF(DEFINED ENV{LEMON_VERSION})
+ SET(LEMON_VERSION $ENV{LEMON_VERSION} CACHE STRING "LEMON version string.")
+ELSE()
+ EXECUTE_PROCESS(
+ COMMAND hg id -i
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ OUTPUT_VARIABLE HG_REVISION
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ IF(HG_REVISION STREQUAL "")
+ SET(HG_REVISION "hg-tip")
+ ENDIF()
+ SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.")
+ENDIF()
+
+SET(PROJECT_VERSION ${LEMON_VERSION})
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
-INCLUDE(FindDoxygen)
-INCLUDE(FindGhostscript)
+FIND_PACKAGE(Doxygen)
+FIND_PACKAGE(Ghostscript)
FIND_PACKAGE(GLPK 4.33)
FIND_PACKAGE(CPLEX)
FIND_PACKAGE(COIN)
INCLUDE(CheckTypeSize)
-CHECK_TYPE_SIZE("long long" LEMON_LONG_LONG)
+CHECK_TYPE_SIZE("long long" LONG_LONG)
+SET(LEMON_HAVE_LONG_LONG ${HAVE_LONG_LONG})
ENABLE_TESTING()
@@ -28,73 +43,88 @@
ADD_SUBDIRECTORY(tools)
ADD_SUBDIRECTORY(doc)
ADD_SUBDIRECTORY(test)
-ENDIF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
+ENDIF()
-IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
- IF(WIN32)
- SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
- SET(CPACK_PACKAGE_VENDOR "EGRES")
- SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
- "LEMON - Library for Efficient Modeling and Optimization in Networks")
- SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
+CONFIGURE_FILE(
+ ${PROJECT_SOURCE_DIR}/cmake/LEMONConfig.cmake.in
+ ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
+ @ONLY
+)
+IF(UNIX)
+ INSTALL(
+ FILES ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
+ DESTINATION share/lemon/cmake
+ )
+ELSEIF(WIN32)
+ INSTALL(
+ FILES ${PROJECT_BINARY_DIR}/cmake/LEMONConfig.cmake
+ DESTINATION cmake
+ )
+ENDIF()
- SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
+IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} AND WIN32)
+ SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
+ SET(CPACK_PACKAGE_VENDOR "EGRES")
+ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
+ "LEMON - Library for Efficient Modeling and Optimization in Networks")
+ SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
- SET(CPACK_PACKAGE_INSTALL_DIRECTORY
- "${PROJECT_NAME} ${PROJECT_VERSION}")
- SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
- "${PROJECT_NAME} ${PROJECT_VERSION}")
+ SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
- SET(CPACK_COMPONENTS_ALL headers library html_documentation bin)
+ SET(CPACK_PACKAGE_INSTALL_DIRECTORY
+ "${PROJECT_NAME} ${PROJECT_VERSION}")
+ SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
+ "${PROJECT_NAME} ${PROJECT_VERSION}")
- SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ headers")
- SET(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "Dynamic-link library")
- SET(CPACK_COMPONENT_BIN_DISPLAY_NAME "Command line utilities")
- SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DISPLAY_NAME "HTML documentation")
+ SET(CPACK_COMPONENTS_ALL headers library html_documentation bin)
- SET(CPACK_COMPONENT_HEADERS_DESCRIPTION
- "C++ header files")
- SET(CPACK_COMPONENT_LIBRARY_DESCRIPTION
- "DLL and import library")
- SET(CPACK_COMPONENT_BIN_DESCRIPTION
- "Command line utilities")
- SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DESCRIPTION
- "Doxygen generated documentation")
+ SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ headers")
+ SET(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "Dynamic-link library")
+ SET(CPACK_COMPONENT_BIN_DISPLAY_NAME "Command line utilities")
+ SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DISPLAY_NAME "HTML documentation")
- SET(CPACK_COMPONENT_HEADERS_DEPENDS library)
+ SET(CPACK_COMPONENT_HEADERS_DESCRIPTION
+ "C++ header files")
+ SET(CPACK_COMPONENT_LIBRARY_DESCRIPTION
+ "DLL and import library")
+ SET(CPACK_COMPONENT_BIN_DESCRIPTION
+ "Command line utilities")
+ SET(CPACK_COMPONENT_HTML_DOCUMENTATION_DESCRIPTION
+ "Doxygen generated documentation")
- SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
- SET(CPACK_COMPONENT_LIBRARY_GROUP "Development")
- SET(CPACK_COMPONENT_HTML_DOCUMENTATION_GROUP "Documentation")
+ SET(CPACK_COMPONENT_HEADERS_DEPENDS library)
- SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
- "Components needed to develop software using LEMON")
- SET(CPACK_COMPONENT_GROUP_DOCUMENTATION_DESCRIPTION
- "Documentation of LEMON")
+ SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
+ SET(CPACK_COMPONENT_LIBRARY_GROUP "Development")
+ SET(CPACK_COMPONENT_HTML_DOCUMENTATION_GROUP "Documentation")
- SET(CPACK_ALL_INSTALL_TYPES Full Developer)
+ SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
+ "Components needed to develop software using LEMON")
+ SET(CPACK_COMPONENT_GROUP_DOCUMENTATION_DESCRIPTION
+ "Documentation of LEMON")
- SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
- SET(CPACK_COMPONENT_LIBRARY_INSTALL_TYPES Developer Full)
- SET(CPACK_COMPONENT_HTML_DOCUMENTATION_INSTALL_TYPES Full)
+ SET(CPACK_ALL_INSTALL_TYPES Full Developer)
- SET(CPACK_GENERATOR "NSIS")
- SET(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis/lemon.ico")
- SET(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}/cmake/nsis/uninstall.ico")
- #SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis\\\\installer.bmp")
- SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\lemon.ico")
- SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
- SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lemon.cs.elte.hu")
- SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lemon.cs.elte.hu")
- SET(CPACK_NSIS_CONTACT "lemon-user at lemon.cs.elte.hu")
- SET(CPACK_NSIS_CREATE_ICONS_EXTRA "
- CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\index.html\\\"
- ")
- SET(CPACK_NSIS_DELETE_ICONS_EXTRA "
- !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
- Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation.lnk\\\"
- ")
+ SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
+ SET(CPACK_COMPONENT_LIBRARY_INSTALL_TYPES Developer Full)
+ SET(CPACK_COMPONENT_HTML_DOCUMENTATION_INSTALL_TYPES Full)
- INCLUDE(CPack)
- ENDIF(WIN32)
-ENDIF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
+ SET(CPACK_GENERATOR "NSIS")
+ SET(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis/lemon.ico")
+ SET(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}/cmake/nsis/uninstall.ico")
+ #SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/cmake/nsis\\\\installer.bmp")
+ SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\lemon.ico")
+ SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
+ SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lemon.cs.elte.hu")
+ SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lemon.cs.elte.hu")
+ SET(CPACK_NSIS_CONTACT "lemon-user at lemon.cs.elte.hu")
+ SET(CPACK_NSIS_CREATE_ICONS_EXTRA "
+ CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\index.html\\\"
+ ")
+ SET(CPACK_NSIS_DELETE_ICONS_EXTRA "
+ !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
+ Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation.lnk\\\"
+ ")
+
+ INCLUDE(CPack)
+ENDIF()
diff --git a/cmake/LEMONConfig.cmake.in b/cmake/LEMONConfig.cmake.in
new file mode 100644
--- /dev/null
+++ b/cmake/LEMONConfig.cmake.in
@@ -0,0 +1,13 @@
+SET(LEMON_INCLUDE_DIR "@CMAKE_INSTALL_PREFIX@/include" CACHE PATH "LEMON include directory")
+SET(LEMON_INCLUDE_DIRS "${LEMON_INCLUDE_DIR}")
+
+IF(UNIX)
+ SET(LEMON_LIB_NAME "libemon.a")
+ELSEIF(WIN32)
+ SET(LEMON_LIB_NAME "lemon.lib")
+ENDIF(UNIX)
+
+SET(LEMON_LIBRARY "@CMAKE_INSTALL_PREFIX@/lib/${LEMON_LIB_NAME}" CACHE FILEPATH "LEMON library")
+SET(LEMON_LIBRARIES "${LEMON_LIBRARY}")
+
+MARK_AS_ADVANCED(LEMON_LIBRARY LEMON_INCLUDE_DIR)
diff --git a/cmake/version.cmake.in b/cmake/version.cmake.in
--- a/cmake/version.cmake.in
+++ b/cmake/version.cmake.in
@@ -1,2 +1,1 @@
-SET(PROJECT_NAME "@PACKAGE_NAME@")
-SET(PROJECT_VERSION "@PACKAGE_VERSION@" CACHE STRING "LEMON version string.")
+SET(LEMON_VERSION "@PACKAGE_VERSION@" CACHE STRING "LEMON version string.")
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -2,14 +2,17 @@
dnl Version information.
m4_define([lemon_version_number],
- [m4_normalize(esyscmd([echo ${LEMON_VERSION}]))])
+ [m4_normalize(esyscmd([echo ${LEMON_VERSION}]))])
dnl m4_define([lemon_version_number], [])
m4_define([lemon_hg_path], [m4_normalize(esyscmd([./scripts/chg-len.py]))])
-m4_define([lemon_hg_revision], [m4_normalize(esyscmd([hg id -i]))])
+m4_define([lemon_hg_revision], [m4_normalize(esyscmd([hg id -i 2> /dev/null]))])
m4_define([lemon_version], [ifelse(lemon_version_number(),
- [],
- [lemon_hg_path().lemon_hg_revision()],
- [lemon_version_number()])])
+ [],
+ [ifelse(lemon_hg_revision(),
+ [],
+ [hg-tip],
+ [lemon_hg_path().lemon_hg_revision()])],
+ [lemon_version_number()])])
AC_PREREQ([2.59])
AC_INIT([LEMON], [lemon_version()], [lemon-user at lemon.cs.elte.hu], [lemon])
@@ -19,6 +22,8 @@
AC_CONFIG_SRCDIR([lemon/list_graph.h])
AC_CONFIG_HEADERS([config.h lemon/config.h])
+AC_DEFINE([LEMON_VERSION], [lemon_version()], [The version string])
+
dnl Do compilation tests using the C++ compiler.
AC_LANG([C++])
diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt
--- a/demo/CMakeLists.txt
+++ b/demo/CMakeLists.txt
@@ -3,14 +3,17 @@
${PROJECT_BINARY_DIR}
)
-LINK_DIRECTORIES(${PROJECT_BINARY_DIR}/lemon)
+LINK_DIRECTORIES(
+ ${PROJECT_BINARY_DIR}/lemon
+)
SET(DEMOS
arg_parser_demo
graph_to_eps_demo
- lgf_demo)
+ lgf_demo
+)
FOREACH(DEMO_NAME ${DEMOS})
ADD_EXECUTABLE(${DEMO_NAME} ${DEMO_NAME}.cc)
TARGET_LINK_LIBRARIES(${DEMO_NAME} lemon)
-ENDFOREACH(DEMO_NAME)
+ENDFOREACH()
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -6,51 +6,46 @@
CONFIGURE_FILE(
${PROJECT_SOURCE_DIR}/doc/Doxyfile.in
${PROJECT_BINARY_DIR}/doc/Doxyfile
- @ONLY)
+ @ONLY
+)
IF(DOXYGEN_EXECUTABLE AND GHOSTSCRIPT_EXECUTABLE)
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/)
+ SET(GHOSTSCRIPT_OPTIONS -dNOPAUSE -dBATCH -q -dEPSCrop -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=pngalpha)
+ ADD_CUSTOM_TARGET(html
+ COMMAND ${CMAKE_COMMAND} -E remove_directory gen-images
+ COMMAND ${CMAKE_COMMAND} -E make_directory gen-images
More information about the Lemon-commits
mailing list