Initial commit.
[CMakeLuaTailorHgBridge.git] / CMakeLua / Modules / FindFLTK.cmake
blobd16cf737ff84757d0ecb2584b5891a4d38eb155f
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
15 IF(WIN32)
16   IF(NOT CYGWIN)
17     IF(BORLAND)
18       SET( FLTK_PLATFORM_DEPENDENT_LIBS import32 )
19     ELSE(BORLAND)
20       SET( FLTK_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 )
21     ENDIF(BORLAND)
22   ENDIF(NOT CYGWIN)
23 ENDIF(WIN32)
25 IF(UNIX)
26   INCLUDE(${CMAKE_ROOT}/Modules/FindX11.cmake)
27   SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm)
28 ENDIF(UNIX)
30 IF(APPLE)
31   SET( FLTK_PLATFORM_DEPENDENT_LIBS  "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
32 ENDIF(APPLE)
34 IF(CYGWIN)
35   SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 wsock32 supc++ -lm -lgdi32)
36 ENDIF(CYGWIN)
38 # If FLTK_INCLUDE_DIR is already defined we assigne its value to FLTK_DIR
39 IF(FLTK_INCLUDE_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.
48 IF(NOT FLTK_DIR)
49   # Get the system search path as a list.
50   IF(UNIX)
51     STRING(REGEX MATCHALL "[^:]+" FLTK_DIR_SEARCH1 "$ENV{PATH}")
52   ELSE(UNIX)
53     STRING(REGEX REPLACE "\\\\" "/" FLTK_DIR_SEARCH1 "$ENV{PATH}")
54   ENDIF(UNIX)
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")
61   ENDFOREACH(dir)
63   #
64   # Look for an installation or build tree.
65   #
66   FIND_PATH(FLTK_DIR FLTKConfig.cmake
67     # Look for an environment variable FLTK_DIR.
68     $ENV{FLTK_DIR}
70     # Look in places relative to the system executable search path.
71     ${FLTK_DIR_SEARCH}
73     # Look in standard UNIX install locations.
74     /usr/local/lib/fltk
75     /usr/lib/fltk
76     /usr/local/include
77     /usr/include
78     /usr/local/fltk
79     /usr/X11R6/include
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}"
96     )
97 ENDIF(NOT FLTK_DIR)
99 # If FLTK was found, load the configuration file to get the rest of the
100 # settings.
101 IF(FLTK_DIR)
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)
109     SET(FLTK_FOUND 1)
110     INCLUDE(${FLTK_DIR}/FLTKConfig.cmake)
112     # Fluid
113     IF(FLUID_COMMAND) 
114       SET(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable")
115     ELSE(FLUID_COMMAND) 
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
121         NO_SYSTEM_PATH)
122     ENDIF(FLUID_COMMAND)
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}
135       READ_WITH_PREFIX
136       FL FLTK_USE_SYSTEM_JPEG
137       FL FLTK_USE_SYSTEM_PNG
138       FL FLTK_USE_SYSTEM_ZLIB
139       )
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)
169       SET(FLTK_WRAP_UI 1)
170     ENDIF(FLTK_FLUID_EXECUTABLE)
172     SET(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
173       /usr/local/include
174       /usr/include
175       /usr/local/fltk
176       /usr/X11R6/include
177       )
179     FIND_PATH(FLTK_INCLUDE_DIR FL/Fl.h ${FLTK_INCLUDE_SEARCH_PATH})
181     SET(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
182       /usr/lib
183       /usr/local/lib
184       /usr/local/fltk/lib
185       /usr/X11R6/lib
186       ${FLTK_INCLUDE_DIR}/lib
187       )
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.
199     IF(UNIX)
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)
215     ENDIF(UNIX)
217   ENDIF(FLTK_BUILT_WITH_CMAKE)
218 ENDIF(FLTK_DIR)
221 SET(FLTK_FOUND 1)
222 FOREACH(var FLTK_FLUID_EXECUTABLE FLTK_INCLUDE_DIR
223     FLTK_BASE_LIBRARY FLTK_GL_LIBRARY
224     FLTK_FORMS_LIBRARY FLTK_IMAGES_LIBRARY)
225   IF(NOT ${var})
226     SET(FLTK_FOUND 0)
227   ENDIF(NOT ${var})
228 ENDFOREACH(var)
230 IF(FLTK_FOUND)
231   SET(FLTK_LIBRARIES ${FLTK_IMAGES_LIBRARY} ${FLTK_IMAGES_LIBS} ${FLTK_BASE_LIBRARY} ${FLTK_GL_LIBRARY}
232     ${FLTK_FORMS_LIBRARY} )
233   IF(APPLE)
234     SET(FLTK_LIBRARIES ${FLTK_PLATFORM_DEPENDENT_LIBS} ${FLTK_LIBRARIES})
235   ELSE(APPLE)
236     SET(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${FLTK_PLATFORM_DEPENDENT_LIBS})
237   ENDIF(APPLE)
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})
244 ENDIF(FLTK_FOUND)