Revision: 77283
          http://sourceforge.net/p/brlcad/code/77283
Author:   starseeker
Date:     2020-09-30 14:45:00 +0000 (Wed, 30 Sep 2020)
Log Message:
-----------
Make a stab at updating FindTCL to respect TCL_ROOT

Modified Paths:
--------------
    brlcad/branches/thirdparty_rework/misc/CMake/FindTCL.cmake

Modified: brlcad/branches/thirdparty_rework/misc/CMake/FindTCL.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/FindTCL.cmake  2020-09-30 
12:51:05 UTC (rev 77282)
+++ brlcad/branches/thirdparty_rework/misc/CMake/FindTCL.cmake  2020-09-30 
14:45:00 UTC (rev 77283)
@@ -11,24 +11,32 @@
 
 ::
 
-  TCL_FOUND              = Tcl was found
-  TK_FOUND               = Tk was found
-  TCLTK_FOUND            = Tcl and Tk were found
-  TCLSH_FOUND            = TRUE if tclsh has been found
-  TCL_LIBRARY            = path to Tcl library (tcl tcl80)
-  TCL_INCLUDE_PATH       = path to where tcl.h can be found
-  TCL_TCLSH              = path to tclsh binary (tcl tcl80)
-  TK_LIBRARY             = path to Tk library (tk tk80 etc)
-  TK_INCLUDE_PATH        = path to where tk.h can be found
-  TK_WISH                = full path to the wish executable
-  TCL_STUB_LIBRARY       = path to Tcl stub library
-  TK_STUB_LIBRARY        = path to Tk stub library
-  TTK_STUB_LIBRARY       = path to ttk stub library
+TCL_FOUND              = Tcl was found
+TK_FOUND               = Tk was found
+TCLTK_FOUND            = Tcl and Tk were found
+TCLSH_FOUND            = TRUE if tclsh has been found
+TCL_LIBRARY            = path to Tcl library (tcl tcl80)
+TCL_INCLUDE_PATH       = path to where tcl.h can be found
+TCL_TCLSH              = path to tclsh binary (tcl tcl80)
+TK_LIBRARY             = path to Tk library (tk tk80 etc)
+TK_INCLUDE_PATH        = path to where tk.h can be found
+TK_WISH                = full path to the wish executable
+TCL_STUB_LIBRARY       = path to Tcl stub library
+TK_STUB_LIBRARY        = path to Tk stub library
+TTK_STUB_LIBRARY       = path to ttk stub library
 
 #]=======================================================================]
 
 include(CMakeFindFrameworks)
 
+set(_TCL_SEARCHES)
+
+# Search TCL_ROOT first if it is set.
+if(TCL_ROOT)
+  set(_TCL_SEARCH_ROOT PATHS ${TCL_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _TCL_SEARCHES _TCL_SEARCH_ROOT)
+endif()
+
 if(WIN32)
   get_filename_component(
     ActiveTcl_CurrentVersion
@@ -44,8 +52,8 @@
     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/bin"
     )
 
- get_filename_component(
-        ActiveTcl_CurrentVersion
+  get_filename_component(
+    ActiveTcl_CurrentVersion
     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
     NAME)
   set(TCLTK_POSSIBLE_LIB_PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
@@ -61,7 +69,7 @@
     "C:/Tcl/lib"
     )
 
- set(TCLTK_POSSIBLE_INCLUDE_PATHS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
+  set(TCLTK_POSSIBLE_INCLUDE_PATHS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
     
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/include"
     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/include"
     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/include"
@@ -87,15 +95,16 @@
   tclsh80 tclsh8.0
   )
 if(CYGWIN)
-       set(TCL_TCLSH_NAMES ${TCL_TCLSH_NAMES} cygtclsh83 cygtclsh80)
+  set(TCL_TCLSH_NAMES ${TCL_TCLSH_NAMES} cygtclsh83 cygtclsh80)
 endif(CYGWIN)
 
+foreach(search ${_TCL_SEARCHES})
+  find_program(TCL_TCLSH NAMES ${TCL_TCLSH_NAMES} ${${search}} PATH_SUFFIXES 
bin)
+endforeach()
+if (NOT TCL_TCLSH)
+  find_program(TCL_TCLSH NAMES ${TCL_TCLSH_NAMES} HINTS 
${TCLTK_POSSIBLE_BIN_PATHS})
+endif (NOT TCL_TCLSH)
 
-find_program(TCL_TCLSH
-  NAMES ${TCL_TCLSH_NAMES}
-  HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
-  )
-
 set(TK_WISH_NAMES
   wish
   wish${TCL_LIBRARY_VERSION} wish${TK_LIBRARY_VERSION} wish${TCL_TCLSH_VERSION}
@@ -108,13 +117,15 @@
   )
 
 if(CYGWIN)
-       set(TK_WISH_NAMES ${TK_WISH_NAMES} cygwish80 )
+  set(TK_WISH_NAMES ${TK_WISH_NAMES} cygwish80 )
 endif()
 
-find_program(TK_WISH
-  NAMES ${TK_WISH_NAMES}
-  HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
-  )
+foreach(search ${_TCL_SEARCHES})
+  find_program(TK_WISH NAMES ${TK_WISH_NAMES} ${${search}} PATH_SUFFIXES bin)
+endforeach()
+if (NOT TK_WISH)
+  find_program(TK_WISH NAMES ${TK_WISH_NAMES} HINTS 
${TCLTK_POSSIBLE_BIN_PATHS})
+endif (NOT TK_WISH)
 
 if(TCLSH_VERSION_STRING)
   set(TCL_TCLSH_VERSION "${TCLSH_VERSION_STRING}")
@@ -132,9 +143,10 @@
   "${TK_LIBRARY_PATH}"
   "${TCL_TCLSH_PATH_PARENT}/lib"
   "${TK_WISH_PATH_PARENT}/lib"
-)
-
+  )
 set(TCLTK_POSSIBLE_LIB_PATH_SUFFIXES
+  lib
+  lib/tcl
   lib/tcl/tcl8.7
   lib/tcl/tk8.7
   lib/tcl/tcl8.6
@@ -143,10 +155,9 @@
   lib/tcl/tk8.5
   lib/tcl/tcl8.4
   lib/tcl/tk8.4
-)
+  )
 
-find_library(TCL_LIBRARY
-  NAMES
+set(TCL_POSSIBLE_LIB_NAMES
   tcl
   tcl${TCL_LIBRARY_VERSION} tcl${TCL_TCLSH_VERSION} tcl${TK_WISH_VERSION}
   tcl87 tcl8.7 tcl87t tcl8.7t
@@ -156,12 +167,25 @@
   tcl83 tcl8.3
   tcl82 tcl8.2
   tcl80 tcl8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
   )
 
-find_library(TCL_STUB_LIBRARY
-  NAMES
+if(NOT TCL_LIBRARY)
+  foreach(search ${_TCL_SEARCHES})
+    find_library(TCL_LIBRARY
+      NAMES ${TCL_POSSIBLE_LIB_NAMES}
+      NAMES_PER_DIR ${${search}}
+      PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES})
+  endforeach()
+endif()
+if(NOT TCL_LIBRARY)
+  find_library(TCL_LIBRARY
+    NAMES ${TCL_POSSIBLE_LIB_NAMES}
+    PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+    PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+    )
+endif(NOT TCL_LIBRARY)
+
+set(TCLSTUB_POSSIBLE_LIB_NAMES
   tclstub
   tclstub${TK_LIBRARY_VERSION} tclstub${TCL_TCLSH_VERSION} 
tclstub${TK_WISH_VERSION}
   tclstub87 tclstub8.7
@@ -171,11 +195,24 @@
   tclstub83 tclstub8.3
   tclstub82 tclstub8.2
   tclstub80 tclstub8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-)
+  )
+if(NOT TCL_STUB_LIBRARY)
+  foreach(search ${_TCL_SEARCHES})
+    find_library(TCL_STUB_LIBRARY
+      NAMES ${TCLSTUB_POSSIBLE_LIB_NAMES}
+      NAMES_PER_DIR ${${search}}
+      PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+      )
+  endforeach()
+endif()
+if(NOT TCL_STUB_LIBRARY)
+  find_library(TCL_STUB_LIBRARY
+    NAMES ${TCLSTUB_POSSIBLE_LIB_NAMES}
+    PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+    )
+endif()
 
-find_library(TK_LIBRARY
-  NAMES
+set(TK_POSSIBLE_LIB_NAMES
   tk
   tk${TK_LIBRARY_VERSION} tk${TCL_TCLSH_VERSION} tk${TK_WISH_VERSION}
   tk87 tk8.7 tk87t tk8.7t
@@ -185,12 +222,26 @@
   tk83 tk8.3
   tk82 tk8.2
   tk80 tk8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
   )
 
-find_library(TK_STUB_LIBRARY
-  NAMES
+if(NOT TK_LIBRARY)
+  foreach(search ${_TCL_SEARCHES})
+    find_library(TK_LIBRARY
+      NAMES ${TK_POSSIBLE_LIB_NAMES}
+      NAMES_PER_DIR ${${search}}
+      PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+      )
+  endforeach()
+endif()
+if(NOT TK_LIBRARY)
+  find_library(TK_LIBRARY
+    NAMES ${TK_POSSIBLE_LIB_NAMES}
+    PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+    PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+    )
+endif(NOT TK_LIBRARY)
+
+set(TKSTUB_POSSIBLE_LIB_NAMES
   tkstub
   tkstub${TCL_LIBRARY_VERSION} tkstub${TCL_TCLSH_VERSION} 
tkstub${TK_WISH_VERSION}
   tkstub87 tkstub8.7
@@ -200,11 +251,25 @@
   tkstub83 tkstub8.3
   tkstub82 tkstub8.2
   tkstub80 tkstub8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-)
+  )
 
-find_library(TTK_STUB_LIBRARY
-  NAMES
+if(NOT TKSTUB_LIBRARY)
+  foreach(search ${_TCL_SEARCHES})
+    find_library(TKSTUB_LIBRARY
+      NAMES ${TKSTUB_POSSIBLE_LIB_NAMES}
+      NAMES_PER_DIR ${${search}}
+      PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+      )
+  endforeach()
+endif()
+if(NOT TKSTUB_LIBRARY)
+  find_library(TK_STUB_LIBRARY
+    NAMES ${TKSTUB_POSSIBLE_LIB_NAMES}
+    PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+    )
+endif()
+
+set(TTKSTUB_POSSIBLE_LIB_NAMES
   ttkstub
   ttkstub${TCL_LIBRARY_VERSION} ttkstub${TCL_TCLSH_VERSION} 
ttkstub${TK_WISH_VERSION}
   ttkstub88 ttkstub8.8
@@ -211,9 +276,24 @@
   ttkstub87 ttkstub8.7
   ttkstub86 ttkstub8.6
   ttkstub85 ttkstub8.5
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-)
+  )
 
+if(NOT TTKSTUB_LIBRARY)
+  foreach(search ${_TCL_SEARCHES})
+    find_library(TTKSTUB_LIBRARY
+      NAMES ${TTKSTUB_POSSIBLE_LIB_NAMES}
+      NAMES_PER_DIR ${${search}}
+      PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+      )
+  endforeach()
+endif()
+if(NOT TTKSTUB_LIBRARY)
+  find_library(TTK_STUB_LIBRARY
+    NAMES ${TTKSTUB_POSSIBLE_LIB_NAMES}
+    PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+    )
+endif()
+
 CMAKE_FIND_FRAMEWORKS(Tcl)
 CMAKE_FIND_FRAMEWORKS(Tk)
 
@@ -231,7 +311,7 @@
   if(NOT TK_INCLUDE_PATH)
     foreach(dir ${Tk_FRAMEWORKS})
       set(TK_FRAMEWORK_INCLUDES ${TK_FRAMEWORK_INCLUDES}
-        ${dir}/Headers ${dir}/PrivateHeaders)
+       ${dir}/Headers ${dir}/PrivateHeaders)
     endforeach()
   endif()
 endif()
@@ -263,75 +343,90 @@
   include/tcl8.0
   )
 
-find_path(TCL_INCLUDE_PATH
-  NAMES tcl.h
-  HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
-  )
+foreach(search ${_TCL_SEARCHES})
+  find_path(TCL_INCLUDE_PATH
+    NAMES tcl.h ${${search}}
+    PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
+    )
+endforeach()
+if (NOT TCL_INCLUDE_PATH)
+  find_path(TCL_INCLUDE_PATH
+    NAMES tcl.h
+    HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
+    PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
+    )
+endif()
+foreach(search ${_TCL_SEARCHES})
+  find_path(TK_INCLUDE_PATH
+    NAMES tk.h ${${search}}
+    PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
+    )
+endforeach()
+if (NOT TK_INCLUDE_PATH)
+  find_path(TK_INCLUDE_PATH
+    NAMES tk.h
+    HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
+    PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
+    )
+endif()
 
-find_path(TK_INCLUDE_PATH
-  NAMES tk.h
-  HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
-  )
-
 # IFF we have TCL_TK_SYSTEM_GRAPHICS set and have a system TK_WISH, check that 
the
 # windowing system matches the specified type
 if (NOT "${TCL_TK_SYSTEM_GRAPHICS}" STREQUAL "" AND TK_WISH AND NOT TARGET 
"${TK_WISH}")
-       set(tkwin_script "
-       set filename \"${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM\"
-       set fileId [open $filename \"w\"]
-       set windowingsystem [tk windowingsystem]
-       puts $fileId $windowingsystem
-       close $fileId
-       exit
-       ")
-       set(tkwin_scriptfile 
"${CMAKE_BINARY_DIR}/CMakeTmp/tk_windowingsystem.tcl")
-       set(WSYS "wm-NOTFOUND")
-       file(WRITE ${tkwin_scriptfile} ${tkwin_script})
-       execute_process(COMMAND ${TK_WISH} ${tkwin_scriptfile} OUTPUT_VARIABLE 
EXECOUTPUT)
-       if (EXISTS "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM")
-               file(READ "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM" 
readresultvar)
-               string(REGEX REPLACE "\n" "" WSYS "${readresultvar}")
-       endif (EXISTS "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM")
+  set(tkwin_script "
+  set filename \"${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM\"
+  set fileId [open $filename \"w\"]
+  set windowingsystem [tk windowingsystem]
+  puts $fileId $windowingsystem
+  close $fileId
+  exit
+  ")
+  set(tkwin_scriptfile "${CMAKE_BINARY_DIR}/CMakeTmp/tk_windowingsystem.tcl")
+  set(WSYS "wm-NOTFOUND")
+  file(WRITE ${tkwin_scriptfile} ${tkwin_script})
+  execute_process(COMMAND ${TK_WISH} ${tkwin_scriptfile} OUTPUT_VARIABLE 
EXECOUTPUT)
+  if (EXISTS "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM")
+    file(READ "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM" readresultvar)
+    string(REGEX REPLACE "\n" "" WSYS "${readresultvar}")
+  endif (EXISTS "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM")
 
-       # If we have no information about the windowing system or it does not 
match
-       # a specified system, the find_package detection has failed
-       if (NOT "${WSYS}" STREQUAL "${TCL_TK_SYSTEM_GRAPHICS}")
-               unset(TCL_LIBRARY CACHE)
-               unset(TCL_STUB_LIBRARY CACHE)
-               unset(TK_LIBRARY CACHE)
-               unset(TK_STUB_LIBRARY CACHE)
-               unset(TCL_FOUND CACHE)
-               unset(TK_FOUND CACHE)
-               unset(TCLTK_FOUND CACHE)
-               unset(TCLSH_FOUND CACHE)
-               unset(TCL_LIBRARY CACHE)
-               unset(TCL_INCLUDE_PATH CACHE)
-               unset(TCL_TCLSH CACHE)
-               unset(TK_LIBRARY CACHE)
-               unset(TK_INCLUDE_PATH CACHE)
-               unset(TK_WISH CACHE)
-               unset(TCL_STUB_LIBRARY CACHE)
-               unset(TK_STUB_LIBRARY CACHE)
-               unset(TTK_STUB_LIBRARY CACHE)
-       endif (NOT "${WSYS}" STREQUAL "${TCL_TK_SYSTEM_GRAPHICS}")
+  # If we have no information about the windowing system or it does not match
+  # a specified system, the find_package detection has failed
+  if (NOT "${WSYS}" STREQUAL "${TCL_TK_SYSTEM_GRAPHICS}")
+    unset(TCL_LIBRARY CACHE)
+    unset(TCL_STUB_LIBRARY CACHE)
+    unset(TK_LIBRARY CACHE)
+    unset(TK_STUB_LIBRARY CACHE)
+    unset(TCL_FOUND CACHE)
+    unset(TK_FOUND CACHE)
+    unset(TCLTK_FOUND CACHE)
+    unset(TCLSH_FOUND CACHE)
+    unset(TCL_LIBRARY CACHE)
+    unset(TCL_INCLUDE_PATH CACHE)
+    unset(TCL_TCLSH CACHE)
+    unset(TK_LIBRARY CACHE)
+    unset(TK_INCLUDE_PATH CACHE)
+    unset(TK_WISH CACHE)
+    unset(TCL_STUB_LIBRARY CACHE)
+    unset(TK_STUB_LIBRARY CACHE)
+    unset(TTK_STUB_LIBRARY CACHE)
+  endif (NOT "${WSYS}" STREQUAL "${TCL_TK_SYSTEM_GRAPHICS}")
 endif (NOT "${TCL_TK_SYSTEM_GRAPHICS}" STREQUAL "" AND TK_WISH AND NOT TARGET 
"${TK_WISH}")
 
 include(FindPackageHandleStandardArgs)
 
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCL
-       REQUIRED_VARS TCL_LIBRARY TCL_STUB_LIBRARY TCL_INCLUDE_PATH TCL_TCLSH
-       VERSION_VAR TCLSH_VERSION_STRING)
+  REQUIRED_VARS TCL_LIBRARY TCL_STUB_LIBRARY TCL_INCLUDE_PATH TCL_TCLSH
+  VERSION_VAR TCLSH_VERSION_STRING)
 set(FPHSA_NAME_MISMATCHED 1)
 set(TCLTK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
 set(TCLTK_FIND_QUIETLY  ${TCL_FIND_QUIETLY})
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCLTK
-       REQUIRED_VARS TCL_LIBRARY TCL_STUB_LIBRARY TCL_INCLUDE_PATH TK_LIBRARY 
TK_STUB_LIBRARY TK_INCLUDE_PATH)
+  REQUIRED_VARS TCL_LIBRARY TCL_STUB_LIBRARY TCL_INCLUDE_PATH TK_LIBRARY 
TK_STUB_LIBRARY TK_INCLUDE_PATH)
 set(TK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
 set(TK_FIND_QUIETLY  ${TCL_FIND_QUIETLY})
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(TK
-       REQUIRED_VARS TK_LIBRARY TK_STUB_LIBRARY TK_INCLUDE_PATH TK_WISH)
+  REQUIRED_VARS TK_LIBRARY TK_STUB_LIBRARY TK_INCLUDE_PATH TK_WISH)
 unset(FPHSA_NAME_MISMATCHED)
 
 mark_as_advanced(
@@ -346,3 +441,10 @@
   TTK_STUB_LIBRARY
   )
 
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to