mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-12 22:17:06 +00:00
Tcl/Tk 9.0.0 was released[1] in 2024, and is already up to version 9.0.4 (just released 2026-07-26). Tcl/Tk 9.1 is currently nearing beta,[2] and will likely release soon. Since it's still possible to have both of these libraries installed without Tclsh or Wish (making version detection via those tools unviable), add 9.0 and 9.1 variants to the explicit library/include path and file matches performed by FindTCL. Also add 9.0 and 9.1 patterns to the tool detections in FindTclsh, FindTclStub, and FindWish. [1]: https://sourceforge.net/projects/tcl/files/Tcl/9.0.0/ [2]: https://sourceforge.net/projects/tcl/files/Tcl/9.1b0/
115 lines
3.0 KiB
CMake
115 lines
3.0 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
|
|
#[=======================================================================[.rst:
|
|
FindWish
|
|
--------
|
|
|
|
Finds ``wish``, a simple windowing shell command-line executable:
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(Wish [...])
|
|
|
|
This module is commonly used in conjunction with finding a TCL installation (see
|
|
the :module:`FindTCL` module). It helps determine where the TCL include paths
|
|
and libraries are, as well as identifying the name of the TCL library.
|
|
|
|
If the :variable:`UNIX` variable is defined, the module will prioritize looking
|
|
for the Cygwin version of ``wish`` executable.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module defines the following variables:
|
|
|
|
``Wish_FOUND``
|
|
.. versionadded:: 4.2
|
|
|
|
Boolean indicating whether the ``wish`` executable was found.
|
|
|
|
Cache Variables
|
|
^^^^^^^^^^^^^^^
|
|
|
|
The following cache variables may also be set:
|
|
|
|
``TK_WISH``
|
|
The path to the ``wish`` executable.
|
|
|
|
Examples
|
|
^^^^^^^^
|
|
|
|
Finding ``wish``:
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(Wish)
|
|
message(STATUS "Found wish at: ${TK_WISH}")
|
|
#]=======================================================================]
|
|
|
|
if(UNIX)
|
|
find_program(TK_WISH cygwish80 )
|
|
endif()
|
|
|
|
get_filename_component(TCL_TCLSH_PATH "${TCL_TCLSH}" PATH)
|
|
get_filename_component(TCL_TCLSH_PATH_PARENT "${TCL_TCLSH_PATH}" PATH)
|
|
string(REGEX REPLACE
|
|
"^.*tclsh([0-9]\\.*[0-9]).*$" "\\1" TCL_TCLSH_VERSION "${TCL_TCLSH}")
|
|
|
|
get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
|
|
get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
|
|
|
|
get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
|
|
get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
|
|
string(REGEX REPLACE
|
|
"^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
|
|
|
|
get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
|
|
get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
|
|
string(REGEX REPLACE
|
|
"^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
|
|
|
|
set(TCLTK_POSSIBLE_BIN_PATHS
|
|
"${TCL_INCLUDE_PATH_PARENT}/bin"
|
|
"${TK_INCLUDE_PATH_PARENT}/bin"
|
|
"${TCL_LIBRARY_PATH_PARENT}/bin"
|
|
"${TK_LIBRARY_PATH_PARENT}/bin"
|
|
"${TCL_TCLSH_PATH_PARENT}/bin"
|
|
)
|
|
|
|
if(WIN32)
|
|
get_filename_component(
|
|
ActiveTcl_CurrentVersion
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
|
|
NAME)
|
|
set(TCLTK_POSSIBLE_BIN_PATHS ${TCLTK_POSSIBLE_BIN_PATHS}
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin"
|
|
)
|
|
endif()
|
|
|
|
set(TK_WISH_NAMES
|
|
wish
|
|
wish${TCL_LIBRARY_VERSION} wish${TK_LIBRARY_VERSION} wish${TCL_TCLSH_VERSION}
|
|
wish91 wish9.1
|
|
wish90 wish9.0
|
|
wish86 wish8.6
|
|
wish85 wish8.5
|
|
wish84 wish8.4
|
|
wish83 wish8.3
|
|
wish82 wish8.2
|
|
wish80 wish8.0
|
|
)
|
|
|
|
find_program(TK_WISH
|
|
NAMES ${TK_WISH_NAMES}
|
|
HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
|
|
)
|
|
|
|
mark_as_advanced(TK_WISH)
|
|
|
|
if(TK_WISH)
|
|
set(Wish_FOUND TRUE)
|
|
else()
|
|
set(Wish_FOUND FALSE)
|
|
endif()
|