From f5bd5fd5f3ea51728aa7d60de7f8f96452ec0a66 Mon Sep 17 00:00:00 2001 From: Julien Malik <julien.malik@c-s.fr> Date: Tue, 28 Sep 2010 18:42:45 +0200 Subject: [PATCH] ENH: change order dependencies are searched to recover windows7 compilation --- CMakeLists.txt | 364 +++++++++++++++++++++++++------------------------ 1 file changed, 183 insertions(+), 181 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1801d46616..a611cde0da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -304,168 +304,6 @@ IF(NOT BUILD_SHARED_LIBS) ADD_DEFINITIONS(-DOSSIM_STATIC) ENDIF(NOT BUILD_SHARED_LIBS) -#------------------------------- -# CURL Library -#------------------------------- -FIND_PACKAGE(CURL) -IF(CURL_FOUND) - OPTION(OTB_USE_CURL "Use curl library." ON) -ELSE(CURL_FOUND) - OPTION(OTB_USE_CURL "Use curl library." OFF) -ENDIF(CURL_FOUND) - -MARK_AS_ADVANCED(OTB_USE_CURL) -IF(OTB_USE_CURL) - - FIND_PATH(CURL_INCLUDE_DIR curl/curl.h PATHS) - MARK_AS_ADVANCED(CURL_INCLUDE_DIR) - IF (NOT CURL_INCLUDE_DIR) - MESSAGE(FATAL_ERROR - "Cannot find CURL include directory. Please set CURL_INCLUDE_DIR or SET OTB_USE_CURL OFF.") - ENDIF (NOT CURL_INCLUDE_DIR) - - FIND_LIBRARY(CURL_LIBRARY curl ) - MARK_AS_ADVANCED(CURL_LIBRARY) - IF (NOT CURL_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find CURL library. Please set CURL_LIBRARY or SET OTB_USE_CURL OFF.") - ENDIF (NOT CURL_LIBRARY) - - # Add compiler option - ADD_DEFINITIONS(-DOTB_USE_CURL) - - INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR}) - - # TODO add test to check if curl multi is available - TRY_COMPILE(OTB_CURL_MULTI_AVAILABLE - ${CMAKE_CURRENT_BINARY_DIR}/CMake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestCurlMulti.cxx - CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${CURL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${CURL_LIBRARY}" - OUTPUT_VARIABLE OUTPUT) - IF (OTB_CURL_MULTI_AVAILABLE) - ADD_DEFINITIONS(-DOTB_CURL_MULTI_AVAILABLE) - ENDIF (OTB_CURL_MULTI_AVAILABLE) -ENDIF(OTB_USE_CURL) - -#------------------------------- -# Mapnik Library -#------------------------------- -OPTION(OTB_USE_MAPNIK "Use mapnik library." OFF) -MARK_AS_ADVANCED(OTB_USE_MAPNIK) -IF(OTB_USE_MAPNIK) - - FIND_PATH(MAPNIK_INCLUDE_DIR mapnik/map.hpp PATHS) - MARK_AS_ADVANCED(MAPNIK_INCLUDE_DIR) - IF (NOT MAPNIK_INCLUDE_DIR) - MESSAGE(FATAL_ERROR - "Cannot find MAPNIK include directory. Please set MAPNIK_INCLUDE_DIR or SET OTB_USE_MAPNIK OFF.") - ENDIF (NOT MAPNIK_INCLUDE_DIR) - - FIND_PATH(FREETYPE2_INCLUDE_DIR freetype/freetype.h PATHS /usr/include/freetype2) - MARK_AS_ADVANCED(FREETYPE2_INCLUDE_DIR) - IF (NOT FREETYPE2_INCLUDE_DIR) - MESSAGE(FATAL_ERROR - "Cannot find FREETYPE2 include directory. Please set or SET OTB_USE_MAPNIK OFF.") - ENDIF (NOT FREETYPE2_INCLUDE_DIR) - - FIND_LIBRARY(MAPNIK_LIBRARY mapnik ) - MARK_AS_ADVANCED(MAPNIK_LIBRARY) - IF (NOT MAPNIK_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find MAPNIK library. Please set MAPNIK_LIBRARY or SET OTB_USE_MAPNIK OFF.") - ENDIF (NOT MAPNIK_LIBRARY) - - # Add compiler option - ADD_DEFINITIONS(-DOTB_USE_MAPNIK) - - INCLUDE_DIRECTORIES(${MAPNIK_INCLUDE_DIR}) - - -ENDIF(OTB_USE_MAPNIK) - -#------------------------------- -# Pqxx Library -#------------------------------- -OPTION(OTB_USE_PQXX "Use pqxx library (EXPERIMENTAL)." OFF) -MARK_AS_ADVANCED(OTB_USE_PQXX) -IF(OTB_USE_PQXX) - - FIND_PATH(PQXX_INCLUDE_DIR pqxx/pqxx PATHS) - MARK_AS_ADVANCED(PQXX_INCLUDE_DIR) - IF (NOT PQXX_INCLUDE_DIR) - MESSAGE(FATAL_ERROR - "Cannot find PQXX include directory. Please set PQXX_INCLUDE_DIR or SET OTB_USE_PQXX OFF.") - ENDIF (NOT PQXX_INCLUDE_DIR) - - - FIND_LIBRARY(PQXX_LIBRARY pqxx ) - MARK_AS_ADVANCED(PQXX_LIBRARY) - IF (NOT PQXX_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find PQXX library. Please set PQXX_LIBRARY or SET OTB_USE_PQXX OFF.") - ENDIF (NOT PQXX_LIBRARY) - - FIND_LIBRARY(PQ_LIBRARY pq ) - MARK_AS_ADVANCED(PQ_LIBRARY) - IF (NOT PQ_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find PQ library. Please set PQ_LIBRARY or SET OTB_USE_PQXX OFF.") - ENDIF (NOT PQ_LIBRARY) - - -# Add compiler option - ADD_DEFINITIONS(-DOTB_USE_PQXX) - - INCLUDE_DIRECTORIES(${PQXX_INCLUDE_DIR}) - -ENDIF(OTB_USE_PQXX) - - -#------------------------------- -# Boost Library -#------------------------------- -SET (Boost_MINOR_VERSION 0) - -OPTION(OTB_USE_EXTERNAL_BOOST "Use an outside build of Boost." OFF) - -IF(OTB_USE_EXTERNAL_BOOST) - FIND_PACKAGE(Boost) - IF(Boost_FOUND) - IF( ${Boost_MINOR_VERSION} EQUAL 40) - MESSAGE(WARNING "Boost 1.40 not supported. Disabling OTB_USE_EXTERNAL_BOOST") - SET(OTB_USE_EXTERNAL_BOOST OFF) - ENDIF(${Boost_MINOR_VERSION} EQUAL 40) - ELSE(Boost_FOUND) - MESSAGE(FATAL_ERROR - "Cannot build OTB project without boost library. Please set Boost directories or set OTB_USE_EXTERNAL_BOOST to OFF to use INTERNAL Boost set on OTB/Utilities repository.") - ENDIF(Boost_FOUND) -ENDIF(OTB_USE_EXTERNAL_BOOST) - -# Option for internal/external BOOST -MARK_AS_ADVANCED(OTB_USE_EXTERNAL_BOOST) - -IF (OTB_USE_MAPNIK) - IF(NOT OTB_USE_EXTERNAL_BOOST) - MESSAGE("You need to set OTB_USE_EXTERNAL_BOOST to ON when using MAPNIK") - ENDIF(NOT OTB_USE_EXTERNAL_BOOST) -ENDIF(OTB_USE_MAPNIK) - -IF(OTB_USE_EXTERNAL_BOOST) - - TRY_COMPILE(BOOST_IS_COMPLETE - ${CMAKE_CURRENT_BINARY_DIR}/CMake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/otbTestCompileBoost.cxx - CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${Boost_INCLUDE_DIR}" - OUTPUT_VARIABLE OUTPUT) - IF(BOOST_IS_COMPLETE) - MESSAGE(STATUS "Testing external Boost library -- yes") - ELSE(BOOST_IS_COMPLETE) - MESSAGE(STATUS "Testing external Boost library -- no") - MESSAGE(STATUS "Force the OTB_USE_EXTERNAL_BOOST value to OFF.") - SET(OTB_USE_EXTERNAL_BOOST OFF CACHE BOOL "Use an outside build of Boost." FORCE ) - ENDIF(BOOST_IS_COMPLETE) -ENDIF(OTB_USE_EXTERNAL_BOOST) - #------------------------------- # GDAL Library #------------------------------- @@ -618,7 +456,7 @@ ELSE(OTB_USE_EXTERNAL_GDAL) ENDIF(OTB_USE_EXTERNAL_GDAL) #----------------------------------------------------------------------------- -# Option for generate Visu tools !!! +# Option to generate Visu tools OPTION(OTB_USE_VISU_GUI "Generate Gui/Visu tools directory. If ON, find OpenGL and FLTK packages." ON) MARK_AS_ADVANCED(OTB_USE_VISU_GUI) @@ -641,32 +479,32 @@ IF(OTB_USE_VISU_GUI) INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) ENDIF(OPENGL_INCLUDE_DIR) - #------------------------------- + #------------------------------- # Display images using textures using video card acceleration #------------------------------- - OPTION(OTB_GL_USE_ACCEL "Use video card acceleration." OFF) - MARK_AS_ADVANCED(OTB_GL_USE_ACCEL) + OPTION(OTB_GL_USE_ACCEL "Use video card acceleration." OFF) + MARK_AS_ADVANCED(OTB_GL_USE_ACCEL) #------------------------------- # FLTK Library #------------------------------- OPTION(OTB_USE_EXTERNAL_FLTK "Use an outside build of FLTK." OFF) - IF(OTB_USE_EXTERNAL_FLTK) - FIND_PACKAGE(FLTK) - IF(NOT FLTK_FOUND) - MESSAGE(FATAL_ERROR + IF(OTB_USE_EXTERNAL_FLTK) + FIND_PACKAGE(FLTK) + IF(NOT FLTK_FOUND) + MESSAGE(FATAL_ERROR "Cannot build OTB project without FLTK. Please set FLTK_DIR or set OTB_USE_EXTERNAL_FLTK OFF to use INTERNAL FLTK.") - ENDIF(NOT FLTK_FOUND) - ELSE(OTB_USE_EXTERNAL_FLTK) - # Same Set as ITK - SET(FLTK_SOURCE_DIR ${OTB_SOURCE_DIR}/Utilities/FLTK) - SET(FLTK_BINARY_DIR ${OTB_BINARY_DIR}/Utilities/FLTK) - # Additionnal variables needed by OTB_VISU_GUI_LIBRARIES and FLTK_FLUID_EXECUTABLE - SET(FLTK_LIBRARIES "fltk_images;fltk;fltk_gl;fltk_forms") - SET(FLUID_COMMAND fluid) - # FLTK CMake needs a variable called JPEG_INCLUDE_DIR - SET(JPEG_INCLUDE_DIR ${JPEG_INCLUDE_DIRS}) + ENDIF(NOT FLTK_FOUND) + ELSE(OTB_USE_EXTERNAL_FLTK) + # Same Set as ITK + SET(FLTK_SOURCE_DIR ${OTB_SOURCE_DIR}/Utilities/FLTK) + SET(FLTK_BINARY_DIR ${OTB_BINARY_DIR}/Utilities/FLTK) + # Additionnal variables needed by OTB_VISU_GUI_LIBRARIES and FLTK_FLUID_EXECUTABLE + SET(FLTK_LIBRARIES "fltk_images;fltk;fltk_gl;fltk_forms") + SET(FLUID_COMMAND fluid) + # FLTK CMake needs a variable called JPEG_INCLUDE_DIR + SET(JPEG_INCLUDE_DIR ${JPEG_INCLUDE_DIRS}) ENDIF(OTB_USE_EXTERNAL_FLTK) SET(OTB_VISU_GUI_LIBRARIES "${FLTK_LIBRARIES};${OPENGL_LIBRARIES} ") @@ -674,6 +512,170 @@ IF(OTB_USE_VISU_GUI) ENDIF(OTB_USE_VISU_GUI) +#------------------------------- +# CURL Library +#------------------------------- +FIND_PACKAGE(CURL) +IF(CURL_FOUND) + OPTION(OTB_USE_CURL "Use curl library." ON) +ELSE(CURL_FOUND) + OPTION(OTB_USE_CURL "Use curl library." OFF) +ENDIF(CURL_FOUND) + +MARK_AS_ADVANCED(OTB_USE_CURL) +IF(OTB_USE_CURL) + + FIND_PATH(CURL_INCLUDE_DIR curl/curl.h PATHS) + MARK_AS_ADVANCED(CURL_INCLUDE_DIR) + IF (NOT CURL_INCLUDE_DIR) + MESSAGE(FATAL_ERROR + "Cannot find CURL include directory. Please set CURL_INCLUDE_DIR or SET OTB_USE_CURL OFF.") + ENDIF (NOT CURL_INCLUDE_DIR) + + FIND_LIBRARY(CURL_LIBRARY curl ) + MARK_AS_ADVANCED(CURL_LIBRARY) + IF (NOT CURL_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find CURL library. Please set CURL_LIBRARY or SET OTB_USE_CURL OFF.") + ENDIF (NOT CURL_LIBRARY) + + # Add compiler option + ADD_DEFINITIONS(-DOTB_USE_CURL) + + INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR}) + + # TODO add test to check if curl multi is available + TRY_COMPILE(OTB_CURL_MULTI_AVAILABLE + ${CMAKE_CURRENT_BINARY_DIR}/CMake + ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestCurlMulti.cxx + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${CURL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${CURL_LIBRARY}" + OUTPUT_VARIABLE OUTPUT) + IF (OTB_CURL_MULTI_AVAILABLE) + ADD_DEFINITIONS(-DOTB_CURL_MULTI_AVAILABLE) + ENDIF (OTB_CURL_MULTI_AVAILABLE) +ENDIF(OTB_USE_CURL) + +#------------------------------- +# Mapnik Library +#------------------------------- +OPTION(OTB_USE_MAPNIK "Use mapnik library." OFF) +MARK_AS_ADVANCED(OTB_USE_MAPNIK) +IF(OTB_USE_MAPNIK) + + FIND_PATH(MAPNIK_INCLUDE_DIR mapnik/map.hpp PATHS) + MARK_AS_ADVANCED(MAPNIK_INCLUDE_DIR) + IF (NOT MAPNIK_INCLUDE_DIR) + MESSAGE(FATAL_ERROR + "Cannot find MAPNIK include directory. Please set MAPNIK_INCLUDE_DIR or SET OTB_USE_MAPNIK OFF.") + ENDIF (NOT MAPNIK_INCLUDE_DIR) + + FIND_PATH(FREETYPE2_INCLUDE_DIR freetype/freetype.h PATHS /usr/include/freetype2) + MARK_AS_ADVANCED(FREETYPE2_INCLUDE_DIR) + IF (NOT FREETYPE2_INCLUDE_DIR) + MESSAGE(FATAL_ERROR + "Cannot find FREETYPE2 include directory. Please set or SET OTB_USE_MAPNIK OFF.") + ENDIF (NOT FREETYPE2_INCLUDE_DIR) + + FIND_LIBRARY(MAPNIK_LIBRARY mapnik ) + MARK_AS_ADVANCED(MAPNIK_LIBRARY) + IF (NOT MAPNIK_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find MAPNIK library. Please set MAPNIK_LIBRARY or SET OTB_USE_MAPNIK OFF.") + ENDIF (NOT MAPNIK_LIBRARY) + + # Add compiler option + ADD_DEFINITIONS(-DOTB_USE_MAPNIK) + + INCLUDE_DIRECTORIES(${MAPNIK_INCLUDE_DIR}) + + +ENDIF(OTB_USE_MAPNIK) + +#------------------------------- +# Pqxx Library +#------------------------------- +OPTION(OTB_USE_PQXX "Use pqxx library (EXPERIMENTAL)." OFF) +MARK_AS_ADVANCED(OTB_USE_PQXX) +IF(OTB_USE_PQXX) + + FIND_PATH(PQXX_INCLUDE_DIR pqxx/pqxx PATHS) + MARK_AS_ADVANCED(PQXX_INCLUDE_DIR) + IF (NOT PQXX_INCLUDE_DIR) + MESSAGE(FATAL_ERROR + "Cannot find PQXX include directory. Please set PQXX_INCLUDE_DIR or SET OTB_USE_PQXX OFF.") + ENDIF (NOT PQXX_INCLUDE_DIR) + + + FIND_LIBRARY(PQXX_LIBRARY pqxx ) + MARK_AS_ADVANCED(PQXX_LIBRARY) + IF (NOT PQXX_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find PQXX library. Please set PQXX_LIBRARY or SET OTB_USE_PQXX OFF.") + ENDIF (NOT PQXX_LIBRARY) + + FIND_LIBRARY(PQ_LIBRARY pq ) + MARK_AS_ADVANCED(PQ_LIBRARY) + IF (NOT PQ_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find PQ library. Please set PQ_LIBRARY or SET OTB_USE_PQXX OFF.") + ENDIF (NOT PQ_LIBRARY) + + +# Add compiler option + ADD_DEFINITIONS(-DOTB_USE_PQXX) + + INCLUDE_DIRECTORIES(${PQXX_INCLUDE_DIR}) + +ENDIF(OTB_USE_PQXX) + + +#------------------------------- +# Boost Library +#------------------------------- +SET (Boost_MINOR_VERSION 0) + +OPTION(OTB_USE_EXTERNAL_BOOST "Use an outside build of Boost." OFF) + +IF(OTB_USE_EXTERNAL_BOOST) + FIND_PACKAGE(Boost) + IF(Boost_FOUND) + IF( ${Boost_MINOR_VERSION} EQUAL 40) + MESSAGE(WARNING "Boost 1.40 not supported. Disabling OTB_USE_EXTERNAL_BOOST") + SET(OTB_USE_EXTERNAL_BOOST OFF) + ENDIF(${Boost_MINOR_VERSION} EQUAL 40) + ELSE(Boost_FOUND) + MESSAGE(FATAL_ERROR + "Cannot build OTB project without boost library. Please set Boost directories or set OTB_USE_EXTERNAL_BOOST to OFF to use INTERNAL Boost set on OTB/Utilities repository.") + ENDIF(Boost_FOUND) +ENDIF(OTB_USE_EXTERNAL_BOOST) + +# Option for internal/external BOOST +MARK_AS_ADVANCED(OTB_USE_EXTERNAL_BOOST) + +IF (OTB_USE_MAPNIK) + IF(NOT OTB_USE_EXTERNAL_BOOST) + MESSAGE("You need to set OTB_USE_EXTERNAL_BOOST to ON when using MAPNIK") + ENDIF(NOT OTB_USE_EXTERNAL_BOOST) +ENDIF(OTB_USE_MAPNIK) + +IF(OTB_USE_EXTERNAL_BOOST) + + TRY_COMPILE(BOOST_IS_COMPLETE + ${CMAKE_CURRENT_BINARY_DIR}/CMake + ${CMAKE_CURRENT_SOURCE_DIR}/CMake/otbTestCompileBoost.cxx + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${Boost_INCLUDE_DIR}" + OUTPUT_VARIABLE OUTPUT) + IF(BOOST_IS_COMPLETE) + MESSAGE(STATUS "Testing external Boost library -- yes") + ELSE(BOOST_IS_COMPLETE) + MESSAGE(STATUS "Testing external Boost library -- no") + MESSAGE(STATUS "Force the OTB_USE_EXTERNAL_BOOST value to OFF.") + SET(OTB_USE_EXTERNAL_BOOST OFF CACHE BOOL "Use an outside build of Boost." FORCE ) + ENDIF(BOOST_IS_COMPLETE) +ENDIF(OTB_USE_EXTERNAL_BOOST) + + + #Experimental OPTION(OTB_USE_GETTEXT "Get Text Library." ON) @@ -713,7 +715,7 @@ ENDIF(GETTEXT_FOUND) ENDIF(OTB_USE_GETTEXT) #------------------------------- -# End connections whith external libraries +# End connections with external libraries #------------------------------- #----------------------------------------------------------------------------- -- GitLab