Revision: 76086
          http://sourceforge.net/p/brlcad/code/76086
Author:   starseeker
Date:     2020-06-09 14:44:51 +0000 (Tue, 09 Jun 2020)
Log Message:
-----------
Merged changes from trunk r75985 through r76085

Modified Paths:
--------------
    brlcad/branches/bioh/CMakeLists.txt
    brlcad/branches/bioh/INSTALL
    brlcad/branches/bioh/README
    brlcad/branches/bioh/bench/CMakeLists.txt
    brlcad/branches/bioh/configure
    brlcad/branches/bioh/db/CMakeLists.txt
    brlcad/branches/bioh/doc/CMakeLists.txt
    brlcad/branches/bioh/doc/docbook/CMakeLists.txt
    brlcad/branches/bioh/doc/docbook/README
    brlcad/branches/bioh/doc/docbook/resources/CMakeLists.txt
    brlcad/branches/bioh/doc/legal/embedded/CMakeLists.txt
    brlcad/branches/bioh/doc/legal/other/CMakeLists.txt
    brlcad/branches/bioh/include/brlcad_ident.h.in
    brlcad/branches/bioh/include/brlcad_version.h.in
    brlcad/branches/bioh/include/bu/cmd.h
    brlcad/branches/bioh/include/bu/path.h
    brlcad/branches/bioh/include/bu/tc.h
    brlcad/branches/bioh/include/common.h
    brlcad/branches/bioh/include/gcv/api.h
    brlcad/branches/bioh/misc/CMake/BRLCAD_Targets.cmake
    brlcad/branches/bioh/misc/CMake/BRLCAD_Util.cmake
    brlcad/branches/bioh/misc/CMake/CMakeLists.txt
    brlcad/branches/bioh/misc/CMake/DocBook.cmake
    brlcad/branches/bioh/misc/CMake/Path_Setup.cmake
    brlcad/branches/bioh/misc/debian/changelog
    brlcad/branches/bioh/misc/flawfinder
    brlcad/branches/bioh/misc/macosx/Resources/ReadMe.rtfd/TXT.rtf
    brlcad/branches/bioh/misc/macosx/Resources/Welcome.rtfd/TXT.rtf
    brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt
    brlcad/branches/bioh/regress/CMakeLists.txt
    brlcad/branches/bioh/regress/burst/regress-burst.cmake.in
    brlcad/branches/bioh/regress/flawfinder.sh
    brlcad/branches/bioh/regress/gchecker/regress-gchecker.cmake.in
    brlcad/branches/bioh/regress/ged/CMakeLists.txt
    brlcad/branches/bioh/regress/licenses/regress-licenses.cmake.in
    brlcad/branches/bioh/regress/nurbs/regress-nurbs-test.cmake.in
    brlcad/branches/bioh/regress/pkg/CMakeLists.txt
    brlcad/branches/bioh/regress/repository/CMakeLists.txt
    brlcad/branches/bioh/regress/repository/regress-repository.cmake.in
    brlcad/branches/bioh/regress/rtwizard/regress-rtwiz.cmake.in
    brlcad/branches/bioh/src/CMakeLists.txt
    brlcad/branches/bioh/src/burst/CMakeLists.txt
    brlcad/branches/bioh/src/burst/Hm.c
    brlcad/branches/bioh/src/burst/HmGetc.c
    brlcad/branches/bioh/src/burst/burst.c
    brlcad/branches/bioh/src/burst/burst.h
    brlcad/branches/bioh/src/burst/extern.h
    brlcad/branches/bioh/src/burst/trie.c
    brlcad/branches/bioh/src/burst/ui.c
    brlcad/branches/bioh/src/bwish/CMakeLists.txt
    brlcad/branches/bioh/src/bwish/cmd.c
    brlcad/branches/bioh/src/conv/step/ap203e2-g/CMakeLists.txt
    brlcad/branches/bioh/src/conv/step/ap214-g/CMakeLists.txt
    brlcad/branches/bioh/src/conv/step/ap242-g/CMakeLists.txt
    brlcad/branches/bioh/src/conv/step/g-ap203e2/CMakeLists.txt
    brlcad/branches/bioh/src/conv/step/g-ap214/CMakeLists.txt
    brlcad/branches/bioh/src/conv/step/g-ap242/CMakeLists.txt
    brlcad/branches/bioh/src/conv/step/g-step/CMakeLists.txt
    brlcad/branches/bioh/src/conv/step/ifc-g/CMakeLists.txt
    brlcad/branches/bioh/src/conv/step/util/CMakeLists.txt
    brlcad/branches/bioh/src/external/Creo/CMakeLists.txt
    brlcad/branches/bioh/src/external/Cubit/CMakeLists.txt
    brlcad/branches/bioh/src/external/Unigraphics/CMakeLists.txt
    brlcad/branches/bioh/src/libbrep/CMakeLists.txt
    brlcad/branches/bioh/src/libbu/CMakeLists.txt
    brlcad/branches/bioh/src/libbu/tests/dylib/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/dm-tk.c
    brlcad/branches/bioh/src/libdm/dm-tk.h
    brlcad/branches/bioh/src/libgcv/plugins/CMakeLists.txt
    brlcad/branches/bioh/src/libgcv/plugins/decimate/decimate.c
    brlcad/branches/bioh/src/libgcv/plugins/fastgen4/fastgen4_read.c
    brlcad/branches/bioh/src/libgcv/plugins/gdal/gdal.cpp
    brlcad/branches/bioh/src/libgcv/plugins/obj/obj_read.c
    brlcad/branches/bioh/src/libgcv/plugins/rhino/rhino_read.cpp
    brlcad/branches/bioh/src/libgcv/plugins/stl/stl_read.c
    brlcad/branches/bioh/src/libgcv/plugins/vrml/vrml_write.c
    brlcad/branches/bioh/src/librt/CMakeLists.txt
    brlcad/branches/bioh/src/librt/cache.c
    brlcad/branches/bioh/src/mged/dozoom.c
    brlcad/branches/bioh/src/other/CMakeLists.txt
    brlcad/branches/bioh/src/remrt/CMakeLists.txt
    brlcad/branches/bioh/src/rt/viewedge.c

Added Paths:
-----------
    brlcad/branches/bioh/db/conv_run.cmake.in
    brlcad/branches/bioh/doc/docbook/db_dir_info.c
    brlcad/branches/bioh/doc/docbook/resources/brlcad/CMakeLists.txt
    brlcad/branches/bioh/doc/docbook/resources/other/CMakeLists.txt
    brlcad/branches/bioh/doc/legal/embedded/lz4.txt
    brlcad/branches/bioh/doc/notes/cmake_paths/
    brlcad/branches/bioh/regress/user/
    brlcad/branches/bioh/src/librt/cache_lz4.c

Removed Paths:
-------------
    brlcad/branches/bioh/doc/docbook/resources/other/expand.cmake
    brlcad/branches/bioh/doc/legal/other/lz4.txt
    brlcad/branches/bioh/misc/CMake/FindLZ4.cmake
    brlcad/branches/bioh/src/burst/Hm.h
    brlcad/branches/bioh/src/burst/trie.h
    brlcad/branches/bioh/src/libbu/cmdhist.c
    brlcad/branches/bioh/src/other/lz4/
    brlcad/branches/bioh/src/other/lz4.dist

Property Changed:
----------------
    brlcad/branches/bioh/
    brlcad/branches/bioh/NEWS
    brlcad/branches/bioh/bench/
    brlcad/branches/bioh/db/
    brlcad/branches/bioh/doc/
    brlcad/branches/bioh/include/
    brlcad/branches/bioh/regress/
    brlcad/branches/bioh/src/libbu/
    brlcad/branches/bioh/src/other/
    brlcad/branches/bioh/src/other/libgdiam/
    brlcad/branches/bioh/src/other/libnetpbm/
    brlcad/branches/bioh/src/other/libregex/
    brlcad/branches/bioh/src/other/libspsr/
    brlcad/branches/bioh/src/other/libvds/
    brlcad/branches/bioh/src/other/poly2tri/
    brlcad/branches/bioh/src/other/stepcode/

Index: brlcad/branches/bioh
===================================================================
--- brlcad/branches/bioh        2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh        2020-06-09 14:44:51 UTC (rev 76086)

Property changes on: brlcad/branches/bioh
___________________________________________________________________
Modified: svn:mergeinfo
## -1,4 +1,4 ##
-/brlcad/branches/RELEASE:57439,57447-57860,69901-69913,70323-70333,71915-72242,72525-72534,72826-72858,74376-74454,74964-75140,75682-75685
+/brlcad/branches/RELEASE:57439,57447-57860,69901-69913,70323-70333,71915-72242,72525-72534,72826-72858,74376-74454,74964-75140,75372-75685
 
/brlcad/branches/brep-debug:61373,61375,61404,61427,61429,61470,61544,61567,61576,61999,62018,62094,62098,62107,62117,62406,62416-62519,62521-62584,62593-62614,62623,62658,62660-62674,62681-62771,62876,62901,62907,62910,62925,62928,62931-63025,63027,63051,63054-63056,63069,63071-63073,63122,63160-63161,63165,63171,63184,63187,63189-63190,63193-63196,63200,63202,63205-63210,63213,63219-63225,63232-63233,63236,63238,63338,63350-63353,63481,63618,63669,64173-64174,64176-64177,64229-64233,64242,64244,64360-64362,65165,65245,65249,65334,65833-65834,66370-66375,66931-66932,66934,67012-67015,67018-67019,67021-67022,67406,67740,67746-67748,67950,67952,68144-68145,68636,68640-68643,68820,69081,69109,69168,69206,69289,69346,69460-69461,69582-69583,69719-69721,69857-69859,69927,69995-69996,70148-70149,70347-70349,70377,70526-70527,71006-71007,71009-71022,71046-71047,71049,71096-71100
 /brlcad/branches/bullet:62518
 /brlcad/branches/cmake:43219
## -7,4 +7,4 ##
 /brlcad/branches/osg:62110-62113
 /brlcad/branches/prep-cache:68236-68933
 /brlcad/branches/tcltk86:68300-75257
-/brlcad/trunk:75720-75985
\ No newline at end of property
+/brlcad/trunk:75720-76085
\ No newline at end of property
Modified: brlcad/branches/bioh/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/CMakeLists.txt 2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/CMakeLists.txt 2020-06-09 14:44:51 UTC (rev 76086)
@@ -972,6 +972,12 @@
 endif(NOT COMMAND CONFIG_H_APPEND)
 
 CONFIG_H_APPEND(BRLCAD "/**** Define statements for CMake ****/\n")
+CONFIG_H_APPEND(BRLCAD "#if !defined(BRLCADBUILD)\n")
+CONFIG_H_APPEND(BRLCAD "  #  pragma message \"Warning: included 
brlcad_config.h (compile-time API) without BRLCADBUILD defined\"\n")
+CONFIG_H_APPEND(BRLCAD "#endif\n")
+CONFIG_H_APPEND(BRLCAD "#if !defined(HAVE_CONFIG_H)\n")
+CONFIG_H_APPEND(BRLCAD "  #  pragma message \"Warning: included 
brlcad_config.h (compile-time API) without HAVE_CONFIG_H defined\"\n")
+CONFIG_H_APPEND(BRLCAD "#endif\n")
 CONFIG_H_APPEND(BRLCAD "#ifndef __CONFIG_H__\n")
 CONFIG_H_APPEND(BRLCAD "#define __CONFIG_H__\n")
 
@@ -1966,20 +1972,6 @@
   CONFIG_H_APPEND(BRLCAD "#define HAVE_WARN_UNUSED_RESULT_ATTRIBUTE 1\n")
 endif(HAVE_WARN_UNUSED_RESULT_ATTRIBUTE)
 
-# Check whether the compiler supports __attribute__((visibility ("default")))
-check_c_source_compiles(" __attribute__((visibility (\"default\"))) int 
*func(int *); int *func(int *v){(*v)-=1; return v;} int main(int argc, char 
*argv[]) {int v = 1; int *vp = func(&v); return *vp;}" 
HAVE_VISIBILITY_DEFAULT_ATTRIBUTE)
-if(HAVE_VISIBILITY_DEFAULT_ATTRIBUTE)
-  CONFIG_H_APPEND(BRLCAD "#define COMPILER_DLLEXPORT __attribute__ 
((visibility (\"default\")))\n")
-  CONFIG_H_APPEND(BRLCAD "#define COMPILER_DLLIMPORT __attribute__ 
((visibility (\"default\")))\n")
-endif(HAVE_VISIBILITY_DEFAULT_ATTRIBUTE)
-
-# Check whether the compiler supports __declspec(dllexport)
-check_c_source_compiles(" __declspec(dllexport) int *func(int *); int 
*func(int *v){(*v)-=1; return v;} int main(int argc, char *argv[]) {int v = 1; 
int *vp = func(&v); return *vp;}" HAVE_DECLSPEC_EXPORT_ATTRIBUTE)
-if(HAVE_DECLSPEC_EXPORT_ATTRIBUTE)
-  CONFIG_H_APPEND(BRLCAD "#define COMPILER_DLLEXPORT __declspec(dllexport)\n")
-  CONFIG_H_APPEND(BRLCAD "#define COMPILER_DLLIMPORT __declspec(dllimport)\n")
-endif(HAVE_DECLSPEC_EXPORT_ATTRIBUTE)
-
 # Silence check for unused arguments (used to silence clang warnings about
 # unused options on the command line). By default clang generates a lot of
 # warnings about such arguments, and we don't really care.
@@ -2111,7 +2103,7 @@
     # llvm-style USE
     if("${pgo_flags_found}" STREQUAL "")
       cmake_push_check_state()
-        set(flags "fprofile-use=\"${BRLCAD_PGO_PATH}\"")
+        set(flags "fprofile-use=\"${BRLCAD_PGO_PATH}\" 
-Wno-profile-instr-out-of-date -Wno-profile-instr-unprofiled")
         set(CMAKE_REQUIRED_FLAGS "-${flags}")
         CHECK_C_FLAG("${flags}" GROUPS OPTIMIZE_C_FLAGS VARS pgo_flags_found)
         CHECK_CXX_FLAG("${flags}" GROUPS OPTIMIZE_CXX_FLAGS)

Modified: brlcad/branches/bioh/INSTALL
===================================================================
--- brlcad/branches/bioh/INSTALL        2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/INSTALL        2020-06-09 14:44:51 UTC (rev 76086)
@@ -52,35 +52,32 @@
 to source code distributions of BRL-CAD.
 
 For the impatient or simplistic, the following steps should compile,
-test, and install an optimized BRL-CAD quickly into the /usr/brlcad/rel-X.Y.Z
-directory if CMake is installed on your system:
+test, and install an optimized BRL-CAD quickly into the
+/usr/brlcad/rel-VERSION directory if CMake is alrady installed:
 
-  gunzip brlcad-X.Y.Z.tar.gz
-  tar -xvf brlcad-X.Y.Z.tar
-  mkdir brlcad-build
-  cd brlcad-build
-  cmake ../brlcad-X.Y.Z -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
-  make
-  make benchmark
-  make regress
-  make install   # as root, e.g. sudo make install
+  tar -zxvf brlcad-VERSION.tar
+  mkdir brlcad-VERSION/build
+  cd brlcad-VERSION/build
+  cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
+  make -j4
+  make check
+  make install
 
-If any of the listed steps fail, then something unexpected happened.
-See the REPORTING PROBLEMS section of this document to report the
-problem or the INSTALLING FROM SOURCE section for more comprehensive
+See the REPORTING PROBLEMS section of this document to report any
+problems or the INSTALLING FROM SOURCE section for more comprehensive
 instructions.
 
-Once installed, add /usr/brlcad/rel-X.Y.Z/bin to your path, and you should be
+Once installed, add /usr/brlcad/rel-VERSION/bin to your path, and you should be
 able to run any of the 400+ applications that constitute BRL-CAD.  For
 example, to run the MGED solid modeler:
 
-PATH=/usr/brlcad/rel-X.Y.Z/bin:$PATH ; export PATH
+PATH=/usr/brlcad/rel-VERSION/bin:$PATH ; export PATH
 mged
 
 If you use tcsh or another C-shell based command shell, use this
 instead:
 
-set path=( /usr/brlcad/rel-X.Y.Z/bin $path ) ; rehash
+set path=( /usr/brlcad/rel-VERSION/bin $path ) ; rehash
 mged
 
 
@@ -126,9 +123,10 @@
 Mac OS X Disk Mounting Image:
 
 Mount the .dmg and run the Installer .pkg contained therein.  This
-will install into /usr/brlcad/rel-X.Y.Z and will only require confirming that
-your environment is set up properly (i.e. add /usr/brlcad/rel-X.Y.Z/bin to your
-path) as described in the Quick Installation section.
+will install into /usr/brlcad/rel-X.Y.Z and will only require
+confirming that your environment is set up properly (i.e. add
+/usr/brlcad/rel-X.Y.Z/bin to your path) as described in the Quick
+Installation section.
 
 
 INSTALLING FROM SOURCE
@@ -242,6 +240,14 @@
 
   -DBRLCAD_FLAGS_OPTIMIZATION=ON
 
+Profile-guided optimization builds are possible via two-pass
+compilation.  Compile with this flag set, run the benchmark suite,
+clean the build, and then compile again with this flag set.  Supported
+compilers will utilize data from the first pass to guide optimization,
+typically resulting in a significant performance increase:
+
+  -DBRLCAD_PGO=ON
+
 See the CONFIGURATION OPTIONS below for more details on all of the
 possible settings.
 
@@ -287,20 +293,32 @@
 TESTING FUNCTIONALITY
 ---------------------
 
-To test BRL-CAD before installation, you can run the BRL-CAD benchmark.
-The benchmark will report if the results are correct, testing a
-majority of the core functionality of BRL-CAD in addition to testing
-your system's performance:
+The primary build target to validate a compilation of BRL-CAD is:
 
+  make check
+
+That runs a trio of test sets including "benchmark", "regress", and
+"unit".  The first set is a performance test that also validates
+whether ray tracing behavior is correct:
+
   make benchmark
 
-Note that the benchmark target will build ONLY the pieces required for
-the benchmark tests, unless a general make has already been performed.
-For more testing, you can run the regression test suite:
+The second test set is our regression tests that run a host of
+rigorous integration tests and validate essential behavior:
 
   make regress
 
+The third set runs unit tests that validate low-level behavior in
+BRL-CAD's core libraries:
 
+  make unit
+
+Last but not least, one may simply run all available tests, though
+note that some tests will intentionally fail:
+
+  make test
+
+
 POST-INSTALLATION
 -----------------
 
@@ -523,17 +541,6 @@
 Aliases:  ENABLE_PNG
 
 
---- BRLCAD_LZ4 ---
-
-Option for enabling and disabling compilation of the lz4 data
-compression library provided with BRL-CAD's source code.  Default
-is AUTO, responsive to the toplevel BRLCAD_BUNDLED_LIBS option and
-testing first for a system version if BRLCAD_BUNDLED_LIBS is also
-AUTO.
-
-Aliases:  ENABLE_LZ4
-
-
 --- BRLCAD_NETPBM ---
 
 Option for enabling and disabling compilation of the netpbm library

Index: brlcad/branches/bioh/NEWS
===================================================================
--- brlcad/branches/bioh/NEWS   2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/NEWS   2020-06-09 14:44:51 UTC (rev 76086)

Property changes on: brlcad/branches/bioh/NEWS
___________________________________________________________________
Modified: svn:mergeinfo
## -7,4 +7,4 ##
 /brlcad/branches/osg/NEWS:62110-62113
 /brlcad/branches/prep-cache/NEWS:68236-68933
 /brlcad/branches/tcltk86/NEWS:68300-75257
-/brlcad/trunk/NEWS:75728-75834,75934-75985
\ No newline at end of property
+/brlcad/trunk/NEWS:75728-75834,75934-76085
\ No newline at end of property
Modified: brlcad/branches/bioh/README
===================================================================
--- brlcad/branches/bioh/README 2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/README 2020-06-09 14:44:51 UTC (rev 76086)
@@ -69,34 +69,21 @@
 COMPILE AND INSTALL
 -------------------
 
-See the INSTALL file for details on configuring, compiling, and
-installing BRL-CAD.  In order to compile and install BRL-CAD from a
-source distribution, the build tool CMake is required - see the website
-at http://www.cmake.org for source and binary installers.  CMake is also
-available in many Linux and *BSD distributions.
+In order to compile and install BRL-CAD from a source distribution,
+the CMake ( http://www.cmake.org ) configuration tool is requird.
 
-Once CMake is installed, the following steps may be taken for a full
-default install (starting with a source tarball):
+The following steps should result in a successful install:
 
-  tar -xvzf brlcad-X.Y.Z.tar.gz
-  mkdir brlcad-build
-  cd brlcad-build
-  cmake ../brlcad-X.Y.Z
-  make
+  tar -xvzf brlcad-VERSION.tar.gz
+  mkdir brlcad-VERSION/build
+  cd brlcad-VERSION/build
+  cmake .. -DBRLCAD_ENABLE_STRICT=OFF -DCMAKE_BUILD_TYPE=Release
+  make -j4
   make install
 
-where "X.Y.Z" is the version number of BRL-CAD.  For those who prefer
-a curses interface, substitute ccmake for cmake above. If the graphical
-interface available from CMake is installed cmake-gui may be
-substituted for cmake.  These interfaces will display the various
-configuration options available when building BRL-CAD, or the options
-may be set directly via command line -D options.
-The configure wrapper script may be substituted for cmake in the above
-steps for a more autotools-like configuration experience.
+See the INSTALL file for explanation of the various configuration
+options available when building BRL-CAD.
 
-Users on multiprocessor systems will be able to speed up their builds
-by passing the -j option to make (e.g. make -j4, assuming GNU make).
-
 Once the build completes and assuming you have proper filesystem
 permissions, you should be able to begin the installation by running
 the "make install" .  By default, the package is configured to install

Index: brlcad/branches/bioh/bench
===================================================================
--- brlcad/branches/bioh/bench  2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/bench  2020-06-09 14:44:51 UTC (rev 76086)

Property changes on: brlcad/branches/bioh/bench
___________________________________________________________________
Modified: svn:mergeinfo
## -7,4 +7,4 ##
 /brlcad/branches/osg/bench:62110-62113
 /brlcad/branches/prep-cache/bench:68236-68933
 /brlcad/branches/tcltk86/bench:68300-75257
-/brlcad/trunk/bench:75728-75834
\ No newline at end of property
+/brlcad/trunk/bench:75728-75834,75986-76085
\ No newline at end of property
Modified: brlcad/branches/bioh/bench/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/bench/CMakeLists.txt   2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/bench/CMakeLists.txt   2020-06-09 14:44:51 UTC (rev 
76086)
@@ -2,11 +2,7 @@
 
 include_directories(${BU_INCLUDE_DIRS})
 
-add_definitions(
-  -DHAVE_CONFIG_H
-  -DBRLCADBUILD
-  -DCONSOLE
-  )
+add_definitions(-DCONSOLE)
 
 BRLCAD_ADDEXEC(pixcmp pixcmp.c libbu)
 set(BARK_SOURCES

Modified: brlcad/branches/bioh/configure
===================================================================
--- brlcad/branches/bioh/configure      2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/configure      2020-06-09 14:44:51 UTC (rev 76086)
@@ -122,10 +122,6 @@
                                   shift;;
      --disable-png)                options="$options -DBRLCAD_PNG=SYSTEM";
                                   shift;;
-     --enable-lz4)                options="$options -DBRLCAD_LZ4=BUNDLED";
-                                  shift;;
-     --disable-lz4)                options="$options -DBRLCAD_LZ4=SYSTEM";
-                                  shift;;
      --enable-netpbm)                options="$options 
-DBRLCAD_NETPBM=BUNDLED";
                                   shift;;
      --disable-netpbm)                options="$options 
-DBRLCAD_NETPBM=SYSTEM";

Index: brlcad/branches/bioh/db
===================================================================
--- brlcad/branches/bioh/db     2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/db     2020-06-09 14:44:51 UTC (rev 76086)

Property changes on: brlcad/branches/bioh/db
___________________________________________________________________
Modified: svn:mergeinfo
## -6,4 +6,5 ##
 /brlcad/branches/opencl/db:65867-66137
 /brlcad/branches/osg/db:62110-62113
 /brlcad/branches/prep-cache/db:68236-68933
-/brlcad/branches/tcltk86/db:68300-75257
\ No newline at end of property
+/brlcad/branches/tcltk86/db:68300-75257
+/brlcad/trunk/db:75986-76085
\ No newline at end of property
Modified: brlcad/branches/bioh/db/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/db/CMakeLists.txt      2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/db/CMakeLists.txt      2020-06-09 14:44:51 UTC (rev 
76086)
@@ -53,21 +53,15 @@
   # the sense that it uses libgcv...)
   if(${MODEL_TYPE} STREQUAL "3dm")
 
-    # Because we won't know the output directory in the script reliably until 
run time,
-    # we append CURRENT_BUILD_DIR as a string to the arguments - it is the 
script's
-    # responsibility to handle it correctly at run time.
-    set(CMD_ARGS "-o" "CURRENT_BUILD_DIR/${output_file}" 
"${CMAKE_CURRENT_SOURCE_DIR}/${in_model}")
-
+    set(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}")
+    set(OUTPUT_FILE "${output_file}")
     # Use the model name for the script, since the output file is specific to 
this input
-    set(script_file "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
+    configure_file("${CMAKE_SOURCE_DIR}/db/conv_run.cmake.in" 
"${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake" @ONLY)
 
-    # We know enough - write the script
-    generate_cmd_script(3dm-g "${script_file}" OLOG "${log_file}" ELOG 
"${log_file}" CARGS "${CMD_ARGS}")
-
     # Define the target
     add_custom_command(
       OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
-      COMMAND ${CMAKE_COMMAND} -P "${script_file}"
+      COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:3dm-g> -P 
"${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake"
       DEPENDS 3dm-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
       )
 

Copied: brlcad/branches/bioh/db/conv_run.cmake.in (from rev 76085, 
brlcad/trunk/db/conv_run.cmake.in)
===================================================================
--- brlcad/branches/bioh/db/conv_run.cmake.in                           (rev 0)
+++ brlcad/branches/bioh/db/conv_run.cmake.in   2020-06-09 14:44:51 UTC (rev 
76086)
@@ -0,0 +1,41 @@
+string(REPLACE "\\" "" GCV_EXEC "${EXEC}")
+set(INPUT_FILE "@INPUT_FILE@")
+set(OUTPUT_FILE "@OUTPUT_FILE@")
+set(BIN_DIR "@BIN_DIR@")
+
+# NOTE: OUTPUT_FILE needs to be defined in terms of a path relative to the root
+# of the build diretory, not as an absolute path.  Since that root may change
+# at runtime in multiconfig builds, the full output path cannot be encoded
+# directly into the generated script.
+get_filename_component(OF_ABS "${OUTPUT_FILE}" ABSOLUTE)
+if ("${OF_ABS}" STREQUAL "${OUTPUT_FILE}")
+  message(FATAL_ERROR "Absoute output file path \"${OUTPUT_FILE}\" supplied 
for conversion of \"${INPUT_FILE}\" - path must be relative.")
+endif ("${OF_ABS}" STREQUAL "${OUTPUT_FILE}")
+
+# Because the build directory changes at runtime in multiconfig builds, we
+# need to deduce its current value from GCV_EXEC.
+get_filename_component(CBDIR "${GCV_EXEC}" DIRECTORY)
+string(REGEX REPLACE "${BIN_DIR}$" "" CROOT "${CBDIR}")
+
+# BRLCAD_ROOT is the hammer that makes certain we are running
+# things found in the build directory.
+set(ENV{BRLCAD_ROOT} "${CROOT}")
+
+# Now that we know the root, finalize the full path output file location
+set(OUTPUT_FILE "${CROOT}/${OUTPUT_FILE}")
+
+execute_process(
+  COMMAND "${GCV_EXEC}" -o "${OUTPUT_FILE}" "${INPUT_FILE}"
+  RESULT_VARIABLE conv_result OUTPUT_VARIABLE conv_log ERROR_VARIABLE conv_log
+  )
+
+if(conv_result)
+  message(FATAL_ERROR "[geometry conversion] Failure: 
${conv_result}\n${GCV_EXEC} -o \"${OUTPUT_FILE}\" 
\"${INPUT_FILE}\"\n\n${conv_log}")
+endif(conv_result)
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8

Index: brlcad/branches/bioh/doc
===================================================================
--- brlcad/branches/bioh/doc    2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/doc    2020-06-09 14:44:51 UTC (rev 76086)

Property changes on: brlcad/branches/bioh/doc
___________________________________________________________________
Modified: svn:mergeinfo
## -7,4 +7,4 ##
 /brlcad/branches/osg/doc:62110-62113
 /brlcad/branches/prep-cache/doc:68236-68933
 /brlcad/branches/tcltk86/doc:68300-75257
-/brlcad/trunk/doc:75728-75834,75934-75985
\ No newline at end of property
+/brlcad/trunk/doc:75728-75834,75934-76085
\ No newline at end of property
Modified: brlcad/branches/bioh/doc/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/doc/CMakeLists.txt     2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/doc/CMakeLists.txt     2020-06-09 14:44:51 UTC (rev 
76086)
@@ -212,6 +212,10 @@
   STARTERS
   STRATEGY
   notes/bsd_semaphore_bug.txt
+  notes/cmake_paths/CMakeLists.txt
+  notes/cmake_paths/README.txt
+  notes/cmake_paths/dir_info.c
+  notes/cmake_paths/test.cmake.in
   notes/cmake_vars.txt
   notes/csv_to_comgeom.txt
   notes/implicit_constraints.txt

Modified: brlcad/branches/bioh/doc/docbook/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/doc/docbook/CMakeLists.txt     2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/doc/docbook/CMakeLists.txt     2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -1,27 +1,17 @@
+# Define a build target that builds a no-op executable, so we can ensure
+# a target for generator expression use regardless of other changes elsewhere
+# in the build system
+add_executable(db_dir_info db_dir_info.c)
+set_target_properties(db_dir_info PROPERTIES FOLDER "DocBook")
+
 # We need various configuration files set up for DocBook processing tools
-file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/)
+add_subdirectory(resources)
 
-# First, define the commands to expand the third party components we will need 
to handle
-# DocBook processing from their archives into the build directory
-include(${CMAKE_CURRENT_SOURCE_DIR}/resources/other/expand.cmake)
-
 # Rework CMake binary and source paths for DocBook templates - if we
 # have spaces in the paths, they will cause a problem.
 string(REPLACE " " "%20" DOCBOOK_BINARY_DIR "${CMAKE_BINARY_DIR}")
 string(REPLACE " " "%20" DOCBOOK_SOURCE_DIR "${CMAKE_SOURCE_DIR}")
 
-# Common stylesheets for all DocBook sources
-if(BRLCAD_EXTRADOCS_HTML OR BRLCAD_EXTRADOCS_PDF OR BRLCAD_EXTRADOCS_MAN OR 
BRLCAD_EXTRADOCS_PHP OR BRLCAD_EXTRADOCS_PPT)
-  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources/brlcad/brlcad-common.xsl.in
-    ${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/brlcad-common.xsl)
-  # Fonts definition
-  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources/brlcad/brlcad-fonts.xsl.in
-    ${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/brlcad-fonts.xsl)
-  # Wordpress
-  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources/brlcad/wordpress.xsl.in
-    ${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/wordpress.xsl)
-endif(BRLCAD_EXTRADOCS_HTML OR BRLCAD_EXTRADOCS_PDF OR BRLCAD_EXTRADOCS_MAN OR 
BRLCAD_EXTRADOCS_PHP OR BRLCAD_EXTRADOCS_PPT)
-
 # Files for PDF products
 if(BRLCAD_EXTRADOCS_PDF)
   # Apache FOP needs a couple of config files set up
@@ -29,32 +19,38 @@
   configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/fop.xconf.in 
${CMAKE_BINARY_DIR}/doc/docbook/fop.xconf)
 endif(BRLCAD_EXTRADOCS_PDF)
 
+# For the html files, we need brlcad.css
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/brlcad_css-${CMAKE_CFG_INTDIR}-done
+  COMMAND "${CMAKE_COMMAND}" -E copy_if_different 
${CMAKE_CURRENT_SOURCE_DIR}/css/brlcad.css 
$<TARGET_FILE_DIR:db_dir_info>/${RBIN_DIR}/${DOC_DIR}/html/css/brlcad.css
+  COMMAND "${CMAKE_COMMAND}" -E touch  
${CMAKE_CURRENT_BINARY_DIR}/brlcad_css-${CMAKE_CFG_INTDIR}-done
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/css/brlcad.css
+  )
+add_custom_target(brlcad_css DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/brlcad_css-${CMAKE_CFG_INTDIR}-done)
+set_target_properties(brlcad_css PROPERTIES FOLDER "DocBook")
+install(FILES css/brlcad.css DESTINATION ${DOC_DIR}/html/css)
+DISTCLEAN(${CMAKE_CFG_INTDIR}/${DOC_DIR}/html/css/brlcad.css)
+
 # Include CMake macros for DocBook.
 include(${BRLCAD_SOURCE_DIR}/misc/CMake/DocBook.cmake)
 
-# For the html files, we need brlcad.css
-if(NOT CMAKE_CONFIGURATION_TYPES)
-  configure_file(css/brlcad.css 
${CMAKE_BINARY_DIR}/${DOC_DIR}/html/css/brlcad.css)
-else(NOT CMAKE_CONFIGURATION_TYPES)
-  foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
-    string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
-    configure_file(css/brlcad.css 
${CMAKE_BINARY_DIR_${CFG_TYPE_UPPER}}/${DOC_DIR}/html/css/brlcad.css)
-  endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
-endif(NOT CMAKE_CONFIGURATION_TYPES)
-install(FILES css/brlcad.css DESTINATION ${DOC_DIR}/html/css)
-
 add_subdirectory(articles)
 add_subdirectory(books)
 add_subdirectory(lessons)
 add_subdirectory(presentations)
-add_subdirectory(resources)
 add_subdirectory(specifications)
 add_subdirectory(system)
 
-CMAKEFILES(README fop.xconf.in log4j.properties)
-CMAKEFILES(README.DB_authors_notes)
-CMAKEFILES(css/brlcad.css)
-CMAKEFILES(CMakeLists.txt)
+set(ignore_files
+  CMakeLists.txt
+  README
+  README.DB_authors_notes
+  css/brlcad.css
+  db_dir_info.c
+  fop.xconf.in
+  log4j.properties
+  )
+CMAKEFILES(${ignore_files})
 
 # Local Variables:
 # tab-width: 8

Modified: brlcad/branches/bioh/doc/docbook/README
===================================================================
--- brlcad/branches/bioh/doc/docbook/README     2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/doc/docbook/README     2020-06-09 14:44:51 UTC (rev 
76086)
@@ -149,52 +149,12 @@
 VALIDATION
 ----------
 
-It is possible to add a validation step to DocBook compilation by
-defining the CMake variable BRLCAD_EXTRADOCS_VALIDATE to ON.
+It is possible to add a validation step to DocBook compilation by defining the
+CMake variable BRLCAD_EXTRADOCS_VALIDATE to ON.  This will use xmllint to
+validate the xml files as they are built.
 
-By default, this will use xmllint to validate the xml files as
-they are built.
+By default, this option is enable if the BRL-CAD strict build is enabled.
 
-In order to use a different validation program the user must obtain some
-external tools that are not presently part of the BRL-CAD package:
-
-  For the 'msv' validation method (a recommended method):
-
-    * msv
-       Oracle Multi-Schema XML Validator (MSV) (see http://msv.java.net/)
-
-    * Java
-       a working Java run-time environment
-
-  For the 'nvdl' validation method:
-
-    * onvdl.jar
-       a Java jar file with the oNVDL validation tool (see
-       https://sourceforge.net/projects/onvdl/
-
-    * Java
-       a working Java run-time environment
-
-  For the 'rnv' validation method:
-
-    * rnv
-       http://sourceforge.net/projects/rnv/
-
-    * expat library
-       present in most Linux/Unix distributions, see
-       http://expat.sourceforge.net/
-
-To use these tools, a <toolname>.cmake.in file must be present
-in the misc/CMake source directory.  This file tells CMake how
-to run the tool in question.  Examples for msv and rnv are already
-present - see misc/CMake/rnv.cmake.in and misc/CMake/msv.cmake.in
-
-Once the correct file is present, configure CMake with options
-similar to the following (alter for your specific tool):
-
-cmake .. -DBRLCAD_EXTRADOCS_VALIDATE=ON -DVALIDATE_EXECUTABLE=msv
-
-
 OTHER CONSIDERATIONS
 --------------------
 

Copied: brlcad/branches/bioh/doc/docbook/db_dir_info.c (from rev 76085, 
brlcad/trunk/doc/docbook/db_dir_info.c)
===================================================================
--- brlcad/branches/bioh/doc/docbook/db_dir_info.c                              
(rev 0)
+++ brlcad/branches/bioh/doc/docbook/db_dir_info.c      2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -0,0 +1,32 @@
+/*                     D B _ D I R _ I N F O . C
+ * BRL-CAD
+ *
+ * Published in 2020 by the United States Government.
+ * This work is in the public domain.
+ *
+ */
+/** @file dir_info.c
+ *
+ * This is a stub file, whose purpose is to provide the Docbook logic with an
+ * add_executable build target that can be passed to scripts in order to decode
+ * at runtime what the location of BR-CAD's build directory is.
+ *
+ * Unlike most other BRL-CAD logic, Docbook building may be done without any
+ * software build targets needing to be processed if the necessary system
+ * tools are in place.  Since it is otherwise difficult to reliably get the
+ * location of the current build directory in multiconfig build tools, this
+ * file is used to provide a db_dir_info build target to reference in CMake.
+ */
+
+int main() {
+}
+
+/*
+ * Local Variables:
+ * tab-width: 8
+ * mode: C
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */

Modified: brlcad/branches/bioh/doc/docbook/resources/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/doc/docbook/resources/CMakeLists.txt   2020-06-09 
02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/doc/docbook/resources/CMakeLists.txt   2020-06-09 
14:44:51 UTC (rev 76086)
@@ -1,62 +1,11 @@
-set(dr_ignore_files
+add_subdirectory(brlcad)
+add_subdirectory(other)
+
+set(ignore_files
   CMakeLists.txt
   README
-  brlcad/brlcad-article-fo-stylesheet.xsl.in
-  brlcad/brlcad-article-xhtml-stylesheet.xsl.in
-  brlcad/brlcad-book-fo-stylesheet.xsl.in
-  brlcad/brlcad-book-xhtml-stylesheet.xsl.in
-  brlcad/brlcad-common.xsl.in
-  brlcad/brlcad-fo-stylesheet.xsl.in
-  brlcad/brlcad-fonts.xsl.in
-  brlcad/brlcad-gendata.xsl
-  brlcad/brlcad-lesson-fo-stylesheet.xsl.in
-  brlcad/brlcad-lesson-xhtml-stylesheet.xsl.in
-  brlcad/brlcad-man-fo-stylesheet.xsl.in
-  brlcad/brlcad-man-stylesheet.xsl.in
-  brlcad/brlcad-man-xhtml-stylesheet.xsl.in
-  brlcad/brlcad-presentation-fo-stylesheet.xsl.in
-  brlcad/brlcad-presentation-xhtml-stylesheet.xsl.in
-  brlcad/brlcad-specification-fo-stylesheet.xsl.in
-  brlcad/brlcad-specification-xhtml-stylesheet.xsl.in
-  brlcad/brlcad-xhtml-header-navigation.xsl
-  brlcad/brlcad-xhtml-stylesheet.xsl.in
-  brlcad/center-table-print.xsl
-  brlcad/images/brlcad-logo-669966.svg
-  brlcad/images/brlcad-logo-6699cc.svg
-  brlcad/images/brlcad-logo-blue.svg
-  brlcad/images/brlcad-logo-cc6666.svg
-  brlcad/images/brlcad-logo-cc9966.svg
-  brlcad/images/brlcad-logo-green.svg
-  brlcad/images/brlcad-logo-limegreen.svg
-  brlcad/images/brlcad-logo-red.svg
-  brlcad/images/logo-vm-gears.png
-  brlcad/images/logo-vm-gears.svg
-  brlcad/presentation.xsl.in
-  brlcad/tutorial-cover-template.xsl.in
-  brlcad/tutorial-template.xsl.in
-  brlcad/wordpress.xsl.in
-  other/README.schema
-  other/docbook-5.0.tar.bz2
-  other/docbook5xi.rnc
-  other/docbookxi.nvdl
-  other/expand.cmake
-  other/fonts/README
-  other/fonts/dejavu-lgc-fonts.tar.bz2
-  other/fonts/dejavu_COPYING.txt
-  other/fonts/stix-fonts.tar.bz2
-  other/fonts/stix_COPYING.txt
-  other/fonts/y14.5.tar.bz2
-  other/fonts/y14.5_COPYING.txt
-  other/offo/README.offo
-  other/offo/licenses.txt
-  other/offo/offo-2.0.tar.bz2
-  other/standard/README.svg
-  other/standard/README.xsl
-  other/standard/docbook-xsl-ns.tar.bz2
-  other/standard/met-fonts.xsl
-  other/standard/w3_svg_dtd.tar.bz2
   )
-CMAKEFILES(${dr_ignore_files})
+CMAKEFILES(${ignore_files})
 
 # Local Variables:
 # tab-width: 8

Copied: brlcad/branches/bioh/doc/docbook/resources/brlcad/CMakeLists.txt (from 
rev 76085, brlcad/trunk/doc/docbook/resources/brlcad/CMakeLists.txt)
===================================================================
--- brlcad/branches/bioh/doc/docbook/resources/brlcad/CMakeLists.txt            
                (rev 0)
+++ brlcad/branches/bioh/doc/docbook/resources/brlcad/CMakeLists.txt    
2020-06-09 14:44:51 UTC (rev 76086)
@@ -0,0 +1,68 @@
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/)
+
+# Rework CMake binary and source paths for DocBook templates - if we
+# have spaces in the paths, they will cause a problem.
+string(REPLACE " " "%20" DOCBOOK_BINARY_DIR "${CMAKE_BINARY_DIR}")
+string(REPLACE " " "%20" DOCBOOK_SOURCE_DIR "${CMAKE_SOURCE_DIR}")
+
+# Because the core resources for Docbook are not different between the various
+# build configurations, we maintain one copy of the "set up" files for all
+# configurations rather than building the entire resources setup per-config.
+
+# Common xsl for all outputs
+configure_file(brlcad-common.xsl.in 
${CMAKE_CURRENT_BINARY_DIR}/brlcad-common.xsl)
+
+# Fonts definition
+configure_file(brlcad-fonts.xsl.in 
${CMAKE_CURRENT_BINARY_DIR}/brlcad-fonts.xsl)
+
+# Wordpress
+configure_file(wordpress.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/wordpress.xsl)
+
+# Make sure distcheck knows about all files in directory
+set(ignore_files
+  CMakeLists.txt
+  brlcad-article-fo-stylesheet.xsl.in
+  brlcad-article-xhtml-stylesheet.xsl.in
+  brlcad-book-fo-stylesheet.xsl.in
+  brlcad-book-xhtml-stylesheet.xsl.in
+  brlcad-common.xsl.in
+  brlcad-fo-stylesheet.xsl.in
+  brlcad-fonts.xsl.in
+  brlcad-gendata.xsl
+  brlcad-lesson-fo-stylesheet.xsl.in
+  brlcad-lesson-xhtml-stylesheet.xsl.in
+  brlcad-man-fo-stylesheet.xsl.in
+  brlcad-man-stylesheet.xsl.in
+  brlcad-man-xhtml-stylesheet.xsl.in
+  brlcad-presentation-fo-stylesheet.xsl.in
+  brlcad-presentation-xhtml-stylesheet.xsl.in
+  brlcad-specification-fo-stylesheet.xsl.in
+  brlcad-specification-xhtml-stylesheet.xsl.in
+  brlcad-xhtml-header-navigation.xsl
+  brlcad-xhtml-stylesheet.xsl.in
+  center-table-print.xsl
+  images/brlcad-logo-669966.svg
+  images/brlcad-logo-6699cc.svg
+  images/brlcad-logo-blue.svg
+  images/brlcad-logo-cc6666.svg
+  images/brlcad-logo-cc9966.svg
+  images/brlcad-logo-green.svg
+  images/brlcad-logo-limegreen.svg
+  images/brlcad-logo-red.svg
+  images/logo-vm-gears.png
+  images/logo-vm-gears.svg
+  presentation.xsl.in
+  tutorial-cover-template.xsl.in
+  tutorial-template.xsl.in
+  wordpress.xsl.in
+  )
+
+CMAKEFILES(${ignore_files})
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
+

Copied: brlcad/branches/bioh/doc/docbook/resources/other/CMakeLists.txt (from 
rev 76085, brlcad/trunk/doc/docbook/resources/other/CMakeLists.txt)
===================================================================
--- brlcad/branches/bioh/doc/docbook/resources/other/CMakeLists.txt             
                (rev 0)
+++ brlcad/branches/bioh/doc/docbook/resources/other/CMakeLists.txt     
2020-06-09 14:44:51 UTC (rev 76086)
@@ -0,0 +1,117 @@
+
+# Define the commands to expand the third party components we will need to 
handle
+# DocBook processing from their archives into the build directory
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docbook-schema)
+DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/docbook-schema)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc)
+DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fonts/stix)
+DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/fonts/stix)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/offo)
+DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/offo/source)
+DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/offo/binary)
+DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/offo/README)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/standard/svg)
+DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/standard/svg)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/standard/xsl)
+DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/standard/xsl)
+
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/docbook-schema/schema.sentinel
+  COMMAND ${CMAKE_COMMAND} -E tar xjf  
${CMAKE_CURRENT_SOURCE_DIR}/docbook-5.0.tar.bz2
+  COMMAND ${CMAKE_COMMAND} -E copy     
${CMAKE_CURRENT_SOURCE_DIR}/docbookxi.nvdl 
${CMAKE_CURRENT_BINARY_DIR}/docbook-schema/docbookxi.nvdl
+  COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/docbook-schema/schema.sentinel
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/docbookxi.nvdl 
${CMAKE_CURRENT_SOURCE_DIR}/docbook-5.0.tar.bz2
+  WORKING_DIRECTORY    ${CMAKE_CURRENT_BINARY_DIR}
+  )
+add_custom_target(schema-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/docbook-schema/schema.sentinel)
+SetTargetFolder(schema-expand "DocBook")
+
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc/dejavu-lgc.sentinel
+  COMMAND ${CMAKE_COMMAND} -E tar xjf 
${CMAKE_CURRENT_SOURCE_DIR}/fonts/dejavu-lgc-fonts.tar.bz2
+  COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc/dejavu-lgc.sentinel
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/fonts/dejavu-lgc-fonts.tar.bz2
+  WORKING_DIRECTORY    ${CMAKE_CURRENT_BINARY_DIR}/fonts
+  )
+add_custom_target(fonts-dejavu-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc/dejavu-lgc.sentinel)
+SetTargetFolder(fonts-dejavu-expand "DocBook")
+
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fonts/stix/stix.sentinel
+  COMMAND ${CMAKE_COMMAND} -E tar xjf 
${CMAKE_CURRENT_SOURCE_DIR}/fonts/stix-fonts.tar.bz2
+  COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/fonts/stix/stix.sentinel
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/fonts/stix-fonts.tar.bz2
+  WORKING_DIRECTORY    ${CMAKE_CURRENT_BINARY_DIR}/fonts
+  )
+add_custom_target(fonts-stix-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/fonts/stix/stix.sentinel)
+SetTargetFolder(fonts-stix-expand "DocBook")
+
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/offo/offo2_0.sentinel
+  COMMAND ${CMAKE_COMMAND} -E tar xjf 
${CMAKE_CURRENT_SOURCE_DIR}/offo/offo-2.0.tar.bz2
+  COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/offo/offo2_0.sentinel
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/offo/offo-2.0.tar.bz2
+  WORKING_DIRECTORY    ${CMAKE_CURRENT_BINARY_DIR}/
+  )
+add_custom_target(offo-2-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/offo/offo2_0.sentinel)
+SetTargetFolder(offo-2-expand "DocBook")
+
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/standard/svg/svg.sentinel
+  COMMAND ${CMAKE_COMMAND} -E tar xjf  
${CMAKE_CURRENT_SOURCE_DIR}/standard/w3_svg_dtd.tar.bz2
+  COMMAND ${CMAKE_COMMAND} -E copy     
${CMAKE_CURRENT_SOURCE_DIR}/standard/met-fonts.xsl      
${CMAKE_CURRENT_BINARY_DIR}/standard/svg/met-fonts.xsl
+  COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/standard/svg/svg.sentinel
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/standard/met-fonts.xsl 
${CMAKE_CURRENT_SOURCE_DIR}/standard/w3_svg_dtd.tar.bz2
+  WORKING_DIRECTORY    ${CMAKE_CURRENT_BINARY_DIR}/standard
+  )
+add_custom_target(svg-dtd-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/standard/svg/svg.sentinel)
+SetTargetFolder(svg-dtd-expand "DocBook")
+
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/standard/xsl/xsl.sentinel
+  COMMAND ${CMAKE_COMMAND} -E tar xjf  
${CMAKE_CURRENT_SOURCE_DIR}/standard/docbook-xsl-ns.tar.bz2
+  COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/standard/xsl/xsl.sentinel
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/standard/docbook-xsl-ns.tar.bz2
+  WORKING_DIRECTORY    ${CMAKE_CURRENT_BINARY_DIR}/standard
+  )
+add_custom_target(xsl-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/standard/xsl/xsl.sentinel)
+SetTargetFolder(xsl-expand "DocBook")
+
+# Build up the set of targets defining resources, and write it to the cache
+# immediately so targets in other directories can see it
+set(DOCBOOK_RESOURCE_FILES schema-expand fonts-dejavu-expand fonts-stix-expand 
offo-2-expand svg-dtd-expand xsl-expand)
+set(DOCBOOK_RESOURCE_FILES "${DOCBOOK_RESOURCE_FILES}" CACHE STRING "DocBook 
target list")
+mark_as_advanced(DOCBOOK_RESOURCE_FILES)
+
+set(ignore_files
+  CMakeLists.txt
+  README.schema
+  docbook-5.0.tar.bz2
+  docbook5xi.rnc
+  docbookxi.nvdl
+  fonts/README
+  fonts/dejavu-lgc-fonts.tar.bz2
+  fonts/dejavu_COPYING.txt
+  fonts/stix-fonts.tar.bz2
+  fonts/stix_COPYING.txt
+  fonts/y14.5.tar.bz2
+  fonts/y14.5_COPYING.txt
+  offo/README.offo
+  offo/licenses.txt
+  offo/offo-2.0.tar.bz2
+  standard/README.svg
+  standard/README.xsl
+  standard/docbook-xsl-ns.tar.bz2
+  standard/met-fonts.xsl
+  standard/w3_svg_dtd.tar.bz2
+  )
+CMAKEFILES(${ignore_files})
+
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8

Deleted: brlcad/branches/bioh/doc/docbook/resources/other/expand.cmake
===================================================================
--- brlcad/branches/bioh/doc/docbook/resources/other/expand.cmake       
2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/doc/docbook/resources/other/expand.cmake       
2020-06-09 14:44:51 UTC (rev 76086)
@@ -1,81 +0,0 @@
-
-# Define the commands to expand the third party components we will need to 
handle
-# DocBook processing from their archives into the build directory
-file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema)
-DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema)
-file(MAKE_DIRECTORY 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc)
-DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc)
-file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix)
-DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix)
-file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo)
-DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/source)
-DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/binary)
-DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/README)
-file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg)
-DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg)
-file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl)
-DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl)
-
-add_custom_command(
-       OUTPUT 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema/schema.sentinel
-       COMMAND ${CMAKE_COMMAND} -E tar xjf     
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/docbook-5.0.tar.bz2
-       COMMAND ${CMAKE_COMMAND} -E copy        
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/docbookxi.nvdl 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema/docbookxi.nvdl
-       COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema/schema.sentinel
-       DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/docbookxi.nvdl 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/docbook-5.0.tar.bz2
-       WORKING_DIRECTORY       ${CMAKE_CURRENT_BINARY_DIR}/resources/other
-       )
-add_custom_target(schema-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema/schema.sentinel)
-SetTargetFolder(schema-expand "DocBook")
-
-add_custom_command(
-       OUTPUT 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc/dejavu-lgc.sentinel
-       COMMAND ${CMAKE_COMMAND} -E tar xjf 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/fonts/dejavu-lgc-fonts.tar.bz2
-       COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc/dejavu-lgc.sentinel
-       DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/fonts/dejavu-lgc-fonts.tar.bz2
-       WORKING_DIRECTORY       
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts
-       )
-add_custom_target(fonts-dejavu-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc/dejavu-lgc.sentinel)
-SetTargetFolder(fonts-dejavu-expand "DocBook")
-
-add_custom_command(
-       OUTPUT 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix/stix.sentinel
-       COMMAND ${CMAKE_COMMAND} -E tar xjf 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/fonts/stix-fonts.tar.bz2
-       COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix/stix.sentinel
-       DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/fonts/stix-fonts.tar.bz2
-       WORKING_DIRECTORY       
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts
-       )
-add_custom_target(fonts-stix-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix/stix.sentinel)
-SetTargetFolder(fonts-stix-expand "DocBook")
-
-add_custom_command(
-       OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/offo2_0.sentinel
-       COMMAND ${CMAKE_COMMAND} -E tar xjf 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/offo/offo-2.0.tar.bz2
-       COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/offo2_0.sentinel
-       DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/offo/offo-2.0.tar.bz2
-       WORKING_DIRECTORY       ${CMAKE_CURRENT_BINARY_DIR}/resources/other/
-       )
-add_custom_target(offo-2-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/offo2_0.sentinel)
-SetTargetFolder(offo-2-expand "DocBook")
-
-add_custom_command(
-       OUTPUT 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg/svg.sentinel
-       COMMAND ${CMAKE_COMMAND} -E tar xjf     
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/w3_svg_dtd.tar.bz2
-       COMMAND ${CMAKE_COMMAND} -E copy        
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/met-fonts.xsl      
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg/met-fonts.xsl
-       COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg/svg.sentinel
-       DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/met-fonts.xsl 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/w3_svg_dtd.tar.bz2
-       WORKING_DIRECTORY       
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard
-       )
-add_custom_target(svg-dtd-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg/svg.sentinel)
-SetTargetFolder(svg-dtd-expand "DocBook")
-
-add_custom_command(
-       OUTPUT 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl/xsl.sentinel
-       COMMAND ${CMAKE_COMMAND} -E tar xjf     
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/docbook-xsl-ns.tar.bz2
-       COMMAND ${CMAKE_COMMAND} -E touch 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl/xsl.sentinel
-       DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/docbook-xsl-ns.tar.bz2
-       WORKING_DIRECTORY       
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard
-       )
-add_custom_target(xsl-expand DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl/xsl.sentinel)
-SetTargetFolder(xsl-expand "DocBook")
-
-set(DOCBOOK_RESOURCE_FILES schema-expand fonts-dejavu-expand fonts-stix-expand 
offo-2-expand svg-dtd-expand xsl-expand)

Modified: brlcad/branches/bioh/doc/legal/embedded/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/doc/legal/embedded/CMakeLists.txt      2020-06-09 
02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/doc/legal/embedded/CMakeLists.txt      2020-06-09 
14:44:51 UTC (rev 76086)
@@ -26,6 +26,7 @@
   hv3_snit.txt
   libtermlib.txt
   lseg_lseg.txt
+  lz4.txt
   marching_cubes.txt
   msinttypes.txt
   mt19937ar.txt

Copied: brlcad/branches/bioh/doc/legal/embedded/lz4.txt (from rev 76085, 
brlcad/trunk/doc/legal/embedded/lz4.txt)
===================================================================
--- brlcad/branches/bioh/doc/legal/embedded/lz4.txt                             
(rev 0)
+++ brlcad/branches/bioh/doc/legal/embedded/lz4.txt     2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -0,0 +1,26 @@
+LZ4 Library
+Copyright (c) 2011-2016, Yann Collet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, 
this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+file:/src/librt/cache_lz4.c

Modified: brlcad/branches/bioh/doc/legal/other/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/doc/legal/other/CMakeLists.txt 2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/doc/legal/other/CMakeLists.txt 2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -12,7 +12,6 @@
   libvds.txt
   libz.txt
   linenoise.txt
-  lz4.txt
   OpenNURBS.txt
   openscenegraph.txt
   poly2tri.txt

Deleted: brlcad/branches/bioh/doc/legal/other/lz4.txt
===================================================================
--- brlcad/branches/bioh/doc/legal/other/lz4.txt        2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/doc/legal/other/lz4.txt        2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -1,24 +0,0 @@
-LZ4 Library
-Copyright (c) 2011-2016, Yann Collet
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without 
modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, 
this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Index: brlcad/branches/bioh/include
===================================================================
--- brlcad/branches/bioh/include        2020-06-09 02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/include        2020-06-09 14:44:51 UTC (rev 76086)

Property changes on: brlcad/branches/bioh/include
___________________________________________________________________
Modified: svn:mergeinfo
## -1,4 +1,4 ##
-/brlcad/branches/RELEASE/include:57439,57447-57860,69901-69913,71915-72242,72525-72534,72826-72858,74376-74454,74964-75140
+/brlcad/branches/RELEASE/include:57439,57447-57860,69901-69913,71915-72242,72525-72534,72826-72858,74376-74454,74964-75140,75372-75681
 
/brlcad/branches/brep-debug/include:61373,61375,61404,61427,61429,61470,61544,61567,61576,61999,62018,62094,62098,62107,62117,62406,62416-62519,62521-62584,62593-62614,62623,62658,62660-62674,62681-62771,62876,62901,62907,62910,62925,62928,62931-63025,63027,63051,63054-63056,63069,63071-63073,63122,63160-63161,63165,63171,63184,63187,63189-63190,63193-63196,63200,63202,63205-63210,63213,63219-63225,63232-63233,63236,63238,63338,63350-63353,63481,63618,63669,64173-64174,64176-64177,64229-64233,64242,64244,64360-64362,65165,65245,65249,65334,65833-65834,66370-66375,66931-66932,66934,67012-67015,67018-67019,67021-67022,67406,67740,67746-67748,67950,67952,68144-68145,68636,68640-68643,68820,69081,69109,69206,69289,69346,69460-69461,69582-69583,69719-69721,69857-69859,69927
 /brlcad/branches/bullet/include:62518
 /brlcad/branches/cmake/include:43219
## -7,4 +7,4 ##
 /brlcad/branches/osg/include:62110-62113
 /brlcad/branches/prep-cache/include:68236-68933
 /brlcad/branches/tcltk86/include:68300-75257
-/brlcad/trunk/include:75728-75834,75891-75926
\ No newline at end of property
+/brlcad/trunk/include:75728-75834,75891-75926,75986-76085
\ No newline at end of property
Modified: brlcad/branches/bioh/include/brlcad_ident.h.in
===================================================================
--- brlcad/branches/bioh/include/brlcad_ident.h.in      2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/include/brlcad_ident.h.in      2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -34,6 +34,16 @@
 
 #include "common.h"
 
+/* If the caller is not using this correctly per the above NOTE, issue a
+ * message about it but don't hault the build.  Usage without defines set isn't
+ * correct, but will probably function anyway... */
+#if !defined(BRLCADBUILD)
+#  pragma message "Warning: included brlcad_ident.h (compile-time API) without 
BRLCADBUILD defined"
+#endif
+#if !defined(HAVE_CONFIG_H)
+#  pragma message "Warning: included brlcad_ident.h (compile-time API) without 
HAVE_CONFIG_H defined"
+#endif
+
 /* for snprintf */
 #include <stdio.h>
 /* for strlen */
@@ -41,7 +51,6 @@
 
 #include "brlcad_version.h"
 
-
 /* Compilation Settings */
 
 /**

Modified: brlcad/branches/bioh/include/brlcad_version.h.in
===================================================================
--- brlcad/branches/bioh/include/brlcad_version.h.in    2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/include/brlcad_version.h.in    2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -36,6 +36,15 @@
 
 #include "common.h"
 
+/* If the caller is not using this correctly per the above NOTE, issue a
+ * message about it but don't hault the build.  Usage without defines set isn't
+ * correct, but will probably function anyway... */
+#if !defined(BRLCADBUILD)
+#  pragma message "Warning: included brlcad_version.h (compile-time API) 
without BRLCADBUILD defined"
+#endif
+#if !defined(HAVE_CONFIG_H)
+#  pragma message "Warning: included brlcad_version.h (compile-time API) 
without HAVE_CONFIG_H defined"
+#endif
 
 /**************************************************/
 /* Compile-time version information (discouraged) */

Modified: brlcad/branches/bioh/include/bu/cmd.h
===================================================================
--- brlcad/branches/bioh/include/bu/cmd.h       2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/include/bu/cmd.h       2020-06-09 14:44:51 UTC (rev 
76086)
@@ -30,9 +30,6 @@
 
 #include "common.h"
 
-#ifdef HAVE_SYS_TIME_H
-#  include <sys/time.h>
-#endif
 #include <time.h>
 
 #include "bsocket.h" /* for timeval */
@@ -52,28 +49,6 @@
     int (*ct_func)(void *data, int argc, const char *argv[]);
 };
 
-/* deprecated 2016-01-14 */
-struct bu_cmdhist {
-    struct bu_vls h_command;
-    struct timeval h_start;
-    struct timeval h_finish;
-    int h_status;
-};
-#define BU_CMDHIST_NULL (struct bu_cmdhist *)NULL
-
-struct bu_cmdhist_list {
-    size_t size, capacity;
-    size_t current;
-    struct bu_cmdhist *cmdhist;
-};
-
-/* deprecated 2016-01-14 */
-struct bu_cmdhist_obj {
-    struct bu_vls cho_name;
-    struct bu_cmdhist_list cmdhist;
-};
-#define BU_CMDHIST_OBJ_NULL (struct bu_cmdhist_obj *)NULL
-
 __BEGIN_DECLS
 
 /** @brief Routine(s) for processing subcommands */

Modified: brlcad/branches/bioh/include/bu/path.h
===================================================================
--- brlcad/branches/bioh/include/bu/path.h      2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/include/bu/path.h      2020-06-09 14:44:51 UTC (rev 
76086)
@@ -27,10 +27,6 @@
 #include <stdlib.h> /* for getenv */
 #include <limits.h> /* for NAME_MAX */
 
-#ifdef HAVE_DLFCN_H
-#  include <dlfcn.h>   /* for RTLD_* */
-#endif
-
 #include "bu/defines.h"
 #include "bu/magic.h"
 #include "bu/vls.h"

Modified: brlcad/branches/bioh/include/bu/tc.h
===================================================================
--- brlcad/branches/bioh/include/bu/tc.h        2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/include/bu/tc.h        2020-06-09 14:44:51 UTC (rev 
76086)
@@ -34,6 +34,14 @@
 #define _BU_TCM_H
 
 #include "common.h"
+
+#if !defined(BRLCADBUILD)
+#  error "Warning: included bu/tc.h (compile-time API) without BRLCADBUILD 
defined"
+#endif
+#if !defined(HAVE_CONFIG_H)
+#  error "Warning: included bu/tc.h (compile-time API) without HAVE_CONFIG_H 
defined"
+#endif
+
 #include "bu/defines.h"
 
 #include "bio.h" /* For windows.h */

Modified: brlcad/branches/bioh/include/common.h
===================================================================
--- brlcad/branches/bioh/include/common.h       2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/include/common.h       2020-06-09 14:44:51 UTC (rev 
76086)
@@ -67,35 +67,35 @@
 extern double drand48(void);
 #  endif
 
-#if !defined(__cplusplus) || defined(HAVE_SHARED_RINT_TEST)
+# if !defined(__cplusplus) || defined(HAVE_SHARED_RINT_TEST)
 /* make sure lrint() is provided */
-#  if !defined(lrint)
-#    if !defined(HAVE_LRINT)
-#      define lrint(_x) (((_x) < 0.0) ? (long int)ceil((_x)-0.5) : (long 
int)floor((_x)+0.5))
-#    elif !defined(HAVE_WINDOWS_H) && !defined(HAVE_DECL_LRINT)
+#   if !defined(lrint)
+#     if !defined(HAVE_LRINT)
+#       define lrint(_x) (((_x) < 0.0) ? (long int)ceil((_x)-0.5) : (long 
int)floor((_x)+0.5))
+#     elif !defined(HAVE_WINDOWS_H) && !defined(HAVE_DECL_LRINT)
 long int lrint(double x);
-#      define HAVE_DECL_LRINT 1
-#    endif
-#  endif
+#       define HAVE_DECL_LRINT 1
+#     endif
+#   endif
 
-#  if !defined(HAVE_LRINT)
-#    define HAVE_LRINT 1
-#  endif
+#   if !defined(HAVE_LRINT)
+#     define HAVE_LRINT 1
+#   endif
 
 /* make sure rint() is provided */
-#  if !defined(rint)
-#    if !defined(HAVE_RINT)
-#      define rint(_x) (((_x) < 0.0) ? ceil((_x)-0.5) : floor((_x)+0.5))
-#    elif !defined(HAVE_WINDOWS_H) && !defined(HAVE_DECL_RINT)
+#   if !defined(rint)
+#     if !defined(HAVE_RINT)
+#       define rint(_x) (((_x) < 0.0) ? ceil((_x)-0.5) : floor((_x)+0.5))
+#     elif !defined(HAVE_WINDOWS_H) && !defined(HAVE_DECL_RINT)
 double rint(double x);
-#      define HAVE_DECL_RINT 1
-#    endif
-#  endif
+#       define HAVE_DECL_RINT 1
+#     endif
+#   endif
 
-#  if !defined(HAVE_RINT)
-#    define HAVE_RINT 1
-#  endif
-#endif
+#   if !defined(HAVE_RINT)
+#     define HAVE_RINT 1
+#   endif
+# endif
 
 /* strict c89 doesn't declare snprintf() */
 # if defined(HAVE_SNPRINTF) && !defined(HAVE_DECL_SNPRINTF) && 
!defined(snprintf) && !defined(__cplusplus)
@@ -151,12 +151,14 @@
 #endif
 
 /* make sure the old bsd types are defined for portability */
-#if !defined(HAVE_U_TYPES)
+#if defined(BRLCADBUILD) && defined(HAVE_CONFIG_H)
+# if !defined(HAVE_U_TYPES)
 typedef unsigned char u_char;
 typedef unsigned int u_int;
 typedef unsigned long u_long;
 typedef unsigned short u_short;
-#  define HAVE_U_TYPES 1
+#   define HAVE_U_TYPES 1
+# endif
 #endif
 
 /* We want 64 bit (large file) I/O capabilities whenever they are available.
@@ -170,16 +172,18 @@
  * regardless, we use it so make sure it's declared by using the
  * similar POSIX ptrdiff_t type.
  */
-#ifndef HAVE_SSIZE_T
-#  ifdef HAVE_SYS_TYPES_H
-#    include <sys/types.h>
-#  endif
-#  include <limits.h>
-#  include <stddef.h>
-#  ifndef SSIZE_MAX
+#if defined(BRLCADBUILD) && defined(HAVE_CONFIG_H)
+# ifndef HAVE_SSIZE_T
+#   ifdef HAVE_SYS_TYPES_H
+#     include <sys/types.h>
+#   endif
+#   include <limits.h>
+#   include <stddef.h>
+#   ifndef SSIZE_MAX
 typedef ptrdiff_t ssize_t;
-#    define HAVE_SSIZE_T 1
-#  endif
+#     define HAVE_SSIZE_T 1
+#   endif
+# endif
 #endif
 
 /* make sure most of the C99 stdint types are provided including the
@@ -524,6 +528,22 @@
 #  define CPP_FILELINE __FILE__ ":" CPP_XSTR(__LINE__)
 #endif
 
+/**
+ * If we've not already defined COMPILER_DLLEXPORT and COMPILER_DLLIMPORT,
+ * define them away so code including the *_EXPORT header logic won't
+ * fail.
+ */
+#if defined(_MSC_VER)
+#  define COMPILER_DLLEXPORT __declspec(dllexport)
+#  define COMPILER_DLLIMPORT __declspec(dllimport)
+#elif defined(__GNUC__) || defined(__clang__)
+#  define COMPILER_DLLEXPORT __attribute__ ((visibility ("default")))
+#  define COMPILER_DLLIMPORT __attribute__ ((visibility ("default")))
+#else
+#  define COMPILER_DLLEXPORT
+#  define COMPILER_DLLIMPORT
+#endif
+
 #endif  /* COMMON_H */
 
 /** @} */

Modified: brlcad/branches/bioh/include/gcv/api.h
===================================================================
--- brlcad/branches/bioh/include/gcv/api.h      2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/include/gcv/api.h      2020-06-09 14:44:51 UTC (rev 
76086)
@@ -202,8 +202,6 @@
  */
 GCV_EXPORT const struct bu_ptbl *gcv_list_filters(void);
 
-GCV_EXPORT const struct gcv_plugin *gcv_plugin_info(void);
-
 /**
  * Perform a filtering operation on a gcv_context.
  *

Modified: brlcad/branches/bioh/misc/CMake/BRLCAD_Targets.cmake
===================================================================
--- brlcad/branches/bioh/misc/CMake/BRLCAD_Targets.cmake        2020-06-09 
02:51:39 UTC (rev 76085)
+++ brlcad/branches/bioh/misc/CMake/BRLCAD_Targets.cmake        2020-06-09 
14:44:51 UTC (rev 76086)
@@ -149,7 +149,7 @@
 # Assemble the targets and compilation flags needed by the target
 function(GET_FLAGS_AND_DEFINITIONS targetname target_libs)
 
-  cmake_parse_arguments(G "" "CFLAGS;CXXFLAGS;DEFINES;DLL_DEFINES" "" ${ARGN})
+  cmake_parse_arguments(G "" "CFLAGS;CXXFLAGS;DEFINES" "" ${ARGN})
 
   #####################################################################
   # Compile flags - note that targets may have separate C and C++ flags
@@ -216,36 +216,6 @@
 
   endif(G_DEFINES)
 
-  # DLL defines (needed for Visual Studio import/export)
-  if(G_DLL_DEFINES)
-
-    get_property(T_DLL_DEFINES GLOBAL PROPERTY ${targetname}_DLL_DEFINES)
-    foreach(libitem ${target_libs})
-      get_property(${libitem}_DLL_DEFINES GLOBAL PROPERTY 
${libitem}_DLL_DEFINES)
-      list(APPEND T_DLL_DEFINES ${${libitem}_DLL_DEFINES})
-    endforeach(libitem ${target_libs})
-
-    # In case of re-running cmake, make sure the DLL_IMPORTS define for this
-    # specific target is removed if the target looks like a library, since for
-    # the actual library target we need to export, not import. (Don't want to
-    # do this willy-nilly, since (for example) the rt exec target and the librt
-    # library will both map to the same "UPPER_CORE" name...)
-    if(T_DLL_DEFINES AND ${targetname} MATCHES "^lib*")
-      string(REPLACE "lib" "" LOWERCORE "${targetname}")
-      string(TOUPPER ${LOWERCORE} UPPER_CORE)
-      list(REMOVE_ITEM T_DLL_DEFINES ${UPPER_CORE}_DLL_IMPORTS)
-    endif(T_DLL_DEFINES AND ${targetname} MATCHES "^lib*")
-
-    # No duplicate definitions needed
-    if(T_DLL_DEFINES)
-      list(REMOVE_DUPLICATES T_DLL_DEFINES)
-    endif(T_DLL_DEFINES)
-
-    # Send the finalized list back to the parent
-    set(${G_DLL_DEFINES} ${T_DLL_DEFINES} PARENT_SCOPE)
-
-  endif(G_DLL_DEFINES)
-
 endfunction(GET_FLAGS_AND_DEFINITIONS)
 
 # Determine the language for a target
@@ -254,7 +224,7 @@
 # than build targets (less logic, simplifies dealing with OBJECT libraries.)
 function(SET_FLAGS_AND_DEFINITIONS srcslist)
 
-  cmake_parse_arguments(S "NO_STRICT_CXX" "TARGET" 
"CFLAGS;CXXFLAGS;DEFINES;DLL_DEFINES" ${ARGN})
+  cmake_parse_arguments(S "NO_STRICT_CXX" "TARGET" "CFLAGS;CXXFLAGS;DEFINES" 
${ARGN})
 
   foreach(srcfile ${srcslist})
 
@@ -331,18 +301,6 @@
 
   endforeach(srcfile ${srcslist})
 
-  # If we have been supplied a target name, set the appropriate properties.
-  if(S_TARGET)
-    set_property(GLOBAL PROPERTY ${S_TARGET}_DEFINES "${S_DEFINES}")
-    if(S_DLL_DEFINES)
-      # Make sure we append here, since the target will probably already have 
this property set.
-      set_property(GLOBAL APPEND PROPERTY ${S_TARGET}_DLL_DEFINES 
"${S_DLL_DEFINES}")
-      foreach(tdef ${S_DLL_DEFINES})
-       set_property(TARGET ${S_TARGET} APPEND PROPERTY COMPILE_DEFINITIONS 
"${tdef}")
-      endforeach(tdef ${S_DLL_DEFINES})
-    endif(S_DLL_DEFINES)
-  endif(S_TARGET)
-
 endfunction(SET_FLAGS_AND_DEFINITIONS)
 
 
@@ -364,6 +322,9 @@
     add_executable(${execname} ${srcslist})
   endif(E_GUI)
 
+  # Set the standard build definitions for all BRL-CAD targets
+  target_compile_definitions(${execname} PRIVATE BRLCADBUILD HAVE_CONFIG_H)
+
   # Let CMAKEFILES know what's going on
   CMAKEFILES(${srcslist})
 
@@ -372,10 +333,10 @@
 
   # Use the list of libraries to be linked into this target to
   # accumulate the necessary definitions and compilation flags.
-  GET_FLAGS_AND_DEFINITIONS(${execname} "${libslist}" CFLAGS E_C_FLAGS 
CXXFLAGS E_CXX_FLAGS DEFINES E_DEFINES DLL_DEFINES E_DLL_DEFINES)
+  GET_FLAGS_AND_DEFINITIONS(${execname} "${libslist}" CFLAGS E_C_FLAGS 
CXXFLAGS E_CXX_FLAGS DEFINES E_DEFINES)
 
   # Having built up the necessary sets, apply them
-  SET_FLAGS_AND_DEFINITIONS("${srcslist}" TARGET ${execname} CFLAGS 
"${E_C_FLAGS}" CXXFLAGS "${E_CXX_FLAGS}" DEFINES "${E_DEFINES}" DLL_DEFINES 
"${E_DLL_DEFINES}")
+  SET_FLAGS_AND_DEFINITIONS("${srcslist}" TARGET ${execname} CFLAGS 
"${E_C_FLAGS}" CXXFLAGS "${E_CXX_FLAGS}" DEFINES "${E_DEFINES}")
 
   # If we have libraries to link, link them.
   if(NOT "${libslist}" STREQUAL "" AND NOT "${libslist}" STREQUAL "NONE")
@@ -437,6 +398,11 @@
 
   cmake_parse_arguments(L "SHARED;STATIC;NO_INSTALL;NO_STRICT;NO_STRICT_CXX" 
"FOLDER" "SHARED_SRCS;STATIC_SRCS" ${ARGN})
 
+  # The naming convention used for variables is the upper case of the library
+  # name, without the lib prefix.
+  string(REPLACE "lib" "" LOWERCORE "${libname}")
+  string(TOUPPER ${LOWERCORE} UPPER_CORE)
+
   # Let CMAKEFILES know what's going on
   CMAKEFILES(${srcslist} ${L_SHARED_SRCS} ${L_STATIC_SRCS})
 
@@ -448,7 +414,6 @@
     CFLAGS L_C_FLAGS
     CXXFLAGS L_CXX_FLAGS
     DEFINES L_DEFINES
-    DLL_DEFINES L_DLL_DEFINES
     )
 
   # Local copy of srcslist in case manipulation is needed
@@ -465,9 +430,11 @@
     set(lsrcslist $<TARGET_OBJECTS:${libname}-obj>)
     set_target_properties(${libname}-obj PROPERTIES FOLDER "BRL-CAD OBJECT 
Libraries${SUBFOLDER}")
 
+    # Set the standard build definitions for all BRL-CAD targets
+    target_compile_definitions(${libname}-obj PRIVATE BRLCADBUILD 
HAVE_CONFIG_H)
+
     if(HIDE_INTERNAL_SYMBOLS)
-      string(REPLACE "lib" "" LOWERCORE "${libname}")
-      string(TOUPPER ${LOWERCORE} UPPER_CORE)
+
       set_property(TARGET ${libname}-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"${UPPER_CORE}_DLL_EXPORTS")
     endif(HIDE_INTERNAL_SYMBOLS)
 
@@ -486,11 +453,12 @@
 
     add_library(${libname} SHARED ${lsrcslist} ${L_SHARED_SRCS})
 
+    # Set the standard build definitions for all BRL-CAD targets
+    target_compile_definitions(${libname} PRIVATE BRLCADBUILD HAVE_CONFIG_H)
+
     if(HIDE_INTERNAL_SYMBOLS)
-      string(REPLACE "lib" "" LOWERCORE "${libname}")
-      string(TOUPPER ${LOWERCORE} UPPER_CORE)
       set_property(TARGET ${libname} APPEND PROPERTY COMPILE_DEFINITIONS 
"${UPPER_CORE}_DLL_EXPORTS")
-      set_property(GLOBAL APPEND PROPERTY ${libname}_DLL_DEFINES 
"${UPPER_CORE}_DLL_IMPORTS")
+      set_property(TARGET ${libname} APPEND PROPERTY 
INTERFACE_COMPILE_DEFINITIONS  "${UPPER_CORE}_DLL_IMPORTS")
     endif(HIDE_INTERNAL_SYMBOLS)
 
   endif(L_SHARED OR (BUILD_SHARED_LIBS AND NOT L_STATIC))
@@ -502,6 +470,10 @@
       set(libstatic ${libname}-static)
     endif(L_STATIC)
     add_library(${libstatic} STATIC ${lsrcslist} ${L_STATIC_SRCS})
+
+    # Set the standard build definitions for all BRL-CAD targets
+    target_compile_definitions(${libstatic} PRIVATE BRLCADBUILD HAVE_CONFIG_H)
+
     if(NOT MSVC)
       set_target_properties(${libstatic} PROPERTIES OUTPUT_NAME "${libname}")
     endif(NOT MSVC)
@@ -521,7 +493,6 @@
     CFLAGS "${L_C_FLAGS}"
     CXXFLAGS "${L_CXX_FLAGS}"
     DEFINES "${L_DEFINES}"
-    DLL_DEFINES "${L_DLL_DEFINES}"
     )
 
   # Extra static lib specific work

Modified: brlcad/branches/bioh/misc/CMake/BRLCAD_Util.cmake
===================================================================
--- brlcad/branches/bioh/misc/CMake/BRLCAD_Util.cmake   2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/misc/CMake/BRLCAD_Util.cmake   2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -438,63 +438,6 @@
 endfunction(ADD_TARGET_DEPS tname)
 
 #---------------------------------------------------------------------------
-# Write out an execution script to run commands with the necessary
-# variables set to allow execution in the build directory, even if
-# there are installed libraries present in the final installation
-# directory.
-function(generate_cmd_script cmd_exe script_file)
-
-  cmake_parse_arguments(GCS "" "OLOG;ELOG" "CARGS" ${ARGN})
-
-  # Initialize file 
-  file(WRITE "${script_file}" "# Script to run ${cmd_exe}\n")
-
-  # Handle multiconfig (must be run-time determination for Visual Studio and 
XCode)
-  # TODO - logic writing this trick needs to become some sort of standard 
routine...
-  file(APPEND "${script_file}" "if(EXISTS 
\"${CMAKE_BINARY_DIR}/CMakeTmp/CURRENT_PATH/Release\")\n")
-  file(APPEND "${script_file}" "  set(CBDIR 
\"${CMAKE_BINARY_DIR}/Release\")\n")
-  file(APPEND "${script_file}" "elseif(EXISTS 
\"${CMAKE_BINARY_DIR}/CMakeTmp/CURRENT_PATH/Debug\")\n")
-  file(APPEND "${script_file}" "  set(CBDIR \"${CMAKE_BINARY_DIR}/Debug\")\n")
-  file(APPEND "${script_file}" "else(EXISTS 
\"${CMAKE_BINARY_DIR}/CMakeTmp/CURRENT_PATH/Release\")\n")
-  file(APPEND "${script_file}" "  set(CBDIR \"${CMAKE_BINARY_DIR}\")\n")
-  file(APPEND "${script_file}" "endif(EXISTS 
\"${CMAKE_BINARY_DIR}/CMakeTmp/CURRENT_PATH/Release\")\n")
-
-  # BRLCAD_ROOT is the hammer that makes certain we are running
-  # things found in the build directory
-  file(APPEND "${script_file}" "set(ENV{BRLCAD_ROOT} \"\${CBDIR}\")\n")
-
-  # Substitute in the correct binary path anywhere it is needed in the args
-  file(APPEND "${script_file}" "string(REPLACE \"CURRENT_BUILD_DIR\" 
\"\${CBDIR}\" FIXED_CMD_ARGS \"${GCS_CARGS}\")\n")
-
-  # Use the CMake executable to figure out if we need an extension
-  get_filename_component(EXE_EXT "${CMAKE_COMMAND}" EXT)
-
-  # Write the actual cmake command to run the process
-  file(APPEND "${script_file}" "execute_process(COMMAND 
\"\${CBDIR}/${BIN_DIR}/${cmd_exe}${EXE_EXT}\" \${FIXED_CMD_ARGS} 
RESULT_VARIABLE CR OUTPUT_VARIABLE CO ERROR_VARIABLE CE)\n")
-
-  # Log the outputs, if we are supposed to do that
-  if(GCS_OLOG)
-    file(APPEND "${script_file}" "file(APPEND \"${GCS_OLOG}\" \"\${CO}\")\n")
-  endif(GCS_OLOG)
-  if(GCS_ELOG)
-    file(APPEND "${script_file}" "file(APPEND \"${GCS_ELOG}\" \"\${CE}\")\n")
-  endif(GCS_ELOG)
-
-  # Fail the command if the result was non-zero
-  file(APPEND "${script_file}" "if(CR)\n")
-  file(APPEND "${script_file}" "  message(FATAL_ERROR 
\"\${CBDIR}/${BIN_DIR}/${cmd_exe}${EXE_EXT} failure: 
\${CR}\\n\${CO}\\n\${CE}\")\n")
-  file(APPEND "${script_file}" "endif(CR)\n")
-
-  # If we are doing distclean, let CMake know to remove the script and log 
files
-  if(COMMAND distclean)
-    set(distclean_files "${script_file}" "${GCS_OLOG}" "${GCS_ELOG}")
-    list(REMOVE_DUPLICATES distclean_files)
-    distclean(${distclean_files})
-  endif(COMMAND distclean)
-
-endfunction(generate_cmd_script)
-
-#---------------------------------------------------------------------------
 # Set variables reporting time of configuration.  Sets CONFIG_DATE and
 # CONFIG_DATESTAMP in parent scope.
 #

Modified: brlcad/branches/bioh/misc/CMake/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/misc/CMake/CMakeLists.txt      2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/misc/CMake/CMakeLists.txt      2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -26,7 +26,6 @@
   FindGL.cmake
   FindIlmBase.cmake
   FindLEMON.cmake
-  FindLZ4.cmake
   FindNETPBM.cmake
   FindOPENNURBS.cmake
   FindOSL.cmake

Modified: brlcad/branches/bioh/misc/CMake/DocBook.cmake
===================================================================
--- brlcad/branches/bioh/misc/CMake/DocBook.cmake       2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/misc/CMake/DocBook.cmake       2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -148,6 +148,9 @@
 # Convenience target to launch all DocBook builds
 add_custom_target(docbook ALL)
 set_target_properties(docbook PROPERTIES FOLDER "DocBook")
+if (TARGET brlcad_css)
+  add_dependencies(docbook brlcad_css)
+endif (TARGET brlcad_css)
 
 macro(ADD_DOCBOOK fmts in_xml_files outdir deps_list)
 
@@ -256,6 +259,9 @@
        # the docbook targets are built.
        #add_custom_target(docbook-${fname_root}-${path_md5} DEPENDS ${outputs})
        #set_target_properties(docbook-${fname_root}-${path_md5} PROPERTIES 
FOLDER "DocBook")
+       #if (TARGET brlcad_css)
+       #  add_dependencies(docbook-${fname_root}-${path_md5} brlcad_css)
+       #endif (TARGET brlcad_css)
       endif(NOT "${outputs}" STREQUAL "")
 
     endforeach(fname ${xml_files})

Deleted: brlcad/branches/bioh/misc/CMake/FindLZ4.cmake
===================================================================
--- brlcad/branches/bioh/misc/CMake/FindLZ4.cmake       2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/misc/CMake/FindLZ4.cmake       2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -1,64 +0,0 @@
-#                   F I N D L Z 4 . C M A K E
-# BRL-CAD
-#
-# Copyright (c) 2013-2020 United States Government as represented by
-# the U.S. Army Research Laboratory.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-#
-# 3. The name of the author may not be used to endorse or promote
-# products derived from this software without specific prior written
-# permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-###
-# The following variables are set:
-#
-#  LZ4_INCLUDE_DIRS   - where to find lz4.h, etc.
-#  LZ4_LIBRARIES      - List of libraries when using lz4.
-#  LZ4_FOUND          - True if lz4 found.
-
-find_path(LZ4_INCLUDE_DIR lz4.h)
-find_library(LZ4_LIBRARY NAMES lz4 lz4lib)
-
-# We need LZ4_compress_fast - check for it
-if(LZ4_INCLUDE_DIR AND LZ4_LIBRARY)
-  include(CheckLibraryExists)
-  check_library_exists("${LZ4_LIBRARY}" "LZ4_compress_default" "" 
HAVE_LZ4_COMPRESS_DEFAULT)
-endif(LZ4_INCLUDE_DIR AND LZ4_LIBRARY)
-
-include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR 
HAVE_LZ4_COMPRESS_DEFAULT)
-
-IF (LZ4_FOUND)
-  set(LZ4_INCLUDE_DIRS ${LZ4_INCLUDE_DIR})
-  set(LZ4_LIBRARIES    ${LZ4_LIBRARY})
-endif()
-
-# Local Variables:
-# tab-width: 8
-# mode: cmake
-# indent-tabs-mode: t
-# End:
-# ex: shiftwidth=2 tabstop=8

Modified: brlcad/branches/bioh/misc/CMake/Path_Setup.cmake
===================================================================
--- brlcad/branches/bioh/misc/CMake/Path_Setup.cmake    2020-06-09 02:51:39 UTC 
(rev 76085)
+++ brlcad/branches/bioh/misc/CMake/Path_Setup.cmake    2020-06-09 14:44:51 UTC 
(rev 76086)
@@ -40,6 +40,21 @@
   set(BIN_DIR bin)
 endif(NOT BIN_DIR)
 
+# Define a relative path that will "reset" a path back to
+# the point before BIN_DIR was appended.  This is primarily
+# useful when working with generator expressions
+unset(RBIN_DIR CACHE)
+set(LBIN_DIR "${BIN_DIR}")
+while (NOT "${LBIN_DIR}" STREQUAL "")
+  get_filename_component(LBDIR "${LBIN_DIR}" DIRECTORY)
+  set(LBIN_DIR "${LBDIR}")
+  if ("${RBIN_DIR}" STREQUAL "")
+    set(RBIN_DIR "..")
+  else ("${RBIN_DIR}" STREQUAL "")
+    set(RBIN_DIR "../${RBIN_DIR}")
+  endif ("${RBIN_DIR}" STREQUAL "")
+endwhile (NOT "${LBIN_DIR}" STREQUAL "")
+
 # The location in which to install BRL-CAD libraries.
 if(NOT LIB_DIR)
   set(LIB_DIR lib)

Modified: brlcad/branches/bioh/misc/debian/changelog
===================================================================
--- brlcad/branches/bioh/misc/debian/changelog  2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/misc/debian/changelog  2020-06-09 14:44:51 UTC (rev 
76086)
@@ -1,3 +1,10 @@
+brlcad (7.30.8-0) unstable; urgency=low
+
+  * update brlcad version
+
+ -- Cliff Yapp <[email protected]>  Wed, 13 Apr 2020 05:34:29 UTC 
+
+
 brlcad (7.30.6-0) unstable; urgency=low
 
   * update brlcad version

Modified: brlcad/branches/bioh/misc/flawfinder
===================================================================
--- brlcad/branches/bioh/misc/flawfinder        2020-06-09 02:51:39 UTC (rev 
76085)
+++ brlcad/branches/bioh/misc/flawfinder        2020-06-09 14:44:51 UTC (rev 
76086)
@@ -14,7 +14,7 @@
 #
 # Currently this program can only analyze C/C++ code.
 #
-# Copyright (C) 2001-2017 David A. Wheeler.
+# Copyright (C) 2001-2019 David A. Wheeler.
 # This is released under the
 # GNU General Public License (GPL) version 2 or later (GPL-2.0+):
 #
@@ -55,7 +55,7 @@
 import hashlib
 # import formatter
 
-version = "2.0.4"
+version = "2.0.11"
 
 # Program Options - these are the default values.
 # TODO: Switch to boolean types where appropriate.
@@ -80,7 +80,7 @@
 patch_file = ""  # File containing (unified) diff output.
 loadhitlist = None
 savehitlist = None
-diffhitlist = None
+diffhitlist_filename = None
 quiet = 0
 showheading = 1  # --dataonly turns this off
 output_format = 0  # 0 = normal, 1 = html.
@@ -91,6 +91,10 @@
 required_regex = None  # If non-None, regex that must be met to report
 required_regex_compiled = None
 
+ERROR_ON_DISABLED_VALUE = 999
+error_level = ERROR_ON_DISABLED_VALUE  # Level where we're return error code
+error_level_exceeded = False
+
 displayed_header = 0  # Have we displayed the header yet?
 num_ignored_hits = 0  # Number of ignored hits (used if never_ignore==0)
 
@@ -112,10 +116,7 @@
 sloc = 0  # Physical SLOC
 starttime = time.time()  # Used to determine analyzed lines/second.
 
-line_beginning = re.compile(r'(?m)^')
-blank_line = re.compile(r'(?m)^\s+$')
 
-
 # Send warning message.  This is written this way to work on
 # Python version 2.5 through Python 3.
 def print_warning(message):
@@ -183,9 +184,9 @@
 # Also, "newfile" can have " (comment)" postpended.  Find and eliminate this.
 # Note that the expression below is Y10K (and Y100K) ready. :-).
 diff_findjunk = re.compile(
-    r'^(?P<filename>.*)(' +
-    r'(\s\d\d\d\d+-\d\d-\d\d\s+\d\d:\d[0-9:.]+Z?(\s+[\-\+0-9A-Z]+)?)|' +
-    r'(\s[A-Za-z][a-z]+\s[A-za-z][a-z]+\s\d+\s\d+:\d[0-9:.]+Z?' +
+    r'^(?P<filename>.*)('
+    r'(\s\d\d\d\d+-\d\d-\d\d\s+\d\d:\d[0-9:.]+Z?(\s+[\-\+0-9A-Z]+)?)|'
+    r'(\s[A-Za-z][a-z]+\s[A-za-z][a-z]+\s\d+\s\d+:\d[0-9:.]+Z?'
     r'(\s[\-\+0-9]*)?\s\d\d\d\d+)|'
     r'(\s\(.*\)))\s*$'
 )
@@ -222,10 +223,6 @@
     return None
 
 
-git_splitter = ' b/'
-len_git_splitter = len(git_splitter)
-
-
 def git_diff_get_filename(sLine):
     return diff_git_filename.match(sLine)
 
@@ -242,7 +239,7 @@
         hPatch = open(input_patch_file, 'r')
     except BaseException:
         print("Error: failed to open", h(input_patch_file))
-        sys.exit(1)
+        sys.exit(10)
 
     patched_filename = ""  # Name of new file patched by current hunk.
 
@@ -256,7 +253,7 @@
         fn_get_filename = gnu_diff_get_filename
     else:
         print("Error: Unrecognized patch format")
-        sys.exit(1)
+        sys.exit(11)
 
     while True:  # Loop-and-half construct.  Read a line, end loop when no more
 
@@ -268,7 +265,7 @@
             if patched_filename in patch:
                 error("filename occurs more than once in the patch: %s" %
                       patched_filename)
-                sys.exit(1)
+                sys.exit(12)
             else:
                 patch[patched_filename] = {}
         else:
@@ -276,10 +273,10 @@
             if hunk_match:
                 if patched_filename == "":
                     error(
-                        "wrong type of patch file : " +
+                        "wrong type of patch file : "
                         "we have a line number without having seen a filename"
                     )
-                    sys.exit(1)
+                    sys.exit(13)
                 initial_number = hunk_match.group('linenumber')
                 line_counter = 0
             else:
@@ -311,10 +308,12 @@
     # Take s, and return legal (UTF-8) HTML.
     return s.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
 
+
 def h(s):
     # htmlize s if we're generating html, otherwise just return s.
     return htmlize(s) if output_format else s
 
+
 def print_multi_line(text):
     # Print text as multiple indented lines.
     width = 78
@@ -331,11 +330,12 @@
             position = starting_position
         print(' ', end='')
         print(w, end='')
-        position = position + len(w) + 1
+        position += len(w) + 1
 
+
 # This matches references to CWE identifiers, so we can HTMLize them.
 # We don't refer to CWEs with one digit, so we'll only match on 2+ digits.
-link_cwe_pattern = re.compile(r'(CWE-([1-9][0-9]+))([,()])')
+link_cwe_pattern = re.compile(r'(CWE-([1-9][0-9]+))([,()!/])')
 
 # This matches the CWE data, including multiple entries.
 find_cwe_pattern = re.compile(r'\(CWE-[^)]*\)')
@@ -394,6 +394,16 @@
     def __getitem__(self, X):  # Define this so this works: "%(line)" % hit
         return getattr(self, X)
 
+    def __eq__(self, other):
+        return (self.filename == other.filename
+                and self.line == other.line
+                and self.column == other.column
+                and self.level == other.level
+                and self.name == other.name)
+
+    def __ne__(self, other):
+        return not self == other
+
     # return CWEs
     def cwes(self):
         result = find_cwe_pattern.search(self.warning)
@@ -439,7 +449,7 @@
         main_text = h("%(warning)s. " % self)
         if output_format:  # Create HTML link to CWE definitions
             main_text = link_cwe_pattern.sub(
-                r'<a 
href="http://cwe.mitre.org/data/definitions/\2.html";>\1</a>\3',
+                r'<a 
href="https://cwe.mitre.org/data/definitions/\2.html";>\1</a>\3',
                 main_text)
         if single_line:
             print(main_text, end='')
@@ -448,8 +458,8 @@
             print(' ' + h(self.note), end='')
         else:
             if self.suggestion:
-                main_text = main_text + h(self.suggestion) + ". "
-            main_text = main_text + h(self.note)
+                main_text += h(self.suggestion) + ". "
+            main_text += h(self.note)
             print()
             print_multi_line(main_text)
         if output_format:
@@ -476,13 +486,12 @@
     if required_regex and (required_regex_compiled.search(hit.warning) is
                            None):
         return
-    if hit.level >= minimum_level:
-        if linenumber == ignoreline:
-            num_ignored_hits = num_ignored_hits + 1
-        else:
-            hitlist.append(hit)
-            if show_immediately:
-                hit.show()
+    if linenumber == ignoreline:
+        num_ignored_hits += 1
+    else:
+        hitlist.append(hit)
+        if show_immediately:
+            hit.show()
 
 
 def internal_warn(message):
@@ -501,12 +510,12 @@
         if text[i] == '(':
             break
         elif text[i] in string.whitespace:
-            i = i + 1
+            i += 1
         else:
             return []
     else:  # Never found a reasonable ending.
         return []
-    i = i + 1
+    i += 1
     parameters = [""]  # Insert 0th entry, so 1st parameter is parameter[1].
     currentstart = i
     parenlevel = 1
@@ -526,11 +535,11 @@
                 # parse that deeply, we just need to know we'll stay
                 # in string mode:
             elif c == '\\':
-                i = i + 1
+                i += 1
         elif incomment:
             if c == '*' and text[i:i + 2] == '*/':
                 incomment = 0
-                i = i + 1
+                i += 1
         else:
             if c == '"':
                 instring = 1
@@ -538,20 +547,20 @@
                 instring = 2
             elif c == '/' and text[i:i + 2] == '/*':
                 incomment = 1
-                i = i + 1
+                i += 1
             elif c == '/' and text[i:i + 2] == '//':
                 while i < len(text) and text[i] != "\n":
-                    i = i + 1
+                    i += 1
             elif c == '\\' and text[i:i + 2] == '\\"':
-                i = i + 1  # Handle exposed '\"'
+                i += 1  # Handle exposed '\"'
             elif c == '(':
-                parenlevel = parenlevel + 1
+                parenlevel += 1
             elif c == ',' and (parenlevel == 1):
                 parameters.append(
                     p_trailingbackslashes.sub('', 
text[currentstart:i]).strip())
                 currentstart = i + 1
             elif c == ')':
-                parenlevel = parenlevel - 1
+                parenlevel -= 1
                 if parenlevel <= 0:
                     parameters.append(
                         p_trailingbackslashes.sub(
@@ -565,9 +574,10 @@
                     "Parsing failed to find end of parameter list; "
                     "semicolon terminated it in %s" % text[pos:pos + 200])
                 return parameters
-        i = i + 1
+        i += 1
     internal_warn("Parsing failed to find end of parameter list in %s" %
                   text[pos:pos + 200])
+    return []  # Treat unterminated list as an empty list
 
 
 # These patterns match gettext() and _() for internationalization.
@@ -577,8 +587,8 @@
 # In practice, this doesn't seem to be a problem; gettext() is usually
 # wrapped around the entire parameter.
 # The ?s makes it posible to match multi-line strings.
-gettext_pattern = re.compile(r'(?s)^\s*' + 'gettext' + r'\s*\((.*)\)\s*$')
-undersc_pattern = re.compile(r'(?s)^\s*' + '_(T(EXT)?)?' + r'\s*\((.*)\)\s*$')
+gettext_pattern = re.compile(r'(?s)^\s*' 'gettext' r'\s*\((.*)\)\s*$')
+undersc_pattern = re.compile(r'(?s)^\s*' '_(T(EXT)?)?' r'\s*\((.*)\)\s*$')
 
 
 def strip_i18n(text):
@@ -604,6 +614,7 @@
     "Returns true if text is a C string with 0 or 1 character."
     return 1 if p_c_singleton_string.search(text) else 0
 
+
 # This string defines a C constant.
 p_c_constant_string = re.compile(r'^\s*L?"([^\\]|\\[^0-6]|\\[0-6]+)*"$')
 
@@ -614,7 +625,20 @@
 
 # Precompile patterns for speed.
 
+p_memcpy_sizeof = re.compile(r'sizeof\s*\(\s*([^)\s]*)\s*\)')
+p_memcpy_param_amp = re.compile(r'&?\s*(.*)')
 
+def c_memcpy(hit):
+    if len(hit.parameters) < 4: # 3 parameters
+        add_warning(hit)
+        return
+
+    m1 = re.search(p_memcpy_param_amp, hit.parameters[1])
+    m3 = re.search(p_memcpy_sizeof, hit.parameters[3])
+    if not m1 or not m3 or m1.group(1) != m3.group(1):
+        add_warning(hit)
+
+
 def c_buffer(hit):
     source_position = hit.source_position
     if source_position <= len(hit.parameters) - 1:
@@ -628,7 +652,7 @@
     add_warning(hit)
 
 
-p_dangerous_strncat = re.compile(r'^\s*sizeof\s*(\(\s*)?[A-Za-z_$0-9]+' +
+p_dangerous_strncat = re.compile(r'^\s*sizeof\s*(\(\s*)?[A-Za-z_$0-9]+'
                                  r'\s*(\)\s*)?(-\s*1\s*)?$')
 # This is a heuristic: constants in C are usually given in all
 # upper case letters.  Yes, this need not be true, but it's true often
@@ -666,7 +690,7 @@
             hit.level = 5
             hit.note = (
                 "Risk is high; the length parameter appears to be a constant, "
-                + "instead of computing the number of characters left.")
+                "instead of computing the number of characters left.")
             add_warning(hit)
             return
     c_buffer(hit)
@@ -744,9 +768,9 @@
             elif p_low_risk_scanf_format.search(source):
                 # This is often okay, but sometimes extremely serious.
                 hit.level = 1
-                hit.warning = ("It's unclear if the %s limit in the " +
+                hit.warning = ("It's unclear if the %s limit in the "
                                "format string is small enough (CWE-120)")
-                hit.suggestion = ("Check that the limit is sufficiently " +
+                hit.suggestion = ("Check that the limit is sufficiently "
                                   "small, or use a different input function")
             else:
                 # No risky scanf request.
@@ -756,16 +780,16 @@
                 hit.note = "No risky scanf format detected."
         else:
             # Format isn't a constant.
-            hit.note = ("If the scanf format is influenceable " +
+            hit.note = ("If the scanf format is influenceable "
                         "by an attacker, it's exploitable.")
     add_warning(hit)
 
 
-p_dangerous_multi_byte = re.compile(r'^\s*sizeof\s*(\(\s*)?[A-Za-z_$0-9]+' +
+p_dangerous_multi_byte = re.compile(r'^\s*sizeof\s*(\(\s*)?[A-Za-z_$0-9]+'
                                     r'\s*(\)\s*)?(-\s*1\s*)?$')
 p_safe_multi_byte = re.compile(
-    r'^\s*sizeof\s*(\(\s*)?[A-Za-z_$0-9]+\s*(\)\s*)?' +
-    r'/\s*sizeof\s*\(\s*?[A-Za-z_$0-9]+\s*' + r'\[\s*0\s*\]\)\s*(-\s*1\s*)?$')
+    r'^\s*sizeof\s*(\(\s*)?[A-Za-z_$0-9]+\s*(\)\s*)?'
+    r'/\s*sizeof\s*\(\s*?[A-Za-z_$0-9]+\s*\[\s*0\s*\]\)\s*(-\s*1\s*)?$')
 
 
 def c_multi_byte_to_wide_char(hit):
@@ -778,7 +802,7 @@
             hit.level = 5
             hit.note = (
                 "Risk is high, it appears that the size is given as bytes, but 
the "
-                + "function requires size as characters.")
+                "function requires size as characters.")
         elif p_safe_multi_byte.search(num_chars_to_copy):
             # This isn't really risk-free, since it might not be the 
destination,
             # or the destination might be a character array (if it's a char 
pointer,
@@ -816,6 +840,14 @@
         add_warning(hit)  # Found a static array, warn about it.
 
 
+def cpp_unsafe_stl(hit):
+    # Use one of the overloaded classes from the STL in C++14 and higher
+    # instead of the <C++14 versions of theses functions that did not
+    # if the second iterator could overflow
+    if len(hit.parameters) <= 4:
+        add_warning(hit)
+
+
 def normal(hit):
     add_warning(hit)
 
@@ -850,7 +882,7 @@
      "Consider using a function version that stops copying at the end of the 
buffer",
      "buffer", "", {}),
     "memcpy|CopyMemory|bcopy":
-    (normal, 2,  # I've found this to have a lower risk in practice.
+    (c_memcpy, 2,  # I've found this to have a lower risk in practice.
      "Does not check for buffer overflows when copying to destination 
(CWE-120)",
      "Make sure destination can always hold the source data",
      "buffer", "", {}),
@@ -865,7 +897,7 @@
      "",
      "buffer", "", {}),
     # TODO: Do more analysis.  Added because they're in MS banned list.
-    
"StrCat|StrCatA|StrcatW|lstrcatA|lstrcatW|strCatBuff|StrCatBuffA|StrCatBuffW|StrCatChainW|_tccat|_mbccat|_ftcsat|StrCatN|StrCatNA|StrCatNW|StrNCat|StrNCatA|StrNCatW|lstrncat|lstrcatnA|lstrcatnW":
+    
"StrCat|StrCatA|StrcatW|lstrcatA|lstrcatW|strCatBuff|StrCatBuffA|StrCatBuffW|StrCatChainW|_tccat|_mbccat|_ftcscat|StrCatN|StrCatNA|StrCatNW|StrNCat|StrNCatA|StrNCatW|lstrncat|lstrcatnA|lstrcatnW":
     (normal, 4,
      "Does not check for buffer overflows when concatenating to destination 
[MS-banned] (CWE-120)",
      "",
@@ -875,7 +907,7 @@
      1,  # Low risk level, because this is often used correctly when FIXING 
security
      # problems, and raising it to a higher risk level would cause many false
      # positives.
-     "Easily used incorrectly; doesn't always \\0-terminate or " +
+     "Easily used incorrectly; doesn't always \\0-terminate or "
      "check for invalid pointers [MS-banned] (CWE-120)",
      "",
      "buffer", "", {}),
@@ -884,7 +916,7 @@
      1,  # Low risk level, because this is often used correctly when FIXING 
security
      # problems, and raising it to a higher risk levle would cause many false
      # positives.
-     "Easily used incorrectly; doesn't always \\0-terminate or " +
+     "Easily used incorrectly; doesn't always \\0-terminate or "
      "check for invalid pointers [MS-banned] (CWE-120)",
      "",
      "buffer", "", {}),
@@ -911,9 +943,9 @@
      "buffer", "", {}),
     "char|TCHAR|wchar_t":  # This isn't really a function call, but it works.
     (c_static_array, 2,
-     "Statically-sized arrays can be improperly restricted, " +
+     "Statically-sized arrays can be improperly restricted, "
      "leading to potential overflows or other issues (CWE-119!/CWE-120)",
-     "Perform bounds checking, use functions that limit length, " +
+     "Perform bounds checking, use functions that limit length, "
      "or ensure that the size is larger than the maximum possible length",
      "buffer", "", {'extract_lookahead': 1}),
 
@@ -943,7 +975,7 @@
     # The "syslog" hook will raise "format" issues.
     "syslog":
     (c_printf, 4,
-     "If syslog's format strings can be influenced by an attacker, " +
+     "If syslog's format strings can be influenced by an attacker, "
      "they can be exploited (CWE-134)",
      "Use a constant format string for syslog",
      "format", "", {'format_position': 2}),
@@ -950,7 +982,7 @@
 
     "snprintf|vsnprintf|_snprintf|_sntprintf|_vsntprintf":
     (c_printf, 4,
-     "If format strings can be influenced by an attacker, they can be " +
+     "If format strings can be influenced by an attacker, they can be "
      "exploited, and note that sprintf variations do not always \\0-terminate 
(CWE-134)",
      "Use a constant for the format specification",
      "format", "", {'format_position': 3}),
@@ -957,7 +989,7 @@
 
     "scanf|vscanf|wscanf|_tscanf|vwscanf":
     (c_scanf, 4,
-     "The scanf() family's %s operation, without a limit specification, " +
+     "The scanf() family's %s operation, without a limit specification, "
      "permits buffer overflows (CWE-120, CWE-20)",
      "Specify a limit to %s, or use a different input function",
      "buffer", "", {'input': 1}),
@@ -974,8 +1006,8 @@
      # Often this isn't really a risk, and even when it is, at worst it
      # often causes a program crash (and nothing worse).
      1,
-     "Does not handle strings that are not \\0-terminated; " +
-     "if given one it may perform an over-read (it could cause a crash " +
+     "Does not handle strings that are not \\0-terminated; "
+     "if given one it may perform an over-read (it could cause a crash "
      "if unprotected) (CWE-126)",
      "",
      "buffer", "", {}),
@@ -1001,10 +1033,10 @@
 
     "realpath":
     (normal, 3,
-     "This function does not protect against buffer overflows, " +
+     "This function does not protect against buffer overflows, "
      "and some implementations can overflow internally (CWE-120/CWE-785!)",
-     "Ensure that the destination buffer is at least of size MAXPATHLEN, and" +
-     "to protect against implementation problems, the input argument " +
+     "Ensure that the destination buffer is at least of size MAXPATHLEN, and"
+     "to protect against implementation problems, the input argument "
      "should also be checked to ensure it is no larger than MAXPATHLEN",
      "buffer", "dangers-c", {}),
 
@@ -1030,43 +1062,43 @@
 
     "access":        # ???: TODO: analyze TOCTOU more carefully.
     (normal, 4,
-     "This usually indicates a security flaw.  If an " +
-     "attacker can change anything along the path between the " +
-     "call to access() and the file's actual use (e.g., by moving " +
+     "This usually indicates a security flaw.  If an "
+     "attacker can change anything along the path between the "
+     "call to access() and the file's actual use (e.g., by moving "
      "files), the attacker can exploit the race condition (CWE-362/CWE-367!)",
-     "Set up the correct permissions (e.g., using setuid()) and " +
+     "Set up the correct permissions (e.g., using setuid()) and "
      "try to open the file directly",
      "race",
      "avoid-race#atomic-filesystem", {}),
     "chown":
     (normal, 5,
-     "This accepts filename arguments; if an attacker " +
+     "This accepts filename arguments; if an attacker "
      "can move those files, a race condition results. (CWE-362)",
      "Use fchown( ) instead",
      "race", "", {}),
     "chgrp":
     (normal, 5,
-     "This accepts filename arguments; if an attacker " +
+     "This accepts filename arguments; if an attacker "
      "can move those files, a race condition results. (CWE-362)",
      "Use fchgrp( ) instead",
      "race", "", {}),
     "chmod":
     (normal, 5,
-     "This accepts filename arguments; if an attacker " +
+     "This accepts filename arguments; if an attacker "
      "can move those files, a race condition results. (CWE-362)",
      "Use fchmod( ) instead",
      "race", "", {}),
     "vfork":
     (normal, 2,
-     "On some old systems, vfork() permits race conditions, and it's " +
+     "On some old systems, vfork() permits race conditions, and it's "
      "very difficult to use correctly (CWE-362)",
      "Use fork() instead",
      "race", "", {}),
     "readlink":
     (normal, 5,
-     "This accepts filename arguments; if an attacker " +
-     "can move those files or change the link content, " +
-     "a race condition results.  " +
+     "This accepts filename arguments; if an attacker "
+     "can move those files or change the link content, "
+     "a race condition results.  "
      "Also, it does not terminate with ASCII NUL. (CWE-362, CWE-20)",
      # This is often just a bad idea, and it's hard to suggest a
      # simple alternative:
@@ -1112,7 +1144,7 @@
     # Windows.  TODO: Detect correct usage approaches and ignore it.
     "GetTempFileName":
     (normal, 3,
-     "Temporary file race condition in certain cases " +
+     "Temporary file race condition in certain cases "
      "(e.g., if run as SYSTEM in many versions of Windows) (CWE-377)",
      "",
      "tmpfile", "avoid-race", {}),
@@ -1121,7 +1153,7 @@
     "execl|execlp|execle|execv|execvp|system|popen|WinExec|ShellExecute":
     (normal, 4,
      "This causes a new program to execute and is difficult to use safely 
(CWE-78)",
-     "try using a library call that implements the same functionality " +
+     "try using a library call that implements the same functionality "
      "if available",
      "shell", "", {}),
 
@@ -1138,16 +1170,16 @@
     "CreateProcess":
     (c_hit_if_null, 3,
      "This causes a new process to execute and is difficult to use safely 
(CWE-78)",
-     "Specify the application path in the first argument, NOT as part of the 
second, " +
+     "Specify the application path in the first argument, NOT as part of the 
second, "
      "or embedded spaces could allow an attacker to force a different program 
to run",
      "shell", "", {'check_for_null': 1}),
 
     "atoi|atol|_wtoi|_wtoi64":
     (normal, 2,
-     "Unless checked, the resulting number can exceed the expected range " +
+     "Unless checked, the resulting number can exceed the expected range "
      "(CWE-190)",
-     "If source untrusted, check both minimum and maximum, even if the" +
-     " input had no minus sign (large numbers can roll over into negative" +
+     "If source untrusted, check both minimum and maximum, even if the"
+     " input had no minus sign (large numbers can roll over into negative"
      " number; consider saving to an unsigned value if that is intended)",
      "integer", "dangers-c", {}),
 
@@ -1158,13 +1190,13 @@
      "Use a more secure technique for acquiring random values",
      "random", "", {}),
 
-    "crypt":
+    "crypt|crypt_r":
     (normal, 4,
-     "Function crypt is a poor one-way hashing algorithm; " +
-     "since it only accepts passwords of 8 characters or less, " +
-     "and only a two-byte salt, it is excessively vulnerable to " +
+     "The crypt functions use a poor one-way hashing algorithm; "
+     "since they only accept passwords of 8 characters or fewer "
+     "and only a two-byte salt, they are excessively vulnerable to "
      "dictionary attacks given today's faster computing equipment (CWE-327)",
-     "Use a different algorithm, such as SHA-256, with a larger " +
+     "Use a different algorithm, such as SHA-256, with a larger, "
      "non-repeating salt",
      "crypto", "", {}),
 
@@ -1172,7 +1204,7 @@
     "EVP_des_ecb|EVP_des_cbc|EVP_des_cfb|EVP_des_ofb|EVP_desx_cbc":
     (normal, 4,
      "DES only supports a 56-bit keysize, which is too small given today's 
computers (CWE-327)",
-     "Use a different patent-free encryption algorithm with a larger keysize, 
" +
+     "Use a different patent-free encryption algorithm with a larger keysize, "
      "such as 3DES or AES",
      "crypto", "", {}),
 
@@ -1180,7 +1212,7 @@
     "EVP_rc4_40|EVP_rc2_40_cbc|EVP_rc2_64_cbc":
     (normal, 4,
      "These keysizes are too small given today's computers (CWE-327)",
-     "Use a different patent-free encryption algorithm with a larger keysize, 
" +
+     "Use a different patent-free encryption algorithm with a larger keysize, "
      "such as 3DES or AES",
      "crypto", "", {}),
 
@@ -1187,31 +1219,30 @@
     "chroot":
     (normal, 3,
      "chroot can be very helpful, but is hard to use correctly (CWE-250, 
CWE-22)",
-     "Make sure the program immediately chdir(\"/\")," +
-     " closes file descriptors," +
-     " and drops root privileges, and that all necessary files" +
+     "Make sure the program immediately chdir(\"/\"), closes file descriptors,"
+     " and drops root privileges, and that all necessary files"
      " (and no more!) are in the new root",
      "misc", "", {}),
 
     "getenv|curl_getenv":
-    (normal, 3, "Environment variables are untrustable input if they can be" +
-     " set by an attacker.  They can have any content and" +
+    (normal, 3, "Environment variables are untrustable input if they can be"
+     " set by an attacker.  They can have any content and"
      " length, and the same variable can be set more than once (CWE-807, 
CWE-20)",
      "Check environment variables carefully before using them",
      "buffer", "", {'input': 1}),
 
     "g_get_home_dir":
-    (normal, 3, "This function is synonymous with 'getenv(\"HOME\")';" +
-     "it returns untrustable input if the environment can be" +
-     "set by an attacker.  It can have any content and length, " +
+    (normal, 3, "This function is synonymous with 'getenv(\"HOME\")';"
+     "it returns untrustable input if the environment can be"
+     "set by an attacker.  It can have any content and length, "

@@ 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