diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2007-10-12 15:34:07 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2007-10-12 15:34:07 (GMT) |
commit | b2ac4754a6444882efb40bdd91de613ba874d2ba (patch) | |
tree | a3fb810a2a563c8f42363df50a857662f1bc55c8 | |
parent | e808f81f90313a5d1548180b0b10432d8346d95e (diff) | |
download | CMake-b2ac4754a6444882efb40bdd91de613ba874d2ba.zip CMake-b2ac4754a6444882efb40bdd91de613ba874d2ba.tar.gz CMake-b2ac4754a6444882efb40bdd91de613ba874d2ba.tar.bz2 |
ENH: add from bug 0004219
-rw-r--r-- | Modules/FindFLTK2.cmake | 268 |
1 files changed, 268 insertions, 0 deletions
diff --git a/Modules/FindFLTK2.cmake b/Modules/FindFLTK2.cmake new file mode 100644 index 0000000..a434758 --- /dev/null +++ b/Modules/FindFLTK2.cmake @@ -0,0 +1,268 @@ +# - 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 + +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(CYGWIN) + SET( FLTK2_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 wsock32 supc++ -lm -lgdi32) +ENDIF(CYGWIN) + +# 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. + IF(UNIX) + STRING(REGEX MATCHALL "[^:]+" FLTK2_DIR_SEARCH1 "$ENV{PATH}") + ELSE(UNIX) + STRING(REGEX REPLACE "\\\\" "/" FLTK2_DIR_SEARCH1 "$ENV{PATH}") + ENDIF(UNIX) + STRING(REGEX REPLACE "/;" ";" FLTK2_DIR_SEARCH2 ${FLTK2_DIR_SEARCH1}) + + # 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) + + # + # 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/include + /usr/include + /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/include + /usr/include + /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/lib + /usr/local/lib + /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) + |