[Cmake-commits] [cmake-commits] dgregor committed FindBoost.cmake 1.4 1.5

cmake-commits at cmake.org cmake-commits at cmake.org
Tue Apr 22 13:14:53 EDT 2008


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv12498

Modified Files:
	FindBoost.cmake 
Log Message:
ENH: Integrated FindBoost improvements changes from Andreas Pakulat, Mike Jackson, and myself


Index: FindBoost.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindBoost.cmake,v
retrieving revision 1.4
retrieving revision 1.5
diff -C 2 -d -r1.4 -r1.5
*** FindBoost.cmake	10 Jan 2008 23:52:19 -0000	1.4
--- FindBoost.cmake	22 Apr 2008 17:14:51 -0000	1.5
***************
*** 1,149 ****
! # - Find the Boost includes and libraries.
! # The following variables are set if Boost is found.  If Boost is not
! # found, Boost_FOUND is set to false.
! #  Boost_FOUND        - True when the Boost include directory is found.
! #  Boost_INCLUDE_DIRS - the path to where the boost include files are.
! #  Boost_LIBRARY_DIRS - The path to where the boost library files are.
! #  Boost_LIB_DIAGNOSTIC_DEFINITIONS - Only set if using Windows.
! 
! # ----------------------------------------------------------------------------
! # If you have installed Boost in a non-standard location or you have
! # just staged the boost files using bjam then you have three
! # options. In the following comments, it is assumed that <Your Path>
! # points to the root directory of the include directory of Boost. e.g
! # If you have put boost in C:\development\Boost then <Your Path> is
! # "C:/development/Boost" and in this directory there will be two
! # directories called "include" and "lib".
! # 1) After CMake runs, set Boost_INCLUDE_DIR to <Your Path>/include/boost<-version>
! # 2) Use CMAKE_INCLUDE_PATH to set a path to <Your Path>/include. This will allow FIND_PATH()
! #    to locate Boost_INCLUDE_DIR by utilizing the PATH_SUFFIXES option. e.g.
! #    SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "<Your Path>/include")
! # 3) Set an environment variable called ${BOOST_ROOT} that points to the root of where you have
! #    installed Boost, e.g. <Your Path>. It is assumed that there is at least a subdirectory called
! #    include in this path.
  #
! # Note:
! #  1) If you are just using the boost headers, then you do not need to use
! #     Boost_LIBRARY_DIRS in your CMakeLists.txt file.
! #  2) If Boost has not been installed, then when setting Boost_LIBRARY_DIRS
! #     the script will look for /lib first and, if this fails, then for /stage/lib.
  #
! # Usage:
! # In your CMakeLists.txt file do something like this:
! # ...
! # # Boost
! # FIND_PACKAGE(Boost)
! # ...
! # INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
! # LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
  #
! # In Windows, we make the assumption that, if the Boost files are installed, the default directory
! # will be C:\boost.
  
  #
! # TODO:
  #
! # 1) Automatically find the Boost library files and eliminate the need
! #    to use Link Directories.
  #
  
! IF(WIN32)
!   # In windows, automatic linking is performed, so you do not have to specify the libraries.
!   # If you are linking to a dynamic runtime, then you can choose to link to either a static or a
!   # dynamic Boost library, the default is to do a static link.  You can alter this for a specific
!   # library "whatever" by defining BOOST_WHATEVER_DYN_LINK to force Boost library "whatever" to
!   # be linked dynamically.  Alternatively you can force all Boost libraries to dynamic link by
!   # defining BOOST_ALL_DYN_LINK.
  
!   # This feature can be disabled for Boost library "whatever" by defining BOOST_WHATEVER_NO_LIB,
!   # or for all of Boost by defining BOOST_ALL_NO_LIB.
  
!   # If you want to observe which libraries are being linked against then defining
!   # BOOST_LIB_DIAGNOSTIC will cause the auto-linking code to emit a #pragma message each time
!   # a library is selected for linking.
!   SET(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC")
! ENDIF(WIN32)
  
  
- SET(BOOST_INCLUDE_PATH_DESCRIPTION "directory containing the boost include files, e.g. /usr/local/include/boost-1_33_1 or c:/boost/include/boost-1_33_1")
  
! SET(BOOST_DIR_MESSAGE "Set the Boost_INCLUDE_DIR cmake cache entry to the ${BOOST_INCLUDE_PATH_DESCRIPTION}")
  
! SET(BOOST_DIR_SEARCH $ENV{BOOST_ROOT})
! IF(BOOST_DIR_SEARCH)
!   FILE(TO_CMAKE_PATH ${BOOST_DIR_SEARCH} BOOST_DIR_SEARCH)
!   SET(BOOST_DIR_SEARCH ${BOOST_DIR_SEARCH} ${BOOST_DIR_SEARCH}/include)
! ENDIF(BOOST_DIR_SEARCH)
  
! IF(WIN32)
!   SET(BOOST_DIR_SEARCH
!     ${BOOST_DIR_SEARCH}
      C:/boost/include
!     D:/boost/include
    )
- ENDIF(WIN32)
  
! # Add in some path suffixes. These will have to be updated whenever a new Boost version comes out.
! SET(SUFFIX_FOR_PATH
!  boost-1_34_1
!  boost-1_34_0
!  boost-1_34
!  boost-1_33_1
!  boost-1_33_0
! )
  
! #
! # Look for an installation.
! #
! FIND_PATH(Boost_INCLUDE_DIR NAMES boost/config.hpp PATH_SUFFIXES ${SUFFIX_FOR_PATH} PATHS
  
!   # Look in other places.
!   ${BOOST_DIR_SEARCH}
  
!   # Help the user find it if we cannot.
!   DOC "The ${BOOST_INCLUDE_PATH_DESCRIPTION}"
! )
  
! SET(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
  
! # Now try to get the include and library path.
! IF(Boost_INCLUDE_DIR)
  
!   # Look for the boost library path.
!   # Note that the user may not have installed any libraries
!   # so it is quite possible the Boost_LIBRARY_PATH may not exist.
!   SET(Boost_LIBRARY_DIR ${Boost_INCLUDE_DIR})
  
!   IF("${Boost_LIBRARY_DIR}" MATCHES "boost-[0-9]+")
!     GET_FILENAME_COMPONENT(Boost_LIBRARY_DIR ${Boost_LIBRARY_DIR} PATH)
!   ENDIF ("${Boost_LIBRARY_DIR}" MATCHES "boost-[0-9]+")
  
!   IF("${Boost_LIBRARY_DIR}" MATCHES "/include$")
!     # Strip off the trailing "/include" in the path.
!     GET_FILENAME_COMPONENT(Boost_LIBRARY_DIR ${Boost_LIBRARY_DIR} PATH)
!   ENDIF("${Boost_LIBRARY_DIR}" MATCHES "/include$")
  
!   IF(EXISTS "${Boost_LIBRARY_DIR}/lib")
!     SET (Boost_LIBRARY_DIR ${Boost_LIBRARY_DIR}/lib)
!   ELSE(EXISTS "${Boost_LIBRARY_DIR}/lib")
!     IF(EXISTS "${Boost_LIBRARY_DIR}/stage/lib")
!       SET(Boost_LIBRARY_DIR ${Boost_LIBRARY_DIR}/stage/lib)
!     ELSE(EXISTS "${Boost_LIBRARY_DIR}/stage/lib")
!       SET(Boost_LIBRARY_DIR "")
!     ENDIF(EXISTS "${Boost_LIBRARY_DIR}/stage/lib")
!   ENDIF(EXISTS "${Boost_LIBRARY_DIR}/lib")
  
-   IF(Boost_LIBRARY_DIR AND EXISTS "${Boost_LIBRARY_DIR}")
-     SET(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR})
-   ENDIF(Boost_LIBRARY_DIR AND EXISTS "${Boost_LIBRARY_DIR}")
- ENDIF(Boost_INCLUDE_DIR)
  
! # We have found boost. It is possible that the user has not
! # compiled any libraries so we set Boost_FOUND to be true here.
! # handle the QUIETLY and REQUIRED arguments and set BOOST_FOUND to TRUE if 
! # all listed variables are TRUE
! INCLUDE(FindPackageHandleStandardArgs)
! FIND_PACKAGE_HANDLE_STANDARD_ARGS(Boost "Boost was not found. ${BOOST_DIR_MESSAGE}" Boost_INCLUDE_DIR )
! SET(Boost_FOUND ${BOOST_FOUND})
  
- MARK_AS_ADVANCED(Boost_INCLUDE_DIR)
--- 1,566 ----
! # - Try to find Boost include dirs and libraries
! # Usage of this module as follows:
  #
! #     SET(Boost_USE_STATIC_LIBS ON)
! #     SET(Boost_USE_MULTITHREAD OFF)
! #     FIND_PACKAGE( Boost 1.34.1 COMPONENTS date_time filesystem iostreams ... )
  #
! # The Boost_ADDITIONAL_VERSIONS variable can be used to specify a list of
! # boost version numbers that should be taken into account when searching
! # for the libraries. Unfortunately boost puts the version number into the
! # actual filename for the libraries, so this might be needed in the future
! # when new Boost versions are released.
  #
! # Currently this module searches for the following version numbers:
! # 1.33, 1.33.0, 1.33.1, 1.34, 1.34.0, 1.34.1, 1.35, 1.35.0, 1.35.1, 1.36.0,
! # 1.36.1
! #
! # The components list needs to be the actual names of boost libraries, that is
! # the part of the actual library files that differ on different libraries. So
! # its "date_time" for "libboost_date_time...". Anything else will result in
! # errors
! #
! # You can provide a minimum version number that should be used. If you provide this 
! # version number and specify the REQUIRED attribute, this module will fail if it
! # can't find the specified or a later version. If you specify a version number this is
! # automatically put into the considered list of version numbers and thus doesn't need
! # to be specified in the Boost_ADDITIONAL_VERSIONS variable
! #
! # Variables used by this module, they can change the default behaviour and need to be set
! # before calling find_package:
! #  Boost_USE_MULTITHREAD         Can be set to OFF to use the non-multithreaded
! #                                boost libraries. Defaults to ON.
! #  Boost_USE_STATIC_LIBS         Can be set to ON to force the use of the static
! #                                boost libraries. Defaults to OFF.
! #  Boost_ADDITIONAL_VERSIONS     A list of version numbers to use for searching
! #                                the boost include directory. The default list
! #                                of version numbers is:
! #                                1.33, 1.33.0, 1.33.1, 1.34, 1.34.0, 1.34.1, 
! #                                1.35, 1.35.0, 1.35.1, 1.36.0, 1.36.1
! #                                If you want to look for an older or newer
! #                                version set this variable to a list of
! #                                strings, where each string contains a number, i.e.
! #                                SET(Boost_ADDITIONAL_VERSIONS "0.99.0" "1.35.0")
! #  BOOST_ROOT                    Preferred installation prefix for searching for Boost,
! #                                set this if the module has problems finding the proper Boost installation
! #  BOOST_INCLUDEDIR              Set this to the include directory of Boost, if the
! #                                module has problems finding the proper Boost installation
! #  BOOST_LIBRARYDIR              Set this to the lib directory of Boost, if the
! #                                module has problems finding the proper Boost installation
! #
! #  The last three variables are available also as environment variables
! #
! #
! # Variables defined by this module:
! #
! #  Boost_FOUND                          System has Boost, this means the include dir was found,
! #                                       as well as all the libraries specified in the COMPONENTS list
! #  Boost_INCLUDE_DIRS                   Boost include directories, not cached
! #  Boost_INCLUDE_DIR                    This is almost the same as above, but this one is cached and may be
! #                                       modified by advanced users
! #  Boost_LIBRARIES                      Link these to use the Boost libraries that you specified, not cached
! #  Boost_LIBRARY_DIRS                   The path to where the Boost library files are.
! #  Boost_VERSION                        The version number of the boost libraries that have been found,
! #                                       same as in version.hpp from Boost
! #  Boost_LIB_VERSION                    The version number in filename form as its appended to the library filenames
! #  Boost_MAJOR_VERSION                  major version number of boost
! #  Boost_MINOR_VERSION                  minor version number of boost
! #  Boost_SUBMINOR_VERSION               subminor version number of boost
! #  Boost_LIB_DIAGNOSTIC_DEFINITIONS     Only set on windows. Can be used with add_definitions 
! #                                       to print diagnostic information about the automatic 
! #                                       linking done on windows.
  
+ # For each component you list the following variables are set.
+ # ATTENTION: The component names need to be in lower case, just as the boost
+ # library names however the cmake variables use upper case for the component
+ # part. So you'd get Boost_SERIALIZATION_FOUND for example.
  #
! #  Boost_${COMPONENT}_FOUND             True IF the Boost library "component" was found.
! #  Boost_${COMPONENT}_LIBRARY           The absolute path of the Boost library "component".
! #  Boost_${COMPONENT}_LIBRARY_DEBUG     The absolute path of the debug version of the
! #                                       Boost library "component".
! #  Boost_${COMPONENT}_LIBRARY_RELEASE   The absolute path of the release version of the
! #                                       Boost library "component"
  #
! #  Copyright (c) 2006-2008 Andreas Schneider <mail at cynapses.org>
! #  Copyright (c) 2007      Wengo
! #  Copyright (c) 2007      Mike Jackson
! #  Copyright (c) 2008      Andreas Pakulat <apaku at gmx.de>
! #
! #  Redistribution AND use is allowed according to the terms of the New
! #  BSD license.
! #  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
  #
  
! # this module required CMake 2.5 for the Boost_FIND_VERSION stuff
! CMAKE_MINIMUM_REQUIRED(VERSION "2.6" FATAL_ERROR)
  
! # MESSAGE(STATUS "Finding Boost libraries.... ")
  
! OPTION(Boost_USE_MULTITHREADED "Use the multithreaded versions of the boost libraries" ON)
  
+ SET( _boost_TEST_VERSIONS ${Boost_ADDITIONAL_VERSIONS} "1.36.1" "1.36.0" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0" "1.34" "1.33.1" "1.33.0" "1.33" )
  
  
! ############################################
! #
! # Check the existence of the libraries.
! #
! ############################################
! # This macro was taken directly from the FindQt4.cmake file that is included
! # with the CMake distribution. This is NOT my work. All work was done by the
! # original authors of the FindQt4.cmake file. Only minor modifications were
! # made to remove references to Qt and make this file more generally applicable
! #########################################################################
  
! MACRO (_Boost_ADJUST_LIB_VARS basename)
!   IF (Boost_INCLUDE_DIR )
!     #MESSAGE(STATUS "Adjusting ${basename} ")
  
!     IF (Boost_${basename}_LIBRARY_DEBUG AND Boost_${basename}_LIBRARY_RELEASE)
!       # if the generator supports configuration types then set
!       # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
!       IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
!         SET(Boost_${basename}_LIBRARY optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG})
!       ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
!         # if there are no configuration types and CMAKE_BUILD_TYPE has no value
!         # then just use the release libraries
!         SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE} )
!       ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
!       SET(Boost_${basename}_LIBRARIES optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG})
!     ENDIF (Boost_${basename}_LIBRARY_DEBUG AND Boost_${basename}_LIBRARY_RELEASE)
! 
!     # if only the release version was found, set the debug variable also to the release version
!     IF (Boost_${basename}_LIBRARY_RELEASE AND NOT Boost_${basename}_LIBRARY_DEBUG)
!       SET(Boost_${basename}_LIBRARY_DEBUG ${Boost_${basename}_LIBRARY_RELEASE})
!       SET(Boost_${basename}_LIBRARY       ${Boost_${basename}_LIBRARY_RELEASE})
!       SET(Boost_${basename}_LIBRARIES     ${Boost_${basename}_LIBRARY_RELEASE})
!     ENDIF (Boost_${basename}_LIBRARY_RELEASE AND NOT Boost_${basename}_LIBRARY_DEBUG)
! 
!     # if only the debug version was found, set the release variable also to the debug version
!     IF (Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE)
!       SET(Boost_${basename}_LIBRARY_RELEASE ${Boost_${basename}_LIBRARY_DEBUG})
!       SET(Boost_${basename}_LIBRARY         ${Boost_${basename}_LIBRARY_DEBUG})
!       SET(Boost_${basename}_LIBRARIES       ${Boost_${basename}_LIBRARY_DEBUG})
!     ENDIF (Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE)
!     
!     IF (Boost_${basename}_LIBRARY)
!       SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY} CACHE FILEPATH "The Boost ${basename} library")
!       GET_FILENAME_COMPONENT(Boost_LIBRARY_DIRS "${Boost_${basename}_LIBRARY}" PATH)
!       SET(Boost_${basename}_FOUND ON CACHE INTERNAL "Was the boost boost ${basename} library found")
!     ENDIF (Boost_${basename}_LIBRARY)
! 
!   ENDIF (Boost_INCLUDE_DIR )
!   # Make variables changeble to the advanced user
!   MARK_AS_ADVANCED(
!       Boost_${basename}_LIBRARY
!       Boost_${basename}_LIBRARY_RELEASE
!       Boost_${basename}_LIBRARY_DEBUG
!   )
! ENDMACRO (_Boost_ADJUST_LIB_VARS)
! 
! #-------------------------------------------------------------------------------
! 
! 
! SET( _boost_IN_CACHE TRUE)
! IF(Boost_INCLUDE_DIR)
!   FOREACH(COMPONENT ${Boost_FIND_COMPONENTS})
!     STRING(TOUPPER ${COMPONENT} COMPONENT)
!     IF(NOT Boost_${COMPONENT}_FOUND)
!       SET( _boost_IN_CACHE FALSE)
!     ENDIF(NOT Boost_${COMPONENT}_FOUND)
!   ENDFOREACH(COMPONENT)
! ELSE(Boost_INCLUDE_DIR)
!   SET( _boost_IN_CACHE FALSE)
! ENDIF(Boost_INCLUDE_DIR)
! 
! IF (_boost_IN_CACHE)
!   # in cache already
!   SET(Boost_FOUND TRUE)
!   FOREACH(COMPONENT ${Boost_FIND_COMPONENTS})
!     STRING(TOUPPER ${COMPONENT} COMPONENT)
!     _Boost_ADJUST_LIB_VARS( ${COMPONENT} )
!     SET(Boost_LIBRARIES ${Boost_LIBRARIES} ${Boost_${COMPONENT}_LIBRARY})
!   ENDFOREACH(COMPONENT)
!   SET(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
!   IF(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0")
!     MATH(EXPR Boost_MAJOR_VERSION "${Boost_VERSION} / 100000")
!     MATH(EXPR Boost_MINOR_VERSION "${Boost_VERSION} / 100 % 1000")
!     MATH(EXPR Boost_SUBMINOR_VERSION "${Boost_VERSION} % 100")
!   ENDIF(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0")
! ELSE (_boost_IN_CACHE)
!   # Need to search for boost
! 
!   IF(WIN32)
!     # In windows, automatic linking is performed, so you do not have to specify the libraries.
!     # If you are linking to a dynamic runtime, then you can choose to link to either a static or a
!     # dynamic Boost library, the default is to do a static link.  You can alter this for a specific
!     # library "whatever" by defining BOOST_WHATEVER_DYN_LINK to force Boost library "whatever" to
!     # be linked dynamically.  Alternatively you can force all Boost libraries to dynamic link by
!     # defining BOOST_ALL_DYN_LINK.
!   
!     # This feature can be disabled for Boost library "whatever" by defining BOOST_WHATEVER_NO_LIB,
!     # or for all of Boost by defining BOOST_ALL_NO_LIB.
!   
!     # If you want to observe which libraries are being linked against then defining
!     # BOOST_LIB_DIAGNOSTIC will cause the auto-linking code to emit a #pragma message each time
!     # a library is selected for linking.
!     SET(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC" CACHE STRING "Boost diagnostic define")
!   ENDIF(WIN32)
! 
! 
!   SET(_boost_INCLUDE_SEARCH_DIRS
      C:/boost/include
!     "C:/Program Files/boost/boost_${Boost_FIND_VERSION_MAJOR}_${Boost_FIND_VERSION_MINOR}_${Boost_FIND_VERSION_PATCH}"
!     # D: is very often the cdrom drive, IF you don't have a
!     # cdrom inserted it will popup a very annoying dialog
!     #D:/boost/include
!     /sw/local/include
    )
  
!   SET(_boost_LIBRARIES_SEARCH_DIRS
!     C:/boost/lib
!     "C:/Program Files/boost/boost_${Boost_FIND_VERSION_MAJOR}_${Boost_FIND_VERSION_MINOR}_${Boost_FIND_VERSION_PATCH}/lib"
!     /sw/local/lib
!   )
  
!   IF( NOT $ENV{BOOST_ROOT} STREQUAL "" )
!     SET(_boost_INCLUDE_SEARCH_DIRS $ENV{BOOST_ROOT}/include ${_boost_INCLUDE_SEARCH_DIRS})
!     SET(_boost_LIBRARIES_SEARCH_DIRS $ENV{BOOST_ROOT}/lib ${_boost_INCLUDE_SEARCH_DIRS})
!   ENDIF( NOT $ENV{BOOST_ROOT} STREQUAL "" )
  
!   IF( NOT $ENV{BOOST_INCLUDEDIR} STREQUAL "" )
!     SET(_boost_INCLUDE_SEARCH_DIRS $ENV{BOOST_INCLUDEDIR} ${_boost_INCLUDE_SEARCH_DIRS})
!   ENDIF( NOT $ENV{BOOST_INCLUDEDIR} STREQUAL "" )
  
!   IF( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" )
!     SET(_boost_LIBRARIES_SEARCH_DIRS $ENV{BOOST_LIBRARYDIR} ${_boost_INCLUDE_SEARCH_DIRS})
!   ENDIF( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" )
  
!   IF( BOOST_ROOT )
!     IF( WIN32 )
!       SET(_boost_INCLUDE_SEARCH_DIRS ${BOOST_ROOT} ${_boost_INCLUDE_SEARCH_DIRS})
!     ELSE( WIN32 )
!       SET(_boost_INCLUDE_SEARCH_DIRS ${BOOST_ROOT}/include ${_boost_INCLUDE_SEARCH_DIRS})
!     ENDIF( WIN32 )
!     SET(_boost_LIBRARIES_SEARCH_DIRS ${BOOST_ROOT}/lib ${_boost_LIBRARIES_SEARCH_DIRS})
!   ENDIF( BOOST_ROOT )
  
!   IF( BOOST_INCLUDEDIR )
!     SET(_boost_INCLUDE_SEARCH_DIRS ${BOOST_INCLUDEDIR} ${_boost_INCLUDE_SEARCH_DIRS})
!   ENDIF( BOOST_INCLUDEDIR )
  
!   IF( BOOST_LIBRARYDIR )
!     SET(_boost_LIBRARIES_SEARCH_DIRS ${BOOST_LIBRARYDIR} ${_boost_LIBRARIES_SEARCH_DIRS})
!   ENDIF( BOOST_LIBRARYDIR )
  
!   #Try first in our own include search paths (e.g. BOOST_ROOT)
!   FOREACH(_boost_VER ${_boost_TEST_VERSIONS})
!     IF( NOT Boost_INCLUDE_DIR )
  
!       # Add in a path suffix, based on the required version, ideally we could
!       # read this from version.hpp, but for that to work we'd need to know the include
!       # dir already
!       SET(_boost_PATH_SUFFIX
!         boost-${_boost_VER}
!       )
  
!       IF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
!           STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1_\\2_\\3" _boost_PATH_SUFFIX ${_boost_PATH_SUFFIX})
!       ELSEIF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+")
!           STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)" "\\1_\\2" _boost_PATH_SUFFIX ${_boost_PATH_SUFFIX})
!       ENDIF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
  
  
!       FIND_PATH(Boost_INCLUDE_DIR
!           NAMES         boost/config.hpp
!           PATHS         ${_boost_INCLUDE_SEARCH_DIRS}
!           PATH_SUFFIXES ${_boost_PATH_SUFFIX}
!           NO_DEFAULT_PATH
!       )
! 
!     ENDIF( NOT Boost_INCLUDE_DIR )
!   ENDFOREACH(_boost_VER)
! 
!   # If nothing is found search again using system default paths
!   FOREACH(_boost_VER ${_boost_TEST_VERSIONS})
!     IF( NOT Boost_INCLUDE_DIR )
! 
!       # Add in a path suffix, based on the required version, ideally we could
!       # read this from version.hpp, but for that to work we'd need to know the include
!       # dir already
!       SET(_boost_PATH_SUFFIX
!         boost-${_boost_VER}
!       )
! 
!       IF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
!           STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1_\\2_\\3" _boost_PATH_SUFFIX ${_boost_PATH_SUFFIX})
!       ELSEIF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+")
!           STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)" "\\1_\\2" _boost_PATH_SUFFIX ${_boost_PATH_SUFFIX})
!       ENDIF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
! 
!       FIND_PATH(Boost_INCLUDE_DIR
!           NAMES         boost/config.hpp
!           PATH_SUFFIXES ${_boost_PATH_SUFFIX}
!       )
!  
!     ENDIF( NOT Boost_INCLUDE_DIR )
!   ENDFOREACH(_boost_VER)
!   IF(Boost_INCLUDE_DIR)
!     # Extract Boost_VERSION and Boost_LIB_VERSION from version.hpp
!     # Read the whole file:
!     #
!     SET(BOOST_VERSION 0)
!     SET(BOOST_LIB_VERSION "")
!     FILE(READ "${Boost_INCLUDE_DIR}/boost/version.hpp" _boost_VERSION_HPP_CONTENTS)
!   
!     STRING(REGEX REPLACE ".*#define BOOST_VERSION ([0-9]+).*" "\\1" Boost_VERSION "${_boost_VERSION_HPP_CONTENTS}")
!     STRING(REGEX REPLACE ".*#define BOOST_LIB_VERSION \"([0-9_]+)\".*" "\\1" Boost_LIB_VERSION "${_boost_VERSION_HPP_CONTENTS}")
!   
!     SET(Boost_LIB_VERSION ${Boost_LIB_VERSION} CACHE INTERNAL "The library version string for boost libraries")
!     SET(Boost_VERSION ${Boost_VERSION} CACHE INTERNAL "The version number for boost libraries")
!     
!     IF(NOT "${Boost_VERSION}" STREQUAL "0")
!       MATH(EXPR Boost_MAJOR_VERSION "${Boost_VERSION} / 100000")
!       MATH(EXPR Boost_MINOR_VERSION "${Boost_VERSION} / 100 % 1000")
!       MATH(EXPR Boost_SUBMINOR_VERSION "${Boost_VERSION} % 100")
!   
!     ENDIF(NOT "${Boost_VERSION}" STREQUAL "0")
!   ENDIF(Boost_INCLUDE_DIR)
! 
! 
!   #Setting some more suffixes for the library
!   SET (Boost_LIB_PREFIX "")
!   IF ( WIN32 AND Boost_USE_STATIC_LIBS )
!     SET (Boost_LIB_PREFIX "lib")
!   ENDIF ( WIN32 AND Boost_USE_STATIC_LIBS )
!   SET (_boost_COMPILER "-gcc")
!   IF (MSVC71)
!     SET (_boost_COMPILER "-vc71")
!   ENDIF(MSVC71)
!   IF (MSVC80)
!     SET (_boost_COMPILER "-vc80")
!   ENDIF(MSVC80)
!   IF (MSVC90)
!     SET (_boost_COMPILER "-vc90")
!   ENDIF (MSVC90)
!   IF (MINGW)
!     EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
!       ARGS --version
!       OUTPUT_VARIABLE _boost_COMPILER_VERSION
!       )
!     STRING(REGEX REPLACE ".* ([0-9])\\.([0-9])\\.[0-9] .*" "\\1\\2"
!       _boost_COMPILER_VERSION ${_boost_COMPILER_VERSION})
!     SET (_boost_COMPILER "-mgw${_boost_COMPILER_VERSION}")
!   ENDIF(MINGW)
!   IF (CYGWIN)
!     SET (_boost_COMPILER "-gcc")
!   ENDIF (CYGWIN)
!   IF (UNIX)
!     IF (APPLE)
!         SET (_boost_COMPILER "")
!     ELSE (APPLE)
!       IF (NOT CMAKE_COMPILER_IS_GNUCC)
!         # This is for the intel compiler
!         SET (_boost_COMPILER "-il")
!       ELSE (NOT CMAKE_COMPILER_IS_GNUCC)
!         #find out the version of gcc being used.
!         EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
!             ARGS --version
!             OUTPUT_VARIABLE _boost_COMPILER_VERSION
!         )
!         STRING(REGEX REPLACE ".* ([0-9])\\.([0-9])\\.[0-9] .*" "\\1\\2"
!                _boost_COMPILER_VERSION ${_boost_COMPILER_VERSION})
!         SET (_boost_COMPILER "-gcc${_boost_COMPILER_VERSION}")
!       ENDIF (NOT CMAKE_COMPILER_IS_GNUCC)
!     ENDIF (APPLE)
!   ENDIF(UNIX)
! 
!   SET (_boost_MULTITHREADED "-mt")
! 
!   IF( NOT Boost_USE_MULTITHREADED )
!     SET (_boost_MULTITHREADED "")
!   ENDIF( NOT Boost_USE_MULTITHREADED )
! 
!   SET( _boost_STATIC_TAG "")
!   IF (WIN32)
!     IF(MSVC)
!       SET (_boost_ABI_TAG "g")
!     ENDIF(MSVC)
!     IF( Boost_USE_STATIC_LIBS )
!       SET( _boost_STATIC_TAG "-s")
!     ENDIF( Boost_USE_STATIC_LIBS )
!   ENDIF(WIN32)
!   SET (_boost_ABI_TAG "${_boost_ABI_TAG}d")
! 
!   # ------------------------------------------------------------------------
!   #  Begin finding boost libraries
!   # ------------------------------------------------------------------------
!   FOREACH(COMPONENT ${Boost_FIND_COMPONENTS})
!     STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
!     SET( Boost_${UPPERCOMPONENT}_LIBRARY "Boost_${UPPERCOMPONENT}_LIBRARY-NOTFOUND" )
!     SET( Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE "Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE-NOTFOUND" )
!     SET( Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG "Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG-NOTFOUND")
! 
!     # Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
!     IF( Boost_USE_STATIC_LIBS )
!       SET( _boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
!       IF(WIN32)
!         SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
!       ELSE(WIN32)
!         SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
!       ENDIF(WIN32)
!     ENDIF( Boost_USE_STATIC_LIBS )
! 
!     FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE
!         NAMES  ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}-${Boost_LIB_VERSION}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_STATIC_TAG}-${Boost_LIB_VERSION}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_STATIC_TAG}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}
!         PATHS  ${_boost_LIBRARIES_SEARCH_DIRS}
!         NO_DEFAULT_PATH
!     )
! 
!     IF( NOT ${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE} )
!       FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE
!           NAMES  ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}-${Boost_LIB_VERSION}
!                  ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_STATIC_TAG}-${Boost_LIB_VERSION}
!                  ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}
!                  ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_STATIC_TAG}
!                  ${Boost_LIB_PREFIX}boost_${COMPONENT}
!       )
!     ENDIF( NOT ${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE} )
! 
!     FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG
!         NAMES  ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}-${_boost_ABI_TAG}-${Boost_LIB_VERSION}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_STATIC_TAG}${_boost_ABI_TAG}-${Boost_LIB_VERSION}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}-${_boost_ABI_TAG}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_STATIC_TAG}${_boost_ABI_TAG}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_boost_ABI_TAG}
!         PATHS  ${_boost_LIBRARIES_SEARCH_DIRS}
!         NO_DEFAULT_PATH
!     )
! 
!     IF( NOT ${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG} )
!       FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG
!           NAMES  ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}-${_boost_ABI_TAG}-${Boost_LIB_VERSION}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_STATIC_TAG}${_boost_ABI_TAG}-${Boost_LIB_VERSION}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}-${_boost_ABI_TAG}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_STATIC_TAG}${_boost_ABI_TAG}
!                ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_boost_ABI_TAG}
!       )
!     ENDIF( NOT ${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG} )
!     _Boost_ADJUST_LIB_VARS(${UPPERCOMPONENT})
!     IF( Boost_USE_STATIC_LIBS )
!       SET(CMAKE_FIND_LIBRARY_SUFFIXES ${_boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
!     ENDIF( Boost_USE_STATIC_LIBS )
!   ENDFOREACH(COMPONENT)
!   # ------------------------------------------------------------------------
!   #  End finding boost libraries
!   # ------------------------------------------------------------------------
! 
!   SET(Boost_INCLUDE_DIRS
!     ${Boost_INCLUDE_DIR}
!   )
! 
!   # MESSAGE(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
!   # MESSAGE(STATUS "Boost_LIBRARIES: ${Boost_LIBRARIES}")
! 
!   SET(Boost_FOUND FALSE)
!   IF(Boost_INCLUDE_DIR)
!     SET( Boost_FOUND TRUE )
!     IF( Boost_FIND_VERSION_MAJOR AND Boost_VERSION_MAJOR LESS "${Boost_FIND_VERSION_MAJOR}" )
!       SET( Boost_FOUND FALSE )
!     ELSE( Boost_FIND_VERSION_MAJOR AND Boost_VERSION_MAJOR LESS "${Boost_FIND_VERSION_MAJOR}" )
!       IF( Boost_FIND_VERSION_MINOR AND Boost_VERSION_MINOR LESS "${Boost_FIND_VERSION_MINOR}" )
!         SET( Boost_FOUND FALSE )
!       ELSE( Boost_FIND_VERSION_MINOR AND Boost_VERSION_MINOR LESS "${Boost_FIND_VERSION_MINOR}" )
!         IF( Boost_FIND_VERSION_PATCH AND Boost_VERSION_SUBMINOR LESS "${Boost_FIND_VERSION_PATCH}" )
!           SET( Boost_FOUND FALSE )
!         ENDIF( Boost_FIND_VERSION_PATCH AND Boost_VERSION_SUBMINOR LESS "${Boost_FIND_VERSION_PATCH}" )
!       ENDIF( Boost_FIND_VERSION_MINOR AND Boost_VERSION_MINOR LESS "${Boost_FIND_VERSION_MINOR}" )
!     ENDIF( Boost_FIND_VERSION_MAJOR AND Boost_VERSION_MAJOR LESS "${Boost_FIND_VERSION_MAJOR}" )
!     set(_boost_CHECKED_COMPONENT FALSE)
!     FOREACH(COMPONENT ${Boost_FIND_COMPONENTS})
!       STRING(TOUPPER ${COMPONENT} COMPONENT)
!       set(_boost_CHECKED_COMPONENT TRUE)
!       IF(NOT Boost_${COMPONENT}_FOUND)
!         SET( Boost_FOUND FALSE)
!       ENDIF(NOT Boost_${COMPONENT}_FOUND)
!     ENDFOREACH(COMPONENT)
!     IF( NOT Boost_LIBRARY_DIRS AND NOT _boost_CHECKED_COMPONENT )
!       # Compatibility Code for backwards compatibility with CMake 2.4
! 
!       # Look for the boost library path.
!       # Note that the user may not have installed any libraries
!       # so it is quite possible the Boost_LIBRARY_PATH may not exist.
!       SET(_boost_LIB_DIR ${Boost_INCLUDE_DIR})
!     
!       IF("${_boost_LIB_DIR}" MATCHES "boost-[0-9]+")
!         GET_FILENAME_COMPONENT(_boost_LIB_DIR ${_boost_LIB_DIR} PATH)
!       ENDIF ("${_boost_LIB_DIR}" MATCHES "boost-[0-9]+")
!     
!       IF("${_boost_LIB_DIR}" MATCHES "/include$")
!         # Strip off the trailing "/include" in the path.
!         GET_FILENAME_COMPONENT(_boost_LIB_DIR ${_boost_LIB_DIR} PATH)
!       ENDIF("${_boost_LIB_DIR}" MATCHES "/include$")
!     
!       IF(EXISTS "${_boost_LIB_DIR}/lib")
!         SET (_boost_LIB_DIR ${_boost_LIB_DIR}/lib)
!       ELSE(EXISTS "${_boost_LIB_DIR}/lib")
!         IF(EXISTS "${_boost_LIB_DIR}/stage/lib")
!           SET(_boost_LIB_DIR ${_boost_LIB_DIR}/stage/lib)
!         ELSE(EXISTS "${_boost_LIB_DIR}/stage/lib")
!           SET(_boost_LIB_DIR "")
!         ENDIF(EXISTS "${_boost_LIB_DIR}/stage/lib")
!       ENDIF(EXISTS "${_boost_LIB_DIR}/lib")
!     
!       IF(_boost_LIB_DIR AND EXISTS "${_boost_LIB_DIR}")
!         SET(Boost_LIBRARY_DIRS ${_boost_LIB_DIR})
!       ENDIF(_boost_LIB_DIR AND EXISTS "${_boost_LIB_DIR}")
! 
!     ENDIF( NOT Boost_LIBRARY_DIRS AND NOT _boost_CHECKED_COMPONENT )
! 
!   ELSE(Boost_INCLUDE_DIR)
!     SET( Boost_FOUND FALSE)
!   ENDIF(Boost_INCLUDE_DIR)
! 
!   IF (Boost_FOUND)
!       IF (NOT Boost_FIND_QUIETLY)
!         MESSAGE(STATUS "Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
!       ENDIF(NOT Boost_FIND_QUIETLY)
!       IF (NOT Boost_FIND_QUIETLY)
!         MESSAGE(STATUS "Found the following Boost libraries:")
!       ENDIF(NOT Boost_FIND_QUIETLY)
!       FOREACH ( COMPONENT  ${Boost_FIND_COMPONENTS} )
!         STRING( TOUPPER ${COMPONENT} UPPERCOMPONENT )
!         IF ( Boost_${UPPERCOMPONENT}_FOUND )
!           IF (NOT Boost_FIND_QUIETLY)
!             MESSAGE (STATUS "  ${COMPONENT}")
!           ENDIF(NOT Boost_FIND_QUIETLY)
!           SET(Boost_LIBRARIES ${Boost_LIBRARIES} ${Boost_${UPPERCOMPONENT}_LIBRARY})
!         ENDIF ( Boost_${UPPERCOMPONENT}_FOUND )
!       ENDFOREACH(COMPONENT)
!   ELSE (Boost_FOUND)
!       IF (Boost_FIND_REQUIRED)
!         MESSAGE(STATUS "Boost version required: ${Boost_FIND_VERSION}. Found: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
!         MESSAGE(FATAL_ERROR "Couldn't find the Boost libraries and/or include directory, or the version found is too old. Please install the Boost libraries AND development packages. You can set BOOST_ROOT, BOOST_INCLUDEDIR and BOOST_LIBRARYDIR to help find Boost.")
!       ENDIF(Boost_FIND_REQUIRED)
!   ENDIF(Boost_FOUND)
! 
!   # Under Windows, automatic linking is performed, so no need to specify the libraries.
!   IF (WIN32)
!     IF (NOT MINGW)
!       SET(Boost_LIBRARIES "")
!     ENDIF (NOT MINGW)
!   ENDIF(WIN32)
! 
!   # show the Boost_INCLUDE_DIRS AND Boost_LIBRARIES variables only in the advanced view
!   MARK_AS_ADVANCED(Boost_INCLUDE_DIR
!       Boost_INCLUDE_DIRS
!       Boost_LIBRARY_DIRS
!       Boost_USE_MULTITHREADED
!   )
! ENDIF(_boost_IN_CACHE)
  



More information about the Cmake-commits mailing list