FindTCL.cmake 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. # - Find Tcl includes and libraries.
  2. # This module finds if TCL is installed and determines where the
  3. # include files and libraries are. It also determines what the name of
  4. # the library is. This code sets the following variables:
  5. # TCL_FOUND = Tcl was found
  6. # TK_FOUND = Tk was found
  7. # TCLTK_FOUND = Tcl and Tk were found
  8. # TCL_LIBRARY = path to Tcl library (tcl tcl80)
  9. # TCL_LIBRARY_DEBUG = path to Tcl library (debug)
  10. # TCL_STUB_LIBRARY = path to Tcl stub library
  11. # TCL_STUB_LIBRARY_DEBUG = path to debug stub library
  12. # TCL_INCLUDE_PATH = path to where tcl.h can be found
  13. # TCL_TCLSH = path to tclsh binary (tcl tcl80)
  14. # TK_LIBRARY = path to Tk library (tk tk80 etc)
  15. # TK_LIBRARY_DEBUG = path to Tk library (debug)
  16. # TK_STUB_LIBRARY = path to Tk stub library
  17. # TK_STUB_LIBRARY_DEBUG = path to debug Tk stub library
  18. # TK_INCLUDE_PATH = path to where tk.h can be found
  19. # TK_INTERNAL_PATH = path to where tkWinInt.h is found
  20. # TK_WISH = full path to the wish executable
  21. INCLUDE(CMakeFindFrameworks)
  22. INCLUDE(FindTclsh)
  23. INCLUDE(FindWish)
  24. GET_FILENAME_COMPONENT(TCL_TCLSH_PATH "${TCL_TCLSH}" PATH)
  25. GET_FILENAME_COMPONENT(TCL_TCLSH_PATH_PARENT "${TCL_TCLSH_PATH}" PATH)
  26. GET_FILENAME_COMPONENT(TK_WISH_PATH "${TK_WISH}" PATH)
  27. GET_FILENAME_COMPONENT(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
  28. GET_FILENAME_COMPONENT(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
  29. GET_FILENAME_COMPONENT(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
  30. GET_FILENAME_COMPONENT(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
  31. GET_FILENAME_COMPONENT(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
  32. GET_FILENAME_COMPONENT(
  33. ActiveTcl_CurrentVersion
  34. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
  35. NAME)
  36. SET (TCLTK_POSSIBLE_LIB_PATHS
  37. "${TCL_TCLSH_PATH_PARENT}/lib"
  38. "${TK_WISH_PATH_PARENT}/lib"
  39. "${TCL_INCLUDE_PATH_PARENT}/lib"
  40. "${TK_INCLUDE_PATH_PARENT}/lib"
  41. "$ENV{ProgramFiles}/Tcl/Lib"
  42. "C:/Program Files/Tcl/lib"
  43. "C:/Tcl/lib"
  44. [HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/lib
  45. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/lib
  46. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/lib
  47. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/lib
  48. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/lib
  49. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/lib
  50. /usr/lib
  51. /usr/local/lib
  52. )
  53. FIND_LIBRARY(TCL_LIBRARY
  54. NAMES tcl
  55. tcl85 tcl8.5
  56. tcl84 tcl8.4
  57. tcl83 tcl8.3
  58. tcl82 tcl8.2
  59. tcl80 tcl8.0
  60. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  61. )
  62. FIND_LIBRARY(TCL_LIBRARY_DEBUG
  63. NAMES tcld
  64. tcl85d tcl8.5d
  65. tcl85g tcl8.5g
  66. tcl84d tcl8.4d
  67. tcl84g tcl8.4g
  68. tcl83d tcl8.3d
  69. tcl82d tcl8.2d
  70. tcl80d tcl8.0d
  71. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  72. )
  73. FIND_LIBRARY(TCL_STUB_LIBRARY
  74. NAMES tclstub
  75. tclstub85 tclstub8.5
  76. tclstub84 tclstub8.4
  77. tclstub83 tclstub8.3
  78. tclstub82 tclstub8.2
  79. tclstub80 tclstub8.0
  80. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  81. )
  82. FIND_LIBRARY(TCL_STUB_LIBRARY_DEBUG
  83. NAMES tclstubd
  84. tclstub85d tclstub8.5d
  85. tclstub85g tclstub8.5g
  86. tclstub84d tclstub8.4d
  87. tclstub84g tclstub8.4g
  88. tclstub83d tclstub8.3d
  89. tclstub82d tclstub8.2d
  90. tclstub80d tclstub8.0d
  91. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  92. )
  93. FIND_LIBRARY(TK_LIBRARY
  94. NAMES tk
  95. tk85 tk8.5
  96. tk84 tk8.4
  97. tk83 tk8.3
  98. tk82 tk8.2
  99. tk80 tk8.0
  100. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  101. )
  102. FIND_LIBRARY(TK_LIBRARY_DEBUG
  103. NAMES tkd
  104. tk85d tk8.5d
  105. tk85g tk8.5g
  106. tk84d tk8.4d
  107. tk84g tk8.4g
  108. tk83d tk8.3d
  109. tk82d tk8.2d
  110. tk80d tk8.0d
  111. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  112. )
  113. FIND_LIBRARY(TK_STUB_LIBRARY
  114. NAMES tkstub
  115. tkstub85 tkstub8.5
  116. tkstub84 tkstub8.4
  117. tkstub83 tkstub8.3
  118. tkstub82 tkstub8.2
  119. tkstub80 tkstub8.0
  120. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  121. )
  122. FIND_LIBRARY(TK_STUB_LIBRARY_DEBUG
  123. NAMES tkstubd
  124. tkstub85d tkstub8.5d
  125. tkstub85g tkstub8.5g
  126. tkstub84d tkstub8.4d
  127. tkstub84g tkstub8.4g
  128. tkstub83d tkstub8.3d
  129. tkstub82d tkstub8.2d
  130. tkstub80d tkstub8.0d
  131. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  132. )
  133. CMAKE_FIND_FRAMEWORKS(Tcl)
  134. CMAKE_FIND_FRAMEWORKS(Tk)
  135. SET(TCL_FRAMEWORK_INCLUDES)
  136. IF(Tcl_FRAMEWORKS)
  137. IF(NOT TCL_INCLUDE_PATH)
  138. FOREACH(dir ${Tcl_FRAMEWORKS})
  139. SET(TCL_FRAMEWORK_INCLUDES ${TCL_FRAMEWORK_INCLUDES} ${dir}/Headers)
  140. ENDFOREACH(dir)
  141. ENDIF(NOT TCL_INCLUDE_PATH)
  142. ENDIF(Tcl_FRAMEWORKS)
  143. SET(TK_FRAMEWORK_INCLUDES)
  144. IF(Tk_FRAMEWORKS)
  145. IF(NOT TK_INCLUDE_PATH)
  146. FOREACH(dir ${Tk_FRAMEWORKS})
  147. SET(TK_FRAMEWORK_INCLUDES ${TK_FRAMEWORK_INCLUDES}
  148. ${dir}/Headers ${dir}/PrivateHeaders)
  149. ENDFOREACH(dir)
  150. ENDIF(NOT TK_INCLUDE_PATH)
  151. ENDIF(Tk_FRAMEWORKS)
  152. GET_FILENAME_COMPONENT(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
  153. GET_FILENAME_COMPONENT(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
  154. SET (TCLTK_POSSIBLE_INCLUDE_PATHS
  155. ${TCL_TCLSH_PATH_PARENT}/include
  156. ${TK_WISH_PATH_PARENT}/include
  157. "${TCL_LIBRARY_PATH_PARENT}/include"
  158. "${TK_LIBRARY_PATH_PARENT}/include"
  159. [HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/include
  160. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/include
  161. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/include
  162. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/include
  163. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/include
  164. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/include
  165. "$ENV{ProgramFiles}/Tcl/include"
  166. "C:/Program Files/Tcl/include"
  167. C:/Tcl/include
  168. /usr/include
  169. /usr/local/include
  170. /usr/include/tcl8.5
  171. /usr/include/tcl8.4
  172. /usr/include/tcl8.3
  173. /usr/include/tcl8.2
  174. /usr/include/tcl8.0
  175. )
  176. FIND_PATH(TCL_INCLUDE_PATH tcl.h
  177. ${TCL_FRAMEWORK_INCLUDES} ${TCLTK_POSSIBLE_INCLUDE_PATHS}
  178. )
  179. FIND_PATH(TK_INCLUDE_PATH tk.h
  180. ${TK_FRAMEWORK_INCLUDES} ${TCLTK_POSSIBLE_INCLUDE_PATHS}
  181. )
  182. IF (WIN32)
  183. FIND_PATH(TK_INTERNAL_PATH tkWinInt.h
  184. ${TCLTK_POSSIBLE_INCLUDE_PATHS}
  185. )
  186. MARK_AS_ADVANCED(TK_INTERNAL_PATH)
  187. ENDIF(WIN32)
  188. # handle the QUIETLY and REQUIRED arguments and set TIFF_FOUND to TRUE if
  189. # all listed variables are TRUE
  190. INCLUDE(FindPackageHandleStandardArgs)
  191. FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCL DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH)
  192. SET(TCLTK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
  193. SET(TCLTK_FIND_QUIETLY ${TCL_FIND_QUIETLY})
  194. FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCLTK DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH TK_LIBRARY TK_INCLUDE_PATH)
  195. SET(TK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
  196. SET(TK_FIND_QUIETLY ${TCL_FIND_QUIETLY})
  197. FIND_PACKAGE_HANDLE_STANDARD_ARGS(TK DEFAULT_MSG TK_LIBRARY TK_INCLUDE_PATH)
  198. MARK_AS_ADVANCED(
  199. TCL_TCLSH_PATH
  200. TK_WISH_PATH
  201. TCL_INCLUDE_PATH
  202. TK_INCLUDE_PATH
  203. TCL_LIBRARY
  204. TCL_LIBRARY_DEBUG
  205. TK_LIBRARY
  206. TK_LIBRARY_DEBUG
  207. TCL_STUB_LIBRARY
  208. TCL_STUB_LIBRARY_DEBUG
  209. TK_STUB_LIBRARY
  210. TK_STUB_LIBRARY
  211. TK_STUB_LIBRARY_DEBUG
  212. )