FindFLTK.cmake 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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
  13. # Platform dependent libraries required by FLTK
  14. IF(WIN32)
  15. IF(NOT CYGWIN)
  16. IF(BORLAND)
  17. SET( FLTK_PLATFORM_DEPENDENT_LIBS import32 )
  18. ELSE(BORLAND)
  19. SET( FLTK_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 )
  20. ENDIF(BORLAND)
  21. ENDIF(NOT CYGWIN)
  22. ENDIF(WIN32)
  23. IF(UNIX)
  24. INCLUDE(${CMAKE_ROOT}/Modules/FindX11.cmake)
  25. SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm)
  26. ENDIF(UNIX)
  27. IF(APPLE)
  28. SET( FLTK_PLATFORM_DEPENDENT_LIBS "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
  29. ENDIF(APPLE)
  30. IF(CYGWIN)
  31. SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 wsock32 supc++ -lm -lgdi32)
  32. ENDIF(CYGWIN)
  33. # If FLTK_INCLUDE_DIR is already defined we assigne its value to FLTK_DIR
  34. IF(FLTK_INCLUDE_DIR)
  35. SET(FLTK_DIR ${FLTK_INCLUDE_DIR})
  36. ENDIF(FLTK_INCLUDE_DIR)
  37. # If FLTK has been built using CMake we try to find everything directly
  38. SET(FLTK_DIR_STRING "directory containing FLTKConfig.cmake. This is either the root of the build tree, or PREFIX/lib/fltk for an installation.")
  39. # Search only if the location is not already known.
  40. IF(NOT FLTK_DIR)
  41. # Get the system search path as a list.
  42. IF(UNIX)
  43. STRING(REGEX MATCHALL "[^:]+" FLTK_DIR_SEARCH1 "$ENV{PATH}")
  44. ELSE(UNIX)
  45. STRING(REGEX REPLACE "\\\\" "/" FLTK_DIR_SEARCH1 "$ENV{PATH}")
  46. ENDIF(UNIX)
  47. STRING(REGEX REPLACE "/;" ";" FLTK_DIR_SEARCH2 ${FLTK_DIR_SEARCH1})
  48. # Construct a set of paths relative to the system search path.
  49. SET(FLTK_DIR_SEARCH "")
  50. FOREACH(dir ${FLTK_DIR_SEARCH2})
  51. SET(FLTK_DIR_SEARCH ${FLTK_DIR_SEARCH} "${dir}/../lib/fltk")
  52. ENDFOREACH(dir)
  53. #
  54. # Look for an installation or build tree.
  55. #
  56. FIND_PATH(FLTK_DIR FLTKConfig.cmake
  57. # Look for an environment variable FLTK_DIR.
  58. $ENV{FLTK_DIR}
  59. # Look in places relative to the system executable search path.
  60. ${FLTK_DIR_SEARCH}
  61. # Look in standard UNIX install locations.
  62. /usr/local/lib/fltk
  63. /usr/lib/fltk
  64. /usr/local/include
  65. /usr/include
  66. /usr/local/fltk
  67. /usr/X11R6/include
  68. # Read from the CMakeSetup registry entries. It is likely that
  69. # FLTK will have been recently built.
  70. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild1]
  71. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild2]
  72. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild3]
  73. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild4]
  74. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild5]
  75. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild6]
  76. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild7]
  77. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild8]
  78. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild9]
  79. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild10]
  80. # Help the user find it if we cannot.
  81. DOC "The ${FLTK_DIR_STRING}"
  82. )
  83. ENDIF(NOT FLTK_DIR)
  84. # If FLTK was found, load the configuration file to get the rest of the
  85. # settings.
  86. IF(FLTK_DIR)
  87. # Check if FLTK was built using CMake
  88. IF(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
  89. SET(FLTK_BUILT_WITH_CMAKE 1)
  90. ENDIF(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
  91. IF(FLTK_BUILT_WITH_CMAKE)
  92. SET(FLTK_FOUND 1)
  93. INCLUDE(${FLTK_DIR}/FLTKConfig.cmake)
  94. # Fluid
  95. IF(FLUID_COMMAND)
  96. SET(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable")
  97. ELSE(FLUID_COMMAND)
  98. FIND_PROGRAM(FLTK_FLUID_EXECUTABLE fluid PATHS
  99. ${FLTK_EXECUTABLE_DIRS}
  100. ${FLTK_EXECUTABLE_DIRS}/RelWithDebInfo
  101. ${FLTK_EXECUTABLE_DIRS}/Debug
  102. ${FLTK_EXECUTABLE_DIRS}/Release
  103. NO_SYSTEM_PATH)
  104. ENDIF(FLUID_COMMAND)
  105. # MARK_AS_ADVANCED(FLTK_FLUID_EXECUTABLE)
  106. SET(FLTK_INCLUDE_DIR ${FLTK_DIR})
  107. LINK_DIRECTORIES(${FLTK_LIBRARY_DIRS})
  108. SET(FLTK_BASE_LIBRARY fltk)
  109. SET(FLTK_GL_LIBRARY fltk_gl)
  110. SET(FLTK_FORMS_LIBRARY fltk_forms)
  111. SET(FLTK_IMAGES_LIBRARY fltk_images)
  112. # Add the extra libraries
  113. LOAD_CACHE(${FLTK_DIR}
  114. READ_WITH_PREFIX
  115. FL FLTK_USE_SYSTEM_JPEG
  116. FL FLTK_USE_SYSTEM_PNG
  117. FL FLTK_USE_SYSTEM_ZLIB
  118. )
  119. SET(FLTK_IMAGES_LIBS "")
  120. IF(FLFLTK_USE_SYSTEM_JPEG)
  121. SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_jpeg)
  122. ENDIF(FLFLTK_USE_SYSTEM_JPEG)
  123. IF(FLFLTK_USE_SYSTEM_PNG)
  124. SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_png)
  125. ENDIF(FLFLTK_USE_SYSTEM_PNG)
  126. IF(FLFLTK_USE_SYSTEM_ZLIB)
  127. SET(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_zlib)
  128. ENDIF(FLFLTK_USE_SYSTEM_ZLIB)
  129. SET(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
  130. "Extra libraries for fltk_images library.")
  131. ELSE(FLTK_BUILT_WITH_CMAKE)
  132. # if FLTK was not built using CMake
  133. # Find fluid executable.
  134. FIND_PROGRAM(FLTK_FLUID_EXECUTABLE fluid ${FLTK_INCLUDE_DIR}/fluid)
  135. # Use location of fluid to help find everything else.
  136. SET(FLTK_INCLUDE_SEARCH_PATH "")
  137. SET(FLTK_LIBRARY_SEARCH_PATH "")
  138. IF(FLTK_FLUID_EXECUTABLE)
  139. GET_FILENAME_COMPONENT(FLTK_BIN_DIR "${FLTK_FLUID_EXECUTABLE}" PATH)
  140. SET(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
  141. ${FLTK_BIN_DIR}/../include ${FLTK_BIN_DIR}/..)
  142. SET(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
  143. ${FLTK_BIN_DIR}/../lib)
  144. SET(FLTK_WRAP_UI 1)
  145. ENDIF(FLTK_FLUID_EXECUTABLE)
  146. SET(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
  147. /usr/local/include
  148. /usr/include
  149. /usr/local/fltk
  150. /usr/X11R6/include
  151. )
  152. FIND_PATH(FLTK_INCLUDE_DIR FL/Fl.h ${FLTK_INCLUDE_SEARCH_PATH})
  153. SET(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
  154. /usr/lib
  155. /usr/local/lib
  156. /usr/local/fltk/lib
  157. /usr/X11R6/lib
  158. ${FLTK_INCLUDE_DIR}/lib
  159. )
  160. FIND_LIBRARY(FLTK_BASE_LIBRARY NAMES fltk fltkd
  161. PATHS ${FLTK_LIBRARY_SEARCH_PATH})
  162. FIND_LIBRARY(FLTK_GL_LIBRARY NAMES fltkgl fltkgld fltk_gl
  163. PATHS ${FLTK_LIBRARY_SEARCH_PATH})
  164. FIND_LIBRARY(FLTK_FORMS_LIBRARY NAMES fltkforms fltkformsd fltk_forms
  165. PATHS ${FLTK_LIBRARY_SEARCH_PATH})
  166. FIND_LIBRARY(FLTK_IMAGES_LIBRARY NAMES fltkimages fltkimagesd fltk_images
  167. PATHS ${FLTK_LIBRARY_SEARCH_PATH})
  168. # Find the extra libraries needed for the fltk_images library.
  169. IF(UNIX)
  170. FIND_PROGRAM(FLTK_CONFIG_SCRIPT fltk-config PATHS ${FLTK_BIN_DIR})
  171. IF(FLTK_CONFIG_SCRIPT)
  172. EXEC_PROGRAM(${FLTK_CONFIG_SCRIPT} ARGS --use-images --ldflags
  173. OUTPUT_VARIABLE FLTK_IMAGES_LDFLAGS)
  174. SET(FLTK_LIBS_EXTRACT_REGEX ".*-lfltk_images (.*) -lfltk.*")
  175. IF("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
  176. STRING(REGEX REPLACE "${FLTK_LIBS_EXTRACT_REGEX}" "\\1"
  177. FLTK_IMAGES_LIBS "${FLTK_IMAGES_LDFLAGS}")
  178. STRING(REGEX REPLACE " +" ";" FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}")
  179. # The EXEC_PROGRAM will not be inherited into subdirectories from
  180. # the file that originally included this module. Save the answer.
  181. SET(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
  182. "Extra libraries for fltk_images library.")
  183. ENDIF("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
  184. ENDIF(FLTK_CONFIG_SCRIPT)
  185. ENDIF(UNIX)
  186. ENDIF(FLTK_BUILT_WITH_CMAKE)
  187. ENDIF(FLTK_DIR)
  188. SET(FLTK_FOUND 1)
  189. FOREACH(var FLTK_FLUID_EXECUTABLE FLTK_INCLUDE_DIR
  190. FLTK_BASE_LIBRARY FLTK_GL_LIBRARY
  191. FLTK_FORMS_LIBRARY FLTK_IMAGES_LIBRARY)
  192. IF(NOT ${var})
  193. SET(FLTK_FOUND 0)
  194. ENDIF(NOT ${var})
  195. ENDFOREACH(var)
  196. IF(FLTK_FOUND)
  197. SET(FLTK_LIBRARIES ${FLTK_IMAGES_LIBRARY} ${FLTK_IMAGES_LIBS} ${FLTK_BASE_LIBRARY} ${FLTK_GL_LIBRARY}
  198. ${FLTK_FORMS_LIBRARY} )
  199. IF(APPLE)
  200. SET(FLTK_LIBRARIES ${FLTK_PLATFORM_DEPENDENT_LIBS} ${FLTK_LIBRARIES})
  201. ELSE(APPLE)
  202. SET(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${FLTK_PLATFORM_DEPENDENT_LIBS})
  203. ENDIF(APPLE)
  204. # The following deprecated settings are for compatibility with CMake 1.4
  205. SET (HAS_FLTK ${FLTK_FOUND})
  206. SET (FLTK_INCLUDE_PATH ${FLTK_INCLUDE_DIR})
  207. SET (FLTK_FLUID_EXE ${FLTK_FLUID_EXECUTABLE})
  208. SET (FLTK_LIBRARY ${FLTK_LIBRARIES})
  209. ENDIF(FLTK_FOUND)