FindTCL.cmake 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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(TK_WISH_PATH "${TK_WISH}" PATH)
  26. SET (TCLTK_POSSIBLE_LIB_PATHS
  27. "${TCL_TCLSH_PATH}/../lib"
  28. "${TK_WISH_PATH}/../lib"
  29. "${TCL_INCLUDE_PATH}/../lib"
  30. "${TK_INCLUDE_PATH}/../lib"
  31. "$ENV{ProgramFiles}/Tcl/Lib"
  32. "C:/Program Files/Tcl/lib"
  33. "C:/Tcl/lib"
  34. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/lib
  35. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/lib
  36. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/lib
  37. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/lib
  38. /usr/lib
  39. /usr/local/lib
  40. )
  41. FIND_LIBRARY(TCL_LIBRARY
  42. NAMES tcl tcl84 tcl8.4 tcl83 tcl8.3 tcl82 tcl8.2 tcl80 tcl8.0
  43. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  44. )
  45. FIND_LIBRARY(TCL_LIBRARY_DEBUG
  46. NAMES tcld tcl84d tcl8.4d tcl83d tcl8.3d tcl82d tcl8.2d tcl80d tcl8.0d
  47. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  48. )
  49. FIND_LIBRARY(TCL_STUB_LIBRARY
  50. NAMES tclstub tclstub84 tclstub8.4 tclstub83 tclstub8.3 tclstub82 tclstub8.2 tclstub80 tclstub8.0
  51. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  52. )
  53. FIND_LIBRARY(TCL_STUB_LIBRARY_DEBUG
  54. NAMES tclstubd tclstub84d tclstub8.4d tclstub83d tclstub8.3d tclstub82d tclstub8.2d tclstub80d tclstub8.0d
  55. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  56. )
  57. FIND_LIBRARY(TK_LIBRARY
  58. NAMES tk tk84 tk8.4 tk83 tk8.3 tk82 tk8.2 tk80 tk8.0
  59. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  60. )
  61. FIND_LIBRARY(TK_LIBRARY_DEBUG
  62. NAMES tkd tk84d tk8.4d tk83d tk8.3d tk82d tk8.2d tk80d tk8.0d
  63. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  64. )
  65. FIND_LIBRARY(TK_STUB_LIBRARY
  66. NAMES tkstub tkstub84 tkstub8.4 tkstub83 tkstub8.3 tkstub82 tkstub8.2 tkstub80 tkstub8.0
  67. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  68. )
  69. FIND_LIBRARY(TK_STUB_LIBRARY_DEBUG
  70. NAMES tkstubd tkstub84d tkstub8.4d tkstub83d tkstub8.3d tkstub82d tkstub8.2d tkstub80d tkstub8.0d
  71. PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
  72. )
  73. CMAKE_FIND_FRAMEWORKS(Tcl)
  74. CMAKE_FIND_FRAMEWORKS(Tk)
  75. SET(TCL_FRAMEWORK_INCLUDES)
  76. IF(Tcl_FRAMEWORKS)
  77. IF(NOT TCL_INCLUDE_PATH)
  78. FOREACH(dir ${Tcl_FRAMEWORKS})
  79. SET(TCL_FRAMEWORK_INCLUDES ${TCL_FRAMEWORK_INCLUDES} ${dir}/Headers)
  80. ENDFOREACH(dir)
  81. ENDIF(NOT TCL_INCLUDE_PATH)
  82. ENDIF(Tcl_FRAMEWORKS)
  83. SET(TK_FRAMEWORK_INCLUDES)
  84. IF(Tk_FRAMEWORKS)
  85. IF(NOT TK_INCLUDE_PATH)
  86. FOREACH(dir ${Tk_FRAMEWORKS})
  87. SET(TK_FRAMEWORK_INCLUDES ${TK_FRAMEWORK_INCLUDES}
  88. ${dir}/Headers ${dir}/PrivateHeaders)
  89. ENDFOREACH(dir)
  90. ENDIF(NOT TK_INCLUDE_PATH)
  91. ENDIF(Tk_FRAMEWORKS)
  92. GET_FILENAME_COMPONENT(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
  93. GET_FILENAME_COMPONENT(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
  94. SET (TCLTK_POSSIBLE_INCLUDE_PATHS
  95. ${TCL_TCLSH_PATH}/../include
  96. ${TK_WISH_PATH}/../include
  97. "${TCL_LIBRARY_PATH}/../include"
  98. "${TK_LIBRARY_PATH}/../include"
  99. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/include
  100. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/include
  101. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/include
  102. [HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/include
  103. "$ENV{ProgramFiles}/Tcl/include"
  104. "C:/Program Files/Tcl/include"
  105. C:/Tcl/include
  106. /usr/include
  107. /usr/local/include
  108. /usr/include/tcl8.4
  109. /usr/include/tcl8.3
  110. /usr/include/tcl8.2
  111. /usr/include/tcl8.0
  112. )
  113. FIND_PATH(TCL_INCLUDE_PATH tcl.h
  114. ${TCL_FRAMEWORK_INCLUDES} ${TCLTK_POSSIBLE_INCLUDE_PATHS}
  115. )
  116. FIND_PATH(TK_INCLUDE_PATH tk.h
  117. ${TK_FRAMEWORK_INCLUDES} ${TCLTK_POSSIBLE_INCLUDE_PATHS}
  118. )
  119. IF (WIN32)
  120. FIND_PATH(TK_INTERNAL_PATH tkWinInt.h
  121. ${TCLTK_POSSIBLE_INCLUDE_PATHS}
  122. )
  123. MARK_AS_ADVANCED(TK_INTERNAL_PATH)
  124. ENDIF(WIN32)
  125. # handle the QUIETLY and REQUIRED arguments and set TIFF_FOUND to TRUE if
  126. # all listed variables are TRUE
  127. INCLUDE(FindPackageHandleStandardArgs)
  128. FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCL DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH)
  129. SET(TCLTK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
  130. SET(TCLTK_FIND_QUIETLY ${TCL_FIND_QUIETLY})
  131. FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCLTK DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH TK_LIBRARY TK_INCLUDE_PATH)
  132. SET(TK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
  133. SET(TK_FIND_QUIETLY ${TCL_FIND_QUIETLY})
  134. FIND_PACKAGE_HANDLE_STANDARD_ARGS(TK DEFAULT_MSG TK_LIBRARY TK_INCLUDE_PATH)
  135. MARK_AS_ADVANCED(
  136. TCL_TCLSH_PATH
  137. TK_WISH_PATH
  138. TCL_INCLUDE_PATH
  139. TK_INCLUDE_PATH
  140. TCL_LIBRARY
  141. TCL_LIBRARY_DEBUG
  142. TK_LIBRARY
  143. TK_LIBRARY_DEBUG
  144. TCL_STUB_LIBRARY
  145. TCL_STUB_LIBRARY_DEBUG
  146. TK_STUB_LIBRARY
  147. TK_STUB_LIBRARY
  148. TK_STUB_LIBRARY_DEBUG
  149. )