FindTclsh.cmake 3.7 KB

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