summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/FindOpenSSL.cmake209
-rw-r--r--Modules/GNUInstallDirs.cmake25
-rw-r--r--Modules/readme.txt22
-rw-r--r--Source/kwsys/kwsysDateStamp.cmake4
-rw-r--r--Tests/CPackComponentsForAll/CMakeLists.txt11
-rw-r--r--Tests/CPackComponentsForAll/SystemSpecificInformations.cmake164
6 files changed, 218 insertions, 217 deletions
diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake
index f41a66b..af799d6 100644
--- a/Modules/FindOpenSSL.cmake
+++ b/Modules/FindOpenSSL.cmake
@@ -7,11 +7,12 @@
# OPENSSL_FOUND - system has the OpenSSL library
# OPENSSL_INCLUDE_DIR - the OpenSSL include directory
# OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
+# OPENSSL_VERSION - This is set to $major.$minor.$revision (eg. 0.9.8)
#=============================================================================
# Copyright 2006-2009 Kitware, Inc.
# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
-# Copyright 2009-2010 Mathieu Malaterre <mathieu.malaterre@gmail.com>
+# Copyright 2009-2011 Mathieu Malaterre <mathieu.malaterre@gmail.com>
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
@@ -23,24 +24,41 @@
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
+if (UNIX)
+ find_package(PkgConfig)
+ if (PKG_CONFIG_FOUND)
+ pkg_check_modules(_OPENSSL openssl)
+ endif (PKG_CONFIG_FOUND)
+endif (UNIX)
+
# http://www.slproweb.com/products/Win32OpenSSL.html
SET(_OPENSSL_ROOT_HINTS
+ $ENV{OPENSSL_ROOT_DIR}
+ ${OPENSSL_ROOT_DIR}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
)
SET(_OPENSSL_ROOT_PATHS
+ "$ENV{PROGRAMFILES}/OpenSSL"
+ "$ENV{PROGRAMFILES}/OpenSSL-Win32"
+ "$ENV{PROGRAMFILES}/OpenSSL-Win64"
"C:/OpenSSL/"
+ "C:/OpenSSL-Win32/"
+ "C:/OpenSSL-Win64/"
)
-FIND_PATH(OPENSSL_ROOT_DIR
- NAMES include/openssl/ssl.h
+SET(_OPENSSL_ROOT_HINTS_AND_PATHS
HINTS ${_OPENSSL_ROOT_HINTS}
PATHS ${_OPENSSL_ROOT_PATHS}
-)
-MARK_AS_ADVANCED(OPENSSL_ROOT_DIR)
+ )
-# Re-use the previous path:
-FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h
- PATHS ${OPENSSL_ROOT_DIR}/include
+FIND_PATH(OPENSSL_INCLUDE_DIR
+ NAMES
+ openssl/ssl.h
+ HINTS
+ ${_OPENSSL_INCLUDEDIR}
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ include
)
IF(WIN32 AND NOT CYGWIN)
@@ -60,18 +78,52 @@ IF(WIN32 AND NOT CYGWIN)
# We are using the libraries located in the VC subdir instead of the parent directory eventhough :
# libeay32MD.lib is identical to ../libeay32.lib, and
# ssleay32MD.lib is identical to ../ssleay32.lib
- FIND_LIBRARY(LIB_EAY_DEBUG NAMES libeay32MDd libeay32
- PATHS ${OPENSSL_ROOT_DIR}/lib/VC
- )
- FIND_LIBRARY(LIB_EAY_RELEASE NAMES libeay32MD libeay32
- PATHS ${OPENSSL_ROOT_DIR}/lib/VC
- )
- FIND_LIBRARY(SSL_EAY_DEBUG NAMES ssleay32MDd ssleay32 ssl
- PATHS ${OPENSSL_ROOT_DIR}/lib/VC
- )
- FIND_LIBRARY(SSL_EAY_RELEASE NAMES ssleay32MD ssleay32 ssl
- PATHS ${OPENSSL_ROOT_DIR}/lib/VC
- )
+ FIND_LIBRARY(LIB_EAY_DEBUG
+ NAMES
+ libeay32MDd
+ libeay32
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "VC"
+ "lib/VC"
+ )
+
+ FIND_LIBRARY(LIB_EAY_RELEASE
+ NAMES
+ libeay32MD
+ libeay32
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "VC"
+ "lib/VC"
+ )
+
+ FIND_LIBRARY(SSL_EAY_DEBUG
+ NAMES
+ ssleay32MDd
+ ssleay32
+ ssl
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "VC"
+ "lib/VC"
+ )
+
+ FIND_LIBRARY(SSL_EAY_RELEASE
+ NAMES
+ ssleay32MD
+ ssleay32
+ ssl
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "VC"
+ "lib/VC"
+ )
+
if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
set( OPENSSL_LIBRARIES
optimized ${SSL_EAY_RELEASE} debug ${SSL_EAY_DEBUG}
@@ -84,40 +136,115 @@ IF(WIN32 AND NOT CYGWIN)
MARK_AS_ADVANCED(LIB_EAY_DEBUG LIB_EAY_RELEASE)
ELSEIF(MINGW)
# same player, for MingW
- FIND_LIBRARY(LIB_EAY NAMES libeay32
- PATHS ${OPENSSL_ROOT_DIR}/lib/MinGW
- )
- FIND_LIBRARY(SSL_EAY NAMES ssleay32
- PATHS ${OPENSSL_ROOT_DIR}/lib/MinGW
- )
+ FIND_LIBRARY(LIB_EAY
+ NAMES
+ libeay32
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "lib/MinGW"
+ )
+
+ FIND_LIBRARY(SSL_EAY
+ NAMES
+ ssleay32
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "lib/MinGW"
+ )
+
MARK_AS_ADVANCED(SSL_EAY LIB_EAY)
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
ELSE(MSVC)
# Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
- FIND_LIBRARY(LIB_EAY NAMES libeay32
- PATHS ${OPENSSL_ROOT_DIR}/lib
- )
- FIND_LIBRARY(SSL_EAY NAMES ssleay32
- PATHS ${OPENSSL_ROOT_DIR}/lib
- )
+ FIND_LIBRARY(LIB_EAY
+ NAMES
+ libeay32
+ HINTS
+ ${_OPENSSL_LIBDIR}
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ lib
+ )
+
+ FIND_LIBRARY(SSL_EAY
+ NAMES
+ ssleay32
+ HINTS
+ ${_OPENSSL_LIBDIR}
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ lib
+ )
+
MARK_AS_ADVANCED(SSL_EAY LIB_EAY)
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
ENDIF(MSVC)
ELSE(WIN32 AND NOT CYGWIN)
- FIND_LIBRARY(OPENSSL_SSL_LIBRARIES NAMES ssl ssleay32 ssleay32MD)
- FIND_LIBRARY(OPENSSL_CRYPTO_LIBRARIES NAMES crypto)
- MARK_AS_ADVANCED(OPENSSL_CRYPTO_LIBRARIES OPENSSL_SSL_LIBRARIES)
+ FIND_LIBRARY(OPENSSL_SSL_LIBRARY
+ NAMES
+ ssl
+ ssleay32
+ ssleay32MD
+ HINTS
+ ${_OPENSSL_LIBDIR}
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ lib
+ )
- SET(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARIES})
+ FIND_LIBRARY(OPENSSL_CRYPTO_LIBRARY
+ NAMES
+ crypto
+ HINTS
+ ${_OPENSSL_LIBDIR}
+ ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ lib
+ )
+
+ MARK_AS_ADVANCED(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
+
+ # compat defines
+ SET(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
+ SET(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
+
+ SET(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
ENDIF(WIN32 AND NOT CYGWIN)
+if (OPENSSL_INCLUDE_DIR)
+ file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9][0-9][0-9][0-9][0-9][0-9].*")
+
+ string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1" OPENSSL_VERSION_MAJOR "${openssl_version_str}")
+ string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9]([0-9][0-9]).*$" "\\1" OPENSSL_VERSION_MINOR "${openssl_version_str}")
+ string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9][0-9][0-9]([0-9][0-9]).*$" "\\1" OPENSSL_VERSION_PATCH "${openssl_version_str}")
+
+ string(REGEX REPLACE "^0" "" OPENSSL_VERSION_MINOR "${OPENSSL_VERSION_MINOR}")
+ string(REGEX REPLACE "^0" "" OPENSSL_VERSION_PATCH "${OPENSSL_VERSION_PATCH}")
+
+ set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_PATCH}")
+endif (OPENSSL_INCLUDE_DIR)
+
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(OpenSSL DEFAULT_MSG
- OPENSSL_LIBRARIES
- OPENSSL_INCLUDE_DIR
-)
-MARK_AS_ADVANCED(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
+if (OPENSSL_VERSION)
+ find_package_handle_standard_args(OpenSSL
+ REQUIRED_VARS
+ OPENSSL_LIBRARIES
+ OPENSSL_INCLUDE_DIR
+ VERSION_VAR
+ OPENSSL_VERSION
+ FAIL_MESSAGE
+ "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
+ )
+else (OPENSSL_VERSION)
+ find_package_handle_standard_args(OpenSSL "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
+ OPENSSL_LIBRARIES
+ OPENSSL_INCLUDE_DIR
+ )
+endif (OPENSSL_VERSION)
+MARK_AS_ADVANCED(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
diff --git a/Modules/GNUInstallDirs.cmake b/Modules/GNUInstallDirs.cmake
index bb651de..a114dcb 100644
--- a/Modules/GNUInstallDirs.cmake
+++ b/Modules/GNUInstallDirs.cmake
@@ -11,7 +11,7 @@
# SYSCONFDIR - read-only single-machine data (etc)
# SHAREDSTATEDIR - modifiable architecture-independent data (com)
# LOCALSTATEDIR - modifiable single-machine data (var)
-# LIBDIR - object code libraries (lib)
+# LIBDIR - object code libraries (lib or lib64)
# INCLUDEDIR - C header files (include)
# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
# DATAROOTDIR - read-only architecture-independent data root (share)
@@ -69,7 +69,28 @@ if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
- set(CMAKE_INSTALL_LIBDIR "lib" CACHE PATH "object code libraries (lib)")
+ set(_LIBDIR_DEFAULT "lib")
+ # Override this default 'lib' with 'lib64' iff:
+ # - we are on Linux system but NOT cross-compiling
+ # - we are NOT on debian
+ # - we are on a 64 bits system
+ # reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
+ # Note that the future of multi-arch handling may be even
+ # more complicated than that: http://wiki.debian.org/Multiarch
+ if(CMAKE_SYSTEM_NAME MATCHES "Linux"
+ AND NOT CMAKE_CROSSCOMPILING
+ AND NOT EXISTS "/etc/debian_version")
+ if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
+ message(AUTHOR_WARNING
+ "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
+ "Please enable at least one language before including GNUInstallDirs.")
+ else()
+ if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+ set(_LIBDIR_DEFAULT "lib64")
+ endif()
+ endif()
+ endif()
+ set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
endif()
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
diff --git a/Modules/readme.txt b/Modules/readme.txt
index dd52000..e2d7f06 100644
--- a/Modules/readme.txt
+++ b/Modules/readme.txt
@@ -64,10 +64,32 @@ For example:
# VAR_REALLY_COOL - cool right?
#
+Test the documentation formatting by running "cmake --help-module FindXXX".
+Edit the comments until the output of this command looks satisfactory.
+
To have a .cmake file in this directory NOT show up in the
modules documentation, you should start the file with a blank
line.
+After the documentation, leave a *BLANK* line, and then add a
+copyright and licence notice block like this one:
+
+#=============================================================================
+# Copyright 2009-2011 Your Name
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+# License text for the above reference.)
+
+The layout of the notice block is strictly enforced by the ModuleNotices test.
+Only the year range and name may be changed freely.
+
A FindXXX.cmake module will typically be loaded by the command
FIND_PACKAGE(XXX [major[.minor[.patch[.tweak]]]] [EXACT]
diff --git a/Source/kwsys/kwsysDateStamp.cmake b/Source/kwsys/kwsysDateStamp.cmake
index e2e7d02..27324f6 100644
--- a/Source/kwsys/kwsysDateStamp.cmake
+++ b/Source/kwsys/kwsysDateStamp.cmake
@@ -15,7 +15,7 @@
SET(KWSYS_DATE_STAMP_YEAR 2011)
# KWSys version date month component. Format is MM.
-SET(KWSYS_DATE_STAMP_MONTH 03)
+SET(KWSYS_DATE_STAMP_MONTH 04)
# KWSys version date day component. Format is DD.
-SET(KWSYS_DATE_STAMP_DAY 31)
+SET(KWSYS_DATE_STAMP_DAY 05)
diff --git a/Tests/CPackComponentsForAll/CMakeLists.txt b/Tests/CPackComponentsForAll/CMakeLists.txt
index ce12b3b..5449d09 100644
--- a/Tests/CPackComponentsForAll/CMakeLists.txt
+++ b/Tests/CPackComponentsForAll/CMakeLists.txt
@@ -10,13 +10,8 @@
cmake_minimum_required(VERSION 2.8.3.20101130 FATAL_ERROR)
project(CPackComponentsForAll)
-set(LIBDEST "lib")
-include(${CMAKE_SOURCE_DIR}/SystemSpecificInformations.cmake)
-if(DISTRO_ID MATCHES "SUSE")
- if("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
- set(LIBDEST "lib64")
- endif("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
-endif(DISTRO_ID MATCHES "SUSE")
+# Use GNUInstallDirs in order to enforce lib64 if needed
+include(GNUInstallDirs)
# Create the mylib library
add_library(mylib mylib.cpp)
@@ -35,7 +30,7 @@ target_link_libraries(mylibapp2 mylib)
# be used to create the installation components.
install(TARGETS mylib
ARCHIVE
- DESTINATION ${LIBDEST}
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT libraries)
install(TARGETS mylibapp
RUNTIME
diff --git a/Tests/CPackComponentsForAll/SystemSpecificInformations.cmake b/Tests/CPackComponentsForAll/SystemSpecificInformations.cmake
deleted file mode 100644
index 8d11400..0000000
--- a/Tests/CPackComponentsForAll/SystemSpecificInformations.cmake
+++ /dev/null
@@ -1,164 +0,0 @@
-
-# define a set of string with may-be useful readable name
-# this file is meant to be included in a CMakeLists.txt
-# not as a standalone CMake script
-set(SPECIFIC_COMPILER_NAME "")
-set(SPECIFIC_SYSTEM_VERSION_NAME "")
-set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "")
-
-# In the WIN32 case try to guess a "readable system name"
-if(WIN32)
- set(SPECIFIC_SYSTEM_PREFERED_PACKAGE "NSIS")
- # information taken from
- # http://www.codeguru.com/cpp/w-p/system/systeminformation/article.php/c8973/
- # Win9x series
- if(CMAKE_SYSTEM_VERSION MATCHES "4.0")
- set(SPECIFIC_SYSTEM_VERSION_NAME "Win95")
- endif(CMAKE_SYSTEM_VERSION MATCHES "4.0")
- if(CMAKE_SYSTEM_VERSION MATCHES "4.10")
- set(SPECIFIC_SYSTEM_VERSION_NAME "Win98")
- endif(CMAKE_SYSTEM_VERSION MATCHES "4.10")
- if(CMAKE_SYSTEM_VERSION MATCHES "4.90")
- set(SPECIFIC_SYSTEM_VERSION_NAME "WinME")
- endif(CMAKE_SYSTEM_VERSION MATCHES "4.90")
-
- # WinNTyyy series
- if(CMAKE_SYSTEM_VERSION MATCHES "3.0")
- set(SPECIFIC_SYSTEM_VERSION_NAME "WinNT351")
- endif(CMAKE_SYSTEM_VERSION MATCHES "3.0")
- if(CMAKE_SYSTEM_VERSION MATCHES "4.1")
- set(SPECIFIC_SYSTEM_VERSION_NAME "WinNT4")
- endif(CMAKE_SYSTEM_VERSION MATCHES "4.1")
-
- # Win2000/XP series
- if(CMAKE_SYSTEM_VERSION MATCHES "5.0")
- set(SPECIFIC_SYSTEM_VERSION_NAME "Win2000")
- endif(CMAKE_SYSTEM_VERSION MATCHES "5.0")
- if(CMAKE_SYSTEM_VERSION MATCHES "5.1")
- set(SPECIFIC_SYSTEM_VERSION_NAME "WinXP")
- endif(CMAKE_SYSTEM_VERSION MATCHES "5.1")
- if(CMAKE_SYSTEM_VERSION MATCHES "5.2")
- set(SPECIFIC_SYSTEM_VERSION_NAME "Win2003")
- endif(CMAKE_SYSTEM_VERSION MATCHES "5.2")
-
- # WinVista/7 series
- if(CMAKE_SYSTEM_VERSION MATCHES "6.0")
- set(SPECIFIC_SYSTEM_VERSION_NAME "WinVISTA")
- endif(CMAKE_SYSTEM_VERSION MATCHES "6.0")
- if(CMAKE_SYSTEM_VERSION MATCHES "6.1")
- set(SPECIFIC_SYSTEM_VERSION_NAME "Win7")
- endif(CMAKE_SYSTEM_VERSION MATCHES "6.1")
-
- # Compilers
- # taken from http://predef.sourceforge.net/precomp.html#sec34
- if(MSVC)
- set(SPECIFIC_COMPILER_NAME "MSVC-Unknown-${MSVC_VERSION}")
- if(MSVC_VERSION EQUAL 1200)
- set(SPECIFIC_COMPILER_NAME "MSVC-6.0")
- endif(MSVC_VERSION EQUAL 1200)
- if(MSVC_VERSION EQUAL 1300)
- set(SPECIFIC_COMPILER_NAME "MSVC-7.0")
- endif(MSVC_VERSION EQUAL 1300)
- if(MSVC_VERSION EQUAL 1310)
- set(SPECIFIC_COMPILER_NAME "MSVC-7.1-2003") #Visual Studio 2003
- endif(MSVC_VERSION EQUAL 1310)
- if(MSVC_VERSION EQUAL 1400)
- set(SPECIFIC_COMPILER_NAME "MSVC-8.0-2005") #Visual Studio 2005
- endif(MSVC_VERSION EQUAL 1400)
- if(MSVC_VERSION EQUAL 1500)
- set(SPECIFIC_COMPILER_NAME "MSVC-9.0-2008") #Visual Studio 2008
- endif(MSVC_VERSION EQUAL 1500)
- if(MSVC_VERSION EQUAL 1600)
- set(SPECIFIC_COMPILER_NAME "MSVC-10.0-2010") #Visual Studio 2010
- endif(MSVC_VERSION EQUAL 1600)
- endif(MSVC)
- if(MINGW)
- set(SPECIFIC_COMPILER_NAME "MinGW")
- endif(MINGW)
- if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
- set(SPECIFIC_SYSTEM_VERSION_NAME "${SPECIFIC_SYSTEM_VERSION_NAME}-x86_64")
- endif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
-endif(WIN32)
-
-# In the Linux case try to guess the distro name/type
-# using either lsb_release program or fallback
-# to the content of the /etc/issue file
-if(UNIX)
- if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- set(SPECIFIC_SYSTEM_VERSION_NAME "${CMAKE_SYSTEM_NAME}")
- set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "TGZ")
- find_program(LSB_RELEASE_EXECUTABLE lsb_release)
- if(LSB_RELEASE_EXECUTABLE)
- execute_process(COMMAND ${LSB_RELEASE_EXECUTABLE} -i
- OUTPUT_VARIABLE _TMP_LSB_RELEASE_OUTPUT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REGEX MATCH "Distributor ID:(.*)" DISTRO_ID ${_TMP_LSB_RELEASE_OUTPUT})
- string(STRIP "${CMAKE_MATCH_1}" DISTRO_ID)
- # replace potential space with underscore
- string(REPLACE " " "_" DISTRO_ID "${DISTRO_ID}")
- execute_process(COMMAND ${LSB_RELEASE_EXECUTABLE} -r
- OUTPUT_VARIABLE _TMP_LSB_RELEASE_OUTPUT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REGEX MATCH "Release:(.*)" DISTRO_RELEASE ${_TMP_LSB_RELEASE_OUTPUT})
- string(STRIP "${CMAKE_MATCH_1}" DISTRO_RELEASE)
- execute_process(COMMAND ${LSB_RELEASE_EXECUTABLE} -c
- OUTPUT_VARIABLE _TMP_LSB_RELEASE_OUTPUT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REGEX MATCH "Codename:(.*)" DISTRO_CODENAME ${_TMP_LSB_RELEASE_OUTPUT})
- string(STRIP "${CMAKE_MATCH_1}" DISTRO_CODENAME)
- elseif (EXISTS "/etc/issue")
- set(LINUX_NAME "")
- file(READ "/etc/issue" LINUX_ISSUE)
- # Fedora case
- if(LINUX_ISSUE MATCHES "Fedora")
- string(REGEX MATCH "release ([0-9]+)" FEDORA "${LINUX_ISSUE}")
- set(DISTRO_ID "Fedora")
- set(DISTRO_RELEASE "${CMAKE_MATCH_1}")
- # FIXME can we find that in /etc/issue
- set(DISTRO_CODENAME "")
- endif(LINUX_ISSUE MATCHES "Fedora")
- # Ubuntu case
- if(LINUX_ISSUE MATCHES "Ubuntu")
- string(REGEX MATCH "buntu ([0-9]+\\.[0-9]+)" UBUNTU "${LINUX_ISSUE}")
- set(DISTRO_ID "Ubuntu")
- set(DISTRO_RELEASE "${CMAKE_MATCH_1}")
- # FIXME can we find that in /etc/issue
- set(DISTRO_CODENAME "")
- endif(LINUX_ISSUE MATCHES "Ubuntu")
- # Debian case
- if(LINUX_ISSUE MATCHES "Debian")
- string(REGEX MATCH "Debian .*ux ([0-9]+\\.[0-9]+)"
- DEBIAN "${LINUX_ISSUE}")
- set(DISTRO_ID "Debian")
- set(DISTRO_RELEASE "${CMAKE_MATCH_1}")
- set(DISTRO_CODENAME "")
- endif(LINUX_ISSUE MATCHES "Debian")
- # Open SuSE case
- if(LINUX_ISSUE MATCHES "SUSE")
- string(REGEX MATCH "SUSE ([0-9]+\\.[0-9]+)" SUSE "${LINUX_ISSUE}")
- set(DISTRO_ID "SUSE")
- set(DISTRO_RELEASE "${CMAKE_MATCH_1}")
- set(DISTRO_CODENAME "")
- endif(LINUX_ISSUE MATCHES "SUSE")
- # Mandriva case
- # TODO
- endif(LSB_RELEASE_EXECUTABLE)
- # Now mangle some names
- set(LINUX_NAME "${DISTRO_ID}_${DISTRO_RELEASE}")
- if(DISTRO_ID MATCHES "Fedora|Mandriva|SUSE|OpenSUSE")
- set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "RPM")
- endif(DISTRO_ID MATCHES "Fedora|Mandriva|SUSE|OpenSUSE")
- if(DISTRO_ID MATCHES "Debian|Ubuntu")
- set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "DEB")
- endif(DISTRO_ID MATCHES "Debian|Ubuntu")
- if(LINUX_NAME)
- set(SPECIFIC_SYSTEM_VERSION_NAME "${CMAKE_SYSTEM_NAME}-${LINUX_NAME}")
- endif(LINUX_NAME)
- endif(CMAKE_SYSTEM_NAME MATCHES "Linux")
- set(SPECIFIC_SYSTEM_VERSION_NAME
- "${SPECIFIC_SYSTEM_VERSION_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
- set(SPECIFIC_COMPILER_NAME "")
-endif(UNIX)