Revision: 77929
          http://sourceforge.net/p/brlcad/code/77929
Author:   starseeker
Date:     2020-12-04 18:40:49 +0000 (Fri, 04 Dec 2020)
Log Message:
-----------
Pull in the majority (though not quite all) of the Find* module updates and 
their associated CMakeLists.txt adjustments from extbuild, altering the 
existing src/other/CMakeLists.txt to define the newer variables in a couple of 
cases.

Modified Paths:
--------------
    brlcad/trunk/misc/CMake/CMakeLists.txt
    brlcad/trunk/misc/CMake/FindLEMON.cmake
    brlcad/trunk/misc/CMake/FindNETPBM.cmake
    brlcad/trunk/misc/CMake/FindOPENNURBS.cmake
    brlcad/trunk/misc/CMake/FindPERPLEX.cmake
    brlcad/trunk/misc/CMake/FindRE2C.cmake
    brlcad/trunk/misc/CMake/FindTCL.cmake
    brlcad/trunk/misc/CMake/FindUTAHRLE.cmake
    brlcad/trunk/src/external/Creo/CMakeLists.txt
    brlcad/trunk/src/external/Cubit/CMakeLists.txt
    brlcad/trunk/src/external/Unigraphics/CMakeLists.txt
    brlcad/trunk/src/libbg/CMakeLists.txt
    brlcad/trunk/src/libbrep/CMakeLists.txt
    brlcad/trunk/src/libbu/CMakeLists.txt
    brlcad/trunk/src/libdm/wgl/CMakeLists.txt
    brlcad/trunk/src/libgcv/plugins/gdal/CMakeLists.txt
    brlcad/trunk/src/libgcv/plugins/obj/wfobj/CMake/FindLEMON.cmake
    brlcad/trunk/src/libgcv/plugins/obj/wfobj/CMake/FindPERPLEX.cmake
    brlcad/trunk/src/libtclcad/CMakeLists.txt
    brlcad/trunk/src/mged/CMakeLists.txt
    brlcad/trunk/src/other/CMakeLists.txt
    brlcad/trunk/src/rt/CMakeLists.txt
    brlcad/trunk/src/rtwizard/CMakeLists.txt
    brlcad/trunk/src/util/CMakeLists.txt

Removed Paths:
-------------
    brlcad/trunk/misc/CMake/FindSSE.cmake

Modified: brlcad/trunk/misc/CMake/CMakeLists.txt
===================================================================
--- brlcad/trunk/misc/CMake/CMakeLists.txt      2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/CMakeLists.txt      2020-12-04 18:40:49 UTC (rev 
77929)
@@ -46,7 +46,6 @@
   FindRE2C.cmake
   FindREGEX.cmake
   FindSCL.cmake
-  FindSSE.cmake
   FindSTL.cmake
   FindShellDeps.cmake
   FindSTEPCODE.cmake
@@ -103,8 +102,8 @@
   multiconfig_path_read.cmake.in
   source_archive_setup.cmake.in
   tcltest.tcl.in
+  scripts/printtime.cmake
   scripts/timestamp.cmake
-  scripts/printtime.cmake
   scripts/tcl_mkindex.cmake
   )
 CMAKEFILES(${cmake_ignore_files})

Modified: brlcad/trunk/misc/CMake/FindLEMON.cmake
===================================================================
--- brlcad/trunk/misc/CMake/FindLEMON.cmake     2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/FindLEMON.cmake     2020-12-04 18:40:49 UTC (rev 
77929)
@@ -44,9 +44,35 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #=============================================================================
 
-find_program(LEMON_EXECUTABLE lemon DOC "path to the lemon executable")
+set(_LEMON_SEARCHES)
+
+# Search LEMON_ROOT first if it is set.
+if(LEMON_ROOT)
+  set(_LEMON_SEARCH_ROOT PATHS ${LEMON_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _LEMON_SEARCHES _LEMON_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_LEMON_x86 "(x86)")
+set(_LEMON_SEARCH_NORMAL
+    PATHS  "$ENV{ProgramFiles}/lemon"
+          "$ENV{ProgramFiles${_LEMON_x86}}/lemon")
+unset(_LEMON_x86)
+list(APPEND _LEMON_SEARCHES _LEMON_SEARCH_NORMAL)
+
+set(LEMON_NAMES lemon)
+
+# Try each search configuration.
+foreach(search ${_LEMON_SEARCHES})
+  find_program(LEMON_EXECUTABLE lemon ${${search}} PATH_SUFFIXES bin)
+endforeach()
 mark_as_advanced(LEMON_EXECUTABLE)
 
+foreach(search ${_LEMON_SEARCHES})
+  find_file(LEMON_TEMPLATE lempar.c ${${search}} PATH_SUFFIXES ${DATA_DIR} 
${DATA_DIR}/lemon)
+endforeach()
+mark_as_advanced(LEMON_TEMPLATE)
+
 if (LEMON_EXECUTABLE AND NOT LEMON_TEMPLATE)
   # look for the template in share
   if (DATA_DIR AND EXISTS "${DATA_DIR}/lemon/lempar.c")
@@ -113,6 +139,10 @@
       CMAKE_PARSE_ARGUMENTS(${LVAR_PREFIX} "" 
"OUT_SRC_FILE;OUT_HDR_FILE;WORKING_DIR;EXTRA_ARGS" "" ${ARGN})
     endif(${ARGC} GREATER 3)
 
+    if (TARGET perplex_stage)
+      set(DEPS_TARGET perplex_stage)
+    endif (TARGET perplex_stage)
+
     # Need a working directory
     if("${${LVAR_PREFIX}_WORKING_DIR}" STREQUAL "")
       set(${LVAR_PREFIX}_WORKING_DIR 
"${CMAKE_CURRENT_BINARY_DIR}/${LVAR_PREFIX}")
@@ -160,8 +190,8 @@
     add_custom_command(
       OUTPUT ${LEMON_GEN_OUT} ${LEMON_GEN_SOURCE} ${LEMON_GEN_HEADER}
       COMMAND ${CMAKE_COMMAND} -E copy ${lemon_in_file} 
${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME}
-      COMMAND ${LEMON_EXECUTABLE} -l -T${LEMON_TEMPLATE} 
${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME} ${${LVAR_PREFIX}__EXTRA_ARGS}
-      DEPENDS ${Input} ${LEMON_TEMPLATE} ${LEMON_EXECUTABLE_TARGET}
+      COMMAND ${LEMON_EXECUTABLE} -T${LEMON_TEMPLATE} 
${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME} ${${LVAR_PREFIX}__EXTRA_ARGS}
+      DEPENDS ${Input} ${LEMON_EXECUTABLE_TARGET} ${DEPS_TARGET}
       WORKING_DIRECTORY ${${LVAR_PREFIX}_WORKING_DIR}
       COMMENT "[LEMON][${Name}] Building parser with ${LEMON_EXECUTABLE}"
       )
@@ -171,7 +201,7 @@
       add_custom_command(
        OUTPUT ${${LVAR_PREFIX}_OUT_SRC_FILE}
        COMMAND ${CMAKE_COMMAND} -E copy ${LEMON_GEN_SOURCE} 
${${LVAR_PREFIX}_OUT_SRC_FILE}
-       DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_SOURCE}
+       DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_SOURCE} 
${DEPS_TARGET}
        )
       set(LEMON_${Name}_OUTPUTS ${${LVAR_PREFIX}_OUT_SRC_FILE} 
${LEMON_${Name}_OUTPUTS})
     endif(NOT "${${LVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "${LEMON_GEN_SOURCE}")
@@ -179,7 +209,7 @@
       add_custom_command(
        OUTPUT ${${LVAR_PREFIX}_OUT_HDR_FILE}
        COMMAND ${CMAKE_COMMAND} -E copy ${LEMON_GEN_HEADER} 
${${LVAR_PREFIX}_OUT_HDR_FILE}
-       DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_HEADER}
+       DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_HEADER} 
${DEPS_TARGET}
        )
       set(LEMON_${Name}_OUTPUTS ${${LVAR_PREFIX}_OUT_HDR_FILE} 
${LEMON_${Name}_OUTPUTS})
     endif(NOT "${${LVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "${LEMON_GEN_HEADER}")

Modified: brlcad/trunk/misc/CMake/FindNETPBM.cmake
===================================================================
--- brlcad/trunk/misc/CMake/FindNETPBM.cmake    2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/FindNETPBM.cmake    2020-12-04 18:40:49 UTC (rev 
77929)
@@ -1,59 +1,102 @@
-#               F I N D N E T P B M . C M A K E
-# BRL-CAD
-#
-# Copyright (c) 2011-2020 United States Government as represented by
-# the U.S. Army Research Laboratory.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-#
-# 3. The name of the author may not be used to endorse or promote
-# products derived from this software without specific prior written
-# permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-###
-# - Find netpbm library and headers
-#
-# The following variables are set:
-#
-#  NETPBM_LIBRARIES      - libnetpbm
-#  NETPBM_INCLUDE_DIRS   - where to find ppm.h, pam.h, pbm.h, etc.
-#  NETPBM_FOUND          - True if libnetpbm and header found.
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
 
-find_path(NETPBM_INCLUDE_DIR pam.h)
-find_library(NETPBM_LIBRARY NAMES netpbm)
+#[=======================================================================[.rst:
+FindNETPBM
+--------
 
+Find the native NETPBM includes and library.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+This module defines :prop_tgt:`IMPORTED` target ``NETPBM::NETPBM``, if
+NETPBM has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+::
+
+  NETPBM_INCLUDE_DIRS   - where to find pam.h, etc.
+  NETPBM_LIBRARIES      - List of libraries when using netpbm.
+  NETPBM_FOUND          - True if netpbm found.
+
+Hints
+^^^^^
+
+A user may set ``NETPBM_ROOT`` to a netpbm installation root to tell this
+module where to look.
+#]=======================================================================]
+
+set(_NETPBM_SEARCHES)
+
+# Search NETPBM_ROOT first if it is set.
+if(NETPBM_ROOT)
+  set(_NETPBM_SEARCH_ROOT PATHS ${NETPBM_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _NETPBM_SEARCHES _NETPBM_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_NETPBM_x86 "(x86)")
+set(_NETPBM_SEARCH_NORMAL
+    PATHS  "$ENV{ProgramFiles}/netpbm"
+          "$ENV{ProgramFiles${_NETPBM_x86}}/netpbm")
+unset(_NETPBM_x86)
+list(APPEND _NETPBM_SEARCHES _NETPBM_SEARCH_NORMAL)
+
+set(NETPBM_NAMES netpbm)
+
+# Try each search configuration.
+foreach(search ${_NETPBM_SEARCHES})
+  find_path(NETPBM_INCLUDE_DIR NAMES pam.h ${${search}} PATH_SUFFIXES include 
include/netpbm netpbm)
+endforeach()
+
+# Allow NETPBM_LIBRARY to be set manually, as the location of the netpbm 
library
+if(NOT NETPBM_LIBRARY)
+  foreach(search ${_NETPBM_SEARCHES})
+    find_library(NETPBM_LIBRARY NAMES ${NETPBM_NAMES} NAMES_PER_DIR 
${${search}} PATH_SUFFIXES lib)
+  endforeach()
+endif()
+
+unset(NETPBM_NAMES)
+
+mark_as_advanced(NETPBM_INCLUDE_DIR)
+
 include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(NETPBM DEFAULT_MSG NETPBM_LIBRARY 
NETPBM_INCLUDE_DIR)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(NETPBM REQUIRED_VARS NETPBM_LIBRARY 
NETPBM_INCLUDE_DIR)
 
-IF (NETPBM_FOUND)
-  set(NETPBM_INCLUDE_DIRS ${NETPBM_INCLUDE_DIR})
-  set(NETPBM_LIBRARIES    ${NETPBM_LIBRARY})
+if(NETPBM_FOUND)
+    set(NETPBM_INCLUDE_DIRS ${NETPBM_INCLUDE_DIR})
+
+    if(NOT NETPBM_LIBRARIES)
+      set(NETPBM_LIBRARIES ${NETPBM_LIBRARY})
+    endif()
+
+    if(NOT TARGET NETPBM::NETPBM)
+      add_library(NETPBM::NETPBM UNKNOWN IMPORTED)
+      set_target_properties(NETPBM::NETPBM PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${NETPBM_INCLUDE_DIRS}")
+
+      if(NETPBM_LIBRARY_RELEASE)
+        set_property(TARGET NETPBM::NETPBM APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS RELEASE)
+        set_target_properties(NETPBM::NETPBM PROPERTIES
+          IMPORTED_LOCATION_RELEASE "${NETPBM_LIBRARY_RELEASE}")
+      endif()
+
+      if(NETPBM_LIBRARY_DEBUG)
+        set_property(TARGET NETPBM::NETPBM APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS DEBUG)
+        set_target_properties(NETPBM::NETPBM PROPERTIES
+          IMPORTED_LOCATION_DEBUG "${NETPBM_LIBRARY_DEBUG}")
+      endif()
+
+      if(NOT NETPBM_LIBRARY_RELEASE AND NOT NETPBM_LIBRARY_DEBUG)
+        set_property(TARGET NETPBM::NETPBM APPEND PROPERTY
+          IMPORTED_LOCATION "${NETPBM_LIBRARY}")
+      endif()
+    endif()
 endif()
-# Local Variables:
-# tab-width: 8
-# mode: cmake
-# indent-tabs-mode: t
-# End:
-# ex: shiftwidth=2 tabstop=8

Modified: brlcad/trunk/misc/CMake/FindOPENNURBS.cmake
===================================================================
--- brlcad/trunk/misc/CMake/FindOPENNURBS.cmake 2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/FindOPENNURBS.cmake 2020-12-04 18:40:49 UTC (rev 
77929)
@@ -1,63 +1,102 @@
-#             F I N D O P E N N U R B S . C M A K E
-# BRL-CAD
-#
-# Copyright (c) 2011-2020 United States Government as represented by
-# the U.S. Army Research Laboratory.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-#
-# 3. The name of the author may not be used to endorse or promote
-# products derived from this software without specific prior written
-# permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-###
-# - Find OpenNURBS
-#
-# The following variables are set:
-#
-#  OPENNURBS_INCLUDE_DIRS   - where to find opennurbs.h, etc.
-#  OPENNURBS_LIBRARIES      - List of libraries when using openNURBS
-#  OPENNURBS_FOUND          - True if openNURBS found.
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
 
-#  OpenNURBS requires zlib
-find_package(ZLIB)
+#[=======================================================================[.rst:
+FindOPENNURBS
+--------
 
-find_path(OPENNURBS_INCLUDE_DIR opennurbs.h)
-find_library(OPENNURBS_LIBRARY NAMES opennurbs openNURBS OpenNURBS)
+Find the native OPENNURBS includes and library.
 
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+This module defines :prop_tgt:`IMPORTED` target ``OPENNURBS::OPENNURBS``, if
+OPENNURBS has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+::
+
+  OPENNURBS_INCLUDE_DIRS   - where to find opennurbs.h, etc.
+  OPENNURBS_LIBRARIES      - List of libraries when using openNURBS.
+  OPENNURBS_FOUND          - True if openNURBS found.
+
+Hints
+^^^^^
+
+A user may set ``OPENNURBS_ROOT`` to a openNURBS installation root to tell this
+module where to look.
+#]=======================================================================]
+
+set(_OPENNURBS_SEARCHES)
+
+# Search OPENNURBS_ROOT first if it is set.
+if(OPENNURBS_ROOT)
+  set(_OPENNURBS_SEARCH_ROOT PATHS ${OPENNURBS_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _OPENNURBS_SEARCHES _OPENNURBS_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_OPENNURBS_x86 "(x86)")
+set(_OPENNURBS_SEARCH_NORMAL
+    PATHS  "$ENV{ProgramFiles}/openNURBS"
+          "$ENV{ProgramFiles${_OPENNURBS_x86}}/openNURBS")
+unset(_OPENNURBS_x86)
+list(APPEND _OPENNURBS_SEARCHES _OPENNURBS_SEARCH_NORMAL)
+
+set(OPENNURBS_NAMES openNURBS)
+
+# Try each search configuration.
+foreach(search ${_OPENNURBS_SEARCHES})
+  find_path(OPENNURBS_INCLUDE_DIR NAMES opennurbs.h ${${search}} PATH_SUFFIXES 
include include/openNURBS openNURBS)
+endforeach()
+
+# Allow OPENNURBS_LIBRARY to be set manually, as the location of the openNURBS 
library
+if(NOT OPENNURBS_LIBRARY)
+  foreach(search ${_OPENNURBS_SEARCHES})
+    find_library(OPENNURBS_LIBRARY NAMES ${OPENNURBS_NAMES} NAMES_PER_DIR 
${${search}} PATH_SUFFIXES lib)
+  endforeach()
+endif()
+
+unset(OPENNURBS_NAMES)
+
+mark_as_advanced(OPENNURBS_INCLUDE_DIR)
+
 include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPENNURBS DEFAULT_MSG OPENNURBS_LIBRARY 
OPENNURBS_INCLUDE_DIR)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPENNURBS REQUIRED_VARS OPENNURBS_LIBRARY 
OPENNURBS_INCLUDE_DIR)
 
 if(OPENNURBS_FOUND)
-  set(OPENNURBS_INCLUDE_DIRS ${OPENNURBS_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
-  list(REMOVE_DUPLICATES OPENNURBS_INCLUDE_DIR)
-  set(OPENNURBS_LIBRARIES    ${OPENNURBS_LIBRARY} ${ZLIB_LIBRARY})
+    set(OPENNURBS_INCLUDE_DIRS ${OPENNURBS_INCLUDE_DIR})
+
+    if(NOT OPENNURBS_LIBRARIES)
+      set(OPENNURBS_LIBRARIES ${OPENNURBS_LIBRARY})
+    endif()
+
+    if(NOT TARGET OPENNURBS::OPENNURBS)
+      add_library(OPENNURBS::OPENNURBS UNKNOWN IMPORTED)
+      set_target_properties(OPENNURBS::OPENNURBS PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${OPENNURBS_INCLUDE_DIRS}")
+
+      if(OPENNURBS_LIBRARY_RELEASE)
+        set_property(TARGET OPENNURBS::OPENNURBS APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS RELEASE)
+        set_target_properties(OPENNURBS::OPENNURBS PROPERTIES
+          IMPORTED_LOCATION_RELEASE "${OPENNURBS_LIBRARY_RELEASE}")
+      endif()
+
+      if(OPENNURBS_LIBRARY_DEBUG)
+        set_property(TARGET OPENNURBS::OPENNURBS APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS DEBUG)
+        set_target_properties(OPENNURBS::OPENNURBS PROPERTIES
+          IMPORTED_LOCATION_DEBUG "${OPENNURBS_LIBRARY_DEBUG}")
+      endif()
+
+      if(NOT OPENNURBS_LIBRARY_RELEASE AND NOT OPENNURBS_LIBRARY_DEBUG)
+        set_property(TARGET OPENNURBS::OPENNURBS APPEND PROPERTY
+          IMPORTED_LOCATION "${OPENNURBS_LIBRARY}")
+      endif()
+    endif()
 endif()
-# Local Variables:
-# tab-width: 8
-# mode: cmake
-# indent-tabs-mode: t
-# End:
-# ex: shiftwidth=2 tabstop=8

Modified: brlcad/trunk/misc/CMake/FindPERPLEX.cmake
===================================================================
--- brlcad/trunk/misc/CMake/FindPERPLEX.cmake   2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/FindPERPLEX.cmake   2020-12-04 18:40:49 UTC (rev 
77929)
@@ -44,9 +44,35 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #=============================================================================
 
-find_program(PERPLEX_EXECUTABLE perplex DOC "path to the perplex executable")
+set(_PERPLEX_SEARCHES)
+
+# Search PERPLEX_ROOT first if it is set.
+if(PERPLEX_ROOT)
+  set(_PERPLEX_SEARCH_ROOT PATHS ${PERPLEX_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _PERPLEX_SEARCHES _PERPLEX_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_PERPLEX_x86 "(x86)")
+set(_PERPLEX_SEARCH_NORMAL
+    PATHS  "$ENV{ProgramFiles}/perplex"
+          "$ENV{ProgramFiles${_PERPLEX_x86}}/perplex")
+unset(_PERPLEX_x86)
+list(APPEND _PERPLEX_SEARCHES _PERPLEX_SEARCH_NORMAL)
+
+set(PERPLEX_NAMES perplex)
+
+# Try each search configuration.
+foreach(search ${_PERPLEX_SEARCHES})
+  find_program(PERPLEX_EXECUTABLE perplex ${${search}} PATH_SUFFIXES bin)
+endforeach()
 mark_as_advanced(PERPLEX_EXECUTABLE)
 
+foreach(search ${_PERPLEX_SEARCHES})
+  find_file(PERPLEX_TEMPLATE perplex_template.c ${${search}} PATH_SUFFIXES 
${DATA_DIR} ${DATA_DIR}/perplex)
+endforeach()
+mark_as_advanced(PERPLEX_TEMPLATE)
+
 if(PERPLEX_EXECUTABLE AND NOT PERPLEX_TEMPLATE)
   get_filename_component(perplex_path ${PERPLEX_EXECUTABLE} PATH)
   if(perplex_path)
@@ -141,6 +167,10 @@
     get_filename_component(IN_FILE_WE ${Input} NAME_WE)
     set(PVAR_PREFIX ${Name}_${IN_FILE_WE})
 
+    if (TARGET perplex_stage)
+      set(DEP_TARGET perplex_stage)
+    endif (TARGET perplex_stage)
+
     if(${ARGC} GREATER 3)
       CMAKE_PARSE_ARGUMENTS(${PVAR_PREFIX} "" 
"TEMPLATE;OUT_SRC_FILE;OUT_HDR_FILE;WORKING_DIR" "" ${ARGN})
     endif(${ARGC} GREATER 3)
@@ -200,7 +230,7 @@
       OUTPUT ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
       COMMAND ${CMAKE_COMMAND} -E copy ${perplex_in_file} 
${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
       COMMAND ${PERPLEX_EXECUTABLE} -c -o ${re2c_src} -i 
${${PVAR_PREFIX}_OUT_HDR_FILE} -t ${${PVAR_PREFIX}_TEMPLATE} 
${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
-      DEPENDS ${Input} ${${PVAR_PREFIX}_TEMPLATE} ${PERPLEX_EXECUTABLE_TARGET} 
${RE2C_EXECUTABLE_TARGET}
+      DEPENDS ${Input} ${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} 
${DEP_TARGET}
       WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
       COMMENT "[PERPLEX][${Name}] Generating re2c input with 
${PERPLEX_EXECUTABLE}"
       )
@@ -209,7 +239,7 @@
       add_custom_command(
        OUTPUT ${${PVAR_PREFIX}_OUT_SRC_FILE}
        COMMAND ${RE2C_EXECUTABLE} --no-debug-info --no-generation-date -c -o 
${${PVAR_PREFIX}_OUT_SRC_FILE} ${re2c_src}
-       DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET}
+       DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} ${DEP_TARGET}
        WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
        COMMENT "[RE2C][${Name}] Building scanner with ${RE2C_EXECUTABLE}"
        )
@@ -217,7 +247,7 @@
       add_custom_command(
        OUTPUT ${${PVAR_PREFIX}_OUT_SRC_FILE}
        COMMAND ${RE2C_EXECUTABLE} --no-generation-date -c -o 
${${PVAR_PREFIX}_OUT_SRC_FILE} ${re2c_src}
-       DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET}
+       DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} ${DEP_TARGET}
        WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
        COMMENT "[RE2C][${Name}] Building scanner with ${RE2C_EXECUTABLE}"
        )

Modified: brlcad/trunk/misc/CMake/FindRE2C.cmake
===================================================================
--- brlcad/trunk/misc/CMake/FindRE2C.cmake      2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/FindRE2C.cmake      2020-12-04 18:40:49 UTC (rev 
77929)
@@ -3,7 +3,29 @@
 #
 #=============================================================================
 
-find_program(RE2C_EXECUTABLE re2c DOC "path to the re2c executable")
+set(_RE2C_SEARCHES)
+
+# Search RE2C_ROOT first if it is set.
+if(RE2C_ROOT)
+  set(_RE2C_SEARCH_ROOT PATHS ${RE2C_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _RE2C_SEARCHES _RE2C_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_RE2C_x86 "(x86)")
+set(_RE2C_SEARCH_NORMAL
+    PATHS  "$ENV{ProgramFiles}/re2c"
+          "$ENV{ProgramFiles${_RE2C_x86}}/re2c")
+unset(_RE2C_x86)
+list(APPEND _RE2C_SEARCHES _RE2C_SEARCH_NORMAL)
+
+set(RE2C_NAMES re2c)
+
+# Try each search configuration.
+foreach(search ${_RE2C_SEARCHES})
+  find_program(RE2C_EXECUTABLE re2c ${${search}} PATH_SUFFIXES bin)
+endforeach()
+
 mark_as_advanced(RE2C_EXECUTABLE)
 
 include(FindPackageHandleStandardArgs)

Deleted: brlcad/trunk/misc/CMake/FindSSE.cmake
===================================================================
--- brlcad/trunk/misc/CMake/FindSSE.cmake       2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/FindSSE.cmake       2020-12-04 18:40:49 UTC (rev 
77929)
@@ -1,166 +0,0 @@
-# Copyright (c) 2016-     Facebook, Inc            (Adam Paszke)
-# Copyright (c) 2014-     Facebook, Inc            (Soumith Chintala)
-# Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert)
-# Copyright (c) 2012-2014 Deepmind Technologies    (Koray Kavukcuoglu)
-# Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu)
-# Copyright (c) 2011-2013 NYU                      (Clement Farabet)
-# Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon 
Bottou, Iain Melvin, Jason Weston)
-# Copyright (c) 2006      Idiap Research Institute (Samy Bengio)
-# Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy 
Bengio, Johnny Mariethoz)
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-#
-# 3. Neither the names of Facebook, Deepmind Technologies, NYU, NEC 
Laboratories America
-#    and IDIAP Research Institute nor the names of its contributors may be
-#    used to endorse or promote products derived from this software without
-#    specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-include(CheckCSourceRuns)
-include(CheckCXXSourceRuns)
-
-set(SSE1_CODE "
-  #include <xmmintrin.h>
-
-  int main()
-  {
-    __m128 a;
-    float vals[4] = {0,0,0,0};
-    a = _mm_loadu_ps(vals);
-    return 0;
-  }")
-
-set(SSE2_CODE "
-  #include <emmintrin.h>
-
-  int main()
-  {
-    __m128d a;
-    double vals[2] = {0,0};
-    a = _mm_loadu_pd(vals);
-    return 0;
-  }")
-
-set(SSE3_CODE "
-  #include <pmmintrin.h>
-
-  int main( )
-  {
-    const int vals[4] = {0,0,0,0};
-    __m128i a;
-    a = _mm_lddqu_si128( (const __m128i*)vals );
-    return 0;
-  }")
-
-set(SSE4_1_CODE "
-  #include <smmintrin.h>
-
-  int main ()
-  {
-    __m128i a = {0,0,0,0}, b = {0,0,0,0};
-    __m128i res = _mm_max_epi8(a, b);
-
-    return 0;
-  }
-")
-
-set(SSE4_2_CODE "
-  #include <nmmintrin.h>
-
-  int main()
-  {
-    __m128i a = {0,0,0,0}, b = {0,0,0,0}, c = {0,0,0,0};
-    c = _mm_cmpgt_epi64(a, b);
-    return 0;
-  }
-")
-
-set(AVX_CODE "
-  #include <immintrin.h>
-
-  int main()
-  {
-    __m256 a;
-    a = _mm256_set1_ps(0);
-    return 0;
-  }
-")
-
-set(AVX2_CODE "
-  #include <immintrin.h>
-
-  int main()
-  {
-    __m256i a = {0};
-    a = _mm256_abs_epi16(a);
-    return 0;
-  }
-")
-
-macro(CHECK_SSE lang type flags)
-  set(__FLAG_I 1)
-  set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
-  foreach(__FLAG ${flags})
-    if(NOT ${lang}_${type}_FOUND)
-      set(CMAKE_REQUIRED_FLAGS ${__FLAG})
-      if("${lang}" STREQUAL "CXX")
-        CHECK_CXX_SOURCE_RUNS("${${type}_CODE}" 
"${lang}_HAS_${type}_${__FLAG_I}")
-      else()
-        CHECK_C_SOURCE_RUNS("${${type}_CODE}" 
"${lang}_HAS_${type}_${__FLAG_I}")
-      endif("${lang}" STREQUAL "CXX")
-      if(${lang}_HAS_${type}_${__FLAG_I})
-        set(${lang}_${type}_FOUND TRUE CACHE BOOL "${lang} ${type} support")
-        set(${lang}_${type}_FLAGS "${__FLAG}" CACHE STRING "${lang} ${type} 
flags")
-      endif(${lang}_HAS_${type}_${__FLAG_I})
-      math(EXPR __FLAG_I "${__FLAG_I}+1")
-    endif(NOT ${lang}_${type}_FOUND)
-  endforeach(__FLAG ${flags})
-  set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
-
-  if(NOT ${lang}_${type}_FOUND)
-    set(${lang}_${type}_FOUND FALSE CACHE BOOL "${lang} ${type} support")
-    set(${lang}_${type}_FLAGS "" CACHE STRING "${lang} ${type} flags")
-  endif(NOT ${lang}_${type}_FOUND)
-
-  mark_as_advanced(${lang}_${type}_FOUND ${lang}_${type}_FLAGS)
-
-endmacro(CHECK_SSE)
-
-# Examples:
-
-# CHECK_SSE(C "SSE1" " ;-msse;/arch:SSE")
-# CHECK_SSE(C "SSE2" " ;-msse2;/arch:SSE2")
-# CHECK_SSE(C "SSE3" " ;-msse3;/arch:SSE3")
-# CHECK_SSE(C "SSE4_1" " ;-msse4.1;-msse4;/arch:SSE4")
-# CHECK_SSE(C "SSE4_2" " ;-msse4.2;-msse4;/arch:SSE4")
-# CHECK_SSE(C "AVX" " ;-mavx;/arch:AVX")
-# CHECK_SSE(C "AVX2" " ;-mavx2 -mfma;/arch:AVX2")
-
-# CHECK_SSE(CXX "SSE1" " ;-msse;/arch:SSE")
-# CHECK_SSE(CXX "SSE2" " ;-msse2;/arch:SSE2")
-# CHECK_SSE(CXX "SSE3" " ;-msse3;/arch:SSE3")
-# CHECK_SSE(CXX "SSE4_1" " ;-msse4.1;-msse4;/arch:SSE4")
-# CHECK_SSE(CXX "SSE4_2" " ;-msse4.2;-msse4;/arch:SSE4")
-# CHECK_SSE(CXX "AVX" " ;-mavx;/arch:AVX")
-# CHECK_SSE(CXX "AVX2" " ;-mavx2 -mfma;/arch:AVX2")

Modified: brlcad/trunk/misc/CMake/FindTCL.cmake
===================================================================
--- brlcad/trunk/misc/CMake/FindTCL.cmake       2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/FindTCL.cmake       2020-12-04 18:40:49 UTC (rev 
77929)
@@ -11,24 +11,39 @@
 
 ::
 
-  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
+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)
 
+
+
+If TCL_ENABLE_TK is set, the following are also set:
+
+::
+
+TK_FOUND               = Tk was found
+TCLTK_FOUND            = Tcl and Tk were found
+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 +59,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 +76,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,35 +102,40 @@
   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}
-  )
+if (TCL_ENABLE_TK)
+  set(TK_WISH_NAMES
+    wish
+    wish${TCL_LIBRARY_VERSION} wish${TK_LIBRARY_VERSION} 
wish${TCL_TCLSH_VERSION}
+    wish86 wish8.6
+    wish85 wish8.5
+    wish84 wish8.4
+    wish83 wish8.3
+    wish82 wish8.2
+    wish80 wish8.0
+    )
 
-set(TK_WISH_NAMES
-  wish
-  wish${TCL_LIBRARY_VERSION} wish${TK_LIBRARY_VERSION} wish${TCL_TCLSH_VERSION}
-  wish86 wish8.6
-  wish85 wish8.5
-  wish84 wish8.4
-  wish83 wish8.3
-  wish82 wish8.2
-  wish80 wish8.0
-  )
+  if(CYGWIN)
+    set(TK_WISH_NAMES ${TK_WISH_NAMES} cygwish80 )
+  endif()
 
-if(CYGWIN)
-       set(TK_WISH_NAMES ${TK_WISH_NAMES} cygwish80 )
-endif()
+  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)
+endif (TCL_ENABLE_TK)
 
-find_program(TK_WISH
-  NAMES ${TK_WISH_NAMES}
-  HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
-  )
-
 if(TCLSH_VERSION_STRING)
   set(TCL_TCLSH_VERSION "${TCLSH_VERSION_STRING}")
 else()
@@ -127,26 +147,37 @@
 
 set(TCLTK_POSSIBLE_LIB_PATHS
   "${TCL_INCLUDE_PATH_PARENT}/lib"
-  "${TK_INCLUDE_PATH_PARENT}/lib"
   "${TCL_LIBRARY_PATH}"
-  "${TK_LIBRARY_PATH}"
   "${TCL_TCLSH_PATH_PARENT}/lib"
-  "${TK_WISH_PATH_PARENT}/lib"
-)
+  )
+if (TCL_ENABLE_TK)
+  set(TCLTK_POSSIBLE_LIB_PATHS
+    ${TCLTK_POSSIBLE_LIB_PATHS}
+    "${TK_INCLUDE_PATH_PARENT}/lib"
+    "${TK_LIBRARY_PATH}"
+    "${TK_WISH_PATH_PARENT}/lib"
+    )
+endif (TCL_ENABLE_TK)
 
 set(TCLTK_POSSIBLE_LIB_PATH_SUFFIXES
+  lib
+  lib/tcl
   lib/tcl/tcl8.7
-  lib/tcl/tk8.7
   lib/tcl/tcl8.6
-  lib/tcl/tk8.6
   lib/tcl/tcl8.5
-  lib/tcl/tk8.5
   lib/tcl/tcl8.4
-  lib/tcl/tk8.4
-)
+  )
+if (TCL_ENABLE_TK)
+  set(TCLTK_POSSIBLE_LIB_PATH_SUFFIXES
+    ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+    lib/tcl/tk8.7
+    lib/tcl/tk8.6
+    lib/tcl/tk8.5
+    lib/tcl/tk8.4
+    )
+endif (TCL_ENABLE_TK)
 
-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 +187,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,51 +215,111 @@
   tclstub83 tclstub8.3
   tclstub82 tclstub8.2
   tclstub80 tclstub8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-)
-
-find_library(TK_LIBRARY
-  NAMES
-  tk
-  tk${TK_LIBRARY_VERSION} tk${TCL_TCLSH_VERSION} tk${TK_WISH_VERSION}
-  tk87 tk8.7 tk87t tk8.7t
-  tk86 tk8.6 tk86t tk8.6t
-  tk85 tk8.5
-  tk84 tk8.4
-  tk83 tk8.3
-  tk82 tk8.2
-  tk80 tk8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
   )
+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_STUB_LIBRARY
-  NAMES
-  tkstub
-  tkstub${TCL_LIBRARY_VERSION} tkstub${TCL_TCLSH_VERSION} 
tkstub${TK_WISH_VERSION}
-  tkstub87 tkstub8.7
-  tkstub86 tkstub8.6
-  tkstub85 tkstub8.5
-  tkstub84 tkstub8.4
-  tkstub83 tkstub8.3
-  tkstub82 tkstub8.2
-  tkstub80 tkstub8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-)
+if (TCL_ENABLE_TK)
+  set(TK_POSSIBLE_LIB_NAMES
+    tk
+    tk${TK_LIBRARY_VERSION} tk${TCL_TCLSH_VERSION} tk${TK_WISH_VERSION}
+    tk87 tk8.7 tk87t tk8.7t
+    tk86 tk8.6 tk86t tk8.6t
+    tk85 tk8.5
+    tk84 tk8.4
+    tk83 tk8.3
+    tk82 tk8.2
+    tk80 tk8.0
+    )
 
-find_library(TTK_STUB_LIBRARY
-  NAMES
-  ttkstub
-  ttkstub${TCL_LIBRARY_VERSION} ttkstub${TCL_TCLSH_VERSION} 
ttkstub${TK_WISH_VERSION}
-  ttkstub88 ttkstub8.8
-  ttkstub87 ttkstub8.7
-  ttkstub86 ttkstub8.6
-  ttkstub85 ttkstub8.5
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-)
+  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(TK_STUB_POSSIBLE_LIB_NAMES
+    tkstub
+    tkstub${TCL_LIBRARY_VERSION} tkstub${TCL_TCLSH_VERSION} 
tkstub${TK_WISH_VERSION}
+    tkstub87 tkstub8.7
+    tkstub86 tkstub8.6
+    tkstub85 tkstub8.5
+    tkstub84 tkstub8.4
+    tkstub83 tkstub8.3
+    tkstub82 tkstub8.2
+    tkstub80 tkstub8.0
+    )
+
+  if(NOT TK_STUB_LIBRARY)
+    foreach(search ${_TCL_SEARCHES})
+      find_library(TK_STUB_LIBRARY
+       NAMES ${TK_STUB_POSSIBLE_LIB_NAMES}
+       NAMES_PER_DIR ${${search}}
+       PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+       )
+    endforeach()
+  endif()
+  if(NOT TK_STUB_LIBRARY)
+    find_library(TK_STUB_LIBRARY
+      NAMES ${TK_STUB_POSSIBLE_LIB_NAMES}
+      PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+      )
+  endif()
+
+  set(TTK_STUB_POSSIBLE_LIB_NAMES
+    ttkstub
+    ttkstub${TCL_LIBRARY_VERSION} ttkstub${TCL_TCLSH_VERSION} 
ttkstub${TK_WISH_VERSION}
+    ttkstub88 ttkstub8.8
+    ttkstub87 ttkstub8.7
+    ttkstub86 ttkstub8.6
+    ttkstub85 ttkstub8.5
+    )
+
+  if(NOT TTK_STUB_LIBRARY)
+    foreach(search ${_TCL_SEARCHES})
+      find_library(TTK_STUB_LIBRARY
+       NAMES ${TTK_STUB_POSSIBLE_LIB_NAMES}
+       NAMES_PER_DIR ${${search}}
+       PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+       )
+    endforeach()
+  endif()
+  if(NOT TTK_STUB_LIBRARY)
+    find_library(TTK_STUB_LIBRARY
+      NAMES ${TTK_STUB_POSSIBLE_LIB_NAMES}
+      PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+      )
+  endif()
+endif (TCL_ENABLE_TK)
+
 CMAKE_FIND_FRAMEWORKS(Tcl)
-CMAKE_FIND_FRAMEWORKS(Tk)
+if (TCL_ENABLE_TK)
+  CMAKE_FIND_FRAMEWORKS(Tk)
+endif (TCL_ENABLE_TK)
 
 set(TCL_FRAMEWORK_INCLUDES)
 if(Tcl_FRAMEWORKS)
@@ -226,114 +330,151 @@
   endif()
 endif()
 
-set(TK_FRAMEWORK_INCLUDES)
-if(Tk_FRAMEWORKS)
-  if(NOT TK_INCLUDE_PATH)
-    foreach(dir ${Tk_FRAMEWORKS})
-      set(TK_FRAMEWORK_INCLUDES ${TK_FRAMEWORK_INCLUDES}
-        ${dir}/Headers ${dir}/PrivateHeaders)
-    endforeach()
+if (TCL_ENABLE_TK)
+  set(TK_FRAMEWORK_INCLUDES)
+  if(Tk_FRAMEWORKS)
+    if(NOT TK_INCLUDE_PATH)
+      foreach(dir ${Tk_FRAMEWORKS})
+       set(TK_FRAMEWORK_INCLUDES ${TK_FRAMEWORK_INCLUDES}
+         ${dir}/Headers ${dir}/PrivateHeaders)
+      endforeach()
+    endif()
   endif()
-endif()
+endif (TCL_ENABLE_TK)
 
 set(TCLTK_POSSIBLE_INCLUDE_PATHS
   "${TCL_LIBRARY_PATH_PARENT}/include"
-  "${TK_LIBRARY_PATH_PARENT}/include"
   "${TCL_INCLUDE_PATH}"
-  "${TK_INCLUDE_PATH}"
   ${TCL_FRAMEWORK_INCLUDES}
-  ${TK_FRAMEWORK_INCLUDES}
   "${TCL_TCLSH_PATH_PARENT}/include"
-  "${TK_WISH_PATH_PARENT}/include"
   )
+if (TCL_ENABLE_TK)
+  set(TCLTK_POSSIBLE_INCLUDE_PATHS
+    ${TCLTK_POSSIBLE_INCLUDE_PATHS}
+    "${TCL_LIBRARY_PATH_PARENT}/include"
+    "${TCL_INCLUDE_PATH}"
+    ${TCL_FRAMEWORK_INCLUDES}
+    "${TCL_TCLSH_PATH_PARENT}/include"
+    )
+endif (TCL_ENABLE_TK)
 
 set(TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES
-  include/tcl${TK_LIBRARY_VERSION}
+  include
   include/tcl${TCL_LIBRARY_VERSION}
   include/tcl8.7
-  include/tk8.7
   include/tcl8.6
-  include/tk8.6
   include/tcl8.5
-  include/tk8.5
   include/tcl8.4
-  include/tk8.4
   include/tcl8.3
   include/tcl8.2
   include/tcl8.0
   )
 
-find_path(TCL_INCLUDE_PATH
-  NAMES tcl.h
-  HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
-  )
+if (TCL_ENABLE_TK)
+  set(TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES
+    ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
+    include/tcl${TK_LIBRARY_VERSION}
+    include/tk8.7
+    include/tk8.6
+    include/tk8.5
+    include/tk8.4
+    )
+endif (TCL_ENABLE_TK)
 
-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")
+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()
 
-       # 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}")
+if (TCL_ENABLE_TK)
 
+  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()
+
+  # 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")
+
+    # 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}")
+endif (TCL_ENABLE_TK)
+
 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)
-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)
-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)
-unset(FPHSA_NAME_MISMATCHED)
+  REQUIRED_VARS TCL_LIBRARY TCL_STUB_LIBRARY TCL_INCLUDE_PATH TCL_TCLSH
+  VERSION_VAR TCLSH_VERSION_STRING)
 
+if (TCL_ENABLE_TK)
+  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)
+  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)
+  unset(FPHSA_NAME_MISMATCHED)
+endif (TCL_ENABLE_TK)
+
 mark_as_advanced(
   TCL_INCLUDE_PATH
   TCL_LIBRARY
@@ -346,3 +487,10 @@
   TTK_STUB_LIBRARY
   )
 
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8

Modified: brlcad/trunk/misc/CMake/FindUTAHRLE.cmake
===================================================================
--- brlcad/trunk/misc/CMake/FindUTAHRLE.cmake   2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/misc/CMake/FindUTAHRLE.cmake   2020-12-04 18:40:49 UTC (rev 
77929)
@@ -1,62 +1,102 @@
-#               F I N D U T A H R L E . C M A K E
-# BRL-CAD
-#
-# Copyright (c) 2011-2020 United States Government as represented by
-# the U.S. Army Research Laboratory.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-#
-# 3. The name of the author may not be used to endorse or promote
-# products derived from this software without specific prior written
-# permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-###
-# - Find UtahRLE libraries
-#
-# The following variables are set:
-#
-# UTAHRLE_LIBRARY
-# The following variables are set:
-#
-#  UTAHRLE_INCLUDE_DIRS   - where to find zlib.h, etc.
-#  UTAHRLE_LIBRARIES      - List of libraries when using zlib.
-#  UTAHRLE_FOUND          - True if zlib found.
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
 
-find_path(UTAHRLE_INCLUDE_DIR rle.h)
-find_library(UTAHRLE_LIBRARY NAMES UTAHRLE)
+#[=======================================================================[.rst:
+FindUTAHRLE
+--------
 
+Find the native UTAHRLE includes and library.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+This module defines :prop_tgt:`IMPORTED` target ``UTAHRLE::UTAHRLE``, if
+UTAHRLE has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+::
+
+  UTAHRLE_INCLUDE_DIRS   - where to find pam.h, etc.
+  UTAHRLE_LIBRARIES      - List of libraries when using utahrle.
+  UTAHRLE_FOUND          - True if utahrle found.
+
+Hints
+^^^^^
+
+A user may set ``UTAHRLE_ROOT`` to a utahrle installation root to tell this
+module where to look.
+#]=======================================================================]
+
+set(_UTAHRLE_SEARCHES)
+
+# Search UTAHRLE_ROOT first if it is set.
+if(UTAHRLE_ROOT)
+  set(_UTAHRLE_SEARCH_ROOT PATHS ${UTAHRLE_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _UTAHRLE_SEARCHES _UTAHRLE_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_UTAHRLE_x86 "(x86)")
+set(_UTAHRLE_SEARCH_NORMAL
+    PATHS  "$ENV{ProgramFiles}/utahrle"
+          "$ENV{ProgramFiles${_UTAHRLE_x86}}/utahrle")
+unset(_UTAHRLE_x86)
+list(APPEND _UTAHRLE_SEARCHES _UTAHRLE_SEARCH_NORMAL)
+
+set(UTAHRLE_NAMES utahrle)
+
+# Try each search configuration.
+foreach(search ${_UTAHRLE_SEARCHES})
+  find_path(UTAHRLE_INCLUDE_DIR NAMES rle.h ${${search}} PATH_SUFFIXES include 
include/utahrle)
+endforeach()
+
+# Allow UTAHRLE_LIBRARY to be set manually, as the location of the utahrle 
library
+if(NOT UTAHRLE_LIBRARY)
+  foreach(search ${_UTAHRLE_SEARCHES})
+    find_library(UTAHRLE_LIBRARY NAMES ${UTAHRLE_NAMES} NAMES_PER_DIR 
${${search}} PATH_SUFFIXES lib)
+  endforeach()
+endif()
+
+unset(UTAHRLE_NAMES)
+
+mark_as_advanced(UTAHRLE_INCLUDE_DIR)
+
 include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(UTAHRLE DEFAULT_MSG UTAHRLE_LIBRARY 
UTAHRLE_INCLUDE_DIR)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(UTAHRLE REQUIRED_VARS UTAHRLE_LIBRARY 
UTAHRLE_INCLUDE_DIR)
 
-IF (UTAHRLE_FOUND)
-  set(UTAHRLE_INCLUDE_DIRS ${UTAHRLE_INCLUDE_DIR})
-  set(UTAHRLE_LIBRARIES    ${UTAHRLE_LIBRARY})
+if(UTAHRLE_FOUND)
+    set(UTAHRLE_INCLUDE_DIRS ${UTAHRLE_INCLUDE_DIR})
+
+    if(NOT UTAHRLE_LIBRARIES)
+      set(UTAHRLE_LIBRARIES ${UTAHRLE_LIBRARY})
+    endif()
+
+    if(NOT TARGET UTAHRLE::UTAHRLE)
+      add_library(UTAHRLE::UTAHRLE UNKNOWN IMPORTED)
+      set_target_properties(UTAHRLE::UTAHRLE PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${UTAHRLE_INCLUDE_DIRS}")
+
+      if(UTAHRLE_LIBRARY_RELEASE)
+        set_property(TARGET UTAHRLE::UTAHRLE APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS RELEASE)
+        set_target_properties(UTAHRLE::UTAHRLE PROPERTIES
+          IMPORTED_LOCATION_RELEASE "${UTAHRLE_LIBRARY_RELEASE}")
+      endif()
+
+      if(UTAHRLE_LIBRARY_DEBUG)
+        set_property(TARGET UTAHRLE::UTAHRLE APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS DEBUG)
+        set_target_properties(UTAHRLE::UTAHRLE PROPERTIES
+          IMPORTED_LOCATION_DEBUG "${UTAHRLE_LIBRARY_DEBUG}")
+      endif()
+
+      if(NOT UTAHRLE_LIBRARY_RELEASE AND NOT UTAHRLE_LIBRARY_DEBUG)
+        set_property(TARGET UTAHRLE::UTAHRLE APPEND PROPERTY
+          IMPORTED_LOCATION "${UTAHRLE_LIBRARY}")
+      endif()
+    endif()
 endif()
-# Local Variables:
-# tab-width: 8
-# mode: cmake
-# indent-tabs-mode: t
-# End:
-# ex: shiftwidth=2 tabstop=8

Modified: brlcad/trunk/src/external/Creo/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/external/Creo/CMakeLists.txt       2020-12-04 17:06:37 UTC 
(rev 77928)
+++ brlcad/trunk/src/external/Creo/CMakeLists.txt       2020-12-04 18:40:49 UTC 
(rev 77929)
@@ -345,8 +345,8 @@
     "${CMAKE_CURRENT_BINARY_DIR}/../../../include"
     "${CMAKE_CURRENT_SOURCE_DIR}/../../../include"
     "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/other/openNURBS"
-    "${ZLIB_INCLUDE_DIRS}"
-    "${REGEX_INCLUDE_DIRS}"
+    ${ZLIB_INCLUDE_DIRS}
+    ${REGEX_INCLUDE_DIRS}
     )
 
   # The build shims aren't so great at mocking the initialization

Modified: brlcad/trunk/src/external/Cubit/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/external/Cubit/CMakeLists.txt      2020-12-04 17:06:37 UTC 
(rev 77928)
+++ brlcad/trunk/src/external/Cubit/CMakeLists.txt      2020-12-04 18:40:49 UTC 
(rev 77929)
@@ -11,8 +11,8 @@
     "${CMAKE_CURRENT_BINARY_DIR}/../../../include"
     "${CMAKE_CURRENT_SOURCE_DIR}/../../../include"
     "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/other/openNURBS"
-    "${ZLIB_INCLUDE_DIRS}"
-    "${REGEX_INCLUDE_DIRS}"
+    ${ZLIB_INCLUDE_DIRS}
+    ${REGEX_INCLUDE_DIRS}
     )
 
   # The build shims aren't so great at mocking the initialization

Modified: brlcad/trunk/src/external/Unigraphics/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/external/Unigraphics/CMakeLists.txt        2020-12-04 
17:06:37 UTC (rev 77928)
+++ brlcad/trunk/src/external/Unigraphics/CMakeLists.txt        2020-12-04 
18:40:49 UTC (rev 77929)
@@ -15,9 +15,9 @@
       "${CMAKE_CURRENT_BINARY_DIR}/../../../include"
       "${CMAKE_CURRENT_SOURCE_DIR}/../../../include"
       "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/other/openNURBS"
-      "${ZLIB_INCLUDE_DIRS}"
-      "${REGEX_INCLUDE_DIRS}"
-      "${TCL_INCLUDE_PATH}"
+      ${ZLIB_INCLUDE_DIRS}
+      ${REGEX_INCLUDE_DIRS}
+      ${TCL_INCLUDE_PATH}
       )
 
     # The build shims aren't so great at mocking the initialization

Modified: brlcad/trunk/src/libbg/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libbg/CMakeLists.txt       2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/libbg/CMakeLists.txt       2020-12-04 18:40:49 UTC (rev 
77929)
@@ -4,7 +4,8 @@
   ${BRLCAD_SOURCE_DIR}/include
   ${BN_INCLUDE_DIRS}
   ${BU_INCLUDE_DIRS}
-  ${P2T_INCLUDE_DIR}
+  ${POLY2TRI_INCLUDE_DIRS}
+  ${SPSR_INCLUDE_DIR}
   )
 BRLCAD_LIB_INCLUDE_DIRS(bg BG_INCLUDE_DIRS "")
 
@@ -72,7 +73,7 @@
   util.c
   )
 
-BRLCAD_ADDLIB(libbg "${LIBBG_SOURCES}" "libbn;libbu;${P2T_LIBRARY}")
+BRLCAD_ADDLIB(libbg "${LIBBG_SOURCES}" "libbn;libbu;${POLY2TRI_LIBRARIES}")
 set_target_properties(libbg PROPERTIES VERSION 20.0.1 SOVERSION 20)
 if (HIDE_INTERNAL_SYMBOLS)
   if (TARGET poly2tri OR HIDE_INTERNAL_SYMBOLS_EXT)

Modified: brlcad/trunk/src/libbrep/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libbrep/CMakeLists.txt     2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/libbrep/CMakeLists.txt     2020-12-04 18:40:49 UTC (rev 
77929)
@@ -4,7 +4,7 @@
   ${BRLCAD_SOURCE_DIR}/include
   ${BU_INCLUDE_DIRS}
   ${BN_INCLUDE_DIRS}
-  ${P2T_INCLUDE_DIR}
+  ${POLY2TRI_INCLUDE_DIRS}
   ${OPENNURBS_INCLUDE_DIRS}
   )
 
@@ -11,7 +11,7 @@
 # locally used but not needed by users of the library
 set(BREP_LOCAL_INCLUDE_DIRS
   ${CMAKE_CURRENT_SOURCE_DIR}
-  ${REGEX_INCLUDE_DIR}
+  ${REGEX_INCLUDE_DIRS}
   ${BRLCAD_SOURCE_DIR}/src/other/Eigen
   )
 
@@ -49,7 +49,7 @@
   tools/util.cpp
   )
 
-BRLCAD_ADDLIB(libbrep "${LIBBREP_SOURCES}" 
"libbg;libbn;libbu;${OPENNURBS_LIBRARIES};${P2T_LIBRARY};${WINSOCK_LIB};${RPCRT_LIB};${STDCXX_LIBRARIES}")
+BRLCAD_ADDLIB(libbrep "${LIBBREP_SOURCES}" 
"libbg;libbn;libbu;${OPENNURBS_LIBRARIES};${POLY2TRI_LIBRARIES};${WINSOCK_LIB};${RPCRT_LIB};${STDCXX_LIBRARIES}")
 set_target_properties(libbrep PROPERTIES VERSION 20.0.1 SOVERSION 20)
 
 if(HIDE_INTERNAL_SYMBOLS)

Modified: brlcad/trunk/src/libbu/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libbu/CMakeLists.txt       2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/libbu/CMakeLists.txt       2020-12-04 18:40:49 UTC (rev 
77929)
@@ -11,7 +11,6 @@
 # locally used but not needed by users of the library
 set(BU_LOCAL_INCLUDE_DIRS
   ${CMAKE_CURRENT_SOURCE_DIR}/y2038
-  ${REGEX_INCLUDE_DIRS}
   )
 if (UUID_INCLUDE_DIR)
   set(BU_LOCAL_INCLUDE_DIRS ${BU_LOCAL_INCLUDE_DIRS} ${UUID_INCLUDE_DIR})
@@ -146,7 +145,7 @@
   CMAKEFILES(parallel_cpp11thread.cpp)
 endif(NOT CMAKE_CXX_STANDARD EQUAL 98)
 
-BRLCAD_ADDLIB(libbu "${LIBBU_SOURCES}" 
"${Foundation_LIBRARIES};Threads::Threads;${DL_LIBRARY};${WINSOCK_LIB};${PSAPI_LIB};${BSON_LIBRARIES};${UUID_LIBRARIES};${REGEX_LIBRARIES};${M_LIBRARY}")
+BRLCAD_ADDLIB(libbu "${LIBBU_SOURCES}" 
"${Foundation_LIBRARIES};Threads::Threads;${DL_LIBRARY};${WINSOCK_LIB};${PSAPI_LIB};${BSON_LIBRARIES};${UUID_LIBRARIES};${M_LIBRARY}")
 set_target_properties(libbu PROPERTIES VERSION 20.0.1 SOVERSION 20)
 
 # Define a pre-build test for libbu to check the semaphores in BRL-CAD's 
headers for

Modified: brlcad/trunk/src/libdm/wgl/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libdm/wgl/CMakeLists.txt   2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/libdm/wgl/CMakeLists.txt   2020-12-04 18:40:49 UTC (rev 
77929)
@@ -15,6 +15,9 @@
     ${OPENGL_INCLUDE_DIR_GL}
     ${TCL_INCLUDE_PATH}
     ${TK_INCLUDE_PATH}
+    # Needed for tkWinInt.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/../../other/ext/tk/generic
+    ${CMAKE_CURRENT_SOURCE_DIR}/../../other/ext/tk/win
     )
 
   set_property(SOURCE dm-wgl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)

Modified: brlcad/trunk/src/libgcv/plugins/gdal/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libgcv/plugins/gdal/CMakeLists.txt 2020-12-04 17:06:37 UTC 
(rev 77928)
+++ brlcad/trunk/src/libgcv/plugins/gdal/CMakeLists.txt 2020-12-04 18:40:49 UTC 
(rev 77929)
@@ -8,7 +8,7 @@
   include_directories(SYSTEM ${GDAL_INCLUDE_DIR})
 
   gcv_plugin_library(gcv-gdal SHARED ${GDAL_SRCS})
-  target_link_libraries(gcv-gdal libwdb librt libbu ${GDAL_LIBRARY})
+  target_link_libraries(gcv-gdal libwdb librt libbu ${GDAL_LIBRARIES})
   set_property(TARGET gcv-gdal APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
   VALIDATE_STYLE(gcv-gdal "${GDAL_SRCS}")
   PLUGIN_SETUP(gcv-gdal gcv)

Modified: brlcad/trunk/src/libgcv/plugins/obj/wfobj/CMake/FindLEMON.cmake
===================================================================
--- brlcad/trunk/src/libgcv/plugins/obj/wfobj/CMake/FindLEMON.cmake     
2020-12-04 17:06:37 UTC (rev 77928)
+++ brlcad/trunk/src/libgcv/plugins/obj/wfobj/CMake/FindLEMON.cmake     
2020-12-04 18:40:49 UTC (rev 77929)
@@ -44,9 +44,35 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #=============================================================================
 
-find_program(LEMON_EXECUTABLE lemon DOC "path to the lemon executable")
+set(_LEMON_SEARCHES)
+
+# Search LEMON_ROOT first if it is set.
+if(LEMON_ROOT)
+  set(_LEMON_SEARCH_ROOT PATHS ${LEMON_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _LEMON_SEARCHES _LEMON_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_LEMON_x86 "(x86)")
+set(_LEMON_SEARCH_NORMAL
+    PATHS  "$ENV{ProgramFiles}/lemon"
+          "$ENV{ProgramFiles${_LEMON_x86}}/lemon")
+unset(_LEMON_x86)
+list(APPEND _LEMON_SEARCHES _LEMON_SEARCH_NORMAL)
+
+set(LEMON_NAMES lemon)
+
+# Try each search configuration.
+foreach(search ${_LEMON_SEARCHES})
+  find_program(LEMON_EXECUTABLE lemon ${${search}} PATH_SUFFIXES bin)
+endforeach()
 mark_as_advanced(LEMON_EXECUTABLE)
 
+foreach(search ${_LEMON_SEARCHES})
+  find_file(LEMON_TEMPLATE lempar.c ${${search}} PATH_SUFFIXES ${DATA_DIR} 
${DATA_DIR}/lemon)
+endforeach()
+mark_as_advanced(LEMON_TEMPLATE)
+
 if (LEMON_EXECUTABLE AND NOT LEMON_TEMPLATE)
   # look for the template in share
   if (DATA_DIR AND EXISTS "${DATA_DIR}/lemon/lempar.c")
@@ -113,6 +139,10 @@
       CMAKE_PARSE_ARGUMENTS(${LVAR_PREFIX} "" 
"OUT_SRC_FILE;OUT_HDR_FILE;WORKING_DIR;EXTRA_ARGS" "" ${ARGN})
     endif(${ARGC} GREATER 3)
 
+    if (TARGET perplex_stage)
+      set(DEPS_TARGET perplex_stage)
+    endif (TARGET perplex_stage)
+
     # Need a working directory
     if("${${LVAR_PREFIX}_WORKING_DIR}" STREQUAL "")
       set(${LVAR_PREFIX}_WORKING_DIR 
"${CMAKE_CURRENT_BINARY_DIR}/${LVAR_PREFIX}")
@@ -161,7 +191,7 @@
       OUTPUT ${LEMON_GEN_OUT} ${LEMON_GEN_SOURCE} ${LEMON_GEN_HEADER}
       COMMAND ${CMAKE_COMMAND} -E copy ${lemon_in_file} 
${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME}
       COMMAND ${LEMON_EXECUTABLE} -T${LEMON_TEMPLATE} 
${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME} ${${LVAR_PREFIX}__EXTRA_ARGS}
-      DEPENDS ${Input} ${LEMON_TEMPLATE} ${LEMON_EXECUTABLE_TARGET}
+      DEPENDS ${Input} ${LEMON_EXECUTABLE_TARGET} ${DEPS_TARGET}
       WORKING_DIRECTORY ${${LVAR_PREFIX}_WORKING_DIR}
       COMMENT "[LEMON][${Name}] Building parser with ${LEMON_EXECUTABLE}"
       )
@@ -171,7 +201,7 @@
       add_custom_command(
        OUTPUT ${${LVAR_PREFIX}_OUT_SRC_FILE}
        COMMAND ${CMAKE_COMMAND} -E copy ${LEMON_GEN_SOURCE} 
${${LVAR_PREFIX}_OUT_SRC_FILE}
-       DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_SOURCE}
+       DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_SOURCE} 
${DEPS_TARGET}
        )
       set(LEMON_${Name}_OUTPUTS ${${LVAR_PREFIX}_OUT_SRC_FILE} 
${LEMON_${Name}_OUTPUTS})
     endif(NOT "${${LVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "${LEMON_GEN_SOURCE}")
@@ -179,7 +209,7 @@
       add_custom_command(
        OUTPUT ${${LVAR_PREFIX}_OUT_HDR_FILE}
        COMMAND ${CMAKE_COMMAND} -E copy ${LEMON_GEN_HEADER} 
${${LVAR_PREFIX}_OUT_HDR_FILE}
-       DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_HEADER}
+       DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_HEADER} 
${DEPS_TARGET}
        )
       set(LEMON_${Name}_OUTPUTS ${${LVAR_PREFIX}_OUT_HDR_FILE} 
${LEMON_${Name}_OUTPUTS})
     endif(NOT "${${LVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "${LEMON_GEN_HEADER}")

Modified: brlcad/trunk/src/libgcv/plugins/obj/wfobj/CMake/FindPERPLEX.cmake
===================================================================
--- brlcad/trunk/src/libgcv/plugins/obj/wfobj/CMake/FindPERPLEX.cmake   
2020-12-04 17:06:37 UTC (rev 77928)
+++ brlcad/trunk/src/libgcv/plugins/obj/wfobj/CMake/FindPERPLEX.cmake   
2020-12-04 18:40:49 UTC (rev 77929)
@@ -44,9 +44,35 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #=============================================================================
 
-find_program(PERPLEX_EXECUTABLE perplex DOC "path to the perplex executable")
+set(_PERPLEX_SEARCHES)
+
+# Search PERPLEX_ROOT first if it is set.
+if(PERPLEX_ROOT)
+  set(_PERPLEX_SEARCH_ROOT PATHS ${PERPLEX_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _PERPLEX_SEARCHES _PERPLEX_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_PERPLEX_x86 "(x86)")
+set(_PERPLEX_SEARCH_NORMAL
+    PATHS  "$ENV{ProgramFiles}/perplex"
+          "$ENV{ProgramFiles${_PERPLEX_x86}}/perplex")
+unset(_PERPLEX_x86)
+list(APPEND _PERPLEX_SEARCHES _PERPLEX_SEARCH_NORMAL)
+
+set(PERPLEX_NAMES perplex)
+
+# Try each search configuration.
+foreach(search ${_PERPLEX_SEARCHES})
+  find_program(PERPLEX_EXECUTABLE perplex ${${search}} PATH_SUFFIXES bin)
+endforeach()
 mark_as_advanced(PERPLEX_EXECUTABLE)
 
+foreach(search ${_PERPLEX_SEARCHES})
+  find_file(PERPLEX_TEMPLATE perplex_template.c ${${search}} PATH_SUFFIXES 
${DATA_DIR} ${DATA_DIR}/perplex)
+endforeach()
+mark_as_advanced(PERPLEX_TEMPLATE)
+
 if(PERPLEX_EXECUTABLE AND NOT PERPLEX_TEMPLATE)
   get_filename_component(perplex_path ${PERPLEX_EXECUTABLE} PATH)
   if(perplex_path)
@@ -141,6 +167,10 @@
     get_filename_component(IN_FILE_WE ${Input} NAME_WE)
     set(PVAR_PREFIX ${Name}_${IN_FILE_WE})
 
+    if (TARGET perplex_stage)
+      set(DEP_TARGET perplex_stage)
+    endif (TARGET perplex_stage)
+
     if(${ARGC} GREATER 3)
       CMAKE_PARSE_ARGUMENTS(${PVAR_PREFIX} "" 
"TEMPLATE;OUT_SRC_FILE;OUT_HDR_FILE;WORKING_DIR" "" ${ARGN})
     endif(${ARGC} GREATER 3)
@@ -200,7 +230,7 @@
       OUTPUT ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
       COMMAND ${CMAKE_COMMAND} -E copy ${perplex_in_file} 
${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
       COMMAND ${PERPLEX_EXECUTABLE} -c -o ${re2c_src} -i 
${${PVAR_PREFIX}_OUT_HDR_FILE} -t ${${PVAR_PREFIX}_TEMPLATE} 
${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
-      DEPENDS ${Input} ${${PVAR_PREFIX}_TEMPLATE} ${PERPLEX_EXECUTABLE_TARGET} 
${RE2C_EXECUTABLE_TARGET}
+      DEPENDS ${Input} ${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} 
${DEP_TARGET}
       WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
       COMMENT "[PERPLEX][${Name}] Generating re2c input with 
${PERPLEX_EXECUTABLE}"
       )
@@ -209,7 +239,7 @@
       add_custom_command(
        OUTPUT ${${PVAR_PREFIX}_OUT_SRC_FILE}
        COMMAND ${RE2C_EXECUTABLE} --no-debug-info --no-generation-date -c -o 
${${PVAR_PREFIX}_OUT_SRC_FILE} ${re2c_src}
-       DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET}
+       DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} ${DEP_TARGET}
        WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
        COMMENT "[RE2C][${Name}] Building scanner with ${RE2C_EXECUTABLE}"
        )
@@ -217,7 +247,7 @@
       add_custom_command(
        OUTPUT ${${PVAR_PREFIX}_OUT_SRC_FILE}
        COMMAND ${RE2C_EXECUTABLE} --no-generation-date -c -o 
${${PVAR_PREFIX}_OUT_SRC_FILE} ${re2c_src}
-       DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET}
+       DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} 
${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} ${DEP_TARGET}
        WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
        COMMENT "[RE2C][${Name}] Building scanner with ${RE2C_EXECUTABLE}"
        )

Modified: brlcad/trunk/src/libtclcad/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libtclcad/CMakeLists.txt   2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/libtclcad/CMakeLists.txt   2020-12-04 18:40:49 UTC (rev 
77929)
@@ -64,15 +64,11 @@
     libbn
     libbu
     ${TCL_LIBRARY}
-    ${ITCL_LIBRARY}
     ${TCLCAD_XLIBS}
     )
   if (TK_LIBRARY)
     set(TCLCAD_LIBS ${TCLCAD_LIBS} ${TK_LIBRARY})
   endif (TK_LIBRARY)
-  if (ITK_LIBRARY)
-    set(TCLCAD_LIBS ${TCLCAD_LIBS} ${ITK_LIBRARY})
-  endif (ITK_LIBRARY)
 
   BRLCAD_ADDLIB(libtclcad "${LIBTCLCAD_SRCS}" "${TCLCAD_LIBS}")
   set_target_properties(libtclcad PROPERTIES VERSION 20.0.1 SOVERSION 20)
@@ -86,6 +82,13 @@
   # For anyone to do anything with tclcad, we need the libged plugins
   add_dependencies(libtclcad ged_plugins)
 
+  set(STAGE_TGTS tcl_stage tk_stage itcl_stage itk_stage iwidgets_stage)
+  foreach(tgt ${STAGE_TGTS})
+    if (TARGET ${tgt})
+      add_dependencies(libtclcad ${tgt})
+    endif (TARGET ${tgt})
+  endforeach(tgt ${STAGE_TGTS})
+
 endif (BRLCAD_ENABLE_TCL)
 
 set(tclcad_ignore_files

Modified: brlcad/trunk/src/mged/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/mged/CMakeLists.txt        2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/mged/CMakeLists.txt        2020-12-04 18:40:49 UTC (rev 
77929)
@@ -54,7 +54,7 @@
 endif (HAVE_WINDOWS_H)
 
 
-set(mged_libs libtclcad libged libwdb libdm libnmg ${ITCL_LIBRARY} 
${ITK_LIBRARY} ${WS2_32_LIBRARY} ${OPENGL32_LIBRARY})
+set(mged_libs libtclcad libged libwdb libdm libnmg ${WS2_32_LIBRARY} 
${OPENGL32_LIBRARY})
 if(TARGET libtermio)
   set(mged_libs ${mged_libs} libtermio)
 endif(TARGET libtermio)

Modified: brlcad/trunk/src/other/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/other/CMakeLists.txt       2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/other/CMakeLists.txt       2020-12-04 18:40:49 UTC (rev 
77929)
@@ -297,6 +297,7 @@
   SetTargetFolder(utahrle "Third Party Libraries")
   SetTargetFolder(utahrle-static "Third Party Libraries")
   set(UTAHRLE_INCLUDE_DIR "${BRLCAD_SOURCE_DIR}/src/other/libutahrle/include" 
CACHE STRING "directory with rle.h header" FORCE)
+  set(UTAHRLE_INCLUDE_DIRS "${UTAH_INCLUDE_DIR}" CACHE STRING "directory with 
rle.h header" FORCE)
   set(BRLCAD_UTAHRLE_INCLUDE_DIR "${UTAHRLE_INCLUDE_DIR}" CACHE STRING 
"directory with rle.h header" FORCE)
   mark_as_advanced(UTAHRLE_INCLUDE_DIR)
   mark_as_advanced(BRLCAD_UTAHRLE_INCLUDE_DIR)
@@ -892,7 +893,9 @@
 CMAKEFILES_IN_DIR(poly2tri_ignore_files poly2tri)
 DISTCLEAN("${CMAKE_CURRENT_SOURCE_DIR}/poly2tri/Makefile")
 set(P2T_LIBRARY "poly2tri" CACHE STRING "Poly2Tri library" FORCE)
+set(POLY2TRI_LIBRARIES "poly2tri" CACHE STRING "Poly2Tri library" FORCE)
 set(P2T_INCLUDE_DIR "${BRLCAD_SOURCE_DIR}/src/other/poly2tri" CACHE STRING 
"Directory containing poly2tri header" FORCE)
+set(POLY2TRI_INCLUDE_DIRS "${BRLCAD_SOURCE_DIR}/src/other/poly2tri" CACHE 
STRING "Directory containing poly2tri header" FORCE)
 SetTargetFolder(poly2tri "Third Party Libraries")
 SetTargetFolder(poly2tri-static "Third Party Libraries")
 mark_as_advanced(P2T_LIBRARY)
@@ -958,6 +961,9 @@
   DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/gdal/cpl_config.h")
   SetTargetFolder(gdal "Third Party Libraries/GDAL")
   SetTargetFolder(gdal-static "Third Party Libraries/GDAL")
+else(BRLCAD_GDAL_BUILD)
+  set(GDAL_INCLUDE_DIR "${GDAL_INCLUDE_DIRS}" CACHE STRING "libgdal includes" 
FORCE)
+  set(GDAL_LIBRARIES "${GDAL_LIBRARY}" CACHE STRING "libgdal" FORCE)
 endif(BRLCAD_GDAL_BUILD)
 mark_as_advanced(GDAL_CONFIG)
 mark_as_advanced(GDAL_INCLUDE_DIR)

Modified: brlcad/trunk/src/rt/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/rt/CMakeLists.txt  2020-12-04 17:06:37 UTC (rev 77928)
+++ brlcad/trunk/src/rt/CMakeLists.txt  2020-12-04 18:40:49 UTC (rev 77929)
@@ -23,7 +23,7 @@
   worker.c
   )
 
-BRLCAD_ADDLIB(librtuif "${LIBRTUIF_SOURCES}" "${M_LIBRARY}" STATIC NO_INSTALL)
+BRLCAD_ADDLIB(librtuif "${LIBRTUIF_SOURCES}" "librt;${M_LIBRARY}" STATIC 
NO_INSTALL)
 
 if(BRLCAD_ENABLE_OPENCL)
   set(OPENCL_LIBS ${OPENCL_LIBRARIES})

Modified: brlcad/trunk/src/rtwizard/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/rtwizard/CMakeLists.txt    2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/rtwizard/CMakeLists.txt    2020-12-04 18:40:49 UTC (rev 
77929)
@@ -20,7 +20,7 @@
   endif (HAVE_WINDOWS_H)
 
 
-  BRLCAD_ADDEXEC(rtwizard "${RTWIZARD_SRCS}" 
"libtclcad;librt;libdm;liboptical;libicv;${ITCL_LIBRARY};${ITK_LIBRARY};Threads::Threads;${M_LIBRARY}")
+  BRLCAD_ADDEXEC(rtwizard "${RTWIZARD_SRCS}" 
"libtclcad;librt;libdm;liboptical;libicv;Threads::Threads;${M_LIBRARY}")
   ADD_TARGET_DEPS(rtwizard rt rtedge fbserv fb-png fb-pix fbclear fblabel 
fbfree fbline fb-fb pix-bw bwmod bw-pix pixmatte pix-fb tkpng dm_plugins)
   foreach(item ${tclindex_target_list})
     add_dependencies(rtwizard ${item})

Modified: brlcad/trunk/src/util/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/util/CMakeLists.txt        2020-12-04 17:06:37 UTC (rev 
77928)
+++ brlcad/trunk/src/util/CMakeLists.txt        2020-12-04 18:40:49 UTC (rev 
77929)
@@ -11,7 +11,7 @@
 
 set(UTIL_LOCAL_INCLUDE_DIRS
   ${CMAKE_CURRENT_SOURCE_DIR}
-  ${UTAHRLE_INCLUDE_DIR}
+  ${UTAHRLE_INCLUDE_DIRS}
   ${PNG_INCLUDE_DIRS}
   )
 

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