Skip to content
Snippets Groups Projects
Commit a4ca56d3 authored by Mickael Savinaud's avatar Mickael Savinaud
Browse files

ENH: move FindFLTK.cmake in otb and begin to modify it and importFLTK

parent 781b4c14
No related branches found
No related tags found
No related merge requests found
# - Find the native FLTK includes and library
#
# By default FindFLTK.cmake will search for all of the FLTK components and
# add them to the FLTK_LIBRARIES variable.
#
# You can limit the components which get placed in FLTK_LIBRARIES by
# defining one or more of the following three options:
#
# FLTK_SKIP_OPENGL, set to true to disable searching for opengl and
# the FLTK GL library
# FLTK_SKIP_FORMS, set to true to disable searching for fltk_forms
# FLTK_SKIP_IMAGES, set to true to disable searching for fltk_images
#
# FLTK_SKIP_FLUID, set to true if the fluid binary need not be present
# at build time
#
# The following variables will be defined:
# FLTK_FOUND, True if all components not skipped were found
# FLTK_INCLUDE_DIR, where to find include files
# FLTK_LIBRARIES, list of fltk libraries you should link against
# FLTK_FLUID_EXECUTABLE, where to find the Fluid tool
# FLTK_WRAP_UI, This enables the FLTK_WRAP_UI command
#
# The following cache variables are assigned but should not be used.
# See the FLTK_LIBRARIES variable instead.
#
# FLTK_BASE_LIBRARY = the full path to fltk.lib
# FLTK_GL_LIBRARY = the full path to fltk_gl.lib
# FLTK_FORMS_LIBRARY = the full path to fltk_forms.lib
# FLTK_IMAGES_LIBRARY = the full path to fltk_images.lib
#=============================================================================
# Copyright 2001-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
IF(NOT FLTK_SKIP_OPENGL)
FIND_PACKAGE(OpenGL)
ENDIF()
# Platform dependent libraries required by FLTK
IF(WIN32)
IF(NOT CYGWIN)
IF(BORLAND)
SET( FLTK_PLATFORM_DEPENDENT_LIBS import32 )
ELSE(BORLAND)
SET( FLTK_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 )
ENDIF(BORLAND)
ENDIF(NOT CYGWIN)
ENDIF(WIN32)
IF(UNIX)
INCLUDE(FindX11)
FIND_LIBRARY(FLTK_MATH_LIBRARY m)
SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} ${FLTK_MATH_LIBRARY})
ENDIF(UNIX)
IF(APPLE)
SET( FLTK_PLATFORM_DEPENDENT_LIBS "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
ENDIF(APPLE)
# If FLTK_INCLUDE_DIR is already defined we assigne its value to FLTK_DIR
MESSAGE(STATUS "FLTK_INCLUDE_DIR= ${FLTK_INCLUDE_DIR}")
IF(FLTK_INCLUDE_DIR)
SET(FLTK_DIR ${FLTK_INCLUDE_DIR})
ENDIF(FLTK_INCLUDE_DIR)
MESSAGE(STATUS "FLTK_DIR= ${FLTK_DIR}")
# If FLTK has been built using CMake we try to find everything directly
SET(FLTK_DIR_STRING "directory containing FLTKConfig.cmake. This is either the root of the build tree, or PREFIX/lib/fltk for an installation.")
# Search only if the location is not already known.
IF(NOT FLTK_DIR)
# Get the system search path as a list.
IF(UNIX)
STRING(REGEX MATCHALL "[^:]+" FLTK_DIR_SEARCH1 "$ENV{PATH}")
ELSE(UNIX)
STRING(REGEX REPLACE "\\\\" "/" FLTK_DIR_SEARCH1 "$ENV{PATH}")
ENDIF(UNIX)
STRING(REGEX REPLACE "/;" ";" FLTK_DIR_SEARCH2 ${FLTK_DIR_SEARCH1})
# Construct a set of paths relative to the system search path.
SET(FLTK_DIR_SEARCH "")
FOREACH(dir ${FLTK_DIR_SEARCH2})
SET(FLTK_DIR_SEARCH ${FLTK_DIR_SEARCH} "${dir}/../lib/fltk")
ENDFOREACH(dir)
#
# Look for an installation or build tree.
#
FIND_PATH(FLTK_DIR FLTKConfig.cmake
# Look for an environment variable FLTK_DIR.
$ENV{FLTK_DIR}
# Look in places relative to the system executable search path.
${FLTK_DIR_SEARCH}
# Look in standard UNIX install locations.
/usr/local/lib/fltk
/usr/lib/fltk
/usr/local/include
/usr/include
/usr/local/fltk
/usr/X11R6/include
# Read from the CMakeSetup registry entries. It is likely that
# FLTK will have been recently built.
# TODO: Is this really a good idea? I can already hear the user screaming, "But
# it worked when I configured the build LAST week!"
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild1]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild2]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild3]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild4]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild5]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild6]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild7]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild8]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild9]
[HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild10]
# Help the user find it if we cannot.
DOC "The ${FLTK_DIR_STRING}"
)
ENDIF(NOT FLTK_DIR)
# Check if FLTK was built using CMake
IF(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
SET(FLTK_BUILT_WITH_CMAKE 1)
ENDIF(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
MESSAGE(STATUS "FLTK_BUILT_WITH_CMAKE= ${FLTK_BUILT_WITH_CMAKE}")
IF(FLTK_BUILT_WITH_CMAKE)
# Use the config mode of find package
FIND_PACKAGE(FLTK NO_MODULE)
# If fluid command is available we try to use the 1.1 version
IF (${FLUID_COMMAND})
SET(FLTK_FOUND 1)
#INCLUDE(${FLTK_DIR}/FLTKConfig.cmake)
SET(FLTK_EXTERNAL_VERSION
"${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}.${FLTK_VERSION_PATCH}"
CACHE STRING "FLTK external version used")
# Fluid
SET(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable")
SET(FLTK_INCLUDE_DIR ${FLTK_DIR})
LINK_DIRECTORIES(${FLTK_LIBRARY_DIRS})
SET(FLTK_BASE_LIBRARY fltk)
SET(FLTK_GL_LIBRARY fltk_gl)
SET(FLTK_FORMS_LIBRARY fltk_forms)
SET(FLTK_IMAGES_LIBRARY fltk_images)
# Add the extra libraries
LOAD_CACHE(${FLTK_DIR}
READ_WITH_PREFIX
FL FLTK_USE_SYSTEM_JPEG
FL FLTK_USE_SYSTEM_PNG
FL FLTK_USE_SYSTEM_ZLIB
)
ELSE (${FLUID_COMMAND})
# If fluid command is not available we try to use the 1.3 version
SET(FLTK_EXTERNAL_VERSION "${FLTK_VERSION}" CACHE STRING "FLTK external version used")
SET(FLTK_FLUID_EXECUTABLE ${FLTK_FLUID_EXECUTABLE} CACHE FILEPATH "Fluid executable")
SET(FLTK_BASE_LIBRARY ${FLTK_LIB_DIR}/libfltk.so)
SET(FLTK_GL_LIBRARY ${FLTK_LIB_DIR}/libfltk_gl.so)
SET(FLTK_FORMS_LIBRARY ${FLTK_LIB_DIR}/libfltk_forms.so)
SET(FLTK_IMAGES_LIBRARY ${FLTK_LIB_DIR}/libfltk_images.so)
ENDIF (${FLUID_COMMAND})
SET(FLTK_IMAGES_LIBS "")
IF(FLFLTK_USE_SYSTEM_JPEG)
SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_jpeg)
ENDIF(FLFLTK_USE_SYSTEM_JPEG)
IF(FLFLTK_USE_SYSTEM_PNG)
SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_png)
ENDIF(FLFLTK_USE_SYSTEM_PNG)
IF(FLFLTK_USE_SYSTEM_ZLIB)
SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_zlib)
ENDIF(FLFLTK_USE_SYSTEM_ZLIB)
SET(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
"Extra libraries for fltk_images library.")
ELSE(FLTK_BUILT_WITH_CMAKE)
# if FLTK was not built using CMake
# Find fluid executable.
FIND_PROGRAM(FLTK_FLUID_EXECUTABLE fluid ${FLTK_INCLUDE_DIR}/fluid)
# Use location of fluid to help find everything else.
SET(FLTK_INCLUDE_SEARCH_PATH "")
SET(FLTK_LIBRARY_SEARCH_PATH "")
IF(FLTK_FLUID_EXECUTABLE)
GET_FILENAME_COMPONENT(FLTK_BIN_DIR "${FLTK_FLUID_EXECUTABLE}" PATH)
SET(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
${FLTK_BIN_DIR}/../include ${FLTK_BIN_DIR}/..)
SET(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
${FLTK_BIN_DIR}/../lib)
SET(FLTK_WRAP_UI 1)
ENDIF(FLTK_FLUID_EXECUTABLE)
#
# Try to find FLTK include dir using fltk-config
#
IF(UNIX)
# Use fltk-config to generate a list of possible include directories
FIND_PROGRAM(FLTK_CONFIG_SCRIPT fltk-config PATHS ${FLTK_BIN_DIR})
IF(FLTK_CONFIG_SCRIPT)
IF(NOT FLTK_INCLUDE_DIR)
EXEC_PROGRAM(${FLTK_CONFIG_SCRIPT} ARGS --cxxflags OUTPUT_VARIABLE FLTK_CXXFLAGS)
IF(FLTK_CXXFLAGS)
STRING(REGEX MATCHALL "-I[^ ]*" _fltk_temp_dirs ${FLTK_CXXFLAGS})
STRING(REPLACE "-I" "" _fltk_temp_dirs "${_fltk_temp_dirs}")
FOREACH(_dir ${_fltk_temp_dirs})
STRING(STRIP ${_dir} _output)
LIST(APPEND _FLTK_POSSIBLE_INCLUDE_DIRS ${_output})
ENDFOREACH()
ENDIF(FLTK_CXXFLAGS)
ENDIF()
ENDIF()
ENDIF()
SET(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
/usr/local/fltk
/usr/X11R6/include
${_FLTK_POSSIBLE_INCLUDE_DIRS}
)
FIND_PATH(FLTK_INCLUDE_DIR
NAMES FL/Fl.h FL/Fl.H # fltk 1.1.9 has Fl.H (#8376)
PATHS ${FLTK_INCLUDE_SEARCH_PATH})
#
# Try to find FLTK library
IF(UNIX)
IF(FLTK_CONFIG_SCRIPT)
EXEC_PROGRAM(${FLTK_CONFIG_SCRIPT} ARGS --libs OUTPUT_VARIABLE _FLTK_POSSIBLE_LIBS)
IF(_FLTK_POSSIBLE_LIBS)
GET_FILENAME_COMPONENT(_FLTK_POSSIBLE_LIBRARY_DIR ${_FLTK_POSSIBLE_LIBS} PATH)
ENDIF()
ENDIF()
ENDIF()
SET(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
/usr/local/fltk/lib
/usr/X11R6/lib
${FLTK_INCLUDE_DIR}/lib
${_FLTK_POSSIBLE_LIBRARY_DIR}
)
FIND_LIBRARY(FLTK_BASE_LIBRARY NAMES fltk fltkd
PATHS ${FLTK_LIBRARY_SEARCH_PATH})
FIND_LIBRARY(FLTK_GL_LIBRARY NAMES fltkgl fltkgld fltk_gl
PATHS ${FLTK_LIBRARY_SEARCH_PATH})
FIND_LIBRARY(FLTK_FORMS_LIBRARY NAMES fltkforms fltkformsd fltk_forms
PATHS ${FLTK_LIBRARY_SEARCH_PATH})
FIND_LIBRARY(FLTK_IMAGES_LIBRARY NAMES fltkimages fltkimagesd fltk_images
PATHS ${FLTK_LIBRARY_SEARCH_PATH})
# Find the extra libraries needed for the fltk_images library.
IF(UNIX)
IF(FLTK_CONFIG_SCRIPT)
EXEC_PROGRAM(${FLTK_CONFIG_SCRIPT} ARGS --use-images --ldflags
OUTPUT_VARIABLE FLTK_IMAGES_LDFLAGS)
SET(FLTK_LIBS_EXTRACT_REGEX ".*-lfltk_images (.*) -lfltk.*")
IF("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
STRING(REGEX REPLACE "${FLTK_LIBS_EXTRACT_REGEX}" "\\1"
FLTK_IMAGES_LIBS "${FLTK_IMAGES_LDFLAGS}")
STRING(REGEX REPLACE " +" ";" FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}")
# The EXEC_PROGRAM will not be inherited into subdirectories from
# the file that originally included this module. Save the answer.
SET(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
"Extra libraries for fltk_images library.")
ENDIF("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
ENDIF(FLTK_CONFIG_SCRIPT)
ENDIF(UNIX)
ENDIF(FLTK_BUILT_WITH_CMAKE)
# Append all of the required libraries together (by default, everything)
SET(FLTK_LIBRARIES)
IF(NOT FLTK_SKIP_IMAGES)
LIST(APPEND FLTK_LIBRARIES ${FLTK_IMAGES_LIBRARY})
ENDIF()
IF(NOT FLTK_SKIP_FORMS)
LIST(APPEND FLTK_LIBRARIES ${FLTK_FORMS_LIBRARY})
ENDIF()
IF(NOT FLTK_SKIP_OPENGL)
LIST(APPEND FLTK_LIBRARIES ${FLTK_GL_LIBRARY} ${OPENGL_gl_LIBRARY})
LIST(APPEND FLTK_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
LIST(REMOVE_DUPLICATES FLTK_INCLUDE_DIR)
ENDIF()
LIST(APPEND FLTK_LIBRARIES ${FLTK_BASE_LIBRARY})
INCLUDE(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
IF(FLTK_SKIP_FLUID)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLTK DEFAULT_MSG FLTK_LIBRARIES FLTK_INCLUDE_DIR)
ELSE()
FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLTK DEFAULT_MSG FLTK_LIBRARIES FLTK_INCLUDE_DIR FLTK_FLUID_EXECUTABLE)
ENDIF()
IF(FLTK_FOUND)
MESSAGE(STATUS "in FindFLTK FLTK_PLATFORM_DEPENDENT_LIBS = ${FLTK_PLATFORM_DEPENDENT_LIBS}")
MESSAGE(STATUS "in FindFLTK FLTK_LIBRARIES = ${FLTK_LIBRARIES}")
IF(APPLE)
SET(FLTK_LIBRARIES ${FLTK_PLATFORM_DEPENDENT_LIBS} ${FLTK_LIBRARIES})
ELSE(APPLE)
SET(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${FLTK_PLATFORM_DEPENDENT_LIBS})
ENDIF(APPLE)
# The following deprecated settings are for compatibility with CMake 1.4
SET (HAS_FLTK ${FLTK_FOUND})
SET (FLTK_INCLUDE_PATH ${FLTK_INCLUDE_DIR})
SET (FLTK_FLUID_EXE ${FLTK_FLUID_EXECUTABLE})
SET (FLTK_LIBRARY ${FLTK_LIBRARIES})
ENDIF(FLTK_FOUND)
MESSAGE(STATUS "AT END FLTK_INCLUDE_DIR IS SET TO ${FLTK_INCLUDE_DIR}")
...@@ -34,12 +34,15 @@ IF(OTB_USE_VISU_GUI) ...@@ -34,12 +34,15 @@ IF(OTB_USE_VISU_GUI)
MARK_AS_ADVANCED(OTB_USE_EXTERNAL_FLTK) MARK_AS_ADVANCED(OTB_USE_EXTERNAL_FLTK)
IF(OTB_USE_EXTERNAL_FLTK) IF(OTB_USE_EXTERNAL_FLTK)
FIND_PACKAGE(FLTK) FIND_PACKAGE(FLTK)
IF(NOT FLTK_FOUND) IF(NOT FLTK_FOUND)
MESSAGE(FATAL_ERROR MESSAGE(FATAL_ERROR
"Cannot build OTB project without FLTK. Please set FLTK_DIR or set OTB_USE_EXTERNAL_FLTK OFF to use INTERNAL FLTK.") "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) ENDIF(NOT FLTK_FOUND)
ELSE(OTB_USE_EXTERNAL_FLTK) ELSE(OTB_USE_EXTERNAL_FLTK)
# Same Set as ITK # Same Set as ITK
SET(FLTK_SOURCE_DIR ${OTB_SOURCE_DIR}/Utilities/FLTK) SET(FLTK_SOURCE_DIR ${OTB_SOURCE_DIR}/Utilities/FLTK)
SET(FLTK_BINARY_DIR ${OTB_BINARY_DIR}/Utilities/FLTK) SET(FLTK_BINARY_DIR ${OTB_BINARY_DIR}/Utilities/FLTK)
...@@ -48,11 +51,19 @@ IF(OTB_USE_VISU_GUI) ...@@ -48,11 +51,19 @@ IF(OTB_USE_VISU_GUI)
SET(FLUID_COMMAND fluid) SET(FLUID_COMMAND fluid)
# FLTK CMake needs a variable called JPEG_INCLUDE_DIR # FLTK CMake needs a variable called JPEG_INCLUDE_DIR
SET(JPEG_INCLUDE_DIR ${JPEG_INCLUDE_DIRS}) SET(JPEG_INCLUDE_DIR ${JPEG_INCLUDE_DIRS})
# NEEDED for version 1.1.10
SET(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND})
ENDIF(OTB_USE_EXTERNAL_FLTK) ENDIF(OTB_USE_EXTERNAL_FLTK)
MESSAGE(STATUS "FLTK_LIBRARIES = ${FLTK_LIBRARIES}")
MESSAGE(STATUS "OPENGL_LIBRARIES = ${OPENGL_LIBRARIES}")
SET(OTB_VISU_GUI_LIBRARIES "${FLTK_LIBRARIES};${OPENGL_LIBRARIES}") SET(OTB_VISU_GUI_LIBRARIES "${FLTK_LIBRARIES};${OPENGL_LIBRARIES}")
SET(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND})
MESSAGE(STATUS "FLTK_FLUID_EXECUTABLE = ${FLTK_FLUID_EXECUTABLE}")
SET(OTB_VISU_GUI_LIBRARIES "${FLTK_LIBRARIES};${OPENGL_LIBRARIES};${FLTK_PLATFORM_DEPENDENT_LIBS}") SET(OTB_VISU_GUI_LIBRARIES "${FLTK_LIBRARIES};${OPENGL_LIBRARIES};${FLTK_PLATFORM_DEPENDENT_LIBS}")
IF(APPLE) IF(APPLE)
...@@ -60,7 +71,7 @@ IF(OTB_USE_VISU_GUI) ...@@ -60,7 +71,7 @@ IF(OTB_USE_VISU_GUI)
ENDIF(APPLE) ENDIF(APPLE)
IF(OTB_USE_EXTERNAL_FLTK) IF(OTB_USE_EXTERNAL_FLTK)
MESSAGE(STATUS " Using FLTK external version") MESSAGE(STATUS " Using FLTK external version ${FLTK_EXTERNAL_VERSION}")
MESSAGE(STATUS " FLTK includes : ${FLTK_INCLUDE_DIR}") MESSAGE(STATUS " FLTK includes : ${FLTK_INCLUDE_DIR}")
MESSAGE(STATUS " FLTK libraries: ${OTB_VISU_GUI_LIBRARIES}") MESSAGE(STATUS " FLTK libraries: ${OTB_VISU_GUI_LIBRARIES}")
ELSE(OTB_USE_EXTERNAL_FLTK) ELSE(OTB_USE_EXTERNAL_FLTK)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment