From: Diane Trout Date: Fri, 15 Feb 2008 01:03:44 +0000 (+0000) Subject: Switch to a new FindBoost X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=commitdiff_plain;h=a16470ae609a64a5233f5e2a6004238053bce027 Switch to a new FindBoost 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. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 28d7b68..40c5572 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/alg/CMakeLists.txt b/alg/CMakeLists.txt index 9963d64..ddcc92f 100644 --- a/alg/CMakeLists.txt +++ b/alg/CMakeLists.txt @@ -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}) diff --git a/alg/test/CMakeLists.txt b/alg/test/CMakeLists.txt index be8dbea..8275f67 100644 --- a/alg/test/CMakeLists.txt +++ b/alg/test/CMakeLists.txt @@ -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} ) diff --git a/alg/tsf/CMakeLists.txt b/alg/tsf/CMakeLists.txt index 03bde51..f0b8af3 100644 --- a/alg/tsf/CMakeLists.txt +++ b/alg/tsf/CMakeLists.txt @@ -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( diff --git a/makelib/FindBoost.cmake b/makelib/FindBoost.cmake index dd2dab9..67a379e 100644 --- a/makelib/FindBoost.cmake +++ b/makelib/FindBoost.cmake @@ -1,136 +1,425 @@ -# - 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 +# 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. +# + +# 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) diff --git a/makelib/TestMacros.cmake b/makelib/TestMacros.cmake index 47f9432..9afd196 100644 --- a/makelib/TestMacros.cmake +++ b/makelib/TestMacros.cmake @@ -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) diff --git a/py/CMakeLists.txt b/py/CMakeLists.txt index 032a464..cb793e1 100644 --- a/py/CMakeLists.txt +++ b/py/CMakeLists.txt @@ -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) diff --git a/py/test/CMakeLists.txt b/py/test/CMakeLists.txt index 15c6799..62fc91d 100644 --- a/py/test/CMakeLists.txt +++ b/py/test/CMakeLists.txt @@ -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( diff --git a/qui/CMakeLists.txt b/qui/CMakeLists.txt index 680706c..8b446e6 100644 --- a/qui/CMakeLists.txt +++ b/qui/CMakeLists.txt @@ -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}) diff --git a/qui/test/CMakeLists.txt b/qui/test/CMakeLists.txt index d1668c7..e94887c 100644 --- a/qui/test/CMakeLists.txt +++ b/qui/test/CMakeLists.txt @@ -1,4 +1,3 @@ - INCLUDE( TestMacros ) MAKE_QUI_UNITTEST(TestColorSharing)