Index: doc/docbook/system/man1/CMakeLists.txt
===================================================================
--- doc/docbook/system/man1/CMakeLists.txt	(revision 74688)
+++ doc/docbook/system/man1/CMakeLists.txt	(working copy)
@@ -1,6 +1,7 @@
 set(man1_EN
   ap-pix.xml
   alias-pix.xml
+  art.xml
   asc-nmg.xml
   asc-plot3.xml
   asc2dsp.xml
Index: doc/docbook/system/man1/art.xml
===================================================================
--- doc/docbook/system/man1/art.xml	(nonexistent)
+++ doc/docbook/system/man1/art.xml	(working copy)
@@ -0,0 +1,63 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="art1">
+  <refmeta>
+      <refentrytitle>ART
+</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="source">BRL-CAD</refmiscinfo>
+    <refmiscinfo class="manual">BRL-CAD User Commands</refmiscinfo>
+  </refmeta>
+
+  <refnamediv xml:id="name">
+    <refname>art</refname>
+    <refpurpose>
+      raytrace an mged model using appleseed, giving a shaded picture
+    </refpurpose>
+  </refnamediv>
+
+  <!-- body begins here -->
+  <refsynopsisdiv xml:id="synopsis">
+    <cmdsynopsis sepchar=" ">
+      <command>art</command>
+      <arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
+      <arg choice="plain" rep="norepeat"><replaceable>model.g</replaceable></arg>
+      <arg choice="plain" rep="repeat"><replaceable>objects</replaceable></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+
+  <refsection xml:id="description"><title>DESCRIPTION</title>
+
+    <para>
+      <command>art</command> operates on the indicated
+      <emphasis remap="I">objects</emphasis> in the input
+      <emphasis remap="I">model.g</emphasis> and uses appleseed to produce a
+      color-shaded image as the output. By default, the output is placed on the
+      current framebuffer as it is computed.  The environment variable FB_FILE
+      specifies the current framebuffer, see
+      <citerefentry><refentrytitle>brlcad</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+    </para>
+
+  </refsection>
+
+  <refsection xml:id="see_also"><title>SEE ALSO</title>
+  <para><citerefentry><refentrytitle>brlcad</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+  <citerefentry><refentrytitle>mged</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+  <citerefentry><refentrytitle>rt</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+  <citerefentry><refentrytitle>librt</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+  <citerefentry><refentrytitle>ray</refentrytitle><manvolnum>5V</manvolnum></citerefentry></para>
+  </refsection>
+
+  <refsection xml:id="author"><title>AUTHOR</title>
+  <para>BRL-CAD Team</para>
+  </refsection>
+
+  <refsection xml:id="copyright"><title>COPYRIGHT</title>
+  <para>This software is Copyright (c) 1984-2019 United States Government as
+  represented by the U.S. Army Research Laboratory.</para>
+  </refsection>
+
+  <refsection xml:id="bug_reports"><title>BUG REPORTS</title>
+  <para>Reports of bugs or problems should be submitted via electronic
+  mail to <email>devs@brlcad.org</email></para>
+  </refsection>
+</refentry>
Index: src/art/CMakeLists.txt
===================================================================
--- src/art/CMakeLists.txt	(revision 74688)
+++ src/art/CMakeLists.txt	(working copy)
@@ -31,20 +31,25 @@
 
   # Using the binary version of appleseed on Linux, we need a couple specific additional
   # libraries linked in
-  get_filename_component(APPLESEED_LIB_DIR "${APPLESEED_LIBRARY}" DIRECTORY)
-  file(GLOB APPLESEED_BOOST_SYSTEM_LIB "${APPLESEED_LIB_DIR}/libboost_system-*")
-  file(GLOB APPLESEED_OPENIMAGEIO_LIB "${APPLESEED_LIB_DIR}/libOpenImageIO.*")
+  # get_filename_component(APPLESEED_LIB_DIR "${APPLESEED_LIBRARY}" DIRECTORY)
+  # file(GLOB APPLESEED_BOOST_SYSTEM_LIB "${APPLESEED_LIB_DIR}/libboost_system-*")
+  # file(GLOB APPLESEED_OPENIMAGEIO_LIB "${APPLESEED_LIB_DIR}/libOpenImageIO.*")
+  find_package(Boost 1.61)
+  set(Boost_MULTITHREADED TRUE)
+  set(Boost_USE_STATIC_LIBS TRUE)
 
   include_directories(
     ${APPLESEED_INCLUDE_DIRS}
+    ${Boost_INCLUDE_DIRS}
     )
 
   set(ART_SRCS
     art.cpp
     ../rt/opt.c
+    ../rt/usage.cpp
     )
 
-  BRLCAD_ADDEXEC(art "${ART_SRCS}" "${RT_STD_LIBS};${APPLESEED_LIBRARIES};${APPLESEED_BOOST_SYSTEM_LIB};${APPLESEED_OPENIMAGEIO_LIB}" TEST_USESDATA)
+  BRLCAD_ADDEXEC(art "${ART_SRCS}" "${RT_STD_LIBS};${APPLESEED_LIBRARIES};${Boost_LIBRARIES}" TEST_USESDATA)
 endif(APPLESEED_FOUND)
 
 set(art_ignore_files
Index: src/art/art.cpp
===================================================================
--- src/art/art.cpp	(revision 74688)
+++ src/art/art.cpp	(working copy)
@@ -62,7 +62,10 @@
  *
  */
 
+
 #include "common.h"
+/* avoid redefining the appleseed sleep function */
+#undef sleep
 
 #include <stdlib.h>
 #include <math.h>
@@ -94,6 +97,7 @@
 #  pragma clang diagnostic ignored "-Wignored-qualifiers"
 #endif
 
+
 // appleseed.renderer headers. Only include header files from renderer/api/.
 #include "renderer/api/bsdf.h"
 #include "renderer/api/camera.h"
@@ -131,16 +135,19 @@
 #endif
 
 
-#include "vmath.h"		/* vector math macros */
-#include "raytrace.h"		/* librt interface definitions */
+#include "vmath.h"	/* vector math macros */
+#include "raytrace.h"	    /* librt interface definitions */
 
-
 /* NOTE: stub in empty rt_cmdtab to satisfy ../rt/opt.c - this means
  * we can't run the commands, but they are tied deeply into the various
  * src/rt files and a significant refactor is in order to properly
  * extract that functionality into a library... */
-struct command_tab rt_cmdtab[] = {{NULL, NULL, NULL, 0, 0, 0}};
 
+extern "C" {
+    struct command_tab rt_cmdtab[] = { {NULL, NULL, NULL, 0, 0, 0} };
+    void usage(const char* argv0, int verbose);
+    int get_args(int argc, const char* argv[]);
+}
 
 // Define shorter namespaces for convenience.
 namespace asf = foundation;
@@ -361,10 +368,18 @@
 int
 main(int argc, char **argv)
 {
-    if (argc > 1) {
-	bu_log("TODO: %s is currently only a demo, doesn't accept a .g file and objects...\n", argv[0]);
+    /* Process command line options */
+    /*
+    int i = get_args(argc, (const char**)argv);
+    if (i < 0) {
+	usage(argv[0], 0);
+	return 1;
     }
-
+    else if (i == 0) {
+	usage(argv[0], 100);
+	return 0;
+    } */
+    
     // Create a log target that outputs to stderr, and binds it to the renderer's global logger.
     // Eventually you will probably want to redirect log messages to your own target. For this
     // you will need to implement foundation::ILogTarget (foundation/utility/log/ilogtarget.h).
