[Cmake-commits] CMake branch, next, updated. v2.8.4-1310-gfab9c6a

Brad King brad.king at kitware.com
Thu Mar 31 14:47:47 EDT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  fab9c6a304beea03addac13ec88a38dcf6e711fd (commit)
       via  126c993d031f6f7be4970a67621da92f580d4e5a (commit)
      from  8845fd535613fe4d9f086e4c3dac3428d50649d4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fab9c6a304beea03addac13ec88a38dcf6e711fd
commit fab9c6a304beea03addac13ec88a38dcf6e711fd
Merge: 8845fd5 126c993
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Mar 31 14:47:46 2011 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Mar 31 14:47:46 2011 -0400

    Merge topic 'linux-lib64-handling' into next
    
    126c993 Fix #11964 Handle lib64 library on Linux


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=126c993d031f6f7be4970a67621da92f580d4e5a
commit 126c993d031f6f7be4970a67621da92f580d4e5a
Author:     Eric NOULARD <eric.noulard at gmail.com>
AuthorDate: Mon Mar 28 21:10:52 2011 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 31 14:45:48 2011 -0400

    Fix #11964 Handle lib64 library on Linux
    
    The AMD64 ABI document http://www.x86-64.org/documentation/abi.pdf
    does specify that 64bits binary libraries should end up in <prefix>/lib64
    and 32bits ones in <prefix>/lib. All but debian based distros do so,
    and some like OpenSUSE even enforce the rule when packaging with RPM
    and refuse to build the RPM if this is not the case.
    After some discussion (see the bug notes) we cannot do that behind
    the scene and the current fix supposes that the user shall use
    the CMAKE_INSTALL_LIBDIR variables content in its INSTALL rules if
    he wants to put the lib in the right place. CMAKE_INSTALL_LIBDIR
    shall have the appropriate value depending on the Linux distribution
    found and 32/64bitness of the host.
    The cross-compiling case (even 32bits compile on a 64bits host)
    is not handled.

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

-----------------------------------------------------------------------

Summary of changes:
 Modules/GNUInstallDirs.cmake                       |   25 +++-
 Tests/CPackComponentsForAll/CMakeLists.txt         |   11 +-
 .../SystemSpecificInformations.cmake               |  164 --------------------
 3 files changed, 26 insertions(+), 174 deletions(-)
 delete mode 100644 Tests/CPackComponentsForAll/SystemSpecificInformations.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list