Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Polyhedron demo problem (bis)

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Polyhedron demo problem (bis)


Chronological Thread 
  • From: "Laurent Rineau (GeometryFactory)" <>
  • To:
  • Subject: Re: [cgal-discuss] Polyhedron demo problem (bis)
  • Date: Wed, 20 May 2009 11:49:46 +0200
  • Organization: GeometryFactory

On Wednesday 20 May 2009 10:35:36 Martial TOLA (CNRS-Liris) wrote:
> Hello
>
> >Strange: libCGAL_Qt4.dylib is not in that list! Have you build CGAL with
> > Qt4 support?
>
> Of course, Qt4 is on (but Qt3 is off like under windows and linux), you can
> see that in cmake-gui.txt.
>
> Here is the logs with -v (make cgal and make Polyhedron).
>
> Thank you for your help.

That confirms that, although CGAL_Qt4 is detected at the configuration time,
libCGAL_Qt4.dylib is not linked with the executable. Add -lCGAL_Qt4 manually
to CMAKE_EXE_LINKER_FLAGS.

Well,... I now remember that we (CGAL developers) have detected that
CMake-2.6.3 broke the compatibility with previous versions of CMake on one
detail used in CGAL scripts. We have a patch for the upcoming CGAL-3.4.1.

I have attached the patch, if you are willing to test it...

--
Laurent Rineau, PhD
Engineer at GeometryFactory
http://www.geometryfactory.com/

Index: cmake/modules/CGAL_VersionUtils.cmake
===================================================================
--- cmake/modules/CGAL_VersionUtils.cmake	(revision 0)
+++ cmake/modules/CGAL_VersionUtils.cmake	(revision 49504)
@@ -0,0 +1,230 @@
+set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+if ( NOT CGAL_VERSION_UTILS_FILE_INCLUDED )
+  set( CGAL_VERSION_UTILS_FILE_INCLUDED 1 )
+
+#  
+# Given a version string of the form "major.[minor.[patch.[tweak]]]"
+# decomposes it into components
+#
+macro( VERSION_DECOMPOSE v major minor patch tweak )
+
+  string(REPLACE "." ";" VERSION_DECOMPOSE_LIST ${v} )
+
+  list( LENGTH VERSION_DECOMPOSE_LIST VERSION_DECOMPOSE_LIST_LEN )
+  
+  if ( VERSION_DECOMPOSE_LIST_LEN GREATER 0 )
+    list( GET VERSION_DECOMPOSE_LIST 0 ${major} )
+  else()
+    set ( ${major} -1 )
+  endif()  
+  
+  if ( VERSION_DECOMPOSE_LIST_LEN GREATER 1 )
+    list( GET VERSION_DECOMPOSE_LIST 1 ${minor} )
+  else()
+    set ( ${minor} -1 )
+  endif()  
+  
+  if ( VERSION_DECOMPOSE_LIST_LEN GREATER 2 )
+    list( GET VERSION_DECOMPOSE_LIST 2 ${patch} )
+  else()
+    set ( ${patch} -1 )
+  endif()  
+  
+  if ( VERSION_DECOMPOSE_LIST_LEN GREATER 3 )
+    list( GET VERSION_DECOMPOSE_LIST 3 ${tweak} )
+  else()
+    set ( ${tweak} -1 )
+  endif()  
+  
+endmacro()
+
+#  
+# Given two version string of the form "major.[minor.[patch.[tweak]]]"
+# returns TRUE if they are equal, FALSE otherwise.
+#
+macro( IS_VERSION_EQUAL a b r )
+
+  VERSION_DECOMPOSE( ${a} _IVE_a_major _IVE_a_minor _IVE_a_patch _IVE_a_tweak )
+  VERSION_DECOMPOSE( ${b} _IVE_b_major _IVE_b_minor _IVE_b_patch _IVE_b_tweak )
+  
+  set ( ${r} FALSE )  
+  
+  if ( _IVE_a_major EQUAL ${_IVE_b_major} )
+    if ( _IVE_a_minor EQUAL ${_IVE_b_minor} )
+      if ( _IVE_a_patch EQUAL ${_IVE_b_patch} )
+        if ( _IVE_a_tweak EQUAL ${_IVE_b_tweak} )
+          set ( ${r} TRUE )  
+        endif()  
+      endif()
+    endif()
+  endif()
+
+endmacro()
+
+#  
+# Given two version string of the form "major.[minor.[patch.[tweak]]]"
+# returns TRUE if the first is smaller than the second, FALSE otherwise.
+#
+macro( IS_VERSION_LESS a b r )
+
+  VERSION_DECOMPOSE( ${a} _IVL_a_major _IVL_a_minor _IVL_a_patch _IVL_a_tweak )
+  VERSION_DECOMPOSE( ${b} _IVL_b_major _IVL_b_minor _IVL_b_patch _IVL_b_tweak )
+  
+  set ( ${r} FALSE )  
+  
+  if ( _IVL_a_major LESS ${_IVL_b_major} )
+    set ( ${r} TRUE )  
+  elseif( _IVL_a_major EQUAL ${_IVL_b_major})  
+    if ( _IVL_a_minor LESS ${_IVL_b_minor} )
+      set ( ${r} TRUE )  
+    elseif( _IVL_a_minor EQUAL ${_IVL_b_minor} )  
+      if ( _IVL_a_patch LESS ${_IVL_b_patch} )
+        set ( ${r} TRUE )  
+      elseif( _IVL_a_patch EQUAL ${_IVL_b_patch} )   
+        if ( _IVL_a_tweak LESS ${_IVL_b_tweak} )
+          set ( ${r} TRUE )  
+        endif()  
+      endif()
+    endif()
+  endif()
+
+endmacro()
+
+#  
+# Given two version string of the form "major.[minor.[patch.[tweak]]]"
+# returns TRUE if the first is greater than the second, FALSE otherwise.
+#
+macro( IS_VERSION_GREATER a b r )
+
+  IS_VERSION_LESS( ${a} ${b} _IVG_less )
+  
+  if ( _IVG_less )
+    set( ${r} FALSE )
+  else()
+  
+    IS_VERSION_EQUAL( ${a} ${b} _IVG_eq )
+    
+    if ( _IVG_eq )
+      set( ${r} FALSE )
+    else()
+      set( ${r} TRUE )
+    endif()
+    
+  endif()  
+  
+endmacro()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+#                                    -= TESTING =-
+#
+
+
+macro ( TEST_VERSION_DECOMPOSE v expected_major expected_minor expected_patch expected_tweak )
+
+  VERSION_DECOMPOSE( ${v} major minor patch tweak )
+  
+  set ( OK 0 )
+  
+  if ( major EQUAL "${expected_major}" )
+    if ( minor EQUAL "${expected_minor}" )  
+      if ( patch EQUAL "${expected_patch}" ) 
+        if ( tweak EQUAL "${expected_tweak}" ) 
+          set ( OK 1 )
+        endif()  
+      endif()  
+    endif()  
+  endif()  
+
+  if ( OK )
+    message( STATUS "correct - ${v} -> ${major}, ${minor}, ${patch}, ${tweak} " ) 
+  else()
+    message( STATUS "FAILED  - ${v} -> ${major}, ${minor}, ${patch}, ${tweak} " ) 
+  endif()
+  
+endmacro()
+
+macro ( TEST_VERSION_COMPARISON op v0 v1 expected )
+
+  if ( "${op}" STREQUAL "<" )
+    IS_VERSION_LESS( ${v0} ${v1} result )
+  elseif ( "${op}" STREQUAL ">" )
+    IS_VERSION_GREATER( ${v0} ${v1} result )
+  else()
+    IS_VERSION_EQUAL( ${v0} ${v1} result )
+  endif()  
+  
+  if ( result STREQUAL ${expected} )
+    message( STATUS "correct - ${v0} ${op} ${v1} => ${result}" )   
+  else()
+    message( STATUS "FAILED  - ${v0} ${op} ${v1} => ${result}" ) 
+  endif()
+
+endmacro()
+
+if ( UNIT_TEST_VERSION_UTILS )
+
+  TEST_VERSION_DECOMPOSE("1.2.3.4" 1 2 3 4 )
+  TEST_VERSION_DECOMPOSE("1.2.3" 1 2 3 -1 )
+  TEST_VERSION_DECOMPOSE("1.2" 1 2 -1 -1 )
+  TEST_VERSION_DECOMPOSE("1" 1 -1 -1 -1 )
+  
+  TEST_VERSION_COMPARISON( "==" "1.2.3.4" "1.2.3.4" TRUE )
+  TEST_VERSION_COMPARISON( "==" "1.2.3"   "1.2.3"   TRUE )
+  TEST_VERSION_COMPARISON( "==" "1.2"     "1.2"     TRUE )
+  TEST_VERSION_COMPARISON( "==" "1"       "1"       TRUE )
+  
+  TEST_VERSION_COMPARISON( "==" "1.2.3.4" "1.2.3"  FALSE )
+  TEST_VERSION_COMPARISON( "==" "1.2.3"   "1.2"    FALSE )
+  TEST_VERSION_COMPARISON( "==" "1.2"     "1"      FALSE )
+  
+  TEST_VERSION_COMPARISON( "==" "1.2.3.4" "1.2.3.5" FALSE )
+  TEST_VERSION_COMPARISON( "==" "1.2.3"   "1.2.4"   FALSE )
+  TEST_VERSION_COMPARISON( "==" "1.2"     "1.3"     FALSE )
+  TEST_VERSION_COMPARISON( "==" "1"       "2"       FALSE )
+  
+  TEST_VERSION_COMPARISON( "<" "1.2.3.4" "1.2.3.4" FALSE )
+  TEST_VERSION_COMPARISON( "<" "1.2.3"   "1.2.3"   FALSE )
+  TEST_VERSION_COMPARISON( "<" "1.2"     "1.2"     FALSE )
+  TEST_VERSION_COMPARISON( "<" "1"       "1"       FALSE )
+  
+  TEST_VERSION_COMPARISON( "<" "1.2.3.4" "1.2.3.5" TRUE )
+  TEST_VERSION_COMPARISON( "<" "1.2.3.4" "1.2.4.5" TRUE )
+  TEST_VERSION_COMPARISON( "<" "1.2.3.4" "1.3.4.5" TRUE )
+  TEST_VERSION_COMPARISON( "<" "1.2.3.4" "2.3.4.5" TRUE )
+  
+  TEST_VERSION_COMPARISON( "<" "1.2.3.4" "1.2.4" TRUE )
+  TEST_VERSION_COMPARISON( "<" "1.2.3.4" "1.3"   TRUE )
+  TEST_VERSION_COMPARISON( "<" "1.2.3.4" "2"     TRUE )
+  
+  TEST_VERSION_COMPARISON( "<" "1.2.3" "1.2.4" TRUE )
+  TEST_VERSION_COMPARISON( "<" "1.2"   "1.3"   TRUE )
+  TEST_VERSION_COMPARISON( "<" "1"     "2"     TRUE )
+  
+  TEST_VERSION_COMPARISON( "<" "1.2.3.6" "1.2.4.5" TRUE )
+  TEST_VERSION_COMPARISON( "<" "1.2.5.6" "1.3.4.5" TRUE )
+  TEST_VERSION_COMPARISON( "<" "1.4.5.6" "2.3.4.5" TRUE )
+
+  TEST_VERSION_COMPARISON( ">" "1.2.3.4" "1.2.3.4" FALSE )
+  TEST_VERSION_COMPARISON( ">" "1.2.3"   "1.2.3"   FALSE )
+  TEST_VERSION_COMPARISON( ">" "1.2"     "1.2"     FALSE )
+  TEST_VERSION_COMPARISON( ">" "1"       "1"       FALSE )
+  
+  TEST_VERSION_COMPARISON( ">" "1.2.3.5" "1.2.3.4" TRUE )
+  
+endif()
+
+endif()
\ No newline at end of file
Index: cmake/modules/CGAL_SetupFlags.cmake
===================================================================
--- cmake/modules/CGAL_SetupFlags.cmake	(revision 47550)
+++ cmake/modules/CGAL_SetupFlags.cmake	(working copy)
@@ -1,3 +1,6 @@
+if ( NOT CGAL_SETUP_FLAGS_INCLUDED )
+  set( CGAL_SETUP_FLAGS_INCLUDED 1 )
+
 #
 # Set CGAL_DONT_OVERRIDE_CMAKE_FLAGS to TRUE if you need to prevent the CGAL configuration to
 # override the flags used to build the libraries
@@ -75,3 +78,4 @@
 endif()
 
 
+endif()
Index: cmake/modules/CGALConfig_binary.cmake.in
===================================================================
--- cmake/modules/CGALConfig_binary.cmake.in	(revision 47550)
+++ cmake/modules/CGALConfig_binary.cmake.in	(working copy)
@@ -122,3 +122,6 @@
   check_cgal_component("_${CGAL_COMPONENT}")
 endforeach()
 
+# Starting with cmake 2.6.3, CGAL_FIND_COMPONENTS is cleared out when find_package returns.
+# But we need it within UseCGAL.cmake, so we save it aside into another variable
+set( CGAL_REQUESTED_COMPONENTS ${CGAL_FIND_COMPONENTS} )
Index: cmake/modules/CGALConfig_install.cmake.fhs.in
===================================================================
--- cmake/modules/CGALConfig_install.cmake.fhs.in	(revision 47550)
+++ cmake/modules/CGALConfig_install.cmake.fhs.in	(working copy)
@@ -124,3 +124,6 @@
   check_cgal_component("_${CGAL_COMPONENT}")
 endforeach()
 
+# Starting with cmake 2.6.3, CGAL_FIND_COMPONENTS is cleared out when find_package returns.
+# But we need it within UseCGAL.cmake, so we save it aside into another variable
+set( CGAL_REQUESTED_COMPONENTS ${CGAL_FIND_COMPONENTS} )
Index: cmake/modules/FindQGLViewer.cmake
===================================================================
--- cmake/modules/FindQGLViewer.cmake	(revision 47550)
+++ cmake/modules/FindQGLViewer.cmake	(working copy)
@@ -15,7 +15,7 @@
          )
 
 find_library(QGLVIEWER_LIBRARY_RELEASE 
-             NAMES QGLViewer QGLViewer2
+             NAMES qglviewer QGLViewer QGLViewer2
              PATHS /usr/lib
                    /usr/local/lib
                    ENV QGLVIEWERROOT
@@ -25,7 +25,7 @@
             )
 
 find_library(QGLVIEWER_LIBRARY_DEBUG
-             NAMES dQGLViewer dQGLViewer2
+             NAMES dqglviewer dQGLViewer dQGLViewer2
              PATHS /usr/lib
                    /usr/local/lib
                    ENV QGLVIEWERROOT
@@ -40,10 +40,11 @@
   else()
     set(QGLVIEWER_LIBRARIES_ ${QGLVIEWER_LIBRARY_RELEASE})
   endif()
+
+  set(QGLVIEWER_LIBRARIES ${QGLVIEWER_LIBRARIES_} CACHE FILEPATH "The QGLViewer library")
+
 endif()
 
-set(QGLVIEWER_LIBRARIES ${QGLVIEWER_LIBRARIES_} CACHE FILEPATH "The QGLViewer library")
-
 IF(QGLVIEWER_INCLUDE_DIR AND QGLVIEWER_LIBRARIES)
    SET(QGLVIEWER_FOUND TRUE)
 ENDIF(QGLVIEWER_INCLUDE_DIR AND QGLVIEWER_LIBRARIES)
Index: cmake/modules/FindCGAL.cmake
===================================================================
--- cmake/modules/FindCGAL.cmake	(revision 47550)
+++ cmake/modules/FindCGAL.cmake	(working copy)
@@ -11,7 +11,7 @@
 #
 
 # Construct consitent error messages for use below.
-set(CGAL_DIR_DESCRIPTION "directory containing CGALConfig.cmake. This is either the binary directory where CGAL was configured or PREFIX/lib/CGAL-3.4 for an installation.")
+set(CGAL_DIR_DESCRIPTION "directory containing CGALConfig.cmake. This is either the binary directory where CGAL was configured or PREFIX/lib/CGAL for an installation.")
 set(CGAL_DIR_MESSAGE     "CGAL not found.  Set the CGAL_DIR cmake variable or environment variable to the ${CGAL_DIR_DESCRIPTION}")
  
 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
@@ -32,7 +32,7 @@
   
   foreach(dir ${CGAL_DIR_SEARCH2})
   
-    set(CGAL_DIR_SEARCH ${CGAL_DIR_SEARCH} ${dir}/../lib/CGAL-3.4 )
+    set(CGAL_DIR_SEARCH ${CGAL_DIR_SEARCH} ${dir}/../lib/CGAL )
       
   endforeach()
 
@@ -49,8 +49,8 @@
     ${CGAL_DIR_SEARCH}
 
     # Look in standard UNIX install locations.
-    /usr/local/lib/CGAL-3.4
-    /usr/lib/CGAL-3.4
+    /usr/local/lib/CGAL
+    /usr/lib/CGAL
 
     # Read from the CMakeSetup registry entries.  It is likely that
     # CGAL will have been recently built.
Index: cmake/modules/CGAL_Common.cmake
===================================================================
--- cmake/modules/CGAL_Common.cmake	(revision 47550)
+++ cmake/modules/CGAL_Common.cmake	(working copy)
@@ -17,9 +17,19 @@
   if (NOT CMAKE_ROOT)
     message( FATAL_ERROR "CMAKE_ROOT enviroment variable not set. It should point to the directory where CMake is installed.")
   endif()
-  
+
+  # CMAKE_VERSION was introduced in 2.6.3 so we use it to detect the fact
+  if ( CMAKE_VERSION )
+    set( CMAKE_2_6_3_OR_ABOVE TRUE )
+  else()
+    set( CMAKE_2_6_3_OR_ABOVE FALSE )
+  endif()
+    
   if ( COMMAND cmake_policy )
     cmake_policy( SET CMP0007 OLD )  
+    if ( CMAKE_2_6_3_OR_ABOVE )
+      cmake_policy( SET CMP0011 OLD )  
+    endif()
   endif()
   
   if ( "${BUILD_SHARED_LIBS}" STREQUAL "" )
@@ -52,7 +62,4 @@
 
   set(CMAKE_COLORMAKEFILE ON)
   
-  # Needed by the testsuite results parser
-  set(CMAKE_VERBOSE_MAKEFILE ON)
-
 endif()
\ No newline at end of file
Index: cmake/modules/UseCGAL.cmake
===================================================================
--- cmake/modules/UseCGAL.cmake	(revision 47550)
+++ cmake/modules/UseCGAL.cmake	(working copy)
@@ -14,15 +14,12 @@
   set(USE_CGAL_FILE_INCLUDED 1)
 
   include(CGAL_Common)
+  include(CGAL_SetupFlags)
+  include(CGAL_GeneratorSpecificSettings)
   
-  if ( CGAL_IS_CURRENT_SCRIPT_TOP_LEVEL )
-    include(CGAL_SetupFlags)
-    include(CGAL_GeneratorSpecificSettings)
-  endif()
-  
   set( CGAL_LIBRARIES )
 
-  foreach ( CGAL_COMPONENT ${CGAL_FIND_COMPONENTS} )
+  foreach ( CGAL_COMPONENT ${CGAL_REQUESTED_COMPONENTS} )
     
     add_to_list( CGAL_LIBRARIES            ${CGAL_${CGAL_COMPONENT}_LIBRARY}              )
     add_to_list( CGAL_3RD_PARTY_LIBRARIES  ${CGAL_${CGAL_COMPONENT}_3RD_PARTY_LIBRARIES}  )
Index: cmake/modules/FindBoost.cmake
===================================================================
--- cmake/modules/FindBoost.cmake	(revision 47550)
+++ cmake/modules/FindBoost.cmake	(working copy)
@@ -1,631 +1,895 @@
-# - 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 or BOOSTROOT       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 <>
-#  Copyright (c) 2007      Wengo
-#  Copyright (c) 2007      Mike Jackson
-#  Copyright (c) 2008      Andreas Pakulat <>
-#
-#  Redistribution AND use is allowed according to the terms of the New
-#  BSD license.
-#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-#
-OPTION(Boost_USE_MULTITHREADED 
-  "Use the multithreaded versions of the Boost libraries" ON)
-
-if (Boost_FIND_VERSION_EXACT)
-  if (Boost_FIND_VERSION_PATCH)
-    set( _boost_TEST_VERSIONS 
-      "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.${Boost_FIND_VERSION_PATCH}")
-  else (Boost_FIND_VERSION_PATCH)
-    set( _boost_TEST_VERSIONS 
-      "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.0"
-      "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
-  endif (Boost_FIND_VERSION_PATCH)
-else (Boost_FIND_VERSION_EXACT)
-  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" )
-endif (Boost_FIND_VERSION_EXACT)
-
-# The reason that we failed to find Boost. This will be set to a
-# user-friendly message when we fail to find some necessary piece of
-# Boost.
-set(Boost_ERROR_REASON)
-
-############################################
-#
-# 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 )
-    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")
-      IF(NOT Boost_LIBRARY_DIRS)
-	FOREACH(Boost_${basename}_LIBRARY_path ${Boost_${basename}_LIBRARY})
-          GET_FILENAME_COMPONENT(Boost_LIBRARY_DIRS "${Boost_${basename}_LIBRARY_path}" PATH)
-          SET(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIRS} CACHE FILEPATH "Boost library directory")
-	ENDFOREACH(Boost_${basename}_LIBRARY_path ${Boost_${basename}_LIBRARY})
-      ENDIF(NOT Boost_LIBRARY_DIRS)
-      SET(Boost_${basename}_FOUND ON CACHE INTERNAL "Whether the 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:/boost"
-    "$ENV{ProgramFiles}/boost/boost_${Boost_FIND_VERSION_MAJOR}_${Boost_FIND_VERSION_MINOR}_${Boost_FIND_VERSION_PATCH}"
-    "$ENV{ProgramFiles}/Boost"
-    /sw/local/include
-  )
-
-  SET(_boost_LIBRARIES_SEARCH_DIRS
-    C:/boost/lib
-    "C:/boost"
-    "$ENV{ProgramFiles}/boost/boost_${Boost_FIND_VERSION_MAJOR}_${Boost_FIND_VERSION_MINOR}_${Boost_FIND_VERSION_PATCH}/lib"
-    "$ENV{ProgramFiles}/Boost"
-    /sw/local/lib
-  )
-
-  IF(Boost_LIBRARY_DIRS)
-    SET(_boost_LIBRARIES_SEARCH_DIRS ${Boost_LIBRARY_DIRS} ${_boost_LIBRARIES_SEARCH_DIRS})
-  ENDIF(Boost_LIBRARY_DIRS)
-
-  # If BOOST_ROOT was defined in the environment, use it.
-  if (NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "")
-    set(BOOST_ROOT $ENV{BOOST_ROOT})
-  endif(NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "")
-
-  # If BOOSTROOT was defined in the environment, use it.
-  if (NOT BOOST_ROOT AND NOT $ENV{BOOSTROOT} STREQUAL "")
-    set(BOOST_ROOT $ENV{BOOSTROOT})
-  endif(NOT BOOST_ROOT AND NOT $ENV{BOOSTROOT} STREQUAL "")
-
-  # If BOOST_INCLUDEDIR was defined in the environment, use it.
-  IF( NOT $ENV{BOOST_INCLUDEDIR} STREQUAL "" )
-    set(BOOST_INCLUDEDIR $ENV{BOOST_INCLUDEDIR})
-  ENDIF( NOT $ENV{BOOST_INCLUDEDIR} STREQUAL "" )
-
-  # If BOOST_LIBRARYDIR was defined in the environment, use it.
-  IF( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" )
-    set(BOOST_LIBRARYDIR $ENV{BOOST_LIBRARYDIR})
-  ENDIF( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" )
-
-  IF( BOOST_ROOT )
-    file(TO_CMAKE_PATH ${BOOST_ROOT} BOOST_ROOT)
-    SET(_boost_INCLUDE_SEARCH_DIRS 
-      ${BOOST_ROOT}/include 
-      ${BOOST_ROOT}
-      ${_boost_INCLUDE_SEARCH_DIRS})
-    SET(_boost_LIBRARIES_SEARCH_DIRS 
-      ${BOOST_ROOT}/lib 
-      ${BOOST_ROOT}/stage/lib 
-      ${_boost_LIBRARIES_SEARCH_DIRS})
-  ENDIF( BOOST_ROOT )
-
-  IF( BOOST_INCLUDEDIR )
-    file(TO_CMAKE_PATH ${BOOST_INCLUDEDIR} BOOST_INCLUDEDIR)
-    SET(_boost_INCLUDE_SEARCH_DIRS 
-      ${BOOST_INCLUDEDIR} ${_boost_INCLUDE_SEARCH_DIRS})
-  ENDIF( BOOST_INCLUDEDIR )
-
-  IF( BOOST_LIBRARYDIR )
-    file(TO_CMAKE_PATH ${BOOST_LIBRARYDIR} BOOST_LIBRARYDIR)
-    SET(_boost_LIBRARIES_SEARCH_DIRS 
-      ${BOOST_LIBRARYDIR} ${_boost_LIBRARIES_SEARCH_DIRS})
-  ENDIF( BOOST_LIBRARYDIR )
-
-  # Try to find Boost by stepping backwards through the Boost versions
-  # we know about.
-  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
-      if (WIN32 AND NOT CYGWIN)
-        set(_boost_PATH_SUFFIX boost_${_boost_VER})
-      else (WIN32 AND NOT CYGWIN)
-        set(_boost_PATH_SUFFIX boost-${_boost_VER})
-      endif (WIN32 AND NOT CYGWIN)
-
-      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}
-      )
-
-    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")
-
-      set(Boost_ERROR_REASON
-          "${Boost_ERROR_REASON}Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}\nBoost include path: ${Boost_INCLUDE_DIR}")
-    ENDIF(NOT "${Boost_VERSION}" STREQUAL "0")
-  ELSE(Boost_INCLUDE_DIR)
-    set(Boost_ERROR_REASON
-      "${Boost_ERROR_REASON}Unable to find the Boost header files. Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers.")
-  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 (MSVC90)
-    SET (_boost_COMPILER "-vc90")
-  ELSEIF (MSVC80)
-    SET (_boost_COMPILER "-vc80")
-  ELSEIF (MSVC71)
-    SET (_boost_COMPILER "-vc71")
-  ENDIF(MSVC90)
-  IF (MINGW)
-    EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
-      ARGS -dumpversion
-      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 (UNIX)
-    IF (APPLE)
-      # Due to a quirk in Boost.Build, there is no compiler name
-      # mangled into library names on Mac OS X/Darwin.
-      SET (_boost_COMPILER "")
-    ELSE (APPLE)
-      IF (NOT CMAKE_COMPILER_IS_GNUCXX)
-        # We assume that we have the Intel compiler.
-        SET (_boost_COMPILER "-il")
-      ELSE (NOT CMAKE_COMPILER_IS_GNUCXX)
-        # Determine which version of GCC we have.
-        EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
-            ARGS -dumpversion
-            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_GNUCXX)
-    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}
-    )
-
-    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}
-    )
-
-    _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}
-  )
-
-  SET(Boost_FOUND FALSE)
-  IF(Boost_INCLUDE_DIR)
-    SET( Boost_FOUND TRUE )
-
-    # Check the version of Boost against the requested version.
-    if (Boost_FIND_VERSION AND NOT Boost_FIND_VERSION_MINOR)
-      message(SEND_ERROR "When requesting a specific version of Boost, you must provide at least the major and minor version numbers, e.g., 1.34")
-    endif (Boost_FIND_VERSION AND NOT Boost_FIND_VERSION_MINOR)
-    if(Boost_MAJOR_VERSION LESS "${Boost_FIND_VERSION_MAJOR}" )
-      set( Boost_FOUND FALSE )
-      set(_Boost_VERSION_AGE "old")
-    elseif(Boost_MAJOR_VERSION EQUAL "${Boost_FIND_VERSION_MAJOR}" )
-      if(Boost_MINOR_VERSION LESS "${Boost_FIND_VERSION_MINOR}" )
-        set( Boost_FOUND FALSE )
-        set(_Boost_VERSION_AGE "old")
-      elseif(Boost_MINOR_VERSION EQUAL "${Boost_FIND_VERSION_MINOR}" )
-        if( Boost_FIND_VERSION_PATCH AND Boost_SUBMINOR_VERSION LESS "${Boost_FIND_VERSION_PATCH}" )
-          set( Boost_FOUND FALSE )
-          set(_Boost_VERSION_AGE "old")
-        endif( Boost_FIND_VERSION_PATCH AND Boost_SUBMINOR_VERSION LESS "${Boost_FIND_VERSION_PATCH}" )
-      endif( Boost_MINOR_VERSION LESS "${Boost_FIND_VERSION_MINOR}" )
-    endif( Boost_MAJOR_VERSION LESS "${Boost_FIND_VERSION_MAJOR}" )
-
-    if (Boost_FOUND AND Boost_FIND_VERSION_EXACT)
-      # If the user requested an exact version of Boost, check
-      # that. We already know that the Boost version we have is >= the
-      # requested version.
-      set(_Boost_VERSION_AGE "new")
-
-      # If the user didn't specify a patchlevel, it's 0.
-      if (NOT Boost_FIND_VERSION_PATCH)
-        set(Boost_FIND_VERSION_PATCH 0)
-      endif (NOT Boost_FIND_VERSION_PATCH)
-      
-      # We'll set Boost_FOUND true again if we have an exact version match.
-      set(Boost_FOUND FALSE)
-      if(Boost_MAJOR_VERSION EQUAL "${Boost_FIND_VERSION_MAJOR}" )
-        if(Boost_MINOR_VERSION EQUAL "${Boost_FIND_VERSION_MINOR}" )
-          if(Boost_SUBMINOR_VERSION EQUAL "${Boost_FIND_VERSION_PATCH}" )
-            set( Boost_FOUND TRUE )
-          endif(Boost_SUBMINOR_VERSION EQUAL "${Boost_FIND_VERSION_PATCH}" )
-        endif( Boost_MINOR_VERSION EQUAL "${Boost_FIND_VERSION_MINOR}" )
-      endif( Boost_MAJOR_VERSION EQUAL "${Boost_FIND_VERSION_MAJOR}" )
-    endif (Boost_FOUND AND Boost_FIND_VERSION_EXACT)
-
-    if(NOT Boost_FOUND)
-      # State that we found a version of Boost that is too new or too old.
-      set(Boost_ERROR_REASON
-        "${Boost_ERROR_REASON}\nDetected version of Boost is too ${_Boost_VERSION_AGE}. Requested version was ${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
-      if (Boost_FIND_VERSION_PATCH)
-        set(Boost_ERROR_REASON 
-          "${Boost_ERROR_REASON}.${Boost_FIND_VERSION_PATCH}")
-      endif (Boost_FIND_VERSION_PATCH)
-      if (NOT Boost_FIND_VERSION_EXACT)
-        set(Boost_ERROR_REASON "${Boost_ERROR_REASON} (or newer)")
-      endif (NOT Boost_FIND_VERSION_EXACT)
-      set(Boost_ERROR_REASON "${Boost_ERROR_REASON}.")
-    endif (NOT Boost_FOUND)
-
-    if (Boost_FOUND)
-      set(_boost_CHECKED_COMPONENT FALSE)
-      set(_Boost_MISSING_COMPONENTS)
-      foreach(COMPONENT ${Boost_FIND_COMPONENTS})
-        string(TOUPPER ${COMPONENT} COMPONENT)
-        set(_boost_CHECKED_COMPONENT TRUE)
-        if(NOT Boost_${COMPONENT}_FOUND)
-          string(TOLOWER ${COMPONENT} COMPONENT)
-          list(APPEND _Boost_MISSING_COMPONENTS ${COMPONENT})
-          set( Boost_FOUND FALSE)
-        endif(NOT Boost_${COMPONENT}_FOUND)
-      endforeach(COMPONENT)
-    endif (Boost_FOUND)
-
-    if (_Boost_MISSING_COMPONENTS)
-      # We were unable to find some libraries, so generate a sensible
-      # error message that lists the libraries we were unable to find.
-      set(Boost_ERROR_REASON
-        "${Boost_ERROR_REASON}\nThe following Boost libraries could not be found:\n")
-      foreach(COMPONENT ${_Boost_MISSING_COMPONENTS})
-        set(Boost_ERROR_REASON
-          "${Boost_ERROR_REASON}        boost_${COMPONENT}\n")
-      endforeach(COMPONENT)
-
-      list(LENGTH Boost_FIND_COMPONENTS Boost_NUM_COMPONENTS_WANTED)
-      list(LENGTH _Boost_MISSING_COMPONENTS Boost_NUM_MISSING_COMPONENTS)
-      if (${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS})
-        set(Boost_ERROR_REASON
-          "${Boost_ERROR_REASON}No Boost libraries were found. You may need to set Boost_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.")
-      else (${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS})
-        set(Boost_ERROR_REASON
-          "${Boost_ERROR_REASON}Some (but not all) of the required Boost libraries were found. You may need to install these additional Boost libraries. Alternatively, set Boost_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.")
-      endif (${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS})
-    endif (_Boost_MISSING_COMPONENTS)
-
-    IF( NOT Boost_LIBRARY_DIRS AND NOT _boost_CHECKED_COMPONENT )
-      # Compatibility Code for backwards compatibility with CMake
-      # 2.4's FindBoost module.
-
-      # 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} CACHE FILEPATH "Boost library directory")
-      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(SEND_ERROR "Unable to find the requested Boost libraries.\n${Boost_ERROR_REASON}")
-      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)
-
+# - Try to find Boost include dirs and libraries
+# Usage of this module as follows:
+#
+# == Using Header-Only libraries from within Boost: ==
+#
+#   find_package( Boost 1.38.0 )
+#   if(Boost_FOUND)
+#      include_directories(${Boost_INCLUDE_DIRS})
+#      add_executable(foo foo.cc)
+#   endif()
+#
+#
+# == Using actual libraries from within Boost: ==
+#
+#   set(Boost_USE_STATIC_LIBS   ON)
+#   set(Boost_USE_MULTITHREADED ON)
+#   find_package( Boost 1.38.0 COMPONENTS date_time filesystem system ... )
+#
+#   if(Boost_FOUND)
+#      include_directories(${Boost_INCLUDE_DIRS})
+#      add_executable(foo foo.cc)
+#      target_link_libraries(foo ${Boost_LIBRARIES})
+#   endif()
+#
+#
+# The components list needs to contain actual names of boost libraries only,
+# such as "date_time" for "libboost_date_time".  If you're using parts of
+# Boost that contain header files only (e.g. foreach) you do not need to
+# specify COMPONENTS.
+#
+# You should 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 (see below).
+#
+# NOTE for Visual Studio Users:
+#     Automatic linking is used on MSVC & Borland compilers by default when
+#     #including things in Boost.  It's important to note that setting
+#     Boost_USE_STATIC_LIBS to OFF is NOT enough to get you dynamic linking,
+#     should you need this feature.  Automatic linking typically uses static
+#     libraries with a few exceptions (Boost.Python is one).
+#
+#     Please see the section below near Boost_LIB_DIAGNOSTIC_DEFINITIONS for
+#     more details.  Adding a TARGET_LINK_LIBRARIES() as shown in the example
+#     above appears to cause VS to link dynamically if Boost_USE_STATIC_LIBS
+#     gets set to OFF.  It is suggested you avoid automatic linking since it
+#     will make your application less portable.
+#
+# =========== The mess that is Boost_ADDITIONAL_VERSIONS (sorry?) ============
+#
+# OK, so 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 Boost. Unfortunately boost puts the version number into the
+# actual filename for the libraries, so this variable will certainly 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, 1.36.0, 1.36.1, 1.37, 1.37.0, 1.38, 1.38.0, 1.38.1
+# 1.39, 1.39.0, 1.39.1 1.40, 1.40.0, 1.40.1 1.41, 1.41.0, 1.41.1
+# 1.42, 1.42.0, 1.42.1
+#
+# NOTE: If you add a new major 1.x version in Boost_ADDITIONAL_VERSIONS you should
+# add both 1.x and 1.x.0 as shown above.  Official Boost include directories
+# omit the 3rd version number from include paths if it is 0 although not all
+# binary Boost releases do so.
+#
+# SET(Boost_ADDITIONAL_VERSIONS "0.99" "0.99.0" "1.78" "1.78.0")
+#
+# ============================================================================
+#
+# Variables used by this module, they can change the default behaviour and
+# need to be set before calling find_package:
+#
+#   Boost_USE_MULTITHREADED      Can be set to OFF to use the non-multithreaded
+#                                boost libraries.  If not specified, defaults
+#                                to ON.
+#
+#   Boost_USE_STATIC_LIBS        Can be set to ON to force the use of the static
+#                                boost libraries. Defaults to OFF.
+#
+# Other Variables used by this module which you may want to set.
+#
+#   Boost_ADDITIONAL_VERSIONS    A list of version numbers to use for searching
+#                                the boost include directory.  Please see
+#                                the documentation above regarding this
+#                                annoying, but necessary variable :(
+#
+#   Boost_DEBUG                  Set this to TRUE to enable debugging output
+#                                of FindBoost.cmake if you are having problems.
+#                                Please enable this before filing any bug
+#                                reports.
+# 
+#   Boost_COMPILER               Set this to the compiler suffix used by Boost
+#                                (e.g. "-gcc43") if FindBoost has problems finding
+#                                the proper Boost installation
+#
+# These last three variables are available also as environment variables:
+#
+#   BOOST_ROOT or BOOSTROOT      The 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
+#
+# 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 to 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
+#                                       it's 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    [WIN32 Only] You can call
+#                                       add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINTIIONS})
+#                                       to have diagnostic information about Boost's
+#                                       automatic linking outputted during compilation time.
+#
+# For each component you specify in find_package(), the following (UPPER-CASE)
+# variables are set.  You can use these variables if you would like to pick and
+# choose components for your targets instead of just using Boost_LIBRARIES.
+#
+#   Boost_${COMPONENT}_FOUND            True IF the Boost library "component" was found.
+#
+#   Boost_${COMPONENT}_LIBRARY          Contains the libraries for the specified Boost
+#                                       "component" (includes debug and optimized keywords
+#                                       when needed).
+#
+# =====================================================================
+#
+#
+#  Copyright (c) 2006-2008 Andreas Schneider <>
+#  Copyright (c) 2007      Wengo
+#  Copyright (c) 2007      Mike Jackson
+#  Copyright (c) 2008      Andreas Pakulat <>
+#
+#  Redistribution AND use is allowed according to the terms of the New
+#  BSD license.
+#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+#
+
+#
+# Adapted for CGAL (wwww.cgal.org) by , 2009
+#
+
+include( CGAL_VersionUtils )
+
+
+#-------------------------------------------------------------------------------
+#  FindBoost functions & macros
+#
+############################################
+#
+# 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
+# And ELSE/ENDIF pairs were removed for readability.
+#########################################################################
+
+MACRO (_Boost_ADJUST_LIB_VARS basename)
+  IF (Boost_INCLUDE_DIR )
+    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()
+        # 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()
+      # FIXME: This probably should be set for both cases
+      SET(Boost_${basename}_LIBRARIES optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG})
+    ENDIF()
+
+    # 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()
+
+    # 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()
+    
+    IF (Boost_${basename}_LIBRARY)
+      set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY} CACHE FILEPATH "The Boost ${basename} library")
+
+      # Remove superfluous "debug" / "optimized" keywords from
+      # Boost_LIBRARY_DIRS
+      FOREACH(_boost_my_lib ${Boost_${basename}_LIBRARY})
+        GET_FILENAME_COMPONENT(_boost_my_lib_path "${_boost_my_lib}" PATH)
+        if ( NOT "${_boost_my_lib_path}" STREQUAL "" )
+          LIST(APPEND Boost_LIBRARY_DIRS ${_boost_my_lib_path})
+        endif()
+      ENDFOREACH()
+      
+      set(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIRS} CACHE FILEPATH "Boost library directory")
+      SET(Boost_${basename}_FOUND ON CACHE INTERNAL "Whether the 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)
+
+#-------------------------------------------------------------------------------
+
+#
+# Runs compiler with "-dumpversion" and parses major/minor
+# version with a regex.
+#
+MACRO(_Boost_COMPILER_DUMPVERSION _OUTPUT_VERSION)
+
+  EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
+    ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
+    OUTPUT_VARIABLE _boost_COMPILER_VERSION
+  )
+  STRING(REGEX REPLACE "([0-9])\\.([0-9])(\\.[0-9])?" "\\1\\2"
+    _boost_COMPILER_VERSION ${_boost_COMPILER_VERSION})
+
+  SET(${_OUTPUT_VERSION} ${_boost_COMPILER_VERSION} PARENT_SCOPE)
+ENDMACRO()
+
+#
+# End functions/macros
+#  
+#-------------------------------------------------------------------------------
+
+
+
+  
+IF(NOT DEFINED Boost_USE_MULTITHREADED)
+    SET(Boost_USE_MULTITHREADED TRUE)
+ENDIF()
+
+if(Boost_FIND_VERSION_EXACT)
+  # The version may appear in a directory with or without the patch
+  # level, even when the patch level is non-zero.
+  set(_boost_TEST_VERSIONS
+    "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.${Boost_FIND_VERSION_PATCH}"
+    "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
+else(Boost_FIND_VERSION_EXACT)
+  # The user has not requested an exact version.  Among known
+  # versions, find those that are acceptable to the user request.
+  set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
+    "1.42.1" "1.42.0" "1.42" 
+    "1.41.1" "1.41.0" "1.41" 
+    "1.40.1" "1.40.0" "1.40" 
+    "1.39.1" "1.39.0" "1.39" 
+    "1.38.1" "1.38.0" "1.38" 
+    "1.37.0" "1.37"
+    "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0"
+    "1.34" "1.33.1" "1.33.0" "1.33")
+  set(_boost_TEST_VERSIONS)
+  if(Boost_FIND_VERSION)
+    set(_Boost_FIND_VERSION_SHORT "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
+    # Select acceptable versions.
+    foreach(version ${_Boost_KNOWN_VERSIONS})
+      IS_VERSION_LESS( "${version}" "${Boost_FIND_VERSION}" _Boost_IS_VERSION_LESS )
+      if(NOT _Boost_IS_VERSION_LESS )
+        # This version is high enough.
+        list(APPEND _boost_TEST_VERSIONS "${version}")
+      else()
+        IS_VERSION_EQUAL( "${version}" "${_Boost_FIND_VERSION_SHORT}" _Boost_IS_VERSION_EQUAL )
+        if( _Boost_IS_VERSION_EQUAL )
+          # This version is a short-form for the requested version with
+          # the patch level dropped.
+          list(APPEND _boost_TEST_VERSIONS "${version}")
+        endif()
+      endif()
+    endforeach(version)
+  else(Boost_FIND_VERSION)
+    # Any version is acceptable.
+    set(_boost_TEST_VERSIONS "${_Boost_KNOWN_VERSIONS}")
+  endif(Boost_FIND_VERSION)
+endif(Boost_FIND_VERSION_EXACT)
+
+# The reason that we failed to find Boost. This will be set to a
+# user-friendly message when we fail to find some necessary piece of
+# Boost.
+set(Boost_ERROR_REASON)
+
+
+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")
+  if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                     "boost ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION} "
+                     "is already in the cache.  For debugging messages, please clear the cache.")
+  endif()
+ELSE (_boost_IN_CACHE)
+  # Need to search for boost
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "Boost not in cache")
+    # Output some of their choices
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "_boost_TEST_VERSIONS = ${_boost_TEST_VERSIONS}")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "Boost_USE_MULTITHREADED = ${Boost_USE_MULTITHREADED}")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "Boost_USE_STATIC_LIBS = ${Boost_USE_STATIC_LIBS}")
+  endif()
+
+  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_ENV_PROGRAM_FILES_DIR $ENV{ProgramFiles} )
+  file(TO_CMAKE_PATH "${boost_ENV_PROGRAM_FILES_DIR}" boost_ENV_PROGRAM_FILES_DIR)
+
+  SET(_boost_INCLUDE_SEARCH_DIRS
+    C:/boost/include
+    C:/boost
+    "${boost_ENV_PROGRAM_FILES_DIR}/boost"
+    /sw/local/include
+  )
+  
+  # If BOOST_ROOT was defined in the environment, use it.
+  if (NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "")
+    set(BOOST_ROOT $ENV{BOOST_ROOT})
+  endif(NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "")
+
+  # If BOOSTROOT was defined in the environment, use it.
+  if (NOT BOOST_ROOT AND NOT $ENV{BOOSTROOT} STREQUAL "")
+    set(BOOST_ROOT $ENV{BOOSTROOT})
+  endif(NOT BOOST_ROOT AND NOT $ENV{BOOSTROOT} STREQUAL "")
+
+  # If BOOST_INCLUDEDIR was defined in the environment, use it.
+  IF( NOT $ENV{BOOST_INCLUDEDIR} STREQUAL "" )
+    set(BOOST_INCLUDEDIR $ENV{BOOST_INCLUDEDIR})
+  ENDIF( NOT $ENV{BOOST_INCLUDEDIR} STREQUAL "" )
+  
+  # If BOOST_LIBRARYDIR was defined in the environment, use it.
+  IF( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" )
+    set(BOOST_LIBRARYDIR $ENV{BOOST_LIBRARYDIR})
+  ENDIF( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" )
+  
+  IF( BOOST_ROOT )
+    file(TO_CMAKE_PATH ${BOOST_ROOT} BOOST_ROOT)
+  ENDIF( BOOST_ROOT )
+
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "Declared as CMake or Environmental Variables:")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "  BOOST_ROOT = ${BOOST_ROOT}")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "  BOOST_INCLUDEDIR = ${BOOST_INCLUDEDIR}")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "  BOOST_LIBRARYDIR = ${BOOST_LIBRARYDIR}")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "_boost_TEST_VERSIONS = ${_boost_TEST_VERSIONS}")
+  endif()
+
+  IF( BOOST_ROOT )
+    SET(_boost_INCLUDE_SEARCH_DIRS 
+      ${BOOST_ROOT}/include 
+      ${BOOST_ROOT}
+      ${_boost_INCLUDE_SEARCH_DIRS})
+  ENDIF( BOOST_ROOT )
+
+  IF( BOOST_INCLUDEDIR )
+    file(TO_CMAKE_PATH ${BOOST_INCLUDEDIR} BOOST_INCLUDEDIR)
+    SET(_boost_INCLUDE_SEARCH_DIRS 
+      ${BOOST_INCLUDEDIR} ${_boost_INCLUDE_SEARCH_DIRS})
+  ENDIF( BOOST_INCLUDEDIR )
+
+  # ------------------------------------------------------------------------
+  #  Search for Boost include DIR 
+  # ------------------------------------------------------------------------
+  # Try to find Boost by stepping backwards through the Boost versions
+  # we know about.
+  IF( NOT Boost_INCLUDE_DIR )
+    # Build a list of path suffixes for each version.
+    SET(_boost_PATH_SUFFIXES)
+    FOREACH(_boost_VER ${_boost_TEST_VERSIONS})
+      # 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_BOOSTIFIED_VERSION)
+
+      # Transform 1.35 => 1_35 and 1.36.0 => 1_36_0
+      IF(_boost_VER MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
+          STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1_\\2_\\3" 
+            _boost_BOOSTIFIED_VERSION ${_boost_VER})
+      ELSEIF(_boost_VER MATCHES "[0-9]+\\.[0-9]+")
+          STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)" "\\1_\\2" 
+            _boost_BOOSTIFIED_VERSION ${_boost_VER})
+      ENDIF()
+      
+      list(APPEND _boost_PATH_SUFFIXES "boost-${_boost_BOOSTIFIED_VERSION}")
+      if(WIN32)
+        # For BoostPro's underscores (and others?)
+        list(APPEND _boost_PATH_SUFFIXES "boost_${_boost_BOOSTIFIED_VERSION}")
+      endif()
+
+    ENDFOREACH(_boost_VER)
+      
+    if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                     "Include debugging info:")
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                     "  _boost_INCLUDE_SEARCH_DIRS = ${_boost_INCLUDE_SEARCH_DIRS}")
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                     "  _boost_PATH_SUFFIXES = ${_boost_PATH_SUFFIXES}")
+    endif()
+
+    # Look for a standard boost header file.
+    FIND_PATH(Boost_INCLUDE_DIR
+      NAMES         boost/config.hpp
+      PATHS         ${_boost_INCLUDE_SEARCH_DIRS}
+      PATH_SUFFIXES ${_boost_PATH_SUFFIXES}
+      )
+  ENDIF( NOT Boost_INCLUDE_DIR )
+  
+  # ------------------------------------------------------------------------
+  #  Extract version information from version.hpp
+  # ------------------------------------------------------------------------
+
+  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)
+    if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                     "location of version.hpp: ${Boost_INCLUDE_DIR}/boost/version.hpp")
+    endif()
+  
+    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")
+
+      set(Boost_ERROR_REASON
+          "${Boost_ERROR_REASON}Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}\nBoost include path: ${Boost_INCLUDE_DIR}")
+    ENDIF(NOT "${Boost_VERSION}" STREQUAL "0")
+    if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                     "version.hpp reveals boost "
+                     "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
+    endif()
+  ELSE(Boost_INCLUDE_DIR)
+    set(Boost_ERROR_REASON
+      "${Boost_ERROR_REASON}Unable to find the Boost header files. Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers.")
+  ENDIF(Boost_INCLUDE_DIR)
+  
+  # ------------------------------------------------------------------------
+  #  Suffix initialization and compiler suffix detection.
+  # ------------------------------------------------------------------------
+
+  # Setting some more suffixes for the library
+  SET (Boost_LIB_PREFIX "")
+  if ( WIN32 AND Boost_USE_STATIC_LIBS )
+    SET (Boost_LIB_PREFIX "lib")
+  endif()
+
+  if (Boost_COMPILER)
+    set(_boost_COMPILER ${Boost_COMPILER})
+    if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                     "using user-specified Boost_COMPILER = ${_boost_COMPILER}")
+    endif()
+  else(Boost_COMPILER)
+    
+    SET(_boost_COMPILER "-gcc") # Fall back to GCC for cygwin
+    
+    # Attempt to guess the compiler suffix
+    # NOTE: this is not perfect yet, if you experience any issues
+    # please report them and use the Boost_COMPILER variable
+    # to work around the problems.
+    if (MSVC90)
+      SET (_boost_COMPILER "-vc90")
+    elseif (MSVC80)
+      SET (_boost_COMPILER "-vc80")
+    elseif (MSVC71)
+      SET (_boost_COMPILER "-vc71")
+    elseif (MSVC70) # Good luck!
+      SET (_boost_COMPILER "-vc7") # yes, this is correct
+    elseif (MSVC60) # Good luck!
+      SET (_boost_COMPILER "-vc6") # yes, this is correct
+    elseif (BORLAND)
+      SET (_boost_COMPILER "-bcb")
+    elseif("${CMAKE_CXX_COMPILER}" MATCHES "icl" 
+        OR "${CMAKE_CXX_COMPILER}" MATCHES "icpc") 
+      if(WIN32)
+        set (_boost_COMPILER "-iw")
+      else()
+        set (_boost_COMPILER "-il")
+      endif()
+    elseif (MINGW)
+    
+      IS_VERSION_LESS( "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}" "1.34" _Boost_IS_VERSION_LESS )
+      if( _Boost_IS_VERSION_LESS )
+          SET(_boost_COMPILER "-mgw") # no GCC version encoding prior to 1.34
+      else()
+        _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION)
+        SET (_boost_COMPILER "-mgw${_boost_COMPILER_VERSION}")
+      endif()
+    elseif (UNIX)
+      if (CMAKE_COMPILER_IS_GNUCXX)
+        IS_VERSION_LESS( "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}" "1.34" _Boost_IS_VERSION_LESS )
+        if( _Boost_IS_VERSION_LESS )
+          SET(_boost_COMPILER "-gcc") # no GCC version encoding prior to 1.34
+        else()
+          _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION)
+          # Determine which version of GCC we have.
+          IF(APPLE)
+            IF(Boost_MINOR_VERSION)
+              IF(${Boost_MINOR_VERSION} GREATER 35)
+                # In Boost 1.36.0 and newer, the mangled compiler name used
+                # on Mac OS X/Darwin is "xgcc".
+                SET(_boost_COMPILER "-xgcc${_boost_COMPILER_VERSION}")
+              ELSE(${Boost_MINOR_VERSION} GREATER 35)
+                # In Boost <= 1.35.0, there is no mangled compiler name for
+                # the Mac OS X/Darwin version of GCC.
+                SET(_boost_COMPILER "")
+              ENDIF(${Boost_MINOR_VERSION} GREATER 35)
+            ELSE(Boost_MINOR_VERSION)
+              # We don't know the Boost version, so assume it's
+              # pre-1.36.0.
+              SET(_boost_COMPILER "")
+            ENDIF(Boost_MINOR_VERSION)
+          ELSE()
+            SET (_boost_COMPILER "-gcc${_boost_COMPILER_VERSION}")
+          ENDIF()
+        endif()
+      endif (CMAKE_COMPILER_IS_GNUCXX)
+    endif()
+    if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+        "guessed _boost_COMPILER = ${_boost_COMPILER}")
+    endif()
+  endif(Boost_COMPILER)
+
+  SET (_boost_MULTITHREADED "-mt")
+  if( NOT Boost_USE_MULTITHREADED )
+    set (_boost_MULTITHREADED "")
+  endif()
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+      "_boost_MULTITHREADED = ${_boost_MULTITHREADED}")
+  endif()
+
+  SET( _boost_STATIC_TAG "")
+  set( _boost_ABI_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")
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+      "_boost_STATIC_TAG = ${_boost_STATIC_TAG}")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+      "_boost_ABI_TAG = ${_boost_ABI_TAG}")
+  endif()
+
+  # ------------------------------------------------------------------------
+  #  Begin finding boost libraries
+  # ------------------------------------------------------------------------
+  
+  SET(_boost_LIBRARIES_SEARCH_DIRS
+    C:/boost/lib
+    C:/boost
+    "${boost_ENV_PROGRAM_FILES_DIR}/boost/boost_${Boost_MAJOR_VERSION}_${Boost_MINOR_VERSION}_${Boost_SUBMINOR_VERSION}/lib"
+    "${boost_ENV_PROGRAM_FILES_DIR}/boost/boost_${Boost_MAJOR_VERSION}_${Boost_MINOR_VERSION}/lib"
+    "${boost_ENV_PROGRAM_FILES_DIR}/boost"
+    /sw/local/lib
+  )
+  IF( BOOST_ROOT )
+    SET(_boost_LIBRARIES_SEARCH_DIRS 
+      ${BOOST_ROOT}/lib 
+      ${BOOST_ROOT}/stage/lib 
+      ${_boost_LIBRARIES_SEARCH_DIRS})
+  ENDIF( BOOST_ROOT )
+
+  IF( BOOST_LIBRARYDIR )
+    file(TO_CMAKE_PATH ${BOOST_LIBRARYDIR} BOOST_LIBRARYDIR)
+    SET(_boost_LIBRARIES_SEARCH_DIRS 
+      ${BOOST_LIBRARYDIR} ${_boost_LIBRARIES_SEARCH_DIRS})
+  ENDIF( BOOST_LIBRARYDIR )
+
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+      "_boost_LIBRARIES_SEARCH_DIRS = ${_boost_LIBRARIES_SEARCH_DIRS}")
+  endif()
+
+  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_VERSION}
+               ${Boost_LIB_PREFIX}boost_${COMPONENT}${_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}
+    )
+
+    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_VERSION}
+               ${Boost_LIB_PREFIX}boost_${COMPONENT}${_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}
+    )
+
+    _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}
+  )
+
+  SET(Boost_FOUND FALSE)
+  IF(Boost_INCLUDE_DIR)
+    SET( Boost_FOUND TRUE )
+
+    # Check the version of Boost against the requested version.
+    if (Boost_FIND_VERSION AND NOT Boost_FIND_VERSION_MINOR)
+      message(SEND_ERROR "When requesting a specific version of Boost, you must provide at least the major and minor version numbers, e.g., 1.34")
+    endif (Boost_FIND_VERSION AND NOT Boost_FIND_VERSION_MINOR)
+    if(Boost_MAJOR_VERSION LESS "${Boost_FIND_VERSION_MAJOR}" )
+      set( Boost_FOUND FALSE )
+      set(_Boost_VERSION_AGE "old")
+    elseif(Boost_MAJOR_VERSION EQUAL "${Boost_FIND_VERSION_MAJOR}" )
+      if(Boost_MINOR_VERSION LESS "${Boost_FIND_VERSION_MINOR}" )
+        set( Boost_FOUND FALSE )
+        set(_Boost_VERSION_AGE "old")
+      elseif(Boost_MINOR_VERSION EQUAL "${Boost_FIND_VERSION_MINOR}" )
+        if( Boost_FIND_VERSION_PATCH AND Boost_SUBMINOR_VERSION LESS "${Boost_FIND_VERSION_PATCH}" )
+          set( Boost_FOUND FALSE )
+          set(_Boost_VERSION_AGE "old")
+        endif( Boost_FIND_VERSION_PATCH AND Boost_SUBMINOR_VERSION LESS "${Boost_FIND_VERSION_PATCH}" )
+      endif( Boost_MINOR_VERSION LESS "${Boost_FIND_VERSION_MINOR}" )
+    endif( Boost_MAJOR_VERSION LESS "${Boost_FIND_VERSION_MAJOR}" )
+
+    if (Boost_FOUND AND Boost_FIND_VERSION_EXACT)
+      # If the user requested an exact version of Boost, check
+      # that. We already know that the Boost version we have is >= the
+      # requested version.
+      set(_Boost_VERSION_AGE "new")
+
+      # If the user didn't specify a patchlevel, it's 0.
+      if (NOT Boost_FIND_VERSION_PATCH)
+        set(Boost_FIND_VERSION_PATCH 0)
+      endif (NOT Boost_FIND_VERSION_PATCH)
+      
+      # We'll set Boost_FOUND true again if we have an exact version match.
+      set(Boost_FOUND FALSE)
+      if(Boost_MAJOR_VERSION EQUAL "${Boost_FIND_VERSION_MAJOR}" )
+        if(Boost_MINOR_VERSION EQUAL "${Boost_FIND_VERSION_MINOR}" )
+          if(Boost_SUBMINOR_VERSION EQUAL "${Boost_FIND_VERSION_PATCH}" )
+            set( Boost_FOUND TRUE )
+          endif(Boost_SUBMINOR_VERSION EQUAL "${Boost_FIND_VERSION_PATCH}" )
+        endif( Boost_MINOR_VERSION EQUAL "${Boost_FIND_VERSION_MINOR}" )
+      endif( Boost_MAJOR_VERSION EQUAL "${Boost_FIND_VERSION_MAJOR}" )
+    endif (Boost_FOUND AND Boost_FIND_VERSION_EXACT)
+
+    if(NOT Boost_FOUND)
+      # State that we found a version of Boost that is too new or too old.
+      set(Boost_ERROR_REASON
+        "${Boost_ERROR_REASON}\nDetected version of Boost is too ${_Boost_VERSION_AGE}. Requested version was ${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
+      if (Boost_FIND_VERSION_PATCH)
+        set(Boost_ERROR_REASON 
+          "${Boost_ERROR_REASON}.${Boost_FIND_VERSION_PATCH}")
+      endif (Boost_FIND_VERSION_PATCH)
+      if (NOT Boost_FIND_VERSION_EXACT)
+        set(Boost_ERROR_REASON "${Boost_ERROR_REASON} (or newer)")
+      endif (NOT Boost_FIND_VERSION_EXACT)
+      set(Boost_ERROR_REASON "${Boost_ERROR_REASON}.")
+    endif (NOT Boost_FOUND)
+
+    if (Boost_FOUND)
+      set(_boost_CHECKED_COMPONENT FALSE)
+      set(_Boost_MISSING_COMPONENTS)
+      foreach(COMPONENT ${Boost_FIND_COMPONENTS})
+        string(TOUPPER ${COMPONENT} COMPONENT)
+        set(_boost_CHECKED_COMPONENT TRUE)
+        if(NOT Boost_${COMPONENT}_FOUND)
+          string(TOLOWER ${COMPONENT} COMPONENT)
+          list(APPEND _Boost_MISSING_COMPONENTS ${COMPONENT})
+          set( Boost_FOUND FALSE)
+        endif(NOT Boost_${COMPONENT}_FOUND)
+      endforeach(COMPONENT)
+    endif (Boost_FOUND)
+
+    if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] Boost_FOUND = ${Boost_FOUND}")
+    endif()
+
+    if (_Boost_MISSING_COMPONENTS)
+      # We were unable to find some libraries, so generate a sensible
+      # error message that lists the libraries we were unable to find.
+      set(Boost_ERROR_REASON
+        "${Boost_ERROR_REASON}\nThe following Boost libraries could not be found:\n")
+      foreach(COMPONENT ${_Boost_MISSING_COMPONENTS})
+        set(Boost_ERROR_REASON
+          "${Boost_ERROR_REASON}        boost_${COMPONENT}\n")
+      endforeach(COMPONENT)
+
+      list(LENGTH Boost_FIND_COMPONENTS Boost_NUM_COMPONENTS_WANTED)
+      list(LENGTH _Boost_MISSING_COMPONENTS Boost_NUM_MISSING_COMPONENTS)
+      if (${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS})
+        set(Boost_ERROR_REASON
+          "${Boost_ERROR_REASON}No Boost libraries were found. You may need to set Boost_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.")
+      else (${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS})
+        set(Boost_ERROR_REASON
+          "${Boost_ERROR_REASON}Some (but not all) of the required Boost libraries were found. You may need to install these additional Boost libraries. Alternatively, set Boost_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.")
+      endif (${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS})
+    endif (_Boost_MISSING_COMPONENTS)
+
+    IF( NOT Boost_LIBRARY_DIRS AND NOT _boost_CHECKED_COMPONENT )
+      # Compatibility Code for backwards compatibility with CMake
+      # 2.4's FindBoost module.
+
+      # 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} CACHE FILEPATH "Boost library directory")
+      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(SEND_ERROR "Unable to find the requested Boost libraries.\n${Boost_ERROR_REASON}")
+      ENDIF(Boost_FIND_REQUIRED)
+  ENDIF(Boost_FOUND)
+
+  # 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
+  )
+ENDIF(_boost_IN_CACHE)
+
Index: cmake/modules/CGALConfig_install.cmake.source.in
===================================================================
--- cmake/modules/CGALConfig_install.cmake.source.in	(revision 47550)
+++ cmake/modules/CGALConfig_install.cmake.source.in	(working copy)
@@ -122,3 +122,6 @@
   check_cgal_component("_${CGAL_COMPONENT}")
 endforeach()
 
+# Starting with cmake 2.6.3, CGAL_FIND_COMPONENTS is cleared out when find_package returns.
+# But we need it within UseCGAL.cmake, so we save it aside into another variable
+set( CGAL_REQUESTED_COMPONENTS ${CGAL_FIND_COMPONENTS} )
Index: config/support/test_BOOST_PROGRAM_OPTIONS.cpp
===================================================================
--- config/support/test_BOOST_PROGRAM_OPTIONS.cpp	(revision 47550)
+++ config/support/test_BOOST_PROGRAM_OPTIONS.cpp	(working copy)
@@ -1,8 +1,5 @@
-// Copyright (c) 2006, 2007  Utrecht University (The Netherlands),
-// ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),
-// INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
-// (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),
-// and Tel-Aviv University (Israel).  All rights reserved.
+// Copyright (c) 2006, 2007, 2009  Stanford University (USA),
+// INRIA Sophia-Antipolis (France).  All rights reserved.
 //
 // This file is part of CGAL (www.cgal.org); you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public License as
@@ -17,29 +14,35 @@
 //
 // $URL$
 // $Id$
-// 
 //
-// Author(s)     : Daniel Russel
+// Author(s)     : Daniel Russel, Sylvain Pion
 
 // Tests if BOOST_PROGRAM_OPTIONS is available.
 
 #include <iostream>
+#include <string>
 #include <boost/program_options.hpp>
 
+namespace po = boost::program_options;
+
 int main(int ac, char *av[])
 {
   std::cout << "version=" << BOOST_VERSION/100000 << "."
             << ((BOOST_VERSION / 100) % 100) << "."
             << BOOST_VERSION % 100 << std::endl;
 
-  boost::program_options::options_description desc("Allowed options");
+  std::string str;
+
+  po::options_description desc("Allowed options");
   desc.add_options()
     ("help", "produce help message")
+    ("input-file,f", po::value<std::string>(&str)->default_value("blabla.txt"),
+     "name of file")
     ;
 
-  boost::program_options::variables_map vm;
-  boost::program_options::store(boost::program_options::parse_command_line(ac, av, desc), vm);
-  boost::program_options::notify(vm);    
+  po::variables_map vm;
+  po::store(po::parse_command_line(ac, av, desc), vm);
+  po::notify(vm);    
 
   if (vm.count("help")) {
     std::cout << "Help" << "\n";



Archive powered by MHonArc 2.6.16.

Top of Page