Imported Upstream version 2.8.10.2
[platform/upstream/cmake.git] / Modules / FindTclsh.cmake
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 #=============================================================================
11 # Copyright 2001-2009 Kitware, Inc.
12 #
13 # Distributed under the OSI-approved BSD License (the "License");
14 # see accompanying file Copyright.txt for details.
15 #
16 # This software is distributed WITHOUT ANY WARRANTY; without even the
17 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 # See the License for more information.
19 #=============================================================================
20 # (To distribute this file outside of CMake, substitute the full
21 #  License text for the above reference.)
22
23 if(CYGWIN)
24   find_program(TCL_TCLSH NAMES cygtclsh83 cygtclsh80)
25 endif()
26
27 get_filename_component(TK_WISH_PATH "${TK_WISH}" PATH)
28 get_filename_component(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
29 string(REGEX REPLACE
30   "^.*wish([0-9]\\.*[0-9]).*$" "\\1" TK_WISH_VERSION "${TK_WISH}")
31
32 get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
33 get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
34
35 get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
36 get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
37 string(REGEX REPLACE
38   "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
39
40 get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
41 get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
42 string(REGEX REPLACE
43   "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
44
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"
51   )
52
53 if(WIN32)
54   get_filename_component(
55     ActiveTcl_CurrentVersion
56     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
57     NAME)
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"
66     )
67 endif()
68
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
80 find_program(TCL_TCLSH
81   NAMES ${TCL_TCLSH_NAMES}
82   HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
83   )
84
85 if(TCL_TCLSH)
86    execute_process(COMMAND "${CMAKE_COMMAND}" -E echo puts "\$tcl_version"
87                    COMMAND "${TCL_TCLSH}"
88                    OUTPUT_VARIABLE TCLSH_VERSION_STRING
89                    ERROR_QUIET
90                    OUTPUT_STRIP_TRAILING_WHITESPACE)
91 endif()
92
93 # handle the QUIETLY and REQUIRED arguments and set TIFF_FOUND to TRUE if
94 # all listed variables are TRUE
95 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
96 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Tclsh
97                                   REQUIRED_VARS TCL_TCLSH
98                                   VERSION_VAR TCLSH_VERSION_STRING)
99
100 mark_as_advanced(TCL_TCLSH)