1 # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
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.
23 find_program(TCL_TCLSH NAMES cygtclsh83 cygtclsh80)
26 get_filename_component(TK_WISH_PATH "${TK_WISH}" PATH)
27 get_filename_component(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
29 "^.*wish([0-9]\\.*[0-9]).*$" "\\1" TK_WISH_VERSION "${TK_WISH}")
31 get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
32 get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
34 get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
35 get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
37 "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
39 get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
40 get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
42 "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
44 set(TCLTK_POSSIBLE_BIN_PATHS
45 "${TCL_INCLUDE_PATH_PARENT}/bin"
46 "${TK_INCLUDE_PATH_PARENT}/bin"
47 "${TCL_LIBRARY_PATH_PARENT}/bin"
48 "${TK_LIBRARY_PATH_PARENT}/bin"
49 "${TK_WISH_PATH_PARENT}/bin"
53 get_filename_component(
54 ActiveTcl_CurrentVersion
55 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
57 set(TCLTK_POSSIBLE_BIN_PATHS ${TCLTK_POSSIBLE_BIN_PATHS}
58 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin"
59 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/bin"
60 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/bin"
61 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/bin"
62 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/bin"
63 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/bin"
64 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/bin"
70 tclsh${TCL_LIBRARY_VERSION} tclsh${TK_LIBRARY_VERSION} tclsh${TK_WISH_VERSION}
80 find_program(TCL_TCLSH
81 NAMES ${TCL_TCLSH_NAMES}
82 HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
86 execute_process(COMMAND "${CMAKE_COMMAND}" -E echo puts "\$tcl_version"
87 COMMAND "${TCL_TCLSH}"
88 OUTPUT_VARIABLE TCLSH_VERSION_STRING
90 OUTPUT_STRIP_TRAILING_WHITESPACE)
93 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
94 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Tclsh
95 REQUIRED_VARS TCL_TCLSH
96 VERSION_VAR TCLSH_VERSION_STRING)
98 mark_as_advanced(TCL_TCLSH)