FindTclsh.cmake 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #.rst:
  2. # FindTclsh
  3. # ---------
  4. #
  5. # Find tclsh
  6. #
  7. # This module finds if TCL is installed and determines where the include
  8. # files and libraries are. It also determines what the name of the
  9. # library is. This code sets the following variables:
  10. #
  11. # ::
  12. #
  13. # TCLSH_FOUND = TRUE if tclsh has been found
  14. # TCL_TCLSH = the path to the tclsh executable
  15. #
  16. # In cygwin, look for the cygwin version first. Don't look for it later
  17. # to avoid finding the cygwin version on a Win32 build.
  18. #=============================================================================
  19. # Copyright 2001-2009 Kitware, Inc.
  20. #
  21. # Distributed under the OSI-approved BSD License (the "License");
  22. # see accompanying file Copyright.txt for details.
  23. #
  24. # This software is distributed WITHOUT ANY WARRANTY; without even the
  25. # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  26. # See the License for more information.
  27. #=============================================================================
  28. # (To distribute this file outside of CMake, substitute the full
  29. # License text for the above reference.)
  30. if(CYGWIN)
  31. find_program(TCL_TCLSH NAMES cygtclsh83 cygtclsh80)
  32. endif()
  33. get_filename_component(TK_WISH_PATH "${TK_WISH}" PATH)
  34. get_filename_component(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
  35. string(REGEX REPLACE
  36. "^.*wish([0-9]\\.*[0-9]).*$" "\\1" TK_WISH_VERSION "${TK_WISH}")
  37. get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
  38. get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
  39. get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
  40. get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
  41. string(REGEX REPLACE
  42. "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
  43. get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
  44. get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
  45. string(REGEX REPLACE
  46. "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
  47. set(TCLTK_POSSIBLE_BIN_PATHS
  48. "${TCL_INCLUDE_PATH_PARENT}/bin"
  49. "${TK_INCLUDE_PATH_PARENT}/bin"
  50. "${TCL_LIBRARY_PATH_PARENT}/bin"
  51. "${TK_LIBRARY_PATH_PARENT}/bin"
  52. "${TK_WISH_PATH_PARENT}/bin"
  53. )
  54. if(WIN32)
  55. get_filename_component(
  56. ActiveTcl_CurrentVersion
  57. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
  58. NAME)
  59. set(TCLTK_POSSIBLE_BIN_PATHS ${TCLTK_POSSIBLE_BIN_PATHS}
  60. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin"
  61. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/bin"
  62. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/bin"
  63. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/bin"
  64. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/bin"
  65. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/bin"
  66. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/bin"
  67. )
  68. endif()
  69. set(TCL_TCLSH_NAMES
  70. tclsh
  71. tclsh${TCL_LIBRARY_VERSION} tclsh${TK_LIBRARY_VERSION} tclsh${TK_WISH_VERSION}
  72. tclsh86 tclsh8.6
  73. tclsh85 tclsh8.5
  74. tclsh84 tclsh8.4
  75. tclsh83 tclsh8.3
  76. tclsh82 tclsh8.2
  77. tclsh80 tclsh8.0
  78. )
  79. find_program(TCL_TCLSH
  80. NAMES ${TCL_TCLSH_NAMES}
  81. HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
  82. )
  83. if(TCL_TCLSH)
  84. execute_process(COMMAND "${CMAKE_COMMAND}" -E echo puts "\$tcl_version"
  85. COMMAND "${TCL_TCLSH}"
  86. OUTPUT_VARIABLE TCLSH_VERSION_STRING
  87. ERROR_QUIET
  88. OUTPUT_STRIP_TRAILING_WHITESPACE)
  89. endif()
  90. # handle the QUIETLY and REQUIRED arguments and set TIFF_FOUND to TRUE if
  91. # all listed variables are TRUE
  92. include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
  93. FIND_PACKAGE_HANDLE_STANDARD_ARGS(Tclsh
  94. REQUIRED_VARS TCL_TCLSH
  95. VERSION_VAR TCLSH_VERSION_STRING)
  96. mark_as_advanced(TCL_TCLSH)