Switch to a new FindBoost
authorDiane Trout <diane@caltech.edu>
Fri, 15 Feb 2008 01:03:44 +0000 (01:03 +0000)
committerDiane Trout <diane@caltech.edu>
Fri, 15 Feb 2008 01:03:44 +0000 (01:03 +0000)
I found a better FindBoost module that tries much harder to find
boost components, however I needed to update my CMakeLists.txt macros
to match this new module.

CMakeLists.txt
alg/CMakeLists.txt
alg/test/CMakeLists.txt
alg/tsf/CMakeLists.txt
makelib/FindBoost.cmake
makelib/TestMacros.cmake
py/CMakeLists.txt
py/test/CMakeLists.txt
qui/CMakeLists.txt
qui/test/CMakeLists.txt

index 28d7b6870aa4647643361e86c433423916d748c4..40c557263285030f77fcd153ba5f6c758f547c92 100644 (file)
@@ -21,14 +21,14 @@ IF(QT_QTASSISTANT_FOUND)
 ENDIF(QT_QTASSISTANT_FOUND)
 INCLUDE( ${QT_USE_FILE} )
 FIND_PACKAGE(OpenGL)
-FIND_PACKAGE(Boost)
+FIND_PACKAGE(Boost 1.34.1 COMPONENTS filesystem serialization program_options python)
 FIND_PACKAGE(PythonLibs)
 
 SET(USE_PYTHON 1)
 
 INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH} 
                     ${QT_INCLUDES}
-                    ${BOOST_INCLUDE_DIR} )
+                    ${Boost_INCLUDE_DIR} )
 
 
 # all of our source files al relative to the root of our project
@@ -57,9 +57,9 @@ TARGET_LINK_LIBRARIES(mussagl
                         # Including QT_LIBS twice is for dealing with linking dependancies
                         # related to Qt Assistant Client on windows
                         ${QT_LIBRARIES}  
-                        ${BOOST_FILESYSTEM_LIBRARY}
-                        ${BOOST_SERIALIZATION_LIBRARY}
-                        ${BOOST_PROGRAM_OPTIONS_LIBRARY}
+                        ${Boost_FILESYSTEM_LIBRARY}
+                        ${Boost_SERIALIZATION_LIBRARY}
+                        ${Boost_PROGRAM_OPTIONS_LIBRARY}
                         ${OPENGL_gl_LIBRARY}
                       )
 
@@ -69,12 +69,11 @@ IF(USE_PYTHON)
         mussa_py
         ${QT_LIBRARIES}
 #mussaqui_py
-        ${BOOST_PYTHON_LIBRARY}
+        ${Boost_PYTHON_LIBRARY}
         ${PYTHON_LIBRARIES}
         ${PYTHON_LINK_LIBRARIES})
 ENDIF(USE_PYTHON)
 
-
 GET_MUSSA_COMPILE_FLAGS(MAIN_CFLAGS)
 GET_MUSSA_LINK_FLAGS(MAIN_LDFLAGS)
 
index 9963d64542b3f4a549e3a1d6a249e6ef5a3a2d11..ddcc92f51b1a4b1a9502bf1e0d1d7555ac441d67 100644 (file)
@@ -1,5 +1,5 @@
 FIND_PACKAGE(OpenGL )
-FIND_PACKAGE(Boost REQUIRED)
+FIND_PACKAGE(Boost 1.34.1 COMPONENTS filesystem unit_test_framework serialization program_options python2.3 )
 FIND_PACKAGE(Qt4)
 INCLUDE( ${QT_USE_FILE} )
 INCLUDE( Platform )
@@ -41,7 +41,7 @@ SET_SOURCE_FILES_PROPERTIES(
 
 ADD_LIBRARY( mussa_core STATIC ${SOURCES} ${MOC_SOURCES})
 INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}
-                    ${BOOST_INCLUDE_DIR}
+                    ${Boost_INCLUDE_DIR}
                     ${QT_INCLUDES}
                     ${CMAKE_CURRENT_SOURCE_DIR})
 
index be8dbea5e12dae46f830e9a6cc29e255aa7dd4e7..8275f67ae44f333eb07faadcc606e71a63a52b51 100644 (file)
@@ -1,5 +1,5 @@
 FIND_PACKAGE(OpenGL)
-INCLUDE(FindBoost)
+FIND_PACKAGE(Boost 1.34.1 COMPONENTS filesystem unit_test_framework serialization)
 FIND_PACKAGE(Qt4)
 INCLUDE( ${QT_USE_FILE} )
 INCLUDE(Platform)
@@ -18,9 +18,9 @@ GET_MUSSA_LINK_FLAGS(ALG_TEST_LDFLAGS)
 SET(ALG_TEST_LIBS
       mussa_core
       ${QT_LIBRARIES}
-      ${BOOST_FILESYSTEM_LIBRARY}
-      ${BOOST_UNIT_TEST_LIBRARY} 
-      ${BOOST_SERIALIZATION_LIBRARY}
+      ${Boost_FILESYSTEM_LIBRARY}
+      ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} 
+      ${Boost_SERIALIZATION_LIBRARY}
       ${OPENGL_gl_LIBRARY}
 )
 
index 03bde511e2663d2acbec48c2eacb3f797fe8109a..f0b8af373d678727a3043061bc2d188c94b8fc70 100644 (file)
@@ -1,4 +1,4 @@
-INCLUDE(FindBoost)
+FIND_PACKAGE(Boost 1.34.1 COMPONENTS unit_test_framework)
 INCLUDE(Platform)
 
 
@@ -17,7 +17,7 @@ SET_SOURCE_FILES_PROPERTIES(
 )
 
 ADD_EXECUTABLE(tsf ${SOURCES} ${TEST_SOURCES} )
-TARGET_LINK_LIBRARIES(tsf ${BOOST_UNIT_TEST_LIBRARY})
+TARGET_LINK_LIBRARIES(tsf ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
 ADD_TEST(tsf ${CMAKE_BINARY_DIR}/alg/tsf/tsf)
 
 SET_TARGET_PROPERTIES(
index dd2dab97f0ce24fa9e8fcef2600b6a704e5eaee0..67a379e0728b6eafe07a70c219b6daac157c6356 100644 (file)
-# - Find Boost libraries
-# Go hunting for boost compoments
-# Defines:
-#  BOOST_INCLUDE
-
-FIND_PATH(BOOST_INCLUDE_DIR boost/weak_ptr.hpp 
-                            /usr/include 
-                            /usr/include/boost-1_34
-                            /usr/include/boost-1_33
-                            /usr/local/include
-                            /usr/local/include/boost-1_34
-                            /usr/local/include/boost-1_33
-                            C:\\Boost\\Include
-                            C:\\Boost\\Include\\boost-1_34
-                            C:\\Boost\\include\\boost-1_33_1 )
-
-FIND_PACKAGE(PythonInterp)
-IF(PYTHONINTERP_FOUND)
-  STRING(REGEX MATCH "[0-9]\\.[0-9]$" PYVER ${PYTHON_EXECUTABLE})
-ENDIF(PYTHONINTERP_FOUND)
-
-IF(MINGW)
-  SET (BOOST_ROOT C:\\Boost)
-  FIND_LIBRARY( BOOST_FILESYSTEM_LIBRARY NAMES
-                libboost_filesystem-mgw-s
-                libboost_filesystem-mgw34-s-1_34
-                PATHS ${BOOST_ROOT}\\lib )
-  FIND_LIBRARY( BOOST_FILESYSTEM_LIBRARY_DEBUG NAMES
-                libboost_filesystem-mgw-sd
-                libboost_filesystem-mgw34-s-1_34
-                PATHS ${BOOST_ROOT}\\lib )
-  FIND_LIBRARY( BOOST_PROGRAM_OPTIONS_LIBRARY NAMES
-                libboost_program_options-mgw-s
-                libboost_program_options-mgw34-s-1_34
-                PATHS ${BOOST_ROOT}\\lib )
-  FIND_LIBRARY( BOOST_PROGRAM_OPTIONS_LIBRARY_DEBUG NAMES 
-                libboost_program_options-mgw-sd
-                libboost_program_options-mgw34-sd-1_34
-                PATHS ${BOOST_ROOT}\\lib )
-  IF(PYTHONINTERP_FOUND)
-    FIND_LIBRARY( BOOST_PYTHON_LIBRARY NAMES
-                  libboost_python${PYVER}-mgw
-                  libboost_python${PYVER}-mgw34-1_34
-                  libboost_python-mgw
-                  libboost_python-mgw34-1_34
-                  PATHS ${BOOST_ROOT}\\lib )
-    FIND_LIBRARY( BOOST_PYTHON_LIBRARY_DEBUG NAMES 
-                  libboost_python${PYVER}-mgw-d
-                  libboost_python${PYVER}-mgw34-d-1_34
-                  libboost_python-mgw-d
-                  libboost_python-mgw34-d-1_34
-                  PATHS ${BOOST_ROOT}\\lib )
-  ENDIF(PYTHONINTERP_FOUND)
-  FIND_LIBRARY( BOOST_SERIALIZATION_LIBRARY NAMES
-                libboost_serialization-mgw
-                libboost_serialization-mgw34-1_34
-                PATHS ${BOOST_ROOT}\\lib )
-  FIND_LIBRARY( BOOST_SERIALIZATION_LIBRARY_DEBUG NAMES
-                libboost_python-mgw-d
-                libboost_python-mgw34-d-1_34
-                PATHS ${BOOST_ROOT}\\lib )
-  FIND_LIBRARY( BOOST_UNIT_TEST_LIBRARY NAMES
-                libboost_unit_test_framework-mgw-s
-                libboost_unit_test_framework-mgw34-s-1_34
-                PATHS ${BOOST_ROOT}\\lib )
-  FIND_LIBRARY( BOOST_UNIT_TEST_LIBRARY_DEBUG NAMES
-                libboost_unit_test_framework-mgw-sd
-                libboost_unit_test_framework-mgw34-sd-1_34
-                PATHS ${BOOST_ROOT}\\lib )
-ELSE(MINGW)
-
-
-FIND_LIBRARY( BOOST_FILESYSTEM_LIBRARY NAMES 
-              boost_filesystem
-              boost_filesystem-40
-              PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-FIND_LIBRARY( BOOST_PROGRAM_OPTIONS_LIBRARY NAMES 
-              boost_program_options
-              boost_program_options-40
-              PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-IF(PYTHONINTERP_FOUND)
-  FIND_LIBRARY( BOOST_PYTHON_LIBRARY NAMES 
-                boost_python${PYVER}
-                boost_python${PYVER}-40
-                boost_python${PYVER}-gcc40-1_34
-                boost_python
-                boost_python-40
-                boost_python-gcc40-1_34
-                PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-  FIND_LIBRARY( BOOST_PYTHON_LIBRARY_DEBUG NAMES 
-                boost_python${PYVER}-d
-                boost_python${PYVER}-40-d
-                boost_python${PYVER}-gcc40-d
-                boost_python${PYVER}-gcc40-d-1_34
-                boost_python-d
-                boost_python-40-d
-                boost_python-gcc40-d-1_34
-                PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-ENDIF(PYTHONINTERP_FOUND)
-FIND_LIBRARY( BOOST_SERIALIZATION_LIBRARY NAMES 
-              boost_serialization
-              boost_serialization-40
-              PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-FIND_LIBRARY( BOOST_SERIALIZATION_LIBRARY_DEBUG NAMES 
-              boost_serialization-d
-              boost_serialization-40-d
-              PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-FIND_LIBRARY( BOOST_SIGNALS_LIBRARY NAMES 
-              boost_signals
-              boost_signals-40
-              PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-FIND_LIBRARY( BOOST_SIGNALS_LIBRARY_DEBUG NAMES 
-              boost_signals-d
-              boost_signals-40-d
-              PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-FIND_LIBRARY( BOOST_UNIT_TEST_LIBRARY NAMES 
-              boost_unit_test_framework 
-              boost_unit_test_framework-40
-              PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
-
-ENDIF(MINGW)
-
-IF (BOOST_INCLUDE_DIR)
-  SET(BOOST_FOUND TRUE)
-ENDIF (BOOST_INCLUDE_DIR)
-
-IF (BOOST_FOUND)
-  IF (NOT Boost_FIND_QUIETLY)
-     MESSAGE(STATUS "Found Boost: ${BOOST_INCLUDE_DIR}")
-  ENDIF (NOT Boost_FIND_QUIETLY)
-ELSE(BOOST_FOUND)
-  IF (Boost_FIND_REQUIRED)
-     MESSAGE(FATAL_ERROR "Could not find Boost")
-  ENDIF (Boost_FIND_REQUIRED)
-ENDIF (BOOST_FOUND)
+# - Try to find Boost include dirs and libraries
+# Usage of this module as follows:
+#
+#     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
+#
+# 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_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
+#                                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, 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
 
+# 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@cynapses.org>
+#  Copyright (c) 2007      Wengo
+#  Copyright (c) 2007      Mike Jackson
+#  Copyright (c) 2008      Andreas Pakulat <apaku@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.4" FATAL_ERROR)
+
+# MESSAGE(STATUS "Finding Boost libraries.... ")
+
+OPTION(Boost_USE_MULTITHREAD "Use the multithreaded versions of the boost libraries" ON)
+
+SET( _boost_TEST_VERSIONS ${Boost_ADDITIONAL_VERSIONS} "1.33" "1.33.0" "1.33.1" "1.34" "1.34.0" "1.34.1" )
+
+
+############################################
+#
+# 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 1)
+    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} )
+  ENDFOREACH(COMPONENT)
+  SET(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
+ELSE(_boost_IN_CACHE)
+  # Need to search for boost
+
+  SET(_boost_INCLUDE_SEARCH_DIRS
+    C:/boost/include
+    "C:/Program Files/boost/boost_${Boost_MINIMUM_VERSION}"
+    # 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_MINIMUM_VERSION}/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 )
+    SET(_boost_INCLUDE_SEARCH_DIRS ${Boost_ROOT}/include ${_boost_INCLUDE_SEARCH_DIRS})  
+    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}/include ${_boost_INCLUDE_SEARCH_DIRS})  
+  ENDIF( Boost_INCLUDEDIR )
+
+  IF( Boost_LIBRARYDIR )
+    SET(_boost_LIBRARIES_SEARCH_DIRS ${Boost_LIBRARYDIR}/include ${_boost_LIBRARIES_SEARCH_DIRS})  
+  ENDIF( Boost_LIBRARYDIR )
+
+  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}
+      )
+      STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1_\\2_\\3" _boost_PATH_SUFFIX ${_boost_PATH_SUFFIX})
+
+
+      FIND_PATH(Boost_INCLUDE_DIR
+          NAMES         boost/config.hpp
+          PATHS         ${_boost_INCLUDE_SEARCH_DIRS}
+          PATH_SUFFIXES ${_boost_PATH_SUFFIX}
+      )
+      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 STRING "The library version string for boost libraries")
+        SET(Boost_VERSION ${Boost_VERSION} CACHE STRING "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)
+
+    ENDIF( NOT Boost_INCLUDE_DIR )
+  ENDFOREACH(_boost_VER)
+
+  #Setting some more suffixes for the library
+  SET (Boost_LIB_PREFIX "")
+  IF ( WIN32 )
+    SET (Boost_LIB_PREFIX "lib")
+  ENDIF ( WIN32 )
+  SET (_boost_COMPILER "-gcc")
+  IF (MSVC71)
+    SET (_boost_COMPILER "-vc71")
+  ENDIF(MSVC71)
+   IF (MSVC80)
+    SET (_boost_COMPILER "-vc80")
+  ENDIF(MSVC80)
+  IF (MINGW)
+    SET (_boost_COMPILER "-mgw")
+  ENDIF(MINGW)
+  IF (CYGWIN)
+    SET (_boost_COMPILER "-gcc")
+  ENDIF (CYGWIN)
+  IF (UNIX)
+    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(UNIX)
+
+  SET (_boost_MULTITHREADED "-mt")
+
+  IF( NOT Boost_USE_MULTITHREADED )
+    SET (_boost_MULTITHREADED "")
+  ENDIF( NOT Boost_USE_MULTITHREADED )
+
+  SET( _boost_STATIC_TAG "")
+  IF (WIN32)
+    SET (_boost_ABI_TAG "g")
+    SET( _boost_STATIC_TAG "-s")
+  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 FALSE)
+    SET( Boost_{UPPERCOMPONENT}_LIBRARY_RELEASE FALSE)
+    SET( Boost_{UPPERCOMPONENT}_LIBRARY_DEBUG FALSE)
+    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})
+  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}" )
+    FOREACH(COMPONENT ${Boost_FIND_COMPONENTS})
+      STRING(TOUPPER ${COMPONENT} COMPONENT)
+      IF(NOT Boost_${COMPONENT}_FOUND)
+        SET( Boost_FOUND FALSE)
+      ENDIF(NOT Boost_${COMPONENT}_FOUND)
+    ENDFOREACH(COMPONENT)
+  ELSE(Boost_INCLUDE_DIR)
+    SET( Boost_FOUND FALSE)
+  ENDIF(Boost_INCLUDE_DIR)
+
+  IF (Boost_FOUND)
+      IF (NOT Boost_FIND_QUIETLY)
+        MESSAGE(STATUS "Found The Following Boost Libraries:")
+        FOREACH ( COMPONENT  ${Boost_FIND_COMPONENTS} )
+          STRING( TOUPPER ${COMPONENT} UPPERCOMPONENT )
+          IF ( Boost_${UPPERCOMPONENT}_FOUND )
+            MESSAGE (STATUS "  ${COMPONENT}")
+           SET(Boost_LIBRARIES ${Boost_LIBRARIES} ${Boost_${UPPERCOMPONENT}_LIBRARY})
+          ENDIF ( Boost_${UPPERCOMPONENT}_FOUND )
+        ENDFOREACH(COMPONENT)
+       MESSAGE(STATUS "Boost Version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")  
+      ENDIF(NOT Boost_FIND_QUIETLY)  
+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 irectory, 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)
+      SET(Boost_LIBRARIES "")
+  ENDIF(WIN32)
+
+  # show the Boost_INCLUDE_DIRS AND Boost_LIBRARIES variables only in the 
+  #advanced view  
+  MARK_AS_ADVANCED(Boost_INCLUDE_DIRS
+      Boost_LIBRARIES
+      Boost_LIBRARY_DIRS
+  )
+ENDIF(_boost_IN_CACHE)
index 47f94326ae85a31b227a757c9614eb90b6093014..9afd196e137ea2525d780f409d67e6c42c3b2306 100644 (file)
@@ -11,7 +11,7 @@ IF(QT_QTASSISTANT_FOUND)
 ENDIF(QT_QTASSISTANT_FOUND)
 INCLUDE( ${QT_USE_FILE} )
 FIND_PACKAGE(OpenGL)
-FIND_PACKAGE(Boost)
+FIND_PACKAGE(Boost 1.34.1 COMPONENTS program_options filesystem serialization)
 FIND_PACKAGE(PythonLibs)
 
 IF(QT4_FOUND)
@@ -20,9 +20,9 @@ IF(QT4_FOUND)
         mussa_core
         ${QT_LIBRARIES}
         ${OPENGL_gl_LIBRARY}
-        ${BOOST_PROGRAM_OPTIONS_LIBRARY}
-        ${BOOST_FILESYSTEM_LIBRARY}
-        ${BOOST_SERIALIZATION_LIBRARY}
+        ${Boost_PROGRAM_OPTIONS_LIBRARY}
+        ${Boost_FILESYSTEM_LIBRARY}
+        ${Boost_SERIALIZATION_LIBRARY}
         ${QT_QTTEST_LIBRARY}
       )
       
@@ -40,4 +40,4 @@ IF(QT4_FOUND)
     TARGET_LINK_LIBRARIES(${basename} ${qui_test_libs} ${extra_libs})
     ADD_TEST(${basename} ${basename})
   ENDMACRO(MAKE_QUI_UNITTEST)
-ENDIF(QT4_FOUND)
\ No newline at end of file
+ENDIF(QT4_FOUND)
index 032a46447fa6a6cf9762a0b30e2de62309af1fa2..cb793e1ec59772cd6240beab159d41ae0cf0239e 100644 (file)
@@ -1,4 +1,4 @@
-FIND_PACKAGE(Boost)
+FIND_PACKAGE(Boost 1.34.1 COMPONENTS python filesystem serialization)
 FIND_PACKAGE(OpenGL)
 FIND_PACKAGE(PythonLibs)
 FIND_PACKAGE(PythonInterp)
@@ -7,7 +7,7 @@ FIND_PACKAGE(Qt4)
 INCLUDE( ${QT_USE_FILE} )
 
 
-IF(BOOST_PYTHON_LIBRARY)
+IF(Boost_PYTHON_LIBRARY)
   INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH} ${QT_INCLUDES})
   SET(SOURCES 
         stl_container_adapter.cpp
@@ -35,12 +35,13 @@ IF(BOOST_PYTHON_LIBRARY)
   )                        
   SET(MUSSA_LIBRARIES
         mussa_core
-        ${BOOST_PYTHON_LIBRARY}
-        ${BOOST_FILESYSTEM_LIBRARY}
-        ${BOOST_SERIALIZATION_LIBRARY}
+        ${Boost_PYTHON_LIBRARY}
+        ${Boost_FILESYSTEM_LIBRARY}
+        ${Boost_SERIALIZATION_LIBRARY}
         ${OPENGL_gl_LIBRARY}
-        optimized ${QT_QTCORE_LIBRARY_RELEASE}
-        debug ${QT_QTCORE_LIBRARY_DEBUG}
+        ${QT_QTCORE_LIBRARY}
+        #optimized ${QT_QTCORE_LIBRARY_RELEASE}
+        #debug ${QT_QTCORE_LIBRARY_DEBUG}
      )        
   GET_MUSSA_COMPILE_FLAGS(PY_CFLAGS)
   GET_MUSSA_LINK_FLAGS(PY_LDFLAGS)
@@ -77,10 +78,8 @@ IF(BOOST_PYTHON_LIBRARY)
                         mussa_qui
                         ${MUSSA_LIBRARIES}
                         ${PYTHON_LIBRARIES}
-                        optimized ${QT_QTGUI_LIBRARY}
-                        debug ${QT_QTGUI_LIBRARY_DEBUG}
-                        optimized ${QT_QTOPENGL_LIBRARY}
-                        debug ${QT_QTOPENGL_LIBRARY_DEBUG}
+                        ${QT_QTGUI_LIBRARY}
+                        ${QT_QTOPENGL_LIBRARY}
                        )
   
   SET_SOURCE_FILES_PROPERTIES(
@@ -105,7 +104,8 @@ IF(BOOST_PYTHON_LIBRARY)
     ADD_TEST(TestFlp ${PYTHON_EXECUTABLE} ${PYTEST_DIR}/TestFlp.py)
     ADD_TEST(TestMussa ${PYTHON_EXECUTABLE} ${PYTEST_DIR}/TestMussa.py)
   ENDIF(PYTHON_EXECUTABLE)
-ELSE(BOOST_PYTHON_LIBRARY)
-ENDIF(BOOST_PYTHON_LIBRARY)
+ELSE(Boost_PYTHON_LIBRARY)
+  MESSAGE(STATUS "Not building mussa python extension, Boost python not found")
+ENDIF(Boost_PYTHON_LIBRARY)
 
 ADD_SUBDIRECTORY(test)
index 15c679910f4a88d2899acac1e4b70ef845315467..62fc91df210f0b80fd90cba43e6354e28e809ca2 100644 (file)
@@ -1,6 +1,6 @@
 FIND_PACKAGE(PythonLibs)
 
-INCLUDE(FindBoost)
+FIND_PACKAGE(Boost 1.34.1 COMPONENTS program_options filesystem serialization python2.3 unit_test_framework )
 INCLUDE(Platform)
 
 SET(SOURCES test_python.cpp )
@@ -23,13 +23,13 @@ TARGET_LINK_LIBRARIES(mussa_python_test
                         mussa_core
                         ${QT_QTCORE_LIBRARY}
                         ${OPENGL_gl_LIBRARY}
-                        ${BOOST_PROGRAM_OPTIONS_LIBRARY}
-                        ${BOOST_FILESYSTEM_LIBRARY}
-                        ${BOOST_SERIALIZATION_LIBRARY}
-                        ${BOOST_PYTHON_LIBRARY}
+                        ${Boost_PROGRAM_OPTIONS_LIBRARY}
+                        ${Boost_FILESYSTEM_LIBRARY}
+                        ${Boost_SERIALIZATION_LIBRARY}
+                        ${Boost_PYTHON_LIBRARY}
                         ${PYTHON_LIBRARIES}
                         ${PYTHON_LINK_LIBRARIES}
-                        ${BOOST_UNIT_TEST_LIBRARY} 
+                        ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} 
                         )
 
 SET_TARGET_PROPERTIES(
index 680706ca0b60c266ae338d3b7c97588309ea1343..8b446e67c0a5420ce722a34b1c0ce9d0d5d8eeab 100644 (file)
@@ -10,7 +10,7 @@ IF(QT_QTASSISTANT_FOUND)
 ENDIF(QT_QTASSISTANT_FOUND)
 INCLUDE( ${QT_USE_FILE} )
 FIND_PACKAGE(OpenGL)
-FIND_PACKAGE(Boost)
+FIND_PACKAGE(Boost 1.34.1)
 FIND_PACKAGE(PythonLibs)
 
 INCLUDE( Platform )
@@ -86,7 +86,7 @@ GET_MUSSA_LINK_FLAGS(QUI_LDFLAGS)
 
 INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH} 
                     ${QT_INCLUDES}
-                    ${BOOST_INCLUDE_DIR} )
+                    ${Boost_INCLUDE_DIR} )
 
 ADD_LIBRARY(mussa_qui STATIC ${SOURCES})
 
index d1668c7ddc874c016ec2e08a5b27f66fcf7ca0e1..e94887ce4db5994080a890103261518754dbf2a0 100644 (file)
@@ -1,4 +1,3 @@
-    
 INCLUDE( TestMacros )
 
 MAKE_QUI_UNITTEST(TestColorSharing)