1 # - Find the native FLTK includes and library
2 # The following settings are defined
3 # FLTK_FLUID_EXECUTABLE, where to find the Fluid tool
4 # FLTK_WRAP_UI, This enables the FLTK_WRAP_UI command
5 # FLTK_INCLUDE_DIR, where to find include files
6 # FLTK_LIBRARIES, list of fltk libraries
7 # FLTK_FOUND, Don't use FLTK if false.
8 # The following settings should not be used in general.
9 # FLTK_BASE_LIBRARY = the full path to fltk.lib
10 # FLTK_GL_LIBRARY = the full path to fltk_gl.lib
11 # FLTK_FORMS_LIBRARY = the full path to fltk_forms.lib
12 # FLTK_IMAGES_LIBRARY = the full path to fltk_images.lib
14 # Platform dependent libraries required by FLTK
18 SET( FLTK_PLATFORM_DEPENDENT_LIBS import32 )
20 SET( FLTK_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 )
26 INCLUDE(${CMAKE_ROOT}/Modules/FindX11.cmake)
27 SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm)
31 SET( FLTK_PLATFORM_DEPENDENT_LIBS "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
35 SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 wsock32 supc++ -lm -lgdi32)
38 # If FLTK_INCLUDE_DIR is already defined we assigne its value to FLTK_DIR
40 SET(FLTK_DIR ${FLTK_INCLUDE_DIR})
41 ENDIF(FLTK_INCLUDE_DIR)
44 # If FLTK has been built using CMake we try to find everything directly
45 SET(FLTK_DIR_STRING "directory containing FLTKConfig.cmake. This is either the root of the build tree, or PREFIX/lib/fltk for an installation.")
47 # Search only if the location is not already known.
49 # Get the system search path as a list.
51 STRING(REGEX MATCHALL "[^:]+" FLTK_DIR_SEARCH1 "$ENV{PATH}")
53 STRING(REGEX REPLACE "\\\\" "/" FLTK_DIR_SEARCH1 "$ENV{PATH}")
55 STRING(REGEX REPLACE "/;" ";" FLTK_DIR_SEARCH2 ${FLTK_DIR_SEARCH1})
57 # Construct a set of paths relative to the system search path.
58 SET(FLTK_DIR_SEARCH "")
59 FOREACH(dir ${FLTK_DIR_SEARCH2})
60 SET(FLTK_DIR_SEARCH ${FLTK_DIR_SEARCH} "${dir}/../lib/fltk")
64 # Look for an installation or build tree.
66 FIND_PATH(FLTK_DIR FLTKConfig.cmake
67 # Look for an environment variable FLTK_DIR.
70 # Look in places relative to the system executable search path.
73 # Look in standard UNIX install locations.
81 # Read from the CMakeSetup registry entries. It is likely that
82 # FLTK will have been recently built.
83 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild1]
84 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild2]
85 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild3]
86 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild4]
87 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild5]
88 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild6]
89 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild7]
90 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild8]
91 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild9]
92 [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild10]
94 # Help the user find it if we cannot.
95 DOC "The ${FLTK_DIR_STRING}"
99 # If FLTK was found, load the configuration file to get the rest of the
103 # Check if FLTK was built using CMake
104 IF(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
105 SET(FLTK_BUILT_WITH_CMAKE 1)
106 ENDIF(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
108 IF(FLTK_BUILT_WITH_CMAKE)
110 INCLUDE(${FLTK_DIR}/FLTKConfig.cmake)
114 SET(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable")
116 FIND_PROGRAM(FLTK_FLUID_EXECUTABLE fluid PATHS
117 ${FLTK_EXECUTABLE_DIRS}
118 ${FLTK_EXECUTABLE_DIRS}/RelWithDebInfo
119 ${FLTK_EXECUTABLE_DIRS}/Debug
120 ${FLTK_EXECUTABLE_DIRS}/Release
123 # MARK_AS_ADVANCED(FLTK_FLUID_EXECUTABLE)
125 SET(FLTK_INCLUDE_DIR ${FLTK_DIR})
126 LINK_DIRECTORIES(${FLTK_LIBRARY_DIRS})
128 SET(FLTK_BASE_LIBRARY fltk)
129 SET(FLTK_GL_LIBRARY fltk_gl)
130 SET(FLTK_FORMS_LIBRARY fltk_forms)
131 SET(FLTK_IMAGES_LIBRARY fltk_images)
133 # Add the extra libraries
134 LOAD_CACHE(${FLTK_DIR}
136 FL FLTK_USE_SYSTEM_JPEG
137 FL FLTK_USE_SYSTEM_PNG
138 FL FLTK_USE_SYSTEM_ZLIB
141 SET(FLTK_IMAGES_LIBS "")
142 IF(FLFLTK_USE_SYSTEM_JPEG)
143 SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_jpeg)
144 ENDIF(FLFLTK_USE_SYSTEM_JPEG)
145 IF(FLFLTK_USE_SYSTEM_PNG)
146 SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_png)
147 ENDIF(FLFLTK_USE_SYSTEM_PNG)
148 IF(FLFLTK_USE_SYSTEM_ZLIB)
149 SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_zlib)
150 ENDIF(FLFLTK_USE_SYSTEM_ZLIB)
151 SET(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
152 "Extra libraries for fltk_images library.")
154 ELSE(FLTK_BUILT_WITH_CMAKE)
156 # if FLTK was not built using CMake
157 # Find fluid executable.
158 FIND_PROGRAM(FLTK_FLUID_EXECUTABLE fluid ${FLTK_INCLUDE_DIR}/fluid)
160 # Use location of fluid to help find everything else.
161 SET(FLTK_INCLUDE_SEARCH_PATH "")
162 SET(FLTK_LIBRARY_SEARCH_PATH "")
163 IF(FLTK_FLUID_EXECUTABLE)
164 GET_FILENAME_COMPONENT(FLTK_BIN_DIR "${FLTK_FLUID_EXECUTABLE}" PATH)
165 SET(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
166 ${FLTK_BIN_DIR}/../include ${FLTK_BIN_DIR}/..)
167 SET(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
168 ${FLTK_BIN_DIR}/../lib)
170 ENDIF(FLTK_FLUID_EXECUTABLE)
172 SET(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
179 FIND_PATH(FLTK_INCLUDE_DIR FL/Fl.h ${FLTK_INCLUDE_SEARCH_PATH})
181 SET(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
186 ${FLTK_INCLUDE_DIR}/lib
189 FIND_LIBRARY(FLTK_BASE_LIBRARY NAMES fltk fltkd
190 PATHS ${FLTK_LIBRARY_SEARCH_PATH})
191 FIND_LIBRARY(FLTK_GL_LIBRARY NAMES fltkgl fltkgld fltk_gl
192 PATHS ${FLTK_LIBRARY_SEARCH_PATH})
193 FIND_LIBRARY(FLTK_FORMS_LIBRARY NAMES fltkforms fltkformsd fltk_forms
194 PATHS ${FLTK_LIBRARY_SEARCH_PATH})
195 FIND_LIBRARY(FLTK_IMAGES_LIBRARY NAMES fltkimages fltkimagesd fltk_images
196 PATHS ${FLTK_LIBRARY_SEARCH_PATH})
198 # Find the extra libraries needed for the fltk_images library.
200 FIND_PROGRAM(FLTK_CONFIG_SCRIPT fltk-config PATHS ${FLTK_BIN_DIR})
201 IF(FLTK_CONFIG_SCRIPT)
202 EXEC_PROGRAM(${FLTK_CONFIG_SCRIPT} ARGS --use-images --ldflags
203 OUTPUT_VARIABLE FLTK_IMAGES_LDFLAGS)
204 SET(FLTK_LIBS_EXTRACT_REGEX ".*-lfltk_images (.*) -lfltk.*")
205 IF("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
206 STRING(REGEX REPLACE "${FLTK_LIBS_EXTRACT_REGEX}" "\\1"
207 FLTK_IMAGES_LIBS "${FLTK_IMAGES_LDFLAGS}")
208 STRING(REGEX REPLACE " +" ";" FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}")
209 # The EXEC_PROGRAM will not be inherited into subdirectories from
210 # the file that originally included this module. Save the answer.
211 SET(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
212 "Extra libraries for fltk_images library.")
213 ENDIF("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
214 ENDIF(FLTK_CONFIG_SCRIPT)
217 ENDIF(FLTK_BUILT_WITH_CMAKE)
222 FOREACH(var FLTK_FLUID_EXECUTABLE FLTK_INCLUDE_DIR
223 FLTK_BASE_LIBRARY FLTK_GL_LIBRARY
224 FLTK_FORMS_LIBRARY FLTK_IMAGES_LIBRARY)
231 SET(FLTK_LIBRARIES ${FLTK_IMAGES_LIBRARY} ${FLTK_IMAGES_LIBS} ${FLTK_BASE_LIBRARY} ${FLTK_GL_LIBRARY}
232 ${FLTK_FORMS_LIBRARY} )
234 SET(FLTK_LIBRARIES ${FLTK_PLATFORM_DEPENDENT_LIBS} ${FLTK_LIBRARIES})
236 SET(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${FLTK_PLATFORM_DEPENDENT_LIBS})
239 # The following deprecated settings are for compatibility with CMake 1.4
240 SET (HAS_FLTK ${FLTK_FOUND})
241 SET (FLTK_INCLUDE_PATH ${FLTK_INCLUDE_DIR})
242 SET (FLTK_FLUID_EXE ${FLTK_FLUID_EXECUTABLE})
243 SET (FLTK_LIBRARY ${FLTK_LIBRARIES})