1 # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
4 #[=======================================================================[.rst:
10 This module finds if TCL is installed and determines where the include
11 files and libraries are. It also determines what the name of the
12 library is. This code sets the following variables:
16 TCLSH_FOUND = TRUE if tclsh has been found
17 TCL_TCLSH = the path to the tclsh executable
19 In cygwin, look for the cygwin version first. Don't look for it later
20 to avoid finding the cygwin version on a Win32 build.
21 #]=======================================================================]
24 find_program(TCL_TCLSH NAMES cygtclsh83 cygtclsh80)
27 get_filename_component(TK_WISH_PATH "${TK_WISH}" PATH)
28 get_filename_component(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
30 "^.*wish([0-9]\\.*[0-9]).*$" "\\1" TK_WISH_VERSION "${TK_WISH}")
32 get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
33 get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
35 get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
36 get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
38 "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
40 get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
41 get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
43 "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
45 set(TCLTK_POSSIBLE_BIN_PATHS
46 "${TCL_INCLUDE_PATH_PARENT}/bin"
47 "${TK_INCLUDE_PATH_PARENT}/bin"
48 "${TCL_LIBRARY_PATH_PARENT}/bin"
49 "${TK_LIBRARY_PATH_PARENT}/bin"
50 "${TK_WISH_PATH_PARENT}/bin"
54 get_filename_component(
55 ActiveTcl_CurrentVersion
56 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
58 set(TCLTK_POSSIBLE_BIN_PATHS ${TCLTK_POSSIBLE_BIN_PATHS}
59 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin"
60 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/bin"
61 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/bin"
62 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/bin"
63 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/bin"
64 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/bin"
65 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/bin"
71 tclsh${TCL_LIBRARY_VERSION} tclsh${TK_LIBRARY_VERSION} tclsh${TK_WISH_VERSION}
81 find_program(TCL_TCLSH
82 NAMES ${TCL_TCLSH_NAMES}
83 HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
87 execute_process(COMMAND "${CMAKE_COMMAND}" -E echo puts "\$tcl_version"
88 COMMAND "${TCL_TCLSH}"
89 OUTPUT_VARIABLE TCLSH_VERSION_STRING
91 OUTPUT_STRIP_TRAILING_WHITESPACE)
94 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
95 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Tclsh
96 REQUIRED_VARS TCL_TCLSH
97 VERSION_VAR TCLSH_VERSION_STRING)
99 mark_as_advanced(TCL_TCLSH)