diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bf00ef23d25841b3d12f7ccf80a1f9659786cbb..172f740c76035c8c5a0235deb65621c9ea97068f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -287,6 +287,156 @@ IF(NOT BUILD_SHARED_LIBS) ADD_DEFINITIONS(-DOSSIM_STATIC) ENDIF(NOT BUILD_SHARED_LIBS) +#------------------------------- +# GDAL Library +#------------------------------- + +# Option for internal/external GDAL +OPTION(OTB_USE_EXTERNAL_GDAL "Use an outside build of GDAL. (OFF is NOT IMPLEMENTED)" ON) +MARK_AS_ADVANCED(OTB_USE_EXTERNAL_GDAL) + +IF(OTB_USE_EXTERNAL_GDAL) + + FIND_PACKAGE(GDAL) + + IF (NOT GDAL_FOUND) + FIND_PATH(GDAL_INCLUDE_DIR gdal.h $ENV{GDAL_INCLUDE_DIR} /usr/include/gdal) + FIND_LIBRARY(GDAL_LIBRARY NAMES gdal gdal1.5.0 gdal1.4.0 gdal1.3.2 PATHS /usr/lib/gdal) + ENDIF(NOT GDAL_FOUND) + + IF (NOT GDAL_INCLUDE_DIR) + MESSAGE(FATAL_ERROR + "Cannot find GDAL include directory. Please set GDAL_INCLUDE_DIR.") + ENDIF (NOT GDAL_INCLUDE_DIR) + + INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIR}) + + IF (NOT GDAL_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find GDAL library. Please set GDAL_LIBRARY.") + ENDIF (NOT GDAL_LIBRARY) + MESSAGE(STATUS "GDAL library found: ${GDAL_LIBRARY}") + + # Find gdal version + FIND_PROGRAM(GDALCONFIG_EXECUTABLE gdal-config) + IF (GDALCONFIG_EXECUTABLE) + EXECUTE_PROCESS(COMMAND ${GDALCONFIG_EXECUTABLE} --version + OUTPUT_VARIABLE GDAL_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + MESSAGE(STATUS "GDAL version is " ${GDAL_VERSION}) + SET(GDAL_VERSION ${GDAL_VERSION} CACHE STRING "GDAL version" FORCE) + MARK_AS_ADVANCED(GDAL_VERSION) + ELSE (GDALCONFIG_EXECUTABLE) + MESSAGE(STATUS "gdal-config not found") + ENDIF (GDALCONFIG_EXECUTABLE) + + + # Find geotiff headers + FIND_PATH(GEOTIFF_INCLUDE_DIRS geotiff.h $ENV{GDAL_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} /usr/include/geotiff) + IF (NOT GEOTIFF_INCLUDE_DIRS) + MESSAGE(FATAL_ERROR + "Cannot find geotiff headers. Please set GEOTIFF_INCLUDE_DIRS.") + ENDIF (NOT GEOTIFF_INCLUDE_DIRS) +# INCLUDE_DIRECTORIES(${GEOTIFF_INCLUDE_DIRS}) + + # Find tiff headers + FIND_PATH(TIFF_INCLUDE_DIRS tiffio.h $ENV{GDAL_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} /usr/include) + IF (NOT TIFF_INCLUDE_DIRS) + MESSAGE(FATAL_ERROR + "Cannot find libtiff headers. Please set TIFF_INCLUDE_DIRS.") + ENDIF (NOT TIFF_INCLUDE_DIRS) +# INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIRS}) + + # Find jpeg headers + FIND_PATH(JPEG_INCLUDE_DIRS jpeglib.h $ENV{GDAL_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} /usr/include) + IF (NOT JPEG_INCLUDE_DIRS) + MESSAGE(FATAL_ERROR + "Cannot find jpeg headers. Please set JPEG_INCLUDE_DIRS.") + ENDIF (NOT JPEG_INCLUDE_DIRS) + INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIRS}) + + # Find ogr headers + FIND_PATH(OGR_INCLUDE_DIRS ogrsf_frmts.h $ENV{GDAL_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} /usr/include) + IF (NOT OGR_INCLUDE_DIRS) + MESSAGE(FATAL_ERROR + "Cannot find ogr headers. Please set OGR_INCLUDE_DIRS.") + ENDIF (NOT OGR_INCLUDE_DIRS) + INCLUDE_DIRECTORIES(${OGR_INCLUDE_DIRS}) + + # Check if ${GDAL_LIBRARY} has tiff library + TRY_COMPILE(GDAL_HAS_TIFF + ${CMAKE_CURRENT_BINARY_DIR}/CMake + ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasTiff.cxx + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${TIFF_INCLUDE_DIRS};${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" + OUTPUT_VARIABLE OUTPUT) + IF(GDAL_HAS_TIFF) + MESSAGE(STATUS "Testing if GDAL has tiff -- yes") + SET(TIFF_LIBRARY ${GDAL_LIBRARY}) + ELSE(GDAL_HAS_TIFF) + MESSAGE(STATUS "Testing if GDAL has tiff -- no") + FIND_LIBRARY(TIFF_LIBRARY tiff PATHS) + IF (NOT TIFF_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find tiff library. Please set TIFF_LIBRARY.") + ENDIF (NOT TIFF_LIBRARY) + ENDIF(GDAL_HAS_TIFF) + + # Check if ${GDAL_LIBRARY} has geotiff library + TRY_COMPILE(GDAL_HAS_GEOTIFF + ${CMAKE_CURRENT_BINARY_DIR}/CMake + ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasGeoTiff.cxx + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GEOTIFF_INCLUDE_DIRS};${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" + OUTPUT_VARIABLE OUTPUT) + IF(GDAL_HAS_GEOTIFF) + MESSAGE(STATUS "Testing if GDAL has geotiff -- yes") + SET(GEOTIFF_LIBRARY ${GDAL_LIBRARY}) + ELSE(GDAL_HAS_GEOTIFF) + MESSAGE(STATUS "Testing if GDAL has geotiff -- no") + FIND_LIBRARY(GEOTIFF_LIBRARY geotiff PATHS) + IF (NOT GEOTIFF_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find geotiff library. Please set GEOTIFF_LIBRARY.") + ENDIF (NOT GEOTIFF_LIBRARY) + ENDIF(GDAL_HAS_GEOTIFF) + + # Check if ${GDAL_LIBRARY} has jpeg library + TRY_COMPILE(GDAL_HAS_JPEG + ${CMAKE_CURRENT_BINARY_DIR}/CMake + ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasJpeg.cxx + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${JPEG_INCLUDE_DIRS};${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" + OUTPUT_VARIABLE OUTPUT) + IF(GDAL_HAS_JPEG) + MESSAGE(STATUS "Testing if GDAL has jpeg -- yes") + SET(JPEG_LIBRARY ${GDAL_LIBRARY}) + ELSE(GDAL_HAS_JPEG) + MESSAGE(STATUS "Testing if GDAL has jpeg -- no") + FIND_LIBRARY(JPEG_LIBRARY jpeg PATHS) + IF (NOT JPEG_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find jpeg library. Please set JPEG_LIBRARY.") + ENDIF (NOT JPEG_LIBRARY) + ENDIF(GDAL_HAS_JPEG) + + # Check if ${GDAL_LIBRARY} has ogr library + TRY_COMPILE(GDAL_HAS_OGR + ${CMAKE_CURRENT_BINARY_DIR}/CMake + ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasOGR.cxx + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${OGR_INCLUDE_DIRS};${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" + OUTPUT_VARIABLE OUTPUT) + IF(GDAL_HAS_OGR) + MESSAGE(STATUS "Testing if GDAL has OGR -- yes") + SET(OGR_LIBRARY ${GDAL_LIBRARY}) + ELSE(GDAL_HAS_OGR) + MESSAGE(STATUS "Testing if GDAL has OGR -- no") + MESSAGE(FATAL_ERROR "OGR MESSAGE: ${OUTPUT}") + FIND_LIBRARY(OGR_LIBRARY ogr PATHS) + IF (NOT OGR_LIBRARY) + MESSAGE(FATAL_ERROR + "Cannot find ogr library. Please set OGR_LIBRARY.") + ENDIF (NOT OGR_LIBRARY) + ENDIF(GDAL_HAS_OGR) +ELSE(OTB_USE_EXTERNAL_GDAL) +ENDIF(OTB_USE_EXTERNAL_GDAL) #----------------------------------------------------------------------------- # Option for generate Visu tools !!! @@ -336,6 +486,9 @@ IF(OTB_USE_VISU_GUI) # 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 ${EXECUTABLE_OUTPUT_PATH}/fluid) + # FLTK CMake needs a variable called JPEG_INCLUDE_DIR + SET(JPEG_INCLUDE_DIR ${JPEG_INCLUDE_DIRS}) + MESSAGE("JPEG_INCLUDE_DIRS: ${JPEG_INCLUDE_DIRS}, JPEG_INCLUDE_DIR=${JPEG_INCLUDE_DIR}") ENDIF(OTB_USE_EXTERNAL_FLTK) SET(OTB_VISU_GUI_LIBRARIES "${FLTK_LIBRARIES};${OPENGL_LIBRARIES} ") @@ -496,156 +649,7 @@ IF(OTB_USE_EXTERNAL_BOOST) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}) ENDIF(OTB_USE_EXTERNAL_BOOST) -#------------------------------- -# GDAL Library -#------------------------------- - -# Option for internal/external GDAL -OPTION(OTB_USE_EXTERNAL_GDAL "Use an outside build of GDAL. (OFF is NOT IMPLEMENTED)" ON) -MARK_AS_ADVANCED(OTB_USE_EXTERNAL_GDAL) - -IF(OTB_USE_EXTERNAL_GDAL) - - FIND_PACKAGE(GDAL) - - IF (NOT GDAL_FOUND) - FIND_PATH(GDAL_INCLUDE_DIR gdal.h $ENV{GDAL_INCLUDE_DIR} /usr/include/gdal) - FIND_LIBRARY(GDAL_LIBRARY NAMES gdal gdal1.5.0 gdal1.4.0 gdal1.3.2 PATHS /usr/lib/gdal) - ENDIF(NOT GDAL_FOUND) - - IF (NOT GDAL_INCLUDE_DIR) - MESSAGE(FATAL_ERROR - "Cannot find GDAL include directory. Please set GDAL_INCLUDE_DIR.") - ENDIF (NOT GDAL_INCLUDE_DIR) - - INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIR}) - - IF (NOT GDAL_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find GDAL library. Please set GDAL_LIBRARY.") - ENDIF (NOT GDAL_LIBRARY) - MESSAGE(STATUS "GDAL library found: ${GDAL_LIBRARY}") - - # Find gdal version - FIND_PROGRAM(GDALCONFIG_EXECUTABLE gdal-config) - IF (GDALCONFIG_EXECUTABLE) - EXECUTE_PROCESS(COMMAND ${GDALCONFIG_EXECUTABLE} --version - OUTPUT_VARIABLE GDAL_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - MESSAGE(STATUS "GDAL version is " ${GDAL_VERSION}) - SET(GDAL_VERSION ${GDAL_VERSION} CACHE STRING "GDAL version" FORCE) - MARK_AS_ADVANCED(GDAL_VERSION) - ELSE (GDALCONFIG_EXECUTABLE) - MESSAGE(STATUS "gdal-config not found") - ENDIF (GDALCONFIG_EXECUTABLE) - - - # Find geotiff headers - FIND_PATH(GEOTIFF_INCLUDE_DIRS geotiff.h $ENV{GDAL_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} /usr/include/geotiff) - IF (NOT GEOTIFF_INCLUDE_DIRS) - MESSAGE(FATAL_ERROR - "Cannot find geotiff headers. Please set GEOTIFF_INCLUDE_DIRS.") - ENDIF (NOT GEOTIFF_INCLUDE_DIRS) -# INCLUDE_DIRECTORIES(${GEOTIFF_INCLUDE_DIRS}) - - # Find tiff headers - FIND_PATH(TIFF_INCLUDE_DIRS tiffio.h $ENV{GDAL_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} /usr/include) - IF (NOT TIFF_INCLUDE_DIRS) - MESSAGE(FATAL_ERROR - "Cannot find libtiff headers. Please set TIFF_INCLUDE_DIRS.") - ENDIF (NOT TIFF_INCLUDE_DIRS) -# INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIRS}) - - # Find jpeg headers - FIND_PATH(JPEG_INCLUDE_DIRS jpeglib.h $ENV{GDAL_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} /usr/include) - IF (NOT JPEG_INCLUDE_DIRS) - MESSAGE(FATAL_ERROR - "Cannot find jpeg headers. Please set JPEG_INCLUDE_DIRS.") - ENDIF (NOT JPEG_INCLUDE_DIRS) - INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIRS}) - - # Find ogr headers - FIND_PATH(OGR_INCLUDE_DIRS ogrsf_frmts.h $ENV{GDAL_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} /usr/include) - IF (NOT OGR_INCLUDE_DIRS) - MESSAGE(FATAL_ERROR - "Cannot find ogr headers. Please set OGR_INCLUDE_DIRS.") - ENDIF (NOT OGR_INCLUDE_DIRS) - INCLUDE_DIRECTORIES(${OGR_INCLUDE_DIRS}) - # Check if ${GDAL_LIBRARY} has tiff library - TRY_COMPILE(GDAL_HAS_TIFF - ${CMAKE_CURRENT_BINARY_DIR}/CMake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasTiff.cxx - CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${TIFF_INCLUDE_DIRS};${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" - OUTPUT_VARIABLE OUTPUT) - IF(GDAL_HAS_TIFF) - MESSAGE(STATUS "Testing if GDAL has tiff -- yes") - SET(TIFF_LIBRARY ${GDAL_LIBRARY}) - ELSE(GDAL_HAS_TIFF) - MESSAGE(STATUS "Testing if GDAL has tiff -- no") - FIND_LIBRARY(TIFF_LIBRARY tiff PATHS) - IF (NOT TIFF_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find tiff library. Please set TIFF_LIBRARY.") - ENDIF (NOT TIFF_LIBRARY) - ENDIF(GDAL_HAS_TIFF) - - # Check if ${GDAL_LIBRARY} has geotiff library - TRY_COMPILE(GDAL_HAS_GEOTIFF - ${CMAKE_CURRENT_BINARY_DIR}/CMake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasGeoTiff.cxx - CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GEOTIFF_INCLUDE_DIRS};${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" - OUTPUT_VARIABLE OUTPUT) - IF(GDAL_HAS_GEOTIFF) - MESSAGE(STATUS "Testing if GDAL has geotiff -- yes") - SET(GEOTIFF_LIBRARY ${GDAL_LIBRARY}) - ELSE(GDAL_HAS_GEOTIFF) - MESSAGE(STATUS "Testing if GDAL has geotiff -- no") - FIND_LIBRARY(GEOTIFF_LIBRARY geotiff PATHS) - IF (NOT GEOTIFF_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find geotiff library. Please set GEOTIFF_LIBRARY.") - ENDIF (NOT GEOTIFF_LIBRARY) - ENDIF(GDAL_HAS_GEOTIFF) - - # Check if ${GDAL_LIBRARY} has jpeg library - TRY_COMPILE(GDAL_HAS_JPEG - ${CMAKE_CURRENT_BINARY_DIR}/CMake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasJpeg.cxx - CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${JPEG_INCLUDE_DIRS};${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" - OUTPUT_VARIABLE OUTPUT) - IF(GDAL_HAS_JPEG) - MESSAGE(STATUS "Testing if GDAL has jpeg -- yes") - SET(JPEG_LIBRARY ${GDAL_LIBRARY}) - ELSE(GDAL_HAS_JPEG) - MESSAGE(STATUS "Testing if GDAL has jpeg -- no") - FIND_LIBRARY(JPEG_LIBRARY jpeg PATHS) - IF (NOT JPEG_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find jpeg library. Please set JPEG_LIBRARY.") - ENDIF (NOT JPEG_LIBRARY) - ENDIF(GDAL_HAS_JPEG) - - # Check if ${GDAL_LIBRARY} has ogr library - TRY_COMPILE(GDAL_HAS_OGR - ${CMAKE_CURRENT_BINARY_DIR}/CMake - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestGDALHasOGR.cxx - CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${OGR_INCLUDE_DIRS};${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" - OUTPUT_VARIABLE OUTPUT) - IF(GDAL_HAS_OGR) - MESSAGE(STATUS "Testing if GDAL has OGR -- yes") - SET(OGR_LIBRARY ${GDAL_LIBRARY}) - ELSE(GDAL_HAS_OGR) - MESSAGE(STATUS "Testing if GDAL has OGR -- no") - MESSAGE(FATAL_ERROR "OGR MESSAGE: ${OUTPUT}") - FIND_LIBRARY(OGR_LIBRARY ogr PATHS) - IF (NOT OGR_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find ogr library. Please set OGR_LIBRARY.") - ENDIF (NOT OGR_LIBRARY) - ENDIF(GDAL_HAS_OGR) -ELSE(OTB_USE_EXTERNAL_GDAL) -ENDIF(OTB_USE_EXTERNAL_GDAL) #Experimental OPTION(OTB_USE_GETTEXT "Get Text Library." ON)