# - Find the native FLTK2 includes and library # The following settings are defined # FLTK2_FLUID_EXECUTABLE, where to find the Fluid tool # FLTK2_WRAP_UI, This enables the FLTK2_WRAP_UI command # FLTK2_INCLUDE_DIR, where to find include files # FLTK2_LIBRARIES, list of fltk2 libraries # FLTK2_FOUND, Don't use FLTK2 if false. # The following settings should not be used in general. # FLTK2_BASE_LIBRARY = the full path to fltk2.lib # FLTK2_GL_LIBRARY = the full path to fltk2_gl.lib # FLTK2_IMAGES_LIBRARY = the full path to fltk2_images.lib #============================================================================= # Copyright 2007-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.) SET (FLTK2_DIR $ENV{FLTK2_DIR} ) # Platform dependent libraries required by FLTK2 IF(WIN32) IF(NOT CYGWIN) IF(BORLAND) SET( FLTK2_PLATFORM_DEPENDENT_LIBS import32 ) ELSE(BORLAND) SET( FLTK2_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 ) ENDIF(BORLAND) ENDIF(NOT CYGWIN) ENDIF(WIN32) IF(UNIX) INCLUDE(${CMAKE_ROOT}/Modules/FindX11.cmake) SET( FLTK2_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm) ENDIF(UNIX) IF(APPLE) SET( FLTK2_PLATFORM_DEPENDENT_LIBS "-framework Carbon -framework Cocoa -framework ApplicationServices -lz") ENDIF(APPLE) # If FLTK2_INCLUDE_DIR is already defined we assigne its value to FLTK2_DIR IF(FLTK2_INCLUDE_DIR) SET(FLTK2_DIR ${FLTK2_INCLUDE_DIR}) ELSE(FLTK2_INCLUDE_DIR) SET(FLTK2_INCLUDE_DIR ${FLTK2_DIR}) ENDIF(FLTK2_INCLUDE_DIR) # If FLTK2 has been built using CMake we try to find everything directly SET(FLTK2_DIR_STRING "directory containing FLTK2Config.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 FLTK2_DIR) # Get the system search path as a list. FILE(TO_CMAKE_PATH "$ENV{PATH}" FLTK2_DIR_SEARCH2) # Construct a set of paths relative to the system search path. SET(FLTK2_DIR_SEARCH "") FOREACH(dir ${FLTK2_DIR_SEARCH2}) SET(FLTK2_DIR_SEARCH ${FLTK2_DIR_SEARCH} "${dir}/../lib/fltk") ENDFOREACH(dir) STRING(REPLACE "//" "/" FLTK2_DIR_SEARCH "${FLTK2_DIR_SEARCH}") # # Look for an installation or build tree. # FIND_PATH(FLTK2_DIR FLTK2Config.cmake # Look for an environment variable FLTK2_DIR. $ENV{FLTK2_DIR} # Look in places relative to the system executable search path. ${FLTK2_DIR_SEARCH} # Look in standard UNIX install locations. /usr/local/lib/fltk2 /usr/lib/fltk2 /usr/local/fltk2 /usr/X11R6/include # Read from the CMakeSetup registry entries. It is likely that # FLTK2 will have been recently built. [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 ${FLTK2_DIR_STRING}" ) IF(NOT FLTK2_DIR) FIND_PATH(FLTK2_DIR fltk/run.h ${FLTK2_INCLUDE_SEARCH_PATH}) ENDIF(NOT FLTK2_DIR) ENDIF(NOT FLTK2_DIR) # If FLTK2 was found, load the configuration file to get the rest of the # settings. IF(FLTK2_DIR) # Check if FLTK2 was built using CMake IF(EXISTS ${FLTK2_DIR}/FLTK2Config.cmake) SET(FLTK2_BUILT_WITH_CMAKE 1) ENDIF(EXISTS ${FLTK2_DIR}/FLTK2Config.cmake) IF(FLTK2_BUILT_WITH_CMAKE) SET(FLTK2_FOUND 1) INCLUDE(${FLTK2_DIR}/FLTK2Config.cmake) # Fluid IF(FLUID_COMMAND) SET(FLTK2_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable") ELSE(FLUID_COMMAND) FIND_PROGRAM(FLTK2_FLUID_EXECUTABLE fluid2 PATHS ${FLTK2_EXECUTABLE_DIRS} ${FLTK2_EXECUTABLE_DIRS}/RelWithDebInfo ${FLTK2_EXECUTABLE_DIRS}/Debug ${FLTK2_EXECUTABLE_DIRS}/Release NO_SYSTEM_PATH) ENDIF(FLUID_COMMAND) MARK_AS_ADVANCED(FLTK2_FLUID_EXECUTABLE) SET( FLTK_FLUID_EXECUTABLE ${FLTK2_FLUID_EXECUTABLE} ) SET(FLTK2_INCLUDE_DIR ${FLTK2_DIR}) LINK_DIRECTORIES(${FLTK2_LIBRARY_DIRS}) SET(FLTK2_BASE_LIBRARY fltk2) SET(FLTK2_GL_LIBRARY fltk2_gl) SET(FLTK2_IMAGES_LIBRARY fltk2_images) # Add the extra libraries LOAD_CACHE(${FLTK2_DIR} READ_WITH_PREFIX FL FLTK2_USE_SYSTEM_JPEG FL FLTK2_USE_SYSTEM_PNG FL FLTK2_USE_SYSTEM_ZLIB ) SET(FLTK2_IMAGES_LIBS "") IF(FLFLTK2_USE_SYSTEM_JPEG) SET(FLTK2_IMAGES_LIBS ${FLTK2_IMAGES_LIBS} fltk2_jpeg) ENDIF(FLFLTK2_USE_SYSTEM_JPEG) IF(FLFLTK2_USE_SYSTEM_PNG) SET(FLTK2_IMAGES_LIBS ${FLTK2_IMAGES_LIBS} fltk2_png) ENDIF(FLFLTK2_USE_SYSTEM_PNG) IF(FLFLTK2_USE_SYSTEM_ZLIB) SET(FLTK2_IMAGES_LIBS ${FLTK2_IMAGES_LIBS} fltk2_zlib) ENDIF(FLFLTK2_USE_SYSTEM_ZLIB) SET(FLTK2_IMAGES_LIBS "${FLTK2_IMAGES_LIBS}" CACHE INTERNAL "Extra libraries for fltk2_images library.") ELSE(FLTK2_BUILT_WITH_CMAKE) # if FLTK2 was not built using CMake # Find fluid executable. FIND_PROGRAM(FLTK2_FLUID_EXECUTABLE fluid2 ${FLTK2_INCLUDE_DIR}/fluid) # Use location of fluid to help find everything else. SET(FLTK2_INCLUDE_SEARCH_PATH "") SET(FLTK2_LIBRARY_SEARCH_PATH "") IF(FLTK2_FLUID_EXECUTABLE) SET( FLTK_FLUID_EXECUTABLE ${FLTK2_FLUID_EXECUTABLE} ) GET_FILENAME_COMPONENT(FLTK2_BIN_DIR "${FLTK2_FLUID_EXECUTABLE}" PATH) SET(FLTK2_INCLUDE_SEARCH_PATH ${FLTK2_INCLUDE_SEARCH_PATH} ${FLTK2_BIN_DIR}/../include ${FLTK2_BIN_DIR}/..) SET(FLTK2_LIBRARY_SEARCH_PATH ${FLTK2_LIBRARY_SEARCH_PATH} ${FLTK2_BIN_DIR}/../lib) SET(FLTK2_WRAP_UI 1) ENDIF(FLTK2_FLUID_EXECUTABLE) SET(FLTK2_INCLUDE_SEARCH_PATH ${FLTK2_INCLUDE_SEARCH_PATH} /usr/local/fltk2 /usr/X11R6/include ) FIND_PATH(FLTK2_INCLUDE_DIR fltk/run.h ${FLTK2_INCLUDE_SEARCH_PATH}) SET(FLTK2_LIBRARY_SEARCH_PATH ${FLTK2_LIBRARY_SEARCH_PATH} /usr/local/fltk2/lib /usr/X11R6/lib ${FLTK2_INCLUDE_DIR}/lib ) FIND_LIBRARY(FLTK2_BASE_LIBRARY NAMES fltk2 PATHS ${FLTK2_LIBRARY_SEARCH_PATH}) FIND_LIBRARY(FLTK2_GL_LIBRARY NAMES fltk2_gl PATHS ${FLTK2_LIBRARY_SEARCH_PATH}) FIND_LIBRARY(FLTK2_IMAGES_LIBRARY NAMES fltk2_images PATHS ${FLTK2_LIBRARY_SEARCH_PATH}) # Find the extra libraries needed for the fltk_images library. IF(UNIX) FIND_PROGRAM(FLTK2_CONFIG_SCRIPT fltk2-config PATHS ${FLTK2_BIN_DIR}) IF(FLTK2_CONFIG_SCRIPT) EXEC_PROGRAM(${FLTK2_CONFIG_SCRIPT} ARGS --use-images --ldflags OUTPUT_VARIABLE FLTK2_IMAGES_LDFLAGS) SET(FLTK2_LIBS_EXTRACT_REGEX ".*-lfltk2_images (.*) -lfltk2.*") IF("${FLTK2_IMAGES_LDFLAGS}" MATCHES "${FLTK2_LIBS_EXTRACT_REGEX}") STRING(REGEX REPLACE "${FLTK2_LIBS_EXTRACT_REGEX}" "\\1" FLTK2_IMAGES_LIBS "${FLTK2_IMAGES_LDFLAGS}") STRING(REGEX REPLACE " +" ";" FLTK2_IMAGES_LIBS "${FLTK2_IMAGES_LIBS}") # The EXEC_PROGRAM will not be inherited into subdirectories from # the file that originally included this module. Save the answer. SET(FLTK2_IMAGES_LIBS "${FLTK2_IMAGES_LIBS}" CACHE INTERNAL "Extra libraries for fltk_images library.") ENDIF("${FLTK2_IMAGES_LDFLAGS}" MATCHES "${FLTK2_LIBS_EXTRACT_REGEX}") ENDIF(FLTK2_CONFIG_SCRIPT) ENDIF(UNIX) ENDIF(FLTK2_BUILT_WITH_CMAKE) ENDIF(FLTK2_DIR) SET(FLTK2_FOUND 1) FOREACH(var FLTK2_FLUID_EXECUTABLE FLTK2_INCLUDE_DIR FLTK2_BASE_LIBRARY FLTK2_GL_LIBRARY FLTK2_IMAGES_LIBRARY) IF(NOT ${var}) MESSAGE( STATUS "${var} not found" ) SET(FLTK2_FOUND 0) ENDIF(NOT ${var}) ENDFOREACH(var) IF(FLTK2_FOUND) SET(FLTK2_LIBRARIES ${FLTK2_IMAGES_LIBRARY} ${FLTK2_IMAGES_LIBS} ${FLTK2_BASE_LIBRARY} ${FLTK2_GL_LIBRARY} ) IF(APPLE) SET(FLTK2_LIBRARIES ${FLTK2_PLATFORM_DEPENDENT_LIBS} ${FLTK2_LIBRARIES}) ELSE(APPLE) SET(FLTK2_LIBRARIES ${FLTK2_LIBRARIES} ${FLTK2_PLATFORM_DEPENDENT_LIBS}) ENDIF(APPLE) # The following deprecated settings are for compatibility with CMake 1.4 SET (HAS_FLTK2 ${FLTK2_FOUND}) SET (FLTK2_INCLUDE_PATH ${FLTK2_INCLUDE_DIR}) SET (FLTK2_FLUID_EXE ${FLTK2_FLUID_EXECUTABLE}) SET (FLTK2_LIBRARY ${FLTK2_LIBRARIES}) ELSE(FLTK2_FOUND) # make FIND_PACKAGE friendly IF(NOT FLTK2_FIND_QUIETLY) IF(FLTK2_FIND_REQUIRED) MESSAGE(FATAL_ERROR "FLTK2 required, please specify its location with FLTK2_DIR.") ELSE(FLTK2_FIND_REQUIRED) MESSAGE(STATUS "FLTK2 was not found.") ENDIF(FLTK2_FIND_REQUIRED) ENDIF(NOT FLTK2_FIND_QUIETLY) ENDIF(FLTK2_FOUND)