Revision: 77473
          http://sourceforge.net/p/brlcad/code/77473
Author:   starseeker
Date:     2020-10-17 16:19:38 +0000 (Sat, 17 Oct 2020)
Log Message:
-----------
Merge from trunk - r77320 through r77472

Modified Paths:
--------------
    brlcad/branches/thirdparty_rework/BUGS
    brlcad/branches/thirdparty_rework/CHANGES
    brlcad/branches/thirdparty_rework/CMakeLists.txt
    brlcad/branches/thirdparty_rework/NEWS
    brlcad/branches/thirdparty_rework/bench/CMakeLists.txt
    brlcad/branches/thirdparty_rework/bench/pixcmp.c
    brlcad/branches/thirdparty_rework/bench/run.sh
    brlcad/branches/thirdparty_rework/db/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/articles/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/books/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/devguides/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/lessons/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/presentations/CMakeLists.txt
    
brlcad/branches/thirdparty_rework/doc/docbook/resources/brlcad/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/specifications/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/system/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/system/man1/pixcmp.xml
    brlcad/branches/thirdparty_rework/doc/docbook/system/man5/CMakeLists.txt
    brlcad/branches/thirdparty_rework/doc/docbook/system/mann/search.xml
    brlcad/branches/thirdparty_rework/include/analyze/info.h
    brlcad/branches/thirdparty_rework/include/bio.h
    brlcad/branches/thirdparty_rework/include/tclcad.h
    brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Targets.cmake
    brlcad/branches/thirdparty_rework/misc/CMake/CMakeLists.txt
    brlcad/branches/thirdparty_rework/misc/CMake/Distcheck.cmake
    brlcad/branches/thirdparty_rework/misc/CMake/DocBook.cmake
    brlcad/branches/thirdparty_rework/misc/CMake/FindGL.cmake
    brlcad/branches/thirdparty_rework/misc/CMake/FindX11.cmake
    brlcad/branches/thirdparty_rework/misc/pkgconfig/CMakeLists.txt
    
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libexslt/CMakeLists.txt
    brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/CMakeLists.txt
    brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxslt/CMakeLists.txt
    brlcad/branches/thirdparty_rework/regress/icv/CMakeLists.txt
    brlcad/branches/thirdparty_rework/regress/nurbs/CMakeLists.txt
    brlcad/branches/thirdparty_rework/regress/pkg/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/art/art.cpp
    brlcad/branches/thirdparty_rework/src/art/art.h
    brlcad/branches/thirdparty_rework/src/art/brlcadplugin.cpp
    brlcad/branches/thirdparty_rework/src/libbg/spsr/MAT.inl
    brlcad/branches/thirdparty_rework/src/libbg/spsr/SPSR.cpp
    brlcad/branches/thirdparty_rework/src/libbn/tests/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libbrep/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libbrep/tests/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libbu/tests/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libbu/tests/dylib/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libdm/dm_plugins.cpp
    brlcad/branches/thirdparty_rework/src/libgcv/plugins/vol/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libged/brep/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libged/gqa/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libged/overlay/overlay.c
    brlcad/branches/thirdparty_rework/src/liboptical/material.c
    brlcad/branches/thirdparty_rework/src/liboptical/sh_xxx.c
    brlcad/branches/thirdparty_rework/src/librt/db_open.c
    brlcad/branches/thirdparty_rework/src/librt/search.c
    brlcad/branches/thirdparty_rework/src/libtclcad/CMakeLists.txt
    brlcad/branches/thirdparty_rework/src/libtclcad/commands.c
    brlcad/branches/thirdparty_rework/src/mged/attach.c
    brlcad/branches/thirdparty_rework/src/mged/mged.c
    brlcad/branches/thirdparty_rework/src/tclscripts/mged/bindings.tcl
    brlcad/branches/thirdparty_rework/src/util/pixdiff.c

Added Paths:
-----------
    brlcad/branches/thirdparty_rework/misc/CMake/date_delta.cpp
    brlcad/branches/thirdparty_rework/src/libged/gqa/gqa.cpp
    brlcad/branches/thirdparty_rework/src/libtclcad/command_io.cpp

Removed Paths:
-------------
    brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Command_Wrappers.cmake
    brlcad/branches/thirdparty_rework/src/libged/gqa/gqa.c

Property Changed:
----------------
    brlcad/branches/thirdparty_rework/
    brlcad/branches/thirdparty_rework/CHANGES
    brlcad/branches/thirdparty_rework/NEWS
    brlcad/branches/thirdparty_rework/bench/
    brlcad/branches/thirdparty_rework/db/
    brlcad/branches/thirdparty_rework/doc/
    brlcad/branches/thirdparty_rework/doc/docbook/articles/
    brlcad/branches/thirdparty_rework/doc/docbook/books/
    brlcad/branches/thirdparty_rework/doc/docbook/lessons/
    brlcad/branches/thirdparty_rework/include/
    brlcad/branches/thirdparty_rework/regress/
    brlcad/branches/thirdparty_rework/src/libbu/
    brlcad/branches/thirdparty_rework/src/other/

Index: brlcad/branches/thirdparty_rework
===================================================================
--- brlcad/branches/thirdparty_rework   2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework   2020-10-17 16:19:38 UTC (rev 77473)

Property changes on: brlcad/branches/thirdparty_rework
___________________________________________________________________
Modified: svn:mergeinfo
## -11,4 +11,4 ##
 /brlcad/branches/osg:62110-62113
 /brlcad/branches/prep-cache:68236-68933
 /brlcad/branches/tcltk86:68300-75257
-/brlcad/trunk:75098-75115,75241-77320
\ No newline at end of property
+/brlcad/trunk:75098-75115,75241-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/BUGS
===================================================================
--- brlcad/branches/thirdparty_rework/BUGS      2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/BUGS      2020-10-17 16:19:38 UTC (rev 
77473)
@@ -15,6 +15,9 @@
 Recent Bugs
 -----------
 
+* gqa command is generating invalid plot3 files in multithreaded
+  mode.
+
 * fbclear -c appears to hang indefinitely inside pkg_bwaitfor,
   possible protocol mismatch or capability removed/changed in fbserv.
 

Modified: brlcad/branches/thirdparty_rework/CHANGES
===================================================================
--- brlcad/branches/thirdparty_rework/CHANGES   2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/CHANGES   2020-10-17 16:19:38 UTC (rev 
77473)
@@ -1551,3 +1551,6 @@
 ----
 s/facetall.sh/mged -c facetize/g
         replaced by more improved facetize command [7.30]
+s/pixcmp -s/pixcmp -q/g
+s/pixcmp -l/pixcmp -d/g
+       changed pixcmp options for consistency with new options [7.32]


Property changes on: brlcad/branches/thirdparty_rework/CHANGES
___________________________________________________________________
Modified: svn:mergeinfo
## -1,4 +1,4 ##
 
/brlcad/branches/RELEASE/CHANGES:70323-70333,71915-72242,72525-72534,72826-72858,74376-74454
 
/brlcad/branches/brep-debug/CHANGES:69168,69927,69995-69996,70148-70149,70347-70349,70377,70526-70527,71006-71007,71009-71022,71046-71047,71049,71096-71100
 /brlcad/branches/dm-fb-merge/CHANGES:75426-76198
-/brlcad/trunk/CHANGES:75241-75612,76151-77232
\ No newline at end of property
+/brlcad/trunk/CHANGES:75241-75612,76151-77232,77321-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/CMakeLists.txt    2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/CMakeLists.txt    2020-10-17 16:19:38 UTC 
(rev 77473)
@@ -39,7 +39,7 @@
 # ******************************************************************
 
 # Minimum required version of CMake
-cmake_minimum_required(VERSION 3.12)
+cmake_minimum_required(VERSION 3.14)
 
 # set CMake project name
 project(BRLCAD)
@@ -222,13 +222,6 @@
 endif("${CMAKE_GENERATOR}" MATCHES "Ninja")
 
 #---------------------------------------------------------------------
-# For a variety of reasons, we often need to wrap existing CMake
-# commands to add our own logic.
-if(NOT BRLCAD_IS_SUBBUILD)
-  include(BRLCAD_Command_Wrappers)
-endif(NOT BRLCAD_IS_SUBBUILD)
-
-#---------------------------------------------------------------------
 # CMake's default "make test" target is a bit limited - define
 # our own "unit" and "check" targets that automate more of the
 # dependency updating process.
@@ -2141,82 +2134,97 @@
 # ***                      Timestamp Rules                        ***
 # *******************************************************************
 # Set up rules to print a timestamp string during build
-if(NOT BRLCAD_IS_SUBBUILD)
+set(BUILD_DELTA_START "${CMAKE_BINARY_DIR}/CMakeTmp/BUILD_DELTA_START")
 
-  set(BUILD_DELTA_START "${CMAKE_BINARY_DIR}/CMakeTmp/BUILD_DELTA_START")
-
-  add_custom_command(
+add_custom_command(
     OUTPUT ${BUILD_DELTA_START}
     COMMAND "${CMAKE_COMMAND}" -DSTAMP_FILE=${BUILD_DELTA_START} -P 
"${BRLCAD_CMAKE_DIR}/scripts/timestamp.cmake"
     COMMENT ""
     )
-  add_custom_target(timestamp ALL
+add_custom_target(timestamp ALL
     COMMAND "${CMAKE_COMMAND}" -DMSG=\"Build Time:\" -P 
"${BRLCAD_CMAKE_DIR}/scripts/printtime.cmake"
     DEPENDS ${BUILD_DELTA_START}
     )
-  set_target_properties(timestamp PROPERTIES FOLDER "Compilation Utilities")
-  add_custom_target(buildtimedelta ALL
+set_target_properties(timestamp PROPERTIES FOLDER "Compilation Utilities")
+add_custom_target(buildtimedelta ALL
     COMMAND ${CMAKE_BINARY_DIR}/CMakeTmp/dreport${EXE_EXT} final 
${BUILD_DELTA_START} ${CONFIG_DELTA_START}
     COMMAND ${CMAKE_COMMAND} -E remove ${BUILD_DELTA_START}
     )
-  set_target_properties(buildtimedelta PROPERTIES FOLDER "Compilation 
Utilities")
+set_target_properties(buildtimedelta PROPERTIES FOLDER "Compilation Utilities")
 
-  # We want the timestamp to come first, so make ALL targets, depend on
-  # timestamp.  Similarly, buildtimedelta needs to depend on every target
-  # not excluded from the default build list.
+#------------------------------------------------------------------------------
+# We want the timestamp to come first, so make all targets depend on timestamp.
+# Similarly, buildtimedelta needs to depend on every target not excluded from
+# the default build list.  Doing this without function overrides for
+# bookkeeping drives a minimum CMake version requirement of 3.7, in order to
+# get the SUBDIRECTORIES and BUILDSYTEM_TARGETS properties.
 
-  # Libraries and executables are fairly straightforward
-  get_property(CMAKE_LIBRARY_TARGET_LIST GLOBAL PROPERTY 
CMAKE_LIBRARY_TARGET_LIST)
-  get_property(CMAKE_EXEC_TARGET_LIST GLOBAL PROPERTY CMAKE_EXEC_TARGET_LIST)
-  mark_as_advanced(CMAKE_LIBRARY_TARGET_LIST)
-  mark_as_advanced(CMAKE_EXEC_TARGET_LIST)
-  list(REMOVE_DUPLICATES CMAKE_LIBRARY_TARGET_LIST)
-  list(REMOVE_DUPLICATES CMAKE_EXEC_TARGET_LIST)
-  foreach(ctarget ${CMAKE_LIBRARY_TARGET_LIST} ${CMAKE_EXEC_TARGET_LIST})
-    if(TARGET ${ctarget})
-      add_dependencies(${ctarget} timestamp)
-      get_target_property(not_in_all ${ctarget} EXCLUDE_FROM_ALL)
-      get_target_property(not_in_default ${ctarget} EXCLUDE_FROM_DEFAULT_BUILD)
-      if(NOT not_in_all AND NOT not_in_default)
-       add_dependencies(buildtimedelta ${ctarget})
-      endif(NOT not_in_all AND NOT not_in_default)
-    endif(TARGET ${ctarget})
-  endforeach(ctarget ${CMAKE_LIBRARY_TARGET_LIST} ${CMAKE_EXEC_TARGET_LIST})
+# First, use the SUBDIRECTORIES property to build up a list of all
+# active directories in CMake:
+# https://cmake.org/cmake/help/latest/prop_dir/SUBDIRECTORIES.html
+#
+# We do this because we need to use get_property on them, and get_property will
+# produce an error if we give it a non-CMake processed directory.  As a side
+# benefit, it should also be considerably faster than using FILE_GLOB and
+# trying to trim down the results.
+set(ALL_DIRS)
+get_property(SUBDIRS DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY SUBDIRECTORIES)
+while(SUBDIRS)
+  # TODO - once we require 3.15.7 or greater, use list(POP_FRONT) for this...
+  list(GET SUBDIRS 0 CDIR)
+  list(REMOVE_AT SUBDIRS 0)
+  set(ALL_DIRS ${ALL_DIRS} ${CDIR})
+  get_property(CSUBDIRS DIRECTORY "${CDIR}" PROPERTY SUBDIRECTORIES)
+  set(SUBDIRS ${SUBDIRS} ${CSUBDIRS})
+endwhile(SUBDIRS)
 
-  # For the custom targets, we need to avoid circular dependencies
-  get_property(CMAKE_CUSTOM_TARGET_LIST GLOBAL PROPERTY 
CMAKE_CUSTOM_TARGET_LIST)
-  mark_as_advanced(CMAKE_CUSTOM_TARGET_LIST)
-  list(REMOVE_DUPLICATES CMAKE_CUSTOM_TARGET_LIST)
-  foreach(custtarget ${CMAKE_CUSTOM_TARGET_LIST})
-    if(NOT ${custtarget} MATCHES "timestamp")
-      add_dependencies(${custtarget} timestamp)
-    endif(NOT ${custtarget} MATCHES "timestamp")
-    if(NOT ${custtarget} MATCHES "buildtimedelta")
-      get_target_property(not_in_all ${custtarget} EXCLUDE_FROM_ALL)
-      get_target_property(not_in_default ${custtarget} 
EXCLUDE_FROM_DEFAULT_BUILD)
-      if(NOT not_in_all AND NOT not_in_default)
-       add_dependencies(buildtimedelta ${custtarget})
-      endif(NOT not_in_all AND NOT not_in_default)
-    endif(NOT ${custtarget} MATCHES "buildtimedelta")
-  endforeach(custtarget ${CMAKE_CUSTOM_TARGET_LIST})
+# Next, for all active directories, collect the list of targets using the
+# BUILDSYSTEM_TARGETS property set on each directory.
 
-  # Theoretical logic to handle external targets - not currently in use
-  get_property(CMAKE_EXTERNAL_TARGET_LIST GLOBAL PROPERTY 
CMAKE_EXTERNAL_TARGET_LIST)
-  mark_as_advanced(CMAKE_EXTERNAL_TARGET_LIST)
-  if(CMAKE_EXTERNAL_TARGET_LIST)
-    list(REMOVE_DUPLICATES CMAKE_EXTERNAL_TARGET_LIST)
-  endif(CMAKE_EXTERNAL_TARGET_LIST)
-  foreach(externaltarget ${CMAKE_EXTERNAL_TARGET_LIST})
-    get_target_property(target_confcmd ${externaltarget} _EP_CONFIGURE_COMMAND)
-    if(target_confcmd)
-      add_dependencies(${externaltarget} timestamp)
-      add_dependencies(buildtimedelta ${externaltarget})
-    endif(target_confcmd)
-  endforeach(externaltarget ${CMAKE_EXTERNAL_TARGET_LIST})
+# Iterate over all the SUBDIRECTORIES identified directories to build up the
+# comprehensive set.  As target names are unique, we don't need to worry about
+# removing duplicates.  Because we're using the set of all active directories
+# assembled above, this should collect all build targets we need to care about
+# for timestamping purposes.
+set(ALL_TARGETS)
+foreach(ad ${ALL_DIRS})
+  get_property(DIR_TARGETS DIRECTORY "${ad}" PROPERTY BUILDSYSTEM_TARGETS SET)
+  if (DIR_TARGETS)
+    get_property(DIR_TARGETS DIRECTORY "${ad}" PROPERTY BUILDSYSTEM_TARGETS)
+    set(ALL_TARGETS ${ALL_TARGETS} ${DIR_TARGETS})
+  endif (DIR_TARGETS)
+endforeach(ad ${ALL_DIRS})
 
-endif(NOT BRLCAD_IS_SUBBUILD)
+# Now, set up the target dependencies for tiemstamp and buildtimedelta.  These
+# dependencies will produce a build-tool-independent ordering that gives us the
+# timing behavior we want.
+foreach(ctarget ${ALL_TARGETS})
+  if(NOT ${ctarget} MATCHES "timestamp")
+    add_dependencies(${ctarget} timestamp)
+  endif(NOT ${ctarget} MATCHES "timestamp")
+  if(NOT ${ctarget} MATCHES "buildtimedelta")
+    get_target_property(not_in_all ${ctarget} EXCLUDE_FROM_ALL)
+    get_target_property(not_in_default ${ctarget} EXCLUDE_FROM_DEFAULT_BUILD)
+    if(NOT not_in_all AND NOT not_in_default)
+      add_dependencies(buildtimedelta ${ctarget})
+    endif(NOT not_in_all AND NOT not_in_default)
+  endif(NOT ${ctarget} MATCHES "buildtimedelta")
+endforeach(ctarget ${ALL_TARGETS})
 
+#------------------------------------------------------------------------------
+# Use the set of all directories assembled above to also set up distclean 
rules.
+# This eliminates the need to override add_subdirectory.  Needs CMake 3.7 for
+# BINARY_DIR property.
+foreach(ad ${ALL_DIRS})
+  get_property(BDIR DIRECTORY "${ad}" PROPERTY BINARY_DIR)
+  DISTCLEAN("${BDIR}/CMakeFiles")
+  DISTCLEAN("${BDIR}/cmake_install.cmake")
+  foreach(clearpattern ${DISTCLEAN_OUTFILES})
+    DISTCLEAN("${BDIR}/${clearpattern}")
+  endforeach(clearpattern ${DISTCLEAN_OUTFILES})
+endforeach(ad ${ALL_DIRS})
 
+#------------------------------------------------------------------------------
 # To set correct install paths for CMake at build time, rather than CMake
 # time, some rather special logic is necessary - a build target that needs
 # to be run when the current build type changes, and introspective scripting
@@ -2235,7 +2243,9 @@
   # do for BRL-CAD reporting purposes - must get the fully qualified path at 
build time.
   string(REPLACE "\${BUILD_TYPE}" "----BUILD_TYPE----" 
CMAKE_INSTALL_PREFIX_CFG "${CMAKE_INSTALL_PREFIX}")
   configure_file("${BRLCAD_CMAKE_DIR}/multiconfig_path_clean.cmake.in" 
"${CMAKE_BINARY_DIR}/CMakeTmp/multiconfig_path_clean.cmake" @ONLY)
+  DISTCLEAN("${CMAKE_BINARY_DIR}/CMakeTmp/multiconfig_path_clean.cmake")
   configure_file("${BRLCAD_CMAKE_DIR}/multiconfig_path_read.cmake.in" 
"${CMAKE_BINARY_DIR}/CMakeTmp/multiconfig_path_read.cmake" @ONLY)
+  DISTCLEAN("${CMAKE_BINARY_DIR}/CMakeTmp/multiconfig_path_read.cmake")
   if(EXISTS "${CMAKE_BINARY_DIR}/CMakeTmp/CURRENT_PATH")
     file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/CMakeTmp/CURRENT_PATH")
   endif(EXISTS "${CMAKE_BINARY_DIR}/CMakeTmp/CURRENT_PATH")
@@ -2260,6 +2270,7 @@
 if(NOT BRLCAD_IS_SUBBUILD)
 
   configure_file("${BRLCAD_CMAKE_DIR}/source_archive_setup.cmake.in" 
"${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/source_archive_setup.cmake" @ONLY)
+  DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/source_archive_setup.cmake")
 
   set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "BRL-CAD - a powerful cross-platform 
open source solid modeling system")
   set(CPACK_PACKAGE_VENDOR "BRL-CAD Development Team")
@@ -2403,10 +2414,15 @@
   set(CPACK_SOURCE_IGNORE_FILES "\\\\.svn/")
 
   configure_file("${BRLCAD_CMAKE_DIR}/BRLCAD_CPackOptions.cmake.in" 
"${CMAKE_BINARY_DIR}/BRLCAD_CPackOptions.cmake" @ONLY)
+  DISTCLEAN("${CMAKE_BINARY_DIR}/BRLCAD_CPackOptions.cmake")
   set(CPACK_PROJECT_CONFIG_FILE 
"${CMAKE_BINARY_DIR}/BRLCAD_CPackOptions.cmake")
 
   include(CPack)
 
+  DISTCLEAN("${CMAKE_BINARY_DIR}/CPackConfig.cmake")
+  DISTCLEAN("${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake")
+  DISTCLEAN("${CMAKE_BINARY_DIR}/DartConfiguration.tcl")
+
   # Some files to ignore for distcheck.  For this case
   # only, we add CMakeLists.txt (others are handled
   # by add_subdirectory wrapper
@@ -2544,6 +2560,7 @@
 get_property(CMAKE_DISTCLEAN_TARGET_LIST GLOBAL PROPERTY 
CMAKE_DISTCLEAN_TARGET_LIST)
 list(REMOVE_DUPLICATES CMAKE_DISTCLEAN_TARGET_LIST)
 configure_file("${BRLCAD_CMAKE_DIR}/distclean.cmake.in" 
"${BRLCAD_BINARY_DIR}/distclean.cmake" @ONLY)
+DISTCLEAN("${BRLCAD_BINARY_DIR}/distclean.cmake")
 if ("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
   add_custom_target(distclean
     COMMAND ${CMAKE_COMMAND} -P "${BRLCAD_BINARY_DIR}/distclean.cmake"

Modified: brlcad/branches/thirdparty_rework/NEWS
===================================================================
--- brlcad/branches/thirdparty_rework/NEWS      2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/NEWS      2020-10-17 16:19:38 UTC (rev 
77473)
@@ -13,6 +13,11 @@
 --- 2020-xx-xx  Release 7.32.2                                     ---
 ----------------------------------------------------------------------
 
+* fixed mged crash when there are no display managers - Sean Morrison
+* added pixcmp -n length flag for subset comparisons - Sean Morrison
+* added pixcmp -s same and -d different printing flags - Sean Morrison
+* updated non-shape objects list for search shape filter - Cliff Yapp
+* added volume type to search -type filters - Cliff Yapp
 * applied shorter default title in fast4-g conversions - Cliff Yapp
 * improved pixcmp support for subset image comparisons - Sean Morrison
 * added subtract subcommand to MGED analyze command - Cliff Yapp


Property changes on: brlcad/branches/thirdparty_rework/NEWS
___________________________________________________________________
Modified: svn:mergeinfo
## -9,4 +9,4 ##
 /brlcad/branches/osg/NEWS:62110-62113
 /brlcad/branches/prep-cache/NEWS:68236-68933
 /brlcad/branches/tcltk86/NEWS:68300-75257
-/brlcad/trunk/NEWS:75241-77302
\ No newline at end of property
+/brlcad/trunk/NEWS:75241-77302,77321-77472
\ No newline at end of property
Index: brlcad/branches/thirdparty_rework/bench
===================================================================
--- brlcad/branches/thirdparty_rework/bench     2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/bench     2020-10-17 16:19:38 UTC (rev 
77473)

Property changes on: brlcad/branches/thirdparty_rework/bench
___________________________________________________________________
Modified: svn:mergeinfo
## -8,4 +8,4 ##
 /brlcad/branches/osg/bench:62110-62113
 /brlcad/branches/prep-cache/bench:68236-68933
 /brlcad/branches/tcltk86/bench:68300-75257
-/brlcad/trunk/bench:75241-77320
\ No newline at end of property
+/brlcad/trunk/bench:75241-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/bench/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/bench/CMakeLists.txt      2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/bench/CMakeLists.txt      2020-10-17 
16:19:38 UTC (rev 77473)
@@ -15,6 +15,7 @@
 
 configure_file(run.sh "${CMAKE_CURRENT_BINARY_DIR}/benchmark" COPYONLY)
 install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/benchmark" DESTINATION 
${BIN_DIR})
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/benchmark")
 
 add_custom_command(
   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/benchmark-${CMAKE_CFG_INTDIR}-done

Modified: brlcad/branches/thirdparty_rework/bench/pixcmp.c
===================================================================
--- brlcad/branches/thirdparty_rework/bench/pixcmp.c    2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/bench/pixcmp.c    2020-10-17 16:19:38 UTC 
(rev 77473)
@@ -47,11 +47,18 @@
 #define FILE_ERROR 126
 
 /* exit codes for normal operation */
-#define OFF_BY_NONE 0
-#define OFF_BY_ONE  1
-#define OFF_BY_MANY 2
+#define EXIT_OFF_BY_NONE 0
+#define EXIT_OFF_BY_ONE  1
+#define EXIT_OFF_BY_MANY 2
 
+enum diff {
+    MATCHING,
+    OFF_BY_ONE,
+    OFF_BY_MANY,
+    MISSING
+};
 
+
 HIDDEN void
 usage(const char *name)
 {
@@ -59,27 +66,40 @@
     if (!name) {
        name = unknown;
     }
-    /* this must be split, ISO C90 has a max static string length of 509 */
-    bu_log("Usage: %s [OPTIONS] FILE1 [FILE2 [SKIP1 [SKIP2]]]\n%s", name,
-          "Compare two PIX image files pixel by pixel.\n\n"
-          "  -l   List pixel numbers and values for all pixels that differ.\n"
-          "  -b   Output and process by bytes instead of pixels.\n"
+
+    /* split to fit within ISO C90 max static string length < 509 chars */
+    bu_log("Usage: %s [OPTIONS] FILE1 [FILE2 [SKIP1 [SKIP2]]]\n"
+          "\n"
+          "  Compare two PIX files pixel by pixel (or byte by byte), 
optionally"
+          "  skipping initial pixels (or bytes) in one or both input files.\n"
+          "\n", name);
+    bu_log("Options:"
+          "  -b   Iterate and print by bytes instead of by pixels.\n"
+          "  -s   Print all that have the same matching values.\n"
+          "  -d   Print all that have different values.\n"
+          "  -q   Quiet.  Suppress printing header and summary.\n"
           "  -i SKIP\n"
-          "       Skip the first SKIP pixels of input (for FILE1 and 
FILE2)\n");
-    bu_log("  -i SKIP1:SKIP2\n"
-          "       Skip the first SKIP1 pixels in FILE1 and SKIP2 pixels in 
FILE2.\n"
-          "  -s   Silent output.  Only return an exit status.\n\n"
-          "If FILE is `-' or is missing, then input is read from standard 
input.\n"
-          "If the `-b' option is used, SKIP values are bytes instead of 
pixels.\n"
-          "Pixel numbers and bytes are indexed linearly from one.\n");
+          "       Discard initial SKIP pixels (or bytes w/ -b) in FILE1 and 
FILE2 input.\n"
+          "  -i SKIP1:SKIP2\n"
+          "       Skip initial SKIP1 pixels (or bytes w/ -b) in FILE1 and 
SKIP2 in FILE2.\n"
+          "  -n COUNT\n"
+          "       Compare COUNT pixels (or bytes w/ -b).  Stops by default at 
EOF.\n"
+          "\n");
+    bu_log("If either FILE is `-' or is missing, then input is read from 
standard input.\n"
+          "If FILE1 and FILE2 are both standard input, then values must be 
interleaved.\n"
+          "If the `-b' option is used, SKIP and COUNT values are bytes instead 
of pixels.\n"
+          "Pixel numbers and bytes are indexed linearly from one.\n"
+          "\n");
     return;
 }
 
 
 HIDDEN void
-handle_i_opt(const char *arg, size_t *skip1, size_t *skip2)
+handle_range_opt(const char *arg, size_t *skip1, size_t *skip2)
 {
     const char *endptr = arg;
+    long val;
+
     if ((arg == NULL) || ((skip1 == NULL) && (skip2 == NULL))) {
        /* nothing to do */
        return;
@@ -91,12 +111,14 @@
        /* probably empty string */
        if (skip2) {
            endptr++;
-           *skip2 = strtol(endptr, NULL, 10);
+           val = strtol(endptr, NULL, 10);
+           *skip2 = (val < 0) ? 0 : val;
        }
     } else if ((endptr == NULL) || (endptr[0] == '\0')) {
        /* no : found */
        if (skip2) {
-           *skip2 = strtol(arg, NULL, 10);
+           val = strtol(arg, NULL, 10);
+           *skip2 = (val < 0) ? 0 : val;
        }
        if (skip1 && skip2) {
            *skip1 = *skip2;
@@ -104,11 +126,13 @@
     } else if (endptr[0] == ':') {
        /* found : */
        if (skip1) {
-           *skip1 = strtol(arg, NULL, 10);
+           val = strtol(arg, NULL, 10);
+           *skip1 = (val < 0) ? 0 : val;
        }
        if (skip2) {
            endptr++; /* skip over : */
-           *skip2 = strtol(endptr, NULL, 10);
+           val = strtol(endptr, NULL, 10);
+           *skip2 = (val < 0) ? 0 : val;
        }
     } else {
        bu_exit(OPTS_ERROR, "Unexpected input processing [%s]\n", arg);
@@ -116,9 +140,65 @@
 }
 
 
+HIDDEN enum diff
+compare_rgb(int r1, int g1, int b1, int r2, int g2, int b2, size_t *matching, 
size_t *off1, size_t *offmany, size_t *missing)
+{
+    enum diff result = MISSING;
+
+    if ((r1 == r2 && r1 != -1)
+       && (g1 == g2 && g1 != -1)
+       && (b1 == b2 && b1 != -1))
+    {
+       result = MATCHING;
+       (*matching)++;
+    } else if (r1 == -1 || r2 == -1 || g1 == -1 || g2 == -1 || b1 == -1 || b2 
== -1) {
+       /* image sizes don't match (or other I/O error) */
+       result = MISSING;
+       (*missing)++;
+    } else if (((r1 != r2) && (g1 == g2) && (b1 == b2))
+              || ((r1 == r2) && (g1 != g2) && (b1 == b2))
+              || ((r1 == r2) && (g1 == g2) && (b1 != b2)))
+    {
+       /* off by one channel */
+       if (r1 != r2) {
+           if ((r1 > r2 ? r1 - r2 : r2 - r1) > 1) {
+               result = OFF_BY_MANY;
+               (*offmany)++;
+           } else {
+               result = OFF_BY_ONE;
+               (*off1)++;
+           }
+       } else if (g1 != g2) {
+           if ((g1 > g2 ? g1 - g2 : g2 - g1) > 1) {
+               result = OFF_BY_MANY;
+               (*offmany)++;
+           } else {
+               result = OFF_BY_ONE;
+               (*off1)++;
+           }
+       } else if (b1 != b2) {
+           if ((b1 > b2 ? b1 - b2 : b2 - b1) > 1) {
+               result = OFF_BY_MANY;
+               (*offmany)++;
+           } else {
+               result = OFF_BY_ONE;
+               (*off1)++;
+           }
+       }
+    } else {
+       result = OFF_BY_MANY;
+       (*offmany)++;
+    }
+
+    return result;
+}
+
+
 int
 main(int argc, char *argv[])
 {
+    const char *argv0 = argv[0];
+
     FILE *f1 = NULL;
     FILE *f2 = NULL;
     struct stat sf1 = {0};
@@ -127,35 +207,50 @@
     size_t matching = 0;
     size_t off1 = 0;
     size_t offmany = 0;
+    size_t missing = 0;
 
     int c;
-    int list_pixel_values = 0;
+    int list_diff = 0;
+    int list_same = 0;
     int print_bytes = 0;
-    int silent = 0;
+    int quiet = 0;
+
+    size_t bytes = 0;
     size_t f1_skip = 0;
     size_t f2_skip = 0;
-    size_t bytes = 0;
+    size_t stop_after = 0;
 
     bu_setprogname(argv[0]);
 
     /* process opts */
-    while ((c = bu_getopt(argc, argv, "lbi:s")) != -1) {
+    while ((c = bu_getopt(argc, argv, "sdbi:n:q?")) != -1) {
        switch (c) {
-           case 'l':
-               list_pixel_values = 1;
+           case 's':
+               list_same = 1;
                break;
+           case 'd':
+               list_diff = 1;
+               break;
            case 'b':
                print_bytes = 1;
                break;
            case 'i':
-               handle_i_opt(bu_optarg, &f1_skip, &f2_skip);
+               handle_range_opt(bu_optarg, &f1_skip, &f2_skip);
                break;
-           case 's':
-               silent = 1;
+           case 'n':
+           {
+               long num = strtol(bu_optarg, NULL, 10);
+               stop_after = (num < 0) ? 0 : num;
                break;
+           }
+           case 'q':
+               quiet = 1;
+               break;
+           case '?':
+           case 'h':
+               usage(argv0);
+               return 0;
            default:
-               bu_log("\n");
-               usage(argv[0]);
                exit(OPTS_ERROR);
        }
     }
@@ -165,17 +260,17 @@
     /* validate what is left over */
     if (argc < 1 || argc > 4) {
        bu_log("ERROR: incorrect number of arguments provided\n\n");
-       usage(argv[0]);
+       usage(argv0);
        exit(OPTS_ERROR);
     }
     if ((argc > 0 && !argv[0]) || (argc > 1 && !argv[1])) {
        bu_log("ERROR: bad filename\n\n");
-       usage(argv[0]);
+       usage(argv0);
        exit(OPTS_ERROR);
     }
     if ((argc > 2 && !argv[2]) || (argc > 3 && !argv[3])) {
        bu_log("ERROR: bad skip value\n\n");
-       usage(argv[0]);
+       usage(argv0);
        exit(OPTS_ERROR);
     }
 
@@ -187,13 +282,24 @@
        } else {
            snprintf(range, 64, "%s", argv[2]);
        }
-       handle_i_opt(range, &f1_skip, &f2_skip);
+       handle_range_opt(range, &f1_skip, &f2_skip);
     }
 
-    /* printf("Skip from FILE1: %ld and from FILE2: %ld\n", f1_skip, f2_skip); 
*/
     if (!print_bytes) {
+       if ((f1_skip > ((size_t)-1)/3)
+           || (f2_skip > ((size_t)-1)/3))
+       {
+           bu_log("ERROR: overflow, -i skip value(s) are too big {%zu:%zu}\n", 
f1_skip, f2_skip);
+           exit(OPTS_ERROR);
+       }
        f1_skip *= 3;
        f2_skip *= 3;
+       if (stop_after > ((size_t)-1)/3)
+       {
+           bu_log("ERROR: overflow, -n number is too big {%zu}\n", stop_after);
+           exit(OPTS_ERROR);
+       }
+       stop_after *= 3;
     }
 
     if (BU_STR_EQUAL(argv[0], "-")) {
@@ -202,6 +308,7 @@
        perror(argv[0]);
        exit(FILE_ERROR);
     }
+
     if ((argc < 2) || BU_STR_EQUAL(argv[1], "-")) {
        f2 = stdin;
     } else if ((f2 = fopen(argv[1], "rb")) == NULL) {
@@ -209,10 +316,20 @@
        exit(FILE_ERROR);
     }
 
+    setmode(fileno(stdin), O_BINARY);
+    /* we're writing out ascii */
+    /* setmode(fileno(stdout), O_BINARY); */
+
+    if (f1_skip != f2_skip && f1 == stdin && f2 == stdin) {
+       bu_exit(OPTS_ERROR, "ERROR: cannot skip the same input stream by 
different amounts\n");
+    }
+
     fstat(fileno(f1), &sf1);
     fstat(fileno(f2), &sf2);
 
-    if ((sf1.st_size - f1_skip) != (sf2.st_size - f2_skip)) {
+    bu_log("FILE1_size(%zu) FILE1_skip(%zu) FILE2_size(%zu) 
FILE2_skip(%zu)\n", (size_t)sf1.st_size, f1_skip, (size_t)sf2.st_size, f2_skip);
+
+    if (!quiet && ((sf1.st_size - f1_skip) != (sf2.st_size - f2_skip))) {
        bu_log("WARNING: Different image sizes detected\n");
        if (print_bytes) {
            bu_log("\t%s: %7llu bytes (%8llu bytes, skipping %7llu)\n",
@@ -225,99 +342,129 @@
            bu_log("\t%s: %7llu pixels (%8llu bytes, skipping %7llu)\n",
                   argv[1], (unsigned long long)((sf2.st_size - f2_skip)/3), 
(unsigned long long)sf2.st_size, (unsigned long long)f2_skip);
        }
-       bu_exit(1, "ERROR: Cannot pixcmp due to different images sizes 
(unimplemented).\n");
     }
 
+    /* make sure we read all bytes */
+    if (stop_after == 0) {
+       stop_after = FMAX((sf1.st_size - f1_skip), (sf2.st_size - f2_skip));
+       if (f1 == stdin && f2 == stdin) {
+           /* dual stdin is interleaved */
+           stop_after = (stop_after+1)/2;
+       }
+    }
+
+    /*
+    bu_log("mode is [%d] and [%d]\n", S_ISFIFO(sf1.st_mode), 
S_ISFIFO(sf2.st_mode));
+    bu_log("tty is [%d] and [%d]\n", isatty(fileno(f1)), isatty(fileno(f2)));
+    */
+
     /* skip requested pixels/bytes in FILE1 */
-    if (f1_skip && fseek(f1, f1_skip, SEEK_SET)) {
-       bu_log("ERROR: Unable to seek %zd %s%s in FILE1\n",
-              f1_skip,
-              print_bytes?"byte":"pixel",
-              f1_skip==1?"":"s");
-       perror("FILE1 fseek failure");
-       exit(FILE_ERROR);
+    if (f1_skip) {
+       if (S_ISFIFO(sf1.st_mode)) {
+           size_t skipped = 0;
+           for (skipped = 0; skipped < f1_skip; skipped++) {
+               (void)fgetc(f1);
+           }
+       } else if (fseek(f1, f1_skip, SEEK_SET)) {
+           bu_log("ERROR: Unable to seek %zd %s%s in FILE1\n",
+                  f1_skip,
+                  print_bytes?"byte":"pixel",
+                  f1_skip==1?"":"s");
+           perror("FILE1 fseek failure");
+           exit(FILE_ERROR);
+       }
     }
 
     /* skip requested pixels in FILE2 */
-    if (f2_skip && fseek(f2, f2_skip, SEEK_SET)) {
-       bu_log("ERROR: Unable to seek %zd %s%s in FILE2\n",
-              f1_skip,
-              print_bytes?"byte":"pixel",
-              f1_skip==1?"":"s");
-       perror("FILE2 fseek failure");
-       exit(FILE_ERROR);
+    if (f2_skip) {
+       if (S_ISFIFO(sf2.st_mode)) {
+           size_t skipped = 0;
+           for (skipped = 0; skipped < f2_skip; skipped++) {
+               (void)fgetc(f2);
+           }
+       } else if (fseek(f2, f2_skip, SEEK_SET)) {
+           bu_log("ERROR: Unable to seek %zd %s%s in FILE2\n",
+                  f2_skip,
+                  print_bytes?"byte":"pixel",
+                  f2_skip==1?"":"s");
+           perror("FILE2 fseek failure");
+           exit(FILE_ERROR);
+       }
     }
 
+    /* print header to stderr, output to stdout */
+    if (!quiet && (list_same || list_diff)) {
+       if (print_bytes) {
+           bu_log("#Byte FILE1 FILE2 LABEL\n");
+       } else {
+           bu_log("#Pixel\t(FILE1 R, G, B) (FILE2 R, G, B)\n");
+       }
+    }
+
     /* iterate over the pixels/bytes in the files */
-    while ((!feof(f1) && !feof(f2)) &&
-          (!ferror(f1) && !ferror(f2))) {
-       register int r1, r2, g1, g2, b1, b2;
+    while (bytes < stop_after) {
+       enum diff result;
+       int r1, r2, g1, g2, b1, b2;
        r1 = r2 = g1 = g2 = b1 = b2 = -1;
 
+       /* bu_log("\tbytes[%zu] < stop[%zu\n", bytes, stop_after); */
+
        r1 = fgetc(f1);
        r2 = fgetc(f2);
-       if (feof(f1) || feof(f2)) break;
        bytes++;
-       if (!print_bytes) {
+
+       if (print_bytes) {
+           /* replicate */
+           b1 = g1 = 0;
+           b2 = g2 = 0;
+       } else {
            g1 = fgetc(f1);
            g2 = fgetc(f2);
-           if (feof(f1) || feof(f2)) break;
            bytes++;
            b1 = fgetc(f1);
            b2 = fgetc(f2);
-           if (feof(f1) || feof(f2)) break;
            bytes++;
        }
 
-       if ((r1 == r2) && (g1 == g2) && (b1 == b2)) {
-           matching++;
-           continue;
-       }
+       result = compare_rgb(r1, g1, b1, r2, g2, b2, &matching, &off1, 
&offmany, &missing);
 
-       /* tabulate differing pixels */
-       if (((r1 != r2) && (g1 == g2) && (b1 == b2)) ||
-           ((r1 == r2) && (g1 != g2) && (b1 == b2)) ||
-           ((r1 == r2) && (g1 == g2) && (b1 != b2))) {
-           /* off by one channel */
-           if (r1 != r2) {
-               if ((r1 > r2 ? r1 - r2 : r2 - r1) > 1) {
-                   offmany++;
-               } else {
-                   off1++;
-               }
-           } else if (g1 != g2) {
-               if ((g1 > g2 ? g1 - g2 : g2 - g1) > 1) {
-                   offmany++;
-               } else {
-                   off1++;
-               }
-           } else if (b1 != b2) {
-               if ((b1 > b2 ? b1 - b2 : b2 - b1) > 1) {
-                   offmany++;
-               } else {
-                   off1++;
-               }
+       /* print them? */
+       if ((result==MATCHING && list_same)
+           || (result!=MATCHING && list_diff))
+       {
+           const char *label = NULL;
+           switch (result) {
+               case MATCHING:
+                   label = "MATCHING";
+                   break;
+               case OFF_BY_MANY:
+                   label = "OFF_BY_MANY";
+                   break;
+               case OFF_BY_ONE:
+                   label = "OFF_BY_ONE";
+                   break;
+               case MISSING:
+               default:
+                   label = "MISSING";
+                   break;
            }
-       } else {
-           /* off by many */
-           offmany++;
-       }
-
-       /* they're different, so print something */
-       if (list_pixel_values) {
            if (print_bytes) {
-               printf("%ld %3d %3d\n", bytes, r1, r2);
+               printf("%ld %3d %3d %s\n", bytes, r1, r2, label);
            } else {
-               printf("%ld\t(%3d, %3d, %3d)\t(%3d, %3d, %3d)\n", bytes / 3, 
r1, g1, b1, r2, g2, b2);
+               printf("%ld\t(%3d, %3d, %3d)\t(%3d, %3d, %3d) %s\n", bytes / 3, 
r1, g1, b1, r2, g2, b2, label);
            }
        }
     }
 
     /* print summary */
-    if (!silent) {
-       printf("pixcmp %s: %8zd matching, %8zd off by 1, %8zd off by many\n",
-              print_bytes?"bytes":"pixels",
-              matching, off1, offmany);
+    if (!quiet) {
+       printf("pixcmp %s: %8zd matching, %8zd off by 1, %8zd off by many",
+              print_bytes?"bytes":"pixels", matching, off1, offmany);
+       if (missing) {
+           printf(", %8zd missing\n", missing);
+       } else {
+           printf("\n");
+       }
     }
 
     /* check for errors */
@@ -326,21 +473,16 @@
        return FILE_ERROR;
     }
 
-    /* if files were of different lengths, consider it an error */
-    if (feof(f1) != feof(f2)) {
-       return FILE_ERROR;
-    }
-
     /* indicate how many differences there were overall */
-    if (offmany) {
-       return OFF_BY_MANY;
+    if (offmany || missing) {
+       return EXIT_OFF_BY_MANY;
     }
     if (off1) {
-       return OFF_BY_ONE;
+       return EXIT_OFF_BY_ONE;
     }
 
     /* Success! */
-    return OFF_BY_NONE;
+    return EXIT_OFF_BY_NONE;
 }
 
 

Modified: brlcad/branches/thirdparty_rework/bench/run.sh
===================================================================
--- brlcad/branches/thirdparty_rework/bench/run.sh      2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/bench/run.sh      2020-10-17 16:19:38 UTC 
(rev 77473)
@@ -608,17 +608,17 @@
     "$RT"
     $ECHO
     $ECHO "ERROR:  RT does not seem to work as expected"
-    $ECHO "        (output was [$out])"
+    $ECHO "        (returned $ret, output was [$out])"
     exit 2
 fi
 
 # sanity check: make sure $CMP runs
-out=`echo "" | eval \"$CMP\" - - 2>&1`
+out=`echo '\n\n\n\n\n' | eval \"$CMP\" - - 2>&1`
 ret=$?
 if test ! "x${ret}" = "x0" ; then
     $ECHO
     $ECHO "ERROR:  CMP does not seem to work as expected"
-    $ECHO "        (output was [$out])"
+    $ECHO "        (returned $ret, output was [$out])"
     exit 2
 fi
 
@@ -627,7 +627,7 @@
 if test ! "x${ret}" = "x0" ; then
     $ECHO
     $ECHO "ERROR:  ELP does not seem to work as expected"
-    $ECHO "        (output was [$out])"
+    $ECHO "        (returned $ret, output was [$out])"
     exit 2
 fi
 
@@ -1140,7 +1140,7 @@
        ls -la *.pix*
     fi
     $VERBOSE_ECHO "DEBUG: $CMP $PIX/${bench_testname}.pix 
${bench_testname}.pix"
-    cmp_result="`eval \\\"${CMP}\\\" \\\"${PIX}/${bench_testname}.pix\\\" 
${bench_testname}.pix 2>&1`"
+    cmp_result="`eval \\\"${CMP}\\\" \\\"${PIX}/${bench_testname}.pix\\\" 
${bench_testname}.pix 2>&1 | grep pixels`"
     ret=$?
 
     $ECHO "$cmp_result"

Index: brlcad/branches/thirdparty_rework/db
===================================================================
--- brlcad/branches/thirdparty_rework/db        2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/db        2020-10-17 16:19:38 UTC (rev 
77473)

Property changes on: brlcad/branches/thirdparty_rework/db
___________________________________________________________________
Modified: svn:mergeinfo
## -8,4 +8,4 ##
 /brlcad/branches/osg/db:62110-62113
 /brlcad/branches/prep-cache/db:68236-68933
 /brlcad/branches/tcltk86/db:68300-75257
-/brlcad/trunk/db:75241-75612,75819-77232
\ No newline at end of property
+/brlcad/trunk/db:75241-75612,75819-77232,77321-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/db/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/db/CMakeLists.txt 2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/db/CMakeLists.txt 2020-10-17 16:19:38 UTC 
(rev 77473)
@@ -57,6 +57,7 @@
     set(OUTPUT_FILE "${output_file}")
     # Use the model name for the script, since the output file is specific to 
this input
     configure_file("${CMAKE_SOURCE_DIR}/db/conv_run.cmake.in" 
"${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake" @ONLY)
+    DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
 
     # Define the target
     add_custom_command(
@@ -226,12 +227,13 @@
   ${G_SAMPLE_MODELS}
   CMakeLists.txt
   aet.rt
+  conv_run.cmake.in
   cornell.rt
   cube.rt
   db.php
   include/ctype.inc
   include/debug.inc
-)
+  )
 
 # Local Variables:
 # tab-width: 8

Index: brlcad/branches/thirdparty_rework/doc
===================================================================
--- brlcad/branches/thirdparty_rework/doc       2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/doc       2020-10-17 16:19:38 UTC (rev 
77473)

Property changes on: brlcad/branches/thirdparty_rework/doc
___________________________________________________________________
Modified: svn:mergeinfo
## -9,4 +9,4 ##
 /brlcad/branches/osg/doc:62110-62113
 /brlcad/branches/prep-cache/doc:68236-68933
 /brlcad/branches/tcltk86/doc:68300-75257
-/brlcad/trunk/doc:75098-75115,75241-77320
\ No newline at end of property
+/brlcad/trunk/doc:75098-75115,75241-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/doc/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/CMakeLists.txt        2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/CMakeLists.txt        2020-10-17 
16:19:38 UTC (rev 77473)
@@ -203,6 +203,7 @@
 ADD_DOC(documentation_mged_old_DATA mged_old)
 
 configure_file(pad_file.xml.in "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" 
@ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml")
 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" DESTINATION 
${DOC_DIR})
 
 CMAKEFILES(

Modified: brlcad/branches/thirdparty_rework/doc/docbook/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/CMakeLists.txt        
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/CMakeLists.txt        
2020-10-17 16:19:38 UTC (rev 77473)
@@ -17,6 +17,7 @@
   # Apache FOP needs a couple of config files set up
   set(srcdir ${CMAKE_CURRENT_SOURCE_DIR})
   configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/fop.xconf.in 
${CMAKE_BINARY_DIR}/doc/docbook/fop.xconf)
+  DISTCLEAN("${CMAKE_BINARY_DIR}/doc/docbook/fop.xconf")
 endif(BRLCAD_EXTRADOCS_PDF)
 
 # For the html files, we need brlcad.css

Index: brlcad/branches/thirdparty_rework/doc/docbook/articles
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/articles      2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/articles      2020-10-17 
16:19:38 UTC (rev 77473)

Property changes on: brlcad/branches/thirdparty_rework/doc/docbook/articles
___________________________________________________________________
Modified: svn:mergeinfo
## -1,4 +1,4 ##
 
/brlcad/branches/RELEASE/doc/docbook/articles:70323-70333,71915-72242,72525-72534,72826-72858,74376-74454
 
/brlcad/branches/brep-debug/doc/docbook/articles:69168,69927,69995-69996,70148-70149,70347-70349,70377,70526-70527,71006-71007,71009-71022,71046-71047,71049,71096-71100
 /brlcad/branches/tcltk86/doc/docbook/articles:68300-75257
-/brlcad/trunk/doc/docbook/articles:75098-75115,75241-75612
\ No newline at end of property
+/brlcad/trunk/doc/docbook/articles:75098-75115,75241-75612,77321-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/doc/docbook/articles/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/articles/CMakeLists.txt       
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/articles/CMakeLists.txt       
2020-10-17 16:19:38 UTC (rev 77473)
@@ -2,11 +2,13 @@
 if(BRLCAD_EXTRADOCS_HTML)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-article-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-article-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-article-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_HTML)
 
 if(BRLCAD_EXTRADOCS_PHP)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-article-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-article-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-article-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PHP)
 
 # Files for PDF products
@@ -14,6 +16,7 @@
   # Style sheet for XSLT transformation to PDF
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-article-fo-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-article-fo-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-article-fo-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PDF)
 
 # For HTML and FO (FO is an intermediate file used in the

Index: brlcad/branches/thirdparty_rework/doc/docbook/books
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/books 2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/books 2020-10-17 16:19:38 UTC 
(rev 77473)

Property changes on: brlcad/branches/thirdparty_rework/doc/docbook/books
___________________________________________________________________
Modified: svn:mergeinfo
## -1,4 +1,4 ##
 
/brlcad/branches/RELEASE/doc/docbook/books:70323-70333,71915-72242,72525-72534,72826-72858,74376-74454
 
/brlcad/branches/brep-debug/doc/docbook/books:69168,69927,69995-69996,70148-70149,70347-70349,70377,70526-70527,71006-71007,71009-71022,71046-71047,71049,71096-71100
 /brlcad/branches/tcltk86/doc/docbook/books:68300-75257
-/brlcad/trunk/doc/docbook/books:75241-75612
\ No newline at end of property
+/brlcad/trunk/doc/docbook/books:75241-75612,77321-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/doc/docbook/books/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/books/CMakeLists.txt  
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/books/CMakeLists.txt  
2020-10-17 16:19:38 UTC (rev 77473)
@@ -2,11 +2,13 @@
 if(BRLCAD_EXTRADOCS_HTML)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-book-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-book-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-book-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_HTML)
 
 if(BRLCAD_EXTRADOCS_PHP)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-book-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-book-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-book-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PHP)
 
 # Files for PDF products
@@ -14,6 +16,7 @@
   # Style sheet for XSLT transformation to PDF
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-book-fo-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-book-fo-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-book-fo-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PDF)
 
 # For HTML and FO (FO is an intermediate file used in the
@@ -89,10 +92,12 @@
 set(CURRENT_TITLE "An Overview of BRL-CAD")
 
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/resources/brlcad/tutorial-cover-template.xsl.in
   ${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeI-cover.xsl @ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeI-cover.xsl")
 
 string(REPLACE " " "%20" TUTORIAL_COVER_XSL 
${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeI-cover.xsl)
 
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/resources/brlcad/tutorial-template.xsl.in
   ${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeI.xsl @ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeI.xsl")
 
 set(XSL_FO_STYLESHEET 
"${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeI.xsl")
 
@@ -103,10 +108,12 @@
 set(CURRENT_TITLE "Introduction to MGED")
 
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/resources/brlcad/tutorial-cover-template.xsl.in
   ${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeII-cover.xsl @ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeII-cover.xsl")
 
 string(REPLACE " " "%20" TUTORIAL_COVER_XSL 
${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeII-cover.xsl)
 
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/resources/brlcad/tutorial-template.xsl.in
   ${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeII.xsl @ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeII.xsl")
 
 set(XSL_FO_STYLESHEET 
"${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeII.xsl")
 
@@ -118,10 +125,12 @@
 set(CURRENT_TITLE "Principles of Effective Modeling")
 
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/resources/brlcad/tutorial-cover-template.xsl.in
   ${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIII-cover.xsl 
@ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIII-cover.xsl")
 
 string(REPLACE " " "%20" TUTORIAL_COVER_XSL 
${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIII-cover.xsl)
 
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/resources/brlcad/tutorial-template.xsl.in
   ${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIII.xsl @ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIII.xsl")
 
 set(XSL_FO_STYLESHEET 
"${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIII.xsl")
 
@@ -133,10 +142,12 @@
 set(CURRENT_TITLE "Converting Geometry Between BRL-CAD and Other Formats")
 
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/resources/brlcad/tutorial-cover-template.xsl.in
   ${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIV-cover.xsl @ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIV-cover.xsl")
 
 string(REPLACE " " "%20" TUTORIAL_COVER_XSL 
${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIV-cover.xsl)
 
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/resources/brlcad/tutorial-template.xsl.in
   ${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIV.xsl @ONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIV.xsl")
 
 set(XSL_FO_STYLESHEET 
"${CMAKE_CURRENT_BINARY_DIR}/BRL-CAD_Tutorial_Series-VolumeIV.xsl")
 

Modified: brlcad/branches/thirdparty_rework/doc/docbook/devguides/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/devguides/CMakeLists.txt      
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/devguides/CMakeLists.txt      
2020-10-17 16:19:38 UTC (rev 77473)
@@ -2,11 +2,13 @@
 if(BRLCAD_EXTRADOCS_HTML)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_HTML)
 
 if(BRLCAD_EXTRADOCS_PHP)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PHP)
 
 # Style sheet for XSLT transformation to manual pages
@@ -13,6 +15,7 @@
 if(BRLCAD_EXTRADOCS_MAN)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-man-stylesheet.xsl.in
     ${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_MAN)
 
 # Files for PDF
@@ -19,6 +22,7 @@
 if(BRLCAD_EXTRADOCS_PDF)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-man-fo-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-fo-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-fo-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PDF)
 
 # For HTML, MAN and FO (FO is an intermediate file used in the
@@ -54,6 +58,10 @@
 ADD_DOC(devguides_EN_IMAGES html/devguides/images)
 ADD_DOCBOOK("HTML;PHP;PDF" devguides_EN devguides/en devguides_EN_IMAGES_cp)
 
+CMAKEFILES(
+  CMakeLists.txt
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Index: brlcad/branches/thirdparty_rework/doc/docbook/lessons
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/lessons       2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/lessons       2020-10-17 
16:19:38 UTC (rev 77473)

Property changes on: brlcad/branches/thirdparty_rework/doc/docbook/lessons
___________________________________________________________________
Modified: svn:mergeinfo
## -1,4 +1,4 ##
 
/brlcad/branches/RELEASE/doc/docbook/lessons:70323-70333,71915-72242,72525-72534,72826-72858,74376-74454
 
/brlcad/branches/brep-debug/doc/docbook/lessons:69168,69927,69995-69996,70148-70149,70347-70349,70377,70526-70527,71006-71007,71009-71022,71046-71047,71049,71096-71100
 /brlcad/branches/tcltk86/doc/docbook/lessons:68300-75257
-/brlcad/trunk/doc/docbook/lessons:75241-75612
\ No newline at end of property
+/brlcad/trunk/doc/docbook/lessons:75241-75612,77321-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/doc/docbook/lessons/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/lessons/CMakeLists.txt        
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/lessons/CMakeLists.txt        
2020-10-17 16:19:38 UTC (rev 77473)
@@ -2,10 +2,12 @@
 if(BRLCAD_EXTRADOCS_HTML)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-lesson-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-lesson-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-lesson-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_HTML)
 if(BRLCAD_EXTRADOCS_PHP)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-lesson-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-lesson-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-lesson-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PHP)
 
 # Files for PDF products
@@ -13,6 +15,7 @@
   # Style sheet for XSLT transformation to PDF
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-lesson-fo-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-lesson-fo-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-lesson-fo-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PDF)
 
 # For HTML and FO (FO is an intermediate file used in the

Modified: 
brlcad/branches/thirdparty_rework/doc/docbook/presentations/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/presentations/CMakeLists.txt  
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/presentations/CMakeLists.txt  
2020-10-17 16:19:38 UTC (rev 77473)
@@ -2,16 +2,19 @@
 if(BRLCAD_EXTRADOCS_HTML)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-presentation-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-presentation-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-presentation-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_HTML)
 
 if(BRLCAD_EXTRADOCS_PHP)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-presentation-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-presentation-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-presentation-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PHP)
 
 if(BRLCAD_EXTRADOCS_PPT)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/presentation.xsl.in
     ${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/presentation.xsl)
+  DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/presentation.xsl")
 endif(BRLCAD_EXTRADOCS_PPT)
 
 # Files for PDF products
@@ -19,6 +22,7 @@
   # Style sheet for XSLT transformation to PDF
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-presentation-fo-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-presentation-fo-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-presentation-fo-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PDF)
 
 # For HTML and FO (FO is an intermediate file used in the

Modified: 
brlcad/branches/thirdparty_rework/doc/docbook/resources/brlcad/CMakeLists.txt
===================================================================
--- 
brlcad/branches/thirdparty_rework/doc/docbook/resources/brlcad/CMakeLists.txt   
    2020-10-17 15:51:52 UTC (rev 77472)
+++ 
brlcad/branches/thirdparty_rework/doc/docbook/resources/brlcad/CMakeLists.txt   
    2020-10-17 16:19:38 UTC (rev 77473)
@@ -11,12 +11,15 @@
 
 # Common xsl for all outputs
 configure_file(brlcad-common.xsl.in 
${CMAKE_CURRENT_BINARY_DIR}/brlcad-common.xsl)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/brlcad-common.xsl")
 
 # Fonts definition
 configure_file(brlcad-fonts.xsl.in 
${CMAKE_CURRENT_BINARY_DIR}/brlcad-fonts.xsl)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/brlcad-fonts.xsl")
 
 # Wordpress
 configure_file(wordpress.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/wordpress.xsl)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/wordpress.xsl")
 
 # Make sure distcheck knows about all files in directory
 set(ignore_files

Modified: 
brlcad/branches/thirdparty_rework/doc/docbook/specifications/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/specifications/CMakeLists.txt 
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/specifications/CMakeLists.txt 
2020-10-17 16:19:38 UTC (rev 77473)
@@ -2,11 +2,13 @@
 if(BRLCAD_EXTRADOCS_HTML)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-specification-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-specification-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-specification-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_HTML)
 
 if(BRLCAD_EXTRADOCS_PHP)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-specification-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-specification-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-specification-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PHP)
 
 # Files for PDF products
@@ -14,6 +16,7 @@
   # Style sheet for XSLT transformation to PDF
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-specification-fo-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-specification-fo-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-specification-fo-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PDF)
 
 # For HTML and FO (FO is an intermediate file used in the

Modified: brlcad/branches/thirdparty_rework/doc/docbook/system/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/system/CMakeLists.txt 
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/system/CMakeLists.txt 
2020-10-17 16:19:38 UTC (rev 77473)
@@ -2,11 +2,13 @@
 if(BRLCAD_EXTRADOCS_HTML)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_HTML)
 
 if(BRLCAD_EXTRADOCS_PHP)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-xhtml-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PHP)
 
 # Style sheet for XSLT transformation to manual pages
@@ -13,6 +15,7 @@
 if(BRLCAD_EXTRADOCS_MAN)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-man-stylesheet.xsl.in
     ${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_MAN)
 
 # Files for PDF
@@ -19,6 +22,7 @@
 if(BRLCAD_EXTRADOCS_PDF)
   
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/brlcad/brlcad-man-fo-stylesheet.xsl.in
     
${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-fo-stylesheet.xsl)
+  
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../resources/brlcad/brlcad-man-fo-stylesheet.xsl")
 endif(BRLCAD_EXTRADOCS_PDF)
 
 # For HTML, MAN and FO (FO is an intermediate file used in the

Modified: brlcad/branches/thirdparty_rework/doc/docbook/system/man1/pixcmp.xml
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/system/man1/pixcmp.xml        
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/system/man1/pixcmp.xml        
2020-10-17 16:19:38 UTC (rev 77473)
@@ -25,74 +25,132 @@
 
 
 <refsect1 xml:id='description'><title>DESCRIPTION</title>
-<para><command>pixcmp</command>
-is a program to compare two BRL-CAD pix image files pixel by pixel.  The 
following <emphasis remap='I'>OPTIONS</emphasis> are available:</para>
+
+<para><command>pixcmp</command> is a program to compare two BRL-CAD
+pix image files pixel by pixel (or byte by byte), optionally skipping
+initial pixels (or bytes) in one or both input files.  The following
+<emphasis remap='I'>OPTIONS</emphasis> are available:</para>
+
 <variablelist remap='TP'>
   <varlistentry>
-  <term><option>-l</option></term>
+  <term><option>-b</option></term>
   <listitem>
-<para>Output pixel numbers, counting from 1, and values for all pixels that 
differ.</para>
+    <para>Use bytes instead of pixels for both processing and output.
+    This can be useful for comparing BW images or other data files.
+    With this option, the <option>-i</option> SKIP values should be
+    specified as bytes instead of pixels.</para>
   </listitem>
   </varlistentry>
   <varlistentry>
-  <term><option>-b</option></term>
+  <term><option>-s</option></term>
   <listitem>
-<para>Use bytes instead of pixels for both processing and output.  With this 
option, the <option>-i</option> SKIP values should be specified as bytes 
instead of pixels.</para>
+    <para>Output a line per pixel (or per byte if using the
+    <option>-b</option> option) where the values are the same.  Each
+    line includes the pixel (or byte) number counting from 1, the
+    respective input values, and a label.</para>
   </listitem>
   </varlistentry>
   <varlistentry>
-  <term><option>-i</option> <replaceable>SKIP</replaceable></term>
+  <term><option>-d</option></term>
   <listitem>
-<para>Skip the first SKIP pixels of input (for FILE1 and FILE2).</para>
+    <para>Output a line per pixel (or per byte if using the
+    <option>-b</option> option) where the values are different.  Each
+    line includes the pixel (or byte) number counting from 1, the
+    respective input values, and a label.</para>
   </listitem>
   </varlistentry>
   <varlistentry>
-  <term><option>-i</option> <replaceable>SKIP1</replaceable>:<emphasis 
remap='I'>SKIP2</emphasis></term>
+  <term><option>-q</option></term>
   <listitem>
-<para>Skip the first SKIP1 pixels of FILE1 and the first SKIP2 pixels of 
FILE2.</para>
+    <para>Be more quiet, suppressing additional printing typically
+    sent to standard error.  With the <option>-s</option> and/or
+    <option>-d</option> options, respective lines will still be
+    printed to standard output, but without header and summary
+    information getting sent to standard error.</para>
+    <para>This option has no affect on error printing that can result
+    during abnormal exit of pixcmp.</para>
   </listitem>
   </varlistentry>
   <varlistentry>
-  <term><option>-s</option></term>
+  <term><option>-i</option> <replaceable>SKIP</replaceable></term>
   <listitem>
-<para>Silent output.  Only return an exit status.</para>
+    <para>Skip the first SKIP pixels (or bytes if using the 
<option>-b</option> option) of input for FILE1 and FILE2.</para>
   </listitem>
   </varlistentry>
+  <varlistentry>
+  <term><option>-i</option> <replaceable>SKIP1</replaceable>:<emphasis 
remap='I'>SKIP2</emphasis></term>
+  <listitem>
+    <para>Skip the first SKIP1 pixels (or bytes if using the
+    <option>-b</option> option) of FILE1 and first SKIP2 pixels in
+    FILE2.</para>
+  </listitem>
+  </varlistentry>
 </variablelist>
 
-<para>SKIP1 and SKIP2 are the number of pixels to skip in each file.</para>
+<para>SKIP1 and SKIP2 are the number of pixels (or bytes if using the
+<option>-b</option> option) to skip in each file.</para>
 
 <para>If FILE is `<emphasis remap='B'>-</emphasis>` or missing,
-<command>pixcmp</command>
-reads from the standard input.</para>
+<command>pixcmp</command> reads from the standard input.  If FILE1 and
+FILE2 are both standard input, then values must be interleaved (e.g.,
+r1r2g1g2b1b2r1r2g1g2b1b2...etc... for r1g1b1 and r2g2b2 from two
+separate input streams).</para>
 </refsect1>
 
 <refsect1 xml:id='return_values'><title>RETURN VALUES</title>
-<para>The
-<command>pixcmp</command>
-utility returns <literal>0</literal> if there are no differences, 
<literal>1</literal> if there are only off-by-one differences, 
<literal>2</literal> if there are off-by-many errors, <literal>126</literal> if 
there are file processing problems, and <literal>127</literal> if there are 
argument processing or usage errors.</para>
+<para>The <command>pixcmp</command> utility returns
+<literal>0</literal> if there are no differences, <literal>1</literal>
+if there are only off-by-one differences, <literal>2</literal> if
+there are off-by-many errors, <literal>126</literal> if there are file
+processing problems, and <literal>127</literal> if there are argument
+processing or usage errors.</para>
 </refsect1>
 
 <refsect1 xml:id='examples'><title>EXAMPLES</title>
 <variablelist remap='TP'>
   <varlistentry>
-  <term><userinput>pixcmp -l file1 file2</userinput></term>
+  <term><userinput>pixcmp -d file1 file2</userinput></term>
   <listitem>
 <!-- .br -->
-<para>The two files are compared pixel by pixel with each difference printed 
instead of just the summary.</para>
+    <para>The two files are compared pixel by pixel with each
+    difference printed instead of just the summary.</para>
   </listitem>
   </varlistentry>
+
   <varlistentry>
   <term><emphasis remap='B'>pixdiff file1.pix file2.pix | pixcmp - 
file3.pix</emphasis></term>
   <listitem>
 <!-- .br -->
-<para>The
-<emphasis remap='I'>pixdiff</emphasis>
-tool compares the pixels in file1.pix with those in file2.pix and then outputs 
a resulting `diff` image which is then processed by
-<command>pixcmp</command>
-as input and compared against file3.pix, reporting on the differences.</para>
+    <para>The <emphasis remap='I'>pixdiff</emphasis> tool compares the
+    pixels in file1.pix with those in file2.pix and then outputs a
+    resulting `diff` image which is then processed by
+    <command>pixcmp</command> as input and compared against file3.pix,
+    reporting on the differences.</para>
   </listitem>
   </varlistentry>
+
+  <varlistentry>
+  <term><userinput>echo -n "aabcddeg" | pixcmp -b -s -d - -</userinput></term>
+  <listitem>
+<!-- .br -->
+    <para>Here, pixcmp reads interleaved data from the system
+    <command>echo</command> command (-n avoids a trailing newline)
+    provided via standard input.  For each pair of characters (i.e.,
+    bytes), it reports their status:</para>
+
+    <para>
+    <literallayout class="normal">
+#Byte FILE1 FILE2 LABEL
+1  97  97 MATCHING
+2  98  99 OFF_BY_ONE
+3 100 100 MATCHING
+4 101 103 OFF_BY_MANY
+pixcmp bytes:        2 matching,        1 off by 1,        1 off by many
+    </literallayout>
+    </para>
+  </listitem>
+  </varlistentry>
+
 </variablelist>
 </refsect1>
 

Modified: 
brlcad/branches/thirdparty_rework/doc/docbook/system/man5/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/system/man5/CMakeLists.txt    
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/system/man5/CMakeLists.txt    
2020-10-17 16:19:38 UTC (rev 77473)
@@ -1,5 +1,6 @@
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/attributes.xml.in
   ${CMAKE_CURRENT_BINARY_DIR}/attributes.xml COPYONLY)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/attributes.xml")
 
 add_custom_command(
   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/attr_std_table.xml
@@ -35,7 +36,10 @@
 set(attribute_DEPS attr_std_list_xml attr_std_table_xml)
 
 ADD_DOCBOOK("HTML;PHP;MAN5;PDF" man5_EN man5 "${attribute_DEPS}")
-CMAKEFILES(CMakeLists.txt)
+CMAKEFILES(
+  CMakeLists.txt
+  attributes.xml.in
+  )
 
 # Local Variables:
 # tab-width: 8

Modified: brlcad/branches/thirdparty_rework/doc/docbook/system/mann/search.xml
===================================================================
--- brlcad/branches/thirdparty_rework/doc/docbook/system/mann/search.xml        
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/doc/docbook/system/mann/search.xml        
2020-10-17 16:19:38 UTC (rev 77473)
@@ -584,6 +584,15 @@
            object whose internal definition indiciates it is of that type.  
Currently
            such objects are possible with "bot" and "brep" objects.
          </para>
+         <para>
+           The the pattern <emphasis remap="B">volume</emphasis> can be used 
as a mirror
+           of plate, in that it will report objects that clearly define a 
non-implicit
+           solid volume.  Its determination is local - for example, combs 
aren't matched
+           because a comb may be made up of non-volumetric objects.  In 
particular,
+           plate mode objects will not match because their volume is implicit, 
and
+           (for example) surface mode BoTs will not match because they don't 
define a
+           volume.
+         </para>
        </listitem>
       </varlistentry>
     </variablelist>

Index: brlcad/branches/thirdparty_rework/include
===================================================================
--- brlcad/branches/thirdparty_rework/include   2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/include   2020-10-17 16:19:38 UTC (rev 
77473)

Property changes on: brlcad/branches/thirdparty_rework/include
___________________________________________________________________
Modified: svn:mergeinfo
## -10,4 +10,4 ##
 /brlcad/branches/osg/include:62110-62113
 /brlcad/branches/prep-cache/include:68236-68933
 /brlcad/branches/tcltk86/include:68300-75257
-/brlcad/trunk/include:75098-75115,75241-77232
\ No newline at end of property
+/brlcad/trunk/include:75098-75115,75241-77232,77321-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/include/analyze/info.h
===================================================================
--- brlcad/branches/thirdparty_rework/include/analyze/info.h    2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/include/analyze/info.h    2020-10-17 
16:19:38 UTC (rev 77473)
@@ -42,7 +42,7 @@
 struct region_pair {
     struct bu_list l;
     union {
-       char *name;
+       const char *name;
        struct region *r1;
     } r;
     struct region *r2;

Modified: brlcad/branches/thirdparty_rework/include/bio.h
===================================================================
--- brlcad/branches/thirdparty_rework/include/bio.h     2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/include/bio.h     2020-10-17 16:19:38 UTC 
(rev 77473)
@@ -91,9 +91,55 @@
 /* the S_IS* macros should replace the S_IF*'s
    already defined in C99 compliant compilers
    this is the work-around for older compilers */
+#ifndef S_ISBLK
+#  ifdef S_IFBLK
+#    define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK)
+#  else
+#    define S_ISBLK(mode) (0)
+#  endif
+#endif
+#ifndef S_ISCHR
+#  ifdef S_IFCHR
+#    define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)
+#  else
+#    define S_ISCHR(mode) (0)
+#  endif
+#endif
 #ifndef S_ISDIR
-#   define S_ISDIR(_st_mode) (((_st_mode) & S_IFMT) == S_IFDIR)
+#  ifdef S_IFDIR
+#    define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
+#  else
+#    define S_ISDIR(mode) (0)
+#  endif
 #endif
+#ifndef S_ISFIFO
+#  ifdef S_IFIFO
+#    define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
+#  else
+#    define S_ISFIFO(mode) (0)
+#  endif
+#endif
+#ifndef S_ISLNK
+#  ifdef S_IFLNK
+#    define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)
+#  else
+#    define S_ISLNK(mode) (0)
+#  endif
+#endif
+#ifndef S_ISREG
+#  ifdef S_IFREG
+#    define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
+#  else
+#    define S_ISREG(mode) (0)
+#  endif
+#endif
+#ifndef S_ISSOCK
+#  ifdef S_IFSOCK
+#    define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
+#  else
+#    define S_ISSOCK(mode) (0)
+#  endif
+#endif
 
 #endif /* BIO_H */
 

Modified: brlcad/branches/thirdparty_rework/include/tclcad.h
===================================================================
--- brlcad/branches/thirdparty_rework/include/tclcad.h  2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/include/tclcad.h  2020-10-17 16:19:38 UTC 
(rev 77473)
@@ -518,13 +518,16 @@
  * Tcl specific I/O handlers
  */
 struct tclcad_io_data {
-       Tcl_Channel chan_stdin;
-    Tcl_Channel chan_stdout;
-    Tcl_Channel chan_stderr;
     Tcl_Interp *interp;
     int io_mode;
+    void *state;
 };
+TCLCAD_EXPORT struct tclcad_io_data *
+tclcad_create_io_data();
 TCLCAD_EXPORT void
+tclcad_destroy_io_data(struct tclcad_io_data *d);
+
+TCLCAD_EXPORT void
 tclcad_create_io_handler(struct ged_subprocess *p, bu_process_io_t d, 
ged_io_func_t callback, void *data);
 TCLCAD_EXPORT void
 tclcad_delete_io_handler(struct ged_subprocess *p, bu_process_io_t d);

Deleted: 
brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Command_Wrappers.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Command_Wrappers.cmake  
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Command_Wrappers.cmake  
2020-10-17 16:19:38 UTC (rev 77473)
@@ -1,158 +0,0 @@
-# TODO:  3.7 has a new property that may help eliminate the need to
-# do the wrappers below (wrapping CMake functions in this manner
-# is officially discouraged, it causes problems..)
-#
-# 
https://cmake.org/cmake/help/latest/prop_dir/BUILDSYSTEM_TARGETS.html#prop_dir:BUILDSYSTEM_TARGETS
-#
-# Between that and a couple other notes below, we may be able to
-# eliminate most of the wrappers now.  configure_file we may need
-# to turn into our own function, but if we're managing external
-# build systems with ExternalProject_Add now that becomes more
-# practical.  Worth doing to get us grounded on officially
-# supported CMake features.
-
-
-#---------------------------------------------------------------------
-# By default (as of version 2.8.2) CMake does not provide access to
-# global lists of executable and library targets.  This is useful
-# in a number of situations related to formulating custom rules and
-# target dependency management.  To avoid the necessity of replacing
-# add_library and add_executable calls with custom macros, override
-# the function names and call the _add_* functions to access the CMake
-# functionality previously available under the add_* functions. See
-# http://www.cmake.org/pipermail/cmake/2010-September/039388.html
-
-# To allow a hypothetical parent build to disable this mechanism and
-# replace it, we wrap the whole show in an IF conditional.  To avoid
-# the distcheck setup, the parent file should define the variable
-# BRLCAD_IS_SUBBUILD to ON.  Note that this also disables the
-# liblib prefix check in add_library, making that the responsibility
-# of the parent build as well, and disables the mechanism for ensuring
-# that the timing code runs at the correct points during the build.
-
-# We also need to provide bookkeeping logic here for the distribution
-# verification or "distcheck" routines that will validate the state
-# of the source tree against that expected and accounted for in the
-# build files.  The global coverage needed for the purpose results in
-# the add_library/add_executable command override mechanism having
-# to serve two purposes at once; since we only override these functions
-# once the logic for both jobs is intertwined below.
-
-
-# Functions in CMake have local variable scope,
-  # hence the use of properties to allow access to directory-specific
-  # and global information scopes.
-  define_property(GLOBAL PROPERTY CMAKE_LIBRARY_TARGET_LIST BRIEF_DOCS 
"libtarget list" FULL_DOCS "Library target list")
-  define_property(GLOBAL PROPERTY CMAKE_EXEC_TARGET_LIST BRIEF_DOCS "exec 
target list" FULL_DOCS "Executable target list")
-  define_property(GLOBAL PROPERTY CMAKE_CUSTOM_TARGET_LIST BRIEF_DOCS "custom 
target list" FULL_DOCS "Custom target list")
-  define_property(GLOBAL PROPERTY CMAKE_EXTERNAL_TARGET_LIST BRIEF_DOCS 
"external target list" FULL_DOCS "External target list")
-  mark_as_advanced(CMAKE_LIBRARY_TARGET_LIST)
-  mark_as_advanced(CMAKE_EXEC_TARGET_LIST)
-  mark_as_advanced(CMAKE_CUSTOM_TARGET_LIST)
-  mark_as_advanced(CMAKE_EXTERNAL_TARGET_LIST)
-
-  # Override and wrap add_library.  While we're at it, avoid doubling up
-  # on the lib prefix for libraries if the target name is lib<target>
-  function(add_library name)
-    _add_library(${name} ${ARGN})
-    if(${name} MATCHES "^lib*")
-      set_target_properties(${name} PROPERTIES PREFIX "")
-    endif(${name} MATCHES "^lib*")
-
-    # TODO - the mechanism below should eventually be replaced by a proper
-    # feature in CMake, possibly using BUILDSYSTEM_TARGETS
-    set(add_lib_to_list 1)
-    foreach(libarg ${ARGN})
-      if("${libarg}" STREQUAL "INTERFACE")
-       set(add_lib_to_list 0)
-      endif("${libarg}" STREQUAL "INTERFACE")
-    endforeach(libarg ${ARGN})
-    if (add_lib_to_list)
-      set_property(GLOBAL APPEND PROPERTY CMAKE_LIBRARY_TARGET_LIST ${name})
-    endif (add_lib_to_list)
-  endfunction(add_library)
-
-  # Override and wrap add_executable
-  function(add_executable name)
-    _add_executable(${name} ${ARGN})
-
-    # TODO - the mechanism below should eventually be replaced by a proper
-    # feature in CMake, possibly using BUILDSYSTEM_TARGETS
-    set_property(GLOBAL APPEND PROPERTY CMAKE_EXEC_TARGET_LIST ${name})
-  endfunction(add_executable)
-
-  # Override and wrap add_custom_target
-  function(add_custom_target name)
-    _add_custom_target(${name} ${ARGN})
-
-    # TODO - the mechanism below should eventually be replaced by a proper
-    # feature in CMake, possibly using BUILDSYSTEM_TARGETS
-    set_property(GLOBAL APPEND PROPERTY CMAKE_CUSTOM_TARGET_LIST ${name})
-  endfunction(add_custom_target)
-
-  # Note that at the moment we do not need to override CMake's external
-  # project mechanisms because CMake does not use them, but if that changes
-  # in the future an override will need to be added here - probably of the
-  # ExternalProject_Add functionality.
-
-  # Override and wrap configure_file.  In the case of configure_file, we'll
-  # check that the file is part of the source tree and not itself a
-  # generated file, but not reject full-path entries since there are quite a
-  # few of them. This means that, unlike CMAKEFILES's reliance on full vs.
-  # relative path comparisons, generated files supplied to configure_file
-  # need to have the GENERATED property set in order to reliably tell which
-  # files should be added to the build system's lists.  Not
-  # so critical with not-in-src-dir builds, but makes a big difference
-  # spotting files to avoid when all generated files have source directory
-  # prefixes.
-  function(configure_file file targetfile)
-    _configure_file(${file} ${targetfile} ${ARGN})
-    if (NOT SUPPRESS_GENERATED_TAG)
-      # Tag output from configure with the GENERATED tag
-      set_source_files_properties(${targetfile} PROPERTIES GENERATED TRUE)
-      # If it's a generated file, don't register it
-      get_property(IS_GENERATED SOURCE ${file} PROPERTY GENERATED)
-      if(NOT IS_GENERATED)
-       get_filename_component(item_absolute ${file} ABSOLUTE)
-       # If we're not in the source dir, we can do some extra checking.
-       if(NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
-         IS_SUBPATH("${CMAKE_BINARY_DIR}" "${item_absolute}" SUBPATH_TEST)
-       else(NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
-         set(SUBPATH_TEST "0")
-       endif(NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
-       if("${SUBPATH_TEST}" STREQUAL "0")
-         IS_SUBPATH("${CMAKE_SOURCE_DIR}" "${item_absolute}" SUBPATH_TEST)
-         if("${SUBPATH_TEST}" STREQUAL "1")
-           set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES 
"${item_absolute}")
-         endif("${SUBPATH_TEST}" STREQUAL "1")
-       else("${SUBPATH_TEST}" STREQUAL "0")
-         message(WARNING "The generated file ${file} is passed to 
configure_file but does not have the GENERATED source file property set in 
CMake.  It is HIGHLY recommended that the GENERATED property be set for this 
file in \"${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt\" using a command with the 
following form:\nset_source_files_properties(<file> PROPERTIES GENERATED 
TRUE)\n(or in \"${CMAKE_SOURCE_DIR}/src/other/CMakeLists.txt\" for third party 
components with their own build system.)\n")
-       endif("${SUBPATH_TEST}" STREQUAL "0")
-      endif(NOT IS_GENERATED)
-      if(NOT ${targetfile} MATCHES "distclean")
-       DISTCLEAN(${targetfile})
-      endif(NOT ${targetfile} MATCHES "distclean")
-    endif (NOT SUPPRESS_GENERATED_TAG)
-  endfunction(configure_file)
-
-  # Override and wrap add_subdirectory.
-  function(add_subdirectory name)
-    _add_subdirectory(${name} ${ARGN})
-
-    # TODO - try to come up with some good way to do this bookkeeping without
-    # having to override add_subdirectory...
-    #
-    # see https://cmake.org/pipermail/cmake-developers/2015-July/025730.html
-    # for some work related to this...  the SOURCE_DIR and SOURCES properties
-    # went in in CMake 3.4.  Once we can require that as a minimum version, we
-    # can probably revisit at least part of this by getting a list of source
-    # directories for all targets at the end of the build and setting
-    # properties then.
-    DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/${name}/CMakeFiles")
-    DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/${name}/cmake_install.cmake")
-    foreach(clearpattern ${DISTCLEAN_OUTFILES})
-      DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/${name}/${clearpattern}")
-    endforeach(clearpattern ${DISTCLEAN_OUTFILES})
-  endfunction(add_subdirectory)
-
-

Modified: brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Targets.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Targets.cmake   
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Targets.cmake   
2020-10-17 16:19:38 UTC (rev 77473)
@@ -433,6 +433,10 @@
   # If we need it, set up the OBJECT library build
   if(USE_OBJECT_LIBS)
     add_library(${libname}-obj OBJECT ${lsrcslist})
+    if(${libname} MATCHES "^lib*")
+      set_target_properties(${libname}-obj PROPERTIES PREFIX "")
+    endif(${libname} MATCHES "^lib*")
+
     set(lsrcslist $<TARGET_OBJECTS:${libname}-obj>)
     set_target_properties(${libname}-obj PROPERTIES FOLDER "BRL-CAD OBJECT 
Libraries${SUBFOLDER}")
 
@@ -472,6 +476,9 @@
   if(L_SHARED OR (BUILD_SHARED_LIBS AND NOT L_STATIC))
 
     add_library(${libname} SHARED ${lsrcslist} ${L_SHARED_SRCS})
+    if(${libname} MATCHES "^lib*")
+      set_target_properties(${libname} PROPERTIES PREFIX "")
+    endif(${libname} MATCHES "^lib*")
 
     # Set the standard build definitions for all BRL-CAD targets
     target_compile_definitions(${libname} PRIVATE BRLCADBUILD HAVE_CONFIG_H)
@@ -490,6 +497,9 @@
       set(libstatic ${libname}-static)
     endif(L_STATIC)
     add_library(${libstatic} STATIC ${lsrcslist} ${L_STATIC_SRCS})
+    if(${libstatic} MATCHES "^lib*")
+      set_target_properties(${libstatic} PROPERTIES PREFIX "")
+    endif(${libstatic} MATCHES "^lib*")
 
     # Set the standard build definitions for all BRL-CAD targets
     target_compile_definitions(${libstatic} PRIVATE BRLCADBUILD HAVE_CONFIG_H)
@@ -954,6 +964,7 @@
     else (${testname}_TEST_SCRIPT)
       configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${testname}.cmake.in" 
"${CMAKE_CURRENT_BINARY_DIR}/${testname}.cmake" @ONLY)
     endif (${testname}_TEST_SCRIPT)
+    DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/${testname}.cmake")
 
     if (TARGET ${${testname}_EXEC})
       add_test(NAME ${testname} COMMAND "${CMAKE_COMMAND}" 
-DEXEC=$<TARGET_FILE:${${testname}_EXEC}> -P 
"${CMAKE_CURRENT_BINARY_DIR}/${testname}.cmake")

Modified: brlcad/branches/thirdparty_rework/misc/CMake/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/CMakeLists.txt 2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/CMake/CMakeLists.txt 2020-10-17 
16:19:38 UTC (rev 77473)
@@ -80,6 +80,7 @@
   compat/test_strtok_r.c
   configure_prefix.sh
   configure_suffix.sh
+  date_delta.cpp
   distcheck_in_src_dir.cmake.in
   distcheck_no_tcl.cmake.in
   distcheck_repo_verify.cmake.in

Modified: brlcad/branches/thirdparty_rework/misc/CMake/Distcheck.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/Distcheck.cmake        
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/CMake/Distcheck.cmake        
2020-10-17 16:19:38 UTC (rev 77473)
@@ -54,6 +54,7 @@
 
   # Set up the script that will be used to verify the source archives
   configure_file("${BRLCAD_CMAKE_DIR}/distcheck_repo_verify.cmake.in" 
"${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/distcheck_repo_verify.cmake" @ONLY)
+  DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/distcheck_repo_verify.cmake")
 
   # Define the repository verification build target
   add_custom_target(distcheck-repo_verify
@@ -135,6 +136,7 @@
 
       # Based on the build command, generate a distcheck target definition 
from the template
       configure_file(${distcheck_template_file} 
"${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/distcheck_target_${TARGET_SUFFIX}.cmake" 
@ONLY)
+      
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/distcheck_target_${TARGET_SUFFIX}.cmake")
       
include("${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/distcheck_target_${TARGET_SUFFIX}.cmake")
 
       # Keep track of the distcheck targets

Modified: brlcad/branches/thirdparty_rework/misc/CMake/DocBook.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/DocBook.cmake  2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/CMake/DocBook.cmake  2020-10-17 
16:19:38 UTC (rev 77473)
@@ -250,6 +250,7 @@
       if(NOT "${outputs}" STREQUAL "")
        string(MD5 path_md5 "${CMAKE_CURRENT_SOURCE_DIR}/${fname}")
        configure_file(${BRLCAD_CMAKE_DIR}/docbook.cmake.in 
${CMAKE_CURRENT_BINARY_DIR}/dbp_${fname_root}-${path_md5}.cmake @ONLY)
+       
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/dbp_${fname_root}-${path_md5}.cmake")
        add_custom_command(
          OUTPUT ${outputs}
          COMMAND ${CMAKE_COMMAND} -P 
${CMAKE_CURRENT_BINARY_DIR}/dbp_${fname_root}-${path_md5}.cmake

Modified: brlcad/branches/thirdparty_rework/misc/CMake/FindGL.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/FindGL.cmake   2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/CMake/FindGL.cmake   2020-10-17 
16:19:38 UTC (rev 77473)
@@ -172,7 +172,7 @@
   if(SEARCH_64BIT)
     set(64BIT_DIRS "/usr/lib64/X11;/usr/lib64;/usr/lib/x86_64-linux-gnu")
   else(SEARCH_64BIT)
-    set(32BIT_DIRS "/usr/lib/X11;/usr/lib;/usr/lib/i386-linux-gnu")
+    set(32BIT_DIRS 
"/usr/lib/X11;/usr/lib;/usr/lib/i386-linux-gnu;/usr/lib/arm-linux-gnueabihf")
   endif(SEARCH_64BIT)
 
   set(OPENGL_LIB_SEARCH_PATH

Modified: brlcad/branches/thirdparty_rework/misc/CMake/FindX11.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/FindX11.cmake  2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/CMake/FindX11.cmake  2020-10-17 
16:19:38 UTC (rev 77473)
@@ -169,7 +169,7 @@
       set(64BIT_DIRS ${64BIT_DIRS} /usr/lib/X11 /usr/lib)
     endif(EXISTS "/usr/lib32" OR NOT EXISTS "/usr/lib64")
   else(SEARCH_64BIT)
-    set(32BIT_DIRS "/usr/lib32/X11;/usr/lib32;/usr/lib/i386-linux-gnu")
+    set(32BIT_DIRS 
"/usr/lib32/X11;/usr/lib32;/usr/lib/i386-linux-gnu;/usr/lib/arm-linux-gnueabihf")
     if(EXISTS "/usr/lib64" OR NOT EXISTS "/usr/lib32")
       set(32BIT_DIRS ${32BIT_DIRS} /usr/lib/X11 /usr/lib)
     endif(EXISTS "/usr/lib64" OR NOT EXISTS "/usr/lib32")

Copied: brlcad/branches/thirdparty_rework/misc/CMake/date_delta.cpp (from rev 
77472, brlcad/trunk/misc/CMake/date_delta.cpp)
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/date_delta.cpp                 
        (rev 0)
+++ brlcad/branches/thirdparty_rework/misc/CMake/date_delta.cpp 2020-10-17 
16:19:38 UTC (rev 77473)
@@ -0,0 +1,48 @@
+/*                  D A T E _ D E L T A . C P P
+ * BRL-CAD
+ *
+ * Published in 2020 by the United States Government.
+ * This work is in the public domain.
+ *
+ */
+/** @file date_delta.cpp
+ *
+ * Delta calculations using https://github.com/HowardHinnant/date, which
+ * is close to what is being considered for C++20.
+ *
+ */
+
+#include "date.h"
+#include <iostream>
+
+int
+main()
+{
+    long t1 = 1602012807;
+    long t2 = 1602114000;
+    std::time_t s1 = std::time_t(t1);
+    std::time_t s2 = std::time_t(t2);
+    std::chrono::system_clock::time_point tp1 = 
std::chrono::system_clock::from_time_t(s1);
+    std::chrono::system_clock::time_point tp2 = 
std::chrono::system_clock::from_time_t(s2);
+
+    auto dd = date::floor<date::days>(tp2) - date::floor<date::days>(tp1);
+    if (dd.count())
+       std::cout << "delta(dys): " << dd.count() << "\n";
+
+    auto dtime = 
date::make_time(std::chrono::duration_cast<std::chrono::milliseconds>(tp2-tp1));
+    if (dtime.hours().count())
+       std::cout << "delta(hrs): " << dtime.hours().count() << "\n";
+    if (dtime.minutes().count())
+       std::cout << "delta(min): " << dtime.minutes().count() << "\n";
+    if (dtime.seconds().count())
+       std::cout << "delta(sec): " << dtime.seconds().count() << "\n";
+}
+
+// Local Variables:
+// tab-width: 8
+// mode: C++
+// c-basic-offset: 4
+// indent-tabs-mode: t
+// c-file-style: "stroustrup"
+// End:
+// ex: shiftwidth=4 tabstop=8

Modified: brlcad/branches/thirdparty_rework/misc/pkgconfig/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/misc/pkgconfig/CMakeLists.txt     
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/pkgconfig/CMakeLists.txt     
2020-10-17 16:19:38 UTC (rev 77473)
@@ -60,6 +60,7 @@
 foreach(pkgfile ${pkgconfig_DATA})
   string(REGEX REPLACE "([0-9a-z_-]*).pc.in" "\\1" filename_root "${pkgfile}")
   configure_file(${pkgfile} ${CMAKE_CURRENT_BINARY_DIR}/${filename_root}.pc 
@ONLY)
+  DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/${filename_root}.pc")
   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${filename_root}.pc DESTINATION 
${LIB_DIR}/pkgconfig)
 endforeach(pkgfile ${pkgconfig_DATA})
 

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libexslt/CMakeLists.txt
===================================================================
--- 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libexslt/CMakeLists.txt   
    2020-10-17 15:51:52 UTC (rev 77472)
+++ 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libexslt/CMakeLists.txt   
    2020-10-17 16:19:38 UTC (rev 77473)
@@ -6,6 +6,7 @@
 
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/exsltconfig.h.in
   ${CMAKE_CURRENT_BINARY_DIR}/../include/libexslt/exsltconfig.h)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../include/libexslt/exsltconfig.h")
 
 SET(libexslt_srcs
   src/common.c

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/CMakeLists.txt 
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/CMakeLists.txt 
2020-10-17 16:19:38 UTC (rev 77473)
@@ -151,14 +151,17 @@
 
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/libxml/xmlversion.h.in
   ${CMAKE_CURRENT_BINARY_DIR}/../include/libxml/xmlversion.h)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../include/libxml/xmlversion.h")
 
 IF(WIN32)
-  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/libxml/xmlwin32version.h.in
-    ${CMAKE_CURRENT_BINARY_DIR}/../include/libxml/xmlwin32version.h)
+       
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/libxml/xmlwin32version.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/../include/libxml/xmlwin32version.h)
+       
DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../include/libxml/xmlwin32version.h")
 ENDIF(WIN32)
 
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
-  ${CMAKE_CURRENT_BINARY_DIR}/../include/libxml/config.h)
+       ${CMAKE_CURRENT_BINARY_DIR}/../include/libxml/config.h)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../include/libxml/config.h")
 
 add_definitions(-DHAVE_CONFIG_H)
 

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxslt/CMakeLists.txt
===================================================================
--- 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxslt/CMakeLists.txt    
    2020-10-17 15:51:52 UTC (rev 77472)
+++ 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxslt/CMakeLists.txt    
    2020-10-17 16:19:38 UTC (rev 77473)
@@ -76,10 +76,12 @@
 SET(LIBXSLT_VERSION_EXTRA "-BRLCAD")
 
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
-  ${CMAKE_CURRENT_BINARY_DIR}/../include/libxslt/config.h)
+       ${CMAKE_CURRENT_BINARY_DIR}/../include/libxslt/config.h)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../include/libxslt/config.h")
 
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/xsltconfig.h.in
   ${CMAKE_CURRENT_BINARY_DIR}/../include/libxslt/xsltconfig.h)
+DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/../include/libxslt/xsltconfig.h")
 
 SET(libxslt_srcs
   src/attributes.c

Index: brlcad/branches/thirdparty_rework/regress
===================================================================
--- brlcad/branches/thirdparty_rework/regress   2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/regress   2020-10-17 16:19:38 UTC (rev 
77473)

Property changes on: brlcad/branches/thirdparty_rework/regress
___________________________________________________________________
Modified: svn:mergeinfo
## -10,4 +10,4 ##
 /brlcad/branches/osg/regress:62110-62113
 /brlcad/branches/prep-cache/regress:68236-68933
 /brlcad/branches/tcltk86/regress:68300-75257
-/brlcad/trunk/regress:75241-77232
\ No newline at end of property
+/brlcad/trunk/regress:75241-77232,77321-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/regress/icv/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/regress/icv/CMakeLists.txt        
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/regress/icv/CMakeLists.txt        
2020-10-17 16:19:38 UTC (rev 77473)
@@ -122,6 +122,8 @@
   m35.ppm.tbz2
   m35.dpix.tbz2
   m35.bw.tbz2
+  regress-icv_export.cmake.in
+  regress-icv_import.cmake.in
   )
 
 # Local Variables:

Modified: brlcad/branches/thirdparty_rework/regress/nurbs/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/regress/nurbs/CMakeLists.txt      
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/regress/nurbs/CMakeLists.txt      
2020-10-17 16:19:38 UTC (rev 77473)
@@ -37,9 +37,10 @@
 DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/regress-nurbs_${NHIT_NAME}.log)
 
 CMAKEFILES(
+  CMakeLists.txt
   brep-3dm.tar.bz2
+  regress-nurbs-test.cmake.in
   sph.g
-  CMakeLists.txt
   )
 
 # Local Variables:

Modified: brlcad/branches/thirdparty_rework/regress/pkg/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/regress/pkg/CMakeLists.txt        
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/regress/pkg/CMakeLists.txt        
2020-10-17 16:19:38 UTC (rev 77473)
@@ -13,6 +13,7 @@
 
 CMAKEFILES(
   CMakeLists.txt
+  regress-pkg.cmake.in
   )
 # Local Variables:
 # tab-width: 8

Modified: brlcad/branches/thirdparty_rework/src/art/art.cpp
===================================================================
--- brlcad/branches/thirdparty_rework/src/art/art.cpp   2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/src/art/art.cpp   2020-10-17 16:19:38 UTC 
(rev 77473)
@@ -85,14 +85,15 @@
 #  pragma GCC diagnostic ignored "-Wfloat-equal"
 #  pragma GCC diagnostic ignored "-Wunused-parameter"
 #  pragma GCC diagnostic ignored "-Wpedantic"
-#  pragma GCC diagnostic ignored "-Wclass-memaccess"
 #  pragma GCC diagnostic ignored "-Wignored-qualifiers"
+#  if (__GNUC__ >= 8)
+#    pragma GCC diagnostic ignored "-Wclass-memaccess"
+#  endif
 #endif
 #if defined(__clang__)
 #  pragma clang diagnostic ignored "-Wfloat-equal"
 #  pragma clang diagnostic ignored "-Wunused-parameter"
 #  pragma clang diagnostic ignored "-Wpedantic"
-#  pragma clang diagnostic ignored "-Wclass-memaccess"
 #  pragma clang diagnostic ignored "-Wignored-qualifiers"
 #endif
 

Modified: brlcad/branches/thirdparty_rework/src/art/art.h
===================================================================
--- brlcad/branches/thirdparty_rework/src/art/art.h     2020-10-17 15:51:52 UTC 
(rev 77472)
+++ brlcad/branches/thirdparty_rework/src/art/art.h     2020-10-17 16:19:38 UTC 
(rev 77473)
@@ -74,14 +74,15 @@
 #  pragma GCC diagnostic ignored "-Wfloat-equal"
 #  pragma GCC diagnostic ignored "-Wunused-parameter"
 #  pragma GCC diagnostic ignored "-Wpedantic"
-#  pragma GCC diagnostic ignored "-Wclass-memaccess"
 #  pragma GCC diagnostic ignored "-Wignored-qualifiers"
+#  if (__GNUC__ >= 8)
+#    pragma GCC diagnostic ignored "-Wclass-memaccess"
+#  endif
 #endif
 #if defined(__clang__)
 #  pragma clang diagnostic ignored "-Wfloat-equal"
 #  pragma clang diagnostic ignored "-Wunused-parameter"
 #  pragma clang diagnostic ignored "-Wpedantic"
-#  pragma clang diagnostic ignored "-Wclass-memaccess"
 #  pragma clang diagnostic ignored "-Wignored-qualifiers"
 #endif
 

Modified: brlcad/branches/thirdparty_rework/src/art/brlcadplugin.cpp
===================================================================
--- brlcad/branches/thirdparty_rework/src/art/brlcadplugin.cpp  2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/src/art/brlcadplugin.cpp  2020-10-17 
16:19:38 UTC (rev 77473)
@@ -74,14 +74,15 @@
 #  pragma GCC diagnostic ignored "-Wfloat-equal"
 #  pragma GCC diagnostic ignored "-Wunused-parameter"
 #  pragma GCC diagnostic ignored "-Wpedantic"
-#  pragma GCC diagnostic ignored "-Wclass-memaccess"
 #  pragma GCC diagnostic ignored "-Wignored-qualifiers"
+#  if (__GNUC__ >= 8)
+#    pragma GCC diagnostic ignored "-Wclass-memaccess"
+#  endif
 #endif
 #if defined(__clang__)
 #  pragma clang diagnostic ignored "-Wfloat-equal"
 #  pragma clang diagnostic ignored "-Wunused-parameter"
 #  pragma clang diagnostic ignored "-Wpedantic"
-#  pragma clang diagnostic ignored "-Wclass-memaccess"
 #  pragma clang diagnostic ignored "-Wignored-qualifiers"
 #endif
 

Modified: brlcad/branches/thirdparty_rework/src/libbg/spsr/MAT.inl
===================================================================
--- brlcad/branches/thirdparty_rework/src/libbg/spsr/MAT.inl    2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/src/libbg/spsr/MAT.inl    2020-10-17 
16:19:38 UTC (rev 77473)
@@ -142,7 +142,7 @@
        if(j+1>=ii)
                return;
        ii=midPoint[i*eCount+j];
-       if(ii>=0)
+       if((int)ii>=0)
        {
                tIndex.idx[0] = int( i );
                tIndex.idx[1] = int( j );

Modified: brlcad/branches/thirdparty_rework/src/libbg/spsr/SPSR.cpp
===================================================================
--- brlcad/branches/thirdparty_rework/src/libbg/spsr/SPSR.cpp   2020-10-17 
15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/src/libbg/spsr/SPSR.cpp   2020-10-17 
16:19:38 UTC (rev 77473)
@@ -40,10 +40,12 @@
 #  pragma GCC diagnostic ignored "-Wsign-compare"
 #  pragma GCC diagnostic ignored "-Wunused-value"
 #  pragma GCC diagnostic ignored "-Wmisleading-indentation"
-#  pragma GCC diagnostic ignored "-Wclass-memaccess"
 #  pragma GCC diagnostic ignored "-Wunused-but-set-variable"
 #  pragma GCC diagnostic ignored "-Wparentheses"
 #  pragma GCC diagnostic ignored "-Wreturn-type"
+#  if (__GNUC__ >= 8)
+#    pragma GCC diagnostic ignored "-Wclass-memaccess"
+#  endif
 #endif
 #if defined(__clang__)
 #  pragma clang diagnostic ignored "-Wunknown-warning-option"

Modified: brlcad/branches/thirdparty_rework/src/libbn/tests/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/src/libbn/tests/CMakeLists.txt    
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/src/libbn/tests/CMakeLists.txt    
2020-10-17 16:19:38 UTC (rev 77473)
@@ -33,10 +33,8 @@
 
 # Generate bn_test.c file and bnild it
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../..)
-set(SUPPRESS_GENERATED_TAG ON)
 configure_file(bn_test.c.in "${CMAKE_CURRENT_BINARY_DIR}/bn_test.c" @ONLY)
 DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/bn_test.c")
-set(SUPPRESS_GENERATED_TAG OFF)
 BRLCAD_ADDEXEC(bn_test "${CMAKE_CURRENT_BINARY_DIR}/bn_test.c" libbn TEST)
 
 # Housekeeping for included source files
@@ -1140,11 +1138,14 @@
 add_test(NAME bn_vlist_cmd_cnt_45 COMMAND bn_test vlist 45)
 add_test(NAME bn_vlist_cmd_cnt_500 COMMAND bn_test vlist 500)
 
+CMAKEFILES(
+  CMakeLists.txt
+  bntester.dat
+  bn_test.c.in
+  poly_cubic_roots.c
+  poly_quartic_roots.c
+  )
 
-CMAKEFILES(poly_cubic_roots.c poly_quartic_roots.c)
-CMAKEFILES(bntester.dat)
-CMAKEFILES(CMakeLists.txt)
-
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/thirdparty_rework/src/libbrep/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/src/libbrep/CMakeLists.txt        
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/src/libbrep/CMakeLists.txt        
2020-10-17 16:19:38 UTC (rev 77473)
@@ -49,18 +49,6 @@
   tools/util.cpp
   )
 
-set(libbrep_ignored_files
-  tools/tools.h
-  brep_except.h
-  cdt/cdt.h
-  cdt/mesh.h
-  cdt/RTree.h
-  PullbackCurve.h
-  shape_recognition/shape_recognition.h
-  shape_recognition/torus.cpp
-  )
-CMAKEFILES(${libbrep_ignored_files})
-
 BRLCAD_ADDLIB(libbrep "${LIBBREP_SOURCES}" 
"libbg;libbn;libbu;${OPENNURBS_LIBRARY};${POLY2TRI_LIBRARY};${WINSOCK_LIB};${RPCRT_LIB};${STDCXX_LIBRARIES}")
 set_target_properties(libbrep PROPERTIES VERSION 20.0.1 SOVERSION 20)
 
@@ -72,7 +60,19 @@
 
 add_subdirectory(tests)
 
-CMAKEFILES(CMakeLists.txt)
+CMAKEFILES(
+  CMakeLists.txt
+  PullbackCurve.h
+  brep_defines.h
+  brep_except.h
+  cdt/RTree.h
+  cdt/cdt.h
+  cdt/mesh.h
+  debug_plot.h
+  shape_recognition/shape_recognition.h
+  shape_recognition/torus.cpp
+  tools/tools.h
+  )
 
 # Local Variables:
 # tab-width: 8

Modified: brlcad/branches/thirdparty_rework/src/libbrep/tests/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/src/libbrep/tests/CMakeLists.txt  
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/src/libbrep/tests/CMakeLists.txt  
2020-10-17 16:19:38 UTC (rev 77473)
@@ -1,22 +1,26 @@
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
 
-set(distcheck_files
+BRLCAD_ADDEXEC(test_brep_ppx ppx.cpp "libbrep"  NO_INSTALL)
+add_test(NAME brep_ppx COMMAND test_brep_ppx)
+
+CMAKEFILES(
+  CMakeLists.txt
   ayam_hyperbolid.3dm
-  single_bad_edge.cdtmesh
-  plate_mode_samples.g
-  plate_mode_samples_rhino.stp
-  plate_mode_samples_creo.stp
+  brep_cdt_mesh.cpp
   cyl_hole.g
   cyls_holes.g
   freecad_surface.stp
   nurbs_csg.g
+  plate_mode_samples.g
+  plate_mode_samples_creo.stp
+  plate_mode_samples_rhino.stp
+  single_bad_edge.cdtmesh
+  test_curve_intersect.cpp
+  test_point_intersect.cpp
   vsp.stp
   )
 
-BRLCAD_ADDEXEC(test_brep_ppx ppx.cpp "libbrep"  NO_INSTALL)
-add_test(NAME brep_ppx COMMAND test_brep_ppx)
-
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Index: brlcad/branches/thirdparty_rework/src/libbu
===================================================================
--- brlcad/branches/thirdparty_rework/src/libbu 2020-10-17 15:51:52 UTC (rev 
77472)
+++ brlcad/branches/thirdparty_rework/src/libbu 2020-10-17 16:19:38 UTC (rev 
77473)

Property changes on: brlcad/branches/thirdparty_rework/src/libbu
___________________________________________________________________
Modified: svn:mergeinfo
## -3,4 +3,4 ##
 
/brlcad/branches/brep-debug/src/libbu:69168,69927,69995-69996,70148-70149,70347-70349,70377,70526-70527,71006-71007,71009-71022,71046-71047,71049,71096-71100
 /brlcad/branches/dm-fb-merge/src/libbu:75426-76198
 /brlcad/branches/tcltk86/src/libbu:68300-75257
-/brlcad/trunk/src/libbu:75241-77232
\ No newline at end of property
+/brlcad/trunk/src/libbu:75241-77232,77321-77472
\ No newline at end of property
Modified: brlcad/branches/thirdparty_rework/src/libbu/tests/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/src/libbu/tests/CMakeLists.txt    
2020-10-17 15:51:52 UTC (rev 77472)
+++ brlcad/branches/thirdparty_rework/src/libbu/tests/CMakeLists.txt    
2020-10-17 16:19:38 UTC (rev 77473)
@@ -51,10 +51,8 @@
 
 # Generate bu_test.c file and build it
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../..)
-set(SUPPRESS_GENERATED_TAG ON)
 configure_file(bu_test.c.in "${CMAKE_CURRENT_BINARY_DIR}/bu_test.c" @ONLY)
 DISTCLEAN("${CMAKE_CURRENT_BINARY_DIR}/bu_test.c")
-set(SUPPRESS_GENERATED_TAG OFF)
 BRLCAD_ADDEXEC(bu_test "${CMAKE_CURRENT_BINARY_DIR}/bu_test.c" libbu TEST)
 
 # Housekeeping for included source files
@@ -743,19 +741,19 @@
 add_subdirectory(dylib)
 
 CMAKEFILES(
-  tests_bitv.cmake
-  tests_vls.cmake
+  CMakeLists.txt
+  bu_test.c.in
+  dylib/CMakeLists.txt
   dylib/README.txt
-  dylib/CMakeLists.txt
+  dylib/dylib.c
+  dylib/dylib.h
   dylib/plugin_1.cpp
   dylib/plugin_2.cpp
-  dylib/dylib.c
   dylib/run.c
-  dylib/dylib.h
+  tests_bitv.cmake
+  tests_vls.cmake
   )
 
-CMAKEFILES(CMakeLists.txt)
-
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/thirdparty_rework/src/libbu/tests/dylib/CMakeLists.txt

@@ Diff output truncated at 100000 characters. @@
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