--- /dev/null
+Add include guards to all boost includes, as qt's moc trips
+over nested BOOST_JOIN macros:
+* /usr/lib64/qt4/bin/moc @/var/tmp/portage/media-gfx/aqsis-1.8.2/work/aqsis-1.8.2_build/tools/piqsl/moc_piqsl_ui.cxx_parameters
+* /usr/include/boost/type_traits/detail/has_binary_operator.hp:50: Parse error at "BOOST_JOIN"
+See also: https://bugs.gentoo.org/show_bug.cgi?id=574560
+
+--- aqsis-1.8.2/tools/piqsl/piqsl_ui.cpp
++++ aqsis-1.8.2/tools/piqsl/piqsl_ui.cpp
+@@ -42,7 +42,9 @@
+ #include <QtGui/QPainter>
+ #include <QtGui/QImage>
+
++#ifndef Q_MOC_RUN
+ #include <boost/thread.hpp>
++#endif
+
+ #include <aqsis/version.h>
+ #include <aqsis/math/math.h>
+--- aqsis-1.8.2/tools/piqsl/piqsl_ui.h
++++ aqsis-1.8.2/tools/piqsl/piqsl_ui.h
+@@ -37,7 +37,9 @@
+
+ #include <QtGui/QStyledItemDelegate>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include "image.h"
+
+--- aqsis-1.8.2/tools/piqsl/displayserverimage.cpp
++++ aqsis-1.8.2/tools/piqsl/displayserverimage.cpp
+@@ -39,11 +39,13 @@
+ #include <map>
+ #include <algorithm>
+
++#ifndef Q_MOC_RUN
+ #include <boost/archive/iterators/base64_from_binary.hpp>
+ #include <boost/archive/iterators/transform_width.hpp>
+ #include <boost/archive/iterators/insert_linebreaks.hpp>
+ #include <boost/format.hpp>
+ #include <boost/filesystem.hpp>
++#endif
+
+ #include "displayserverimage.h"
+
+--- aqsis-1.8.2/tools/piqsl/image.cpp
++++ aqsis-1.8.2/tools/piqsl/image.cpp
+@@ -38,7 +38,9 @@
+
+ #include <float.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/format.hpp>
++#endif
+
+ #include <aqsis/version.h>
+ #include <aqsis/util/logging.h>
+--- aqsis-1.8.2/tools/piqsl/image.h
++++ aqsis-1.8.2/tools/piqsl/image.h
+@@ -46,10 +46,12 @@
+ #include <QtCore/QObject>
+ #include <QtGui/QImage>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
+ #include <boost/shared_array.hpp>
+ #include <boost/filesystem/path.hpp>
+ #include <boost/thread/mutex.hpp>
++#endif
+
+ #include "tinyxml.h"
+
+--- aqsis-1.8.2/tools/piqsl/imagelistmodel.cpp
++++ aqsis-1.8.2/tools/piqsl/imagelistmodel.cpp
+@@ -37,11 +37,13 @@
+ #include <QtCore/QSocketNotifier>
+ #include <QtGui/QMessageBox>
+
++#ifndef Q_MOC_RUN
+ #include <boost/thread/mutex.hpp>
+ #include <boost/archive/iterators/binary_from_base64.hpp>
+ #include <boost/archive/iterators/transform_width.hpp>
+ #include <boost/archive/iterators/remove_whitespace.hpp>
+ #include <boost/version.hpp>
++#endif
+
+
+ #include "displayserverimage.h"
+--- aqsis-1.8.2/tools/piqsl/imagelistmodel.h
++++ aqsis-1.8.2/tools/piqsl/imagelistmodel.h
+@@ -33,8 +33,10 @@
+
+ #include <QtCore/QAbstractListModel>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
+ #include <boost/thread/thread.hpp>
++#endif
+
+ #include <aqsis/util/socket.h>
+ #include "image.h"
+--- aqsis-1.8.2/include/aqsis/core/interfacefwd.h
++++ aqsis-1.8.2/include/aqsis/core/interfacefwd.h
+@@ -13,7 +13,9 @@
+ #ifndef ___interfacefwd_Loaded___
+ #define ___interfacefwd_Loaded___
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ namespace Aqsis {
+
+--- aqsis-1.8.2/include/aqsis/core/ioptions.h
++++ aqsis-1.8.2/include/aqsis/core/ioptions.h
+@@ -29,7 +29,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/filesystem/path.hpp>
++#endif
+
+ #include <aqsis/riutil/primvartype.h>
+ #include <aqsis/ri/ritypes.h>
+--- aqsis-1.8.2/include/aqsis/core/irenderer.h
++++ aqsis-1.8.2/include/aqsis/core/irenderer.h
+@@ -14,7 +14,9 @@
+ #include <iosfwd>
+ #include <string>
+
++#ifndef Q_MOC_RUN
+ #include <boost/function.hpp>
++#endif
+
+ #include <aqsis/math/matrix.h>
+ #include <aqsis/core/itransform.h>
+--- aqsis-1.8.2/include/aqsis/core/isurface.h
++++ aqsis-1.8.2/include/aqsis/core/isurface.h
+@@ -12,7 +12,10 @@
+ #define ___isurface_Loaded___
+
+ #include <vector>
++
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/aqsis.h>
+ #include <aqsis/math/matrix.h>
+--- aqsis-1.8.2/include/aqsis/core/itransform.h
++++ aqsis-1.8.2/include/aqsis/core/itransform.h
+@@ -12,7 +12,10 @@
+ #define ___itransform_Loaded___
+
+ #include <aqsis/aqsis.h>
++
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ namespace Aqsis {
+
+--- aqsis-1.8.2/include/aqsis/math/math.h
++++ aqsis-1.8.2/include/aqsis/math/math.h
+@@ -30,8 +30,10 @@
+ #include <cmath>
+ #include <limits>
+
++#ifndef Q_MOC_RUN
+ #include <boost/utility/enable_if.hpp>
+ #include <boost/type_traits/arithmetic_traits.hpp>
++#endif
+
+ namespace Aqsis {
+ // These inline functions are intended to eventually replace all the old macros
+--- aqsis-1.8.2/include/aqsis/riutil/ricxxutil.h
++++ aqsis-1.8.2/include/aqsis/riutil/ricxxutil.h
+@@ -48,7 +48,9 @@
+ #include <aqsis/riutil/interpclasscounts.h>
+ #include <aqsis/util/exception.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/function.hpp>
++#endif
+
+ namespace Aqsis {
+
+--- aqsis-1.8.2/include/aqsis/shadervm/ishaderexecenv.h
++++ aqsis-1.8.2/include/aqsis/shadervm/ishaderexecenv.h
+@@ -28,7 +28,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/shadervm/ishaderdata.h>
+ #include <aqsis/math/vector3d.h>
+--- aqsis-1.8.2/include/aqsis/shadervm/ishader.h
++++ aqsis-1.8.2/include/aqsis/shadervm/ishader.h
+@@ -19,7 +19,9 @@
+ #include <vector>
+ #include <iosfwd>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/core/interfacefwd.h>
+ #include <aqsis/riutil/primvartype.h>
+--- aqsis-1.8.2/include/aqsis/tex/buffers/channellist.h
++++ aqsis-1.8.2/include/aqsis/tex/buffers/channellist.h
+@@ -43,7 +43,9 @@
+ #include <iosfwd>
+ #include <vector>
+
++#ifndef Q_MOC_RUN
+ #include <boost/format.hpp>
++#endif
+
+ #include <aqsis/tex/buffers/channelinfo.h>
+ #include <aqsis/tex/texexception.h>
+--- aqsis-1.8.2/include/aqsis/tex/buffers/mixedimagebuffer.h
++++ aqsis-1.8.2/include/aqsis/tex/buffers/mixedimagebuffer.h
+@@ -45,9 +45,11 @@
+ #include <string>
+ #include <vector>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_array.hpp>
+ #include <boost/shared_ptr.hpp>
+ #include <boost/utility.hpp>
++#endif
+
+ #include <aqsis/math/math.h>
+ #include <aqsis/tex/buffers/channellist.h>
+--- aqsis-1.8.2/include/aqsis/tex/buffers/texturebuffer.h
++++ aqsis-1.8.2/include/aqsis/tex/buffers/texturebuffer.h
+@@ -42,7 +42,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_array.hpp>
++#endif
+
+ #include <aqsis/tex/buffers/channellist.h>
+ #include <aqsis/tex/buffers/samplevector.h>
+--- aqsis-1.8.2/include/aqsis/tex/buffers/tilearray.h
++++ aqsis-1.8.2/include/aqsis/tex/buffers/tilearray.h
+@@ -43,10 +43,12 @@
+
+ #include <vector>
+
++#ifndef Q_MOC_RUN
+ #include <boost/intrusive_ptr.hpp>
+ #include <boost/scoped_ptr.hpp>
+ #include <boost/scoped_array.hpp>
+ #include <boost/noncopyable.hpp>
++#endif
+
+ //#include <aqsis/util/memorysentry.h>
+ #include <aqsis/tex/io/itiledtexinputfile.h>
+--- aqsis-1.8.2/include/aqsis/tex/filtering/ienvironmentsampler.h
++++ aqsis-1.8.2/include/aqsis/tex/filtering/ienvironmentsampler.h
+@@ -40,7 +40,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/tex/filtering/samplequad.h>
+ #include <aqsis/tex/filtering/texturesampleoptions.h>
+--- aqsis-1.8.2/include/aqsis/tex/filtering/iocclusionsampler.h
++++ aqsis-1.8.2/include/aqsis/tex/filtering/iocclusionsampler.h
+@@ -40,7 +40,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/math/matrix.h>
+ #include <aqsis/tex/filtering/samplequad.h>
+--- aqsis-1.8.2/include/aqsis/tex/filtering/ishadowsampler.h
++++ aqsis-1.8.2/include/aqsis/tex/filtering/ishadowsampler.h
+@@ -40,7 +40,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/math/matrix.h>
+ #include <aqsis/tex/filtering/samplequad.h>
+--- aqsis-1.8.2/include/aqsis/tex/filtering/itexturecache.h
++++ aqsis-1.8.2/include/aqsis/tex/filtering/itexturecache.h
+@@ -40,8 +40,10 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/function.hpp>
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ namespace Aqsis {
+
+--- aqsis-1.8.2/include/aqsis/tex/filtering/itexturesampler.h
++++ aqsis-1.8.2/include/aqsis/tex/filtering/itexturesampler.h
+@@ -40,7 +40,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/tex/filtering/samplequad.h>
+ #include <aqsis/tex/filtering/texturesampleoptions.h>
+--- aqsis-1.8.2/include/aqsis/tex/io/itiledtexinputfile.h
++++ aqsis-1.8.2/include/aqsis/tex/io/itiledtexinputfile.h
+@@ -40,7 +40,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/util/file.h>
+ #include <aqsis/tex/io/imagefiletype.h>
+--- aqsis-1.8.2/include/aqsis/tex/io/texfileheader.h
++++ aqsis-1.8.2/include/aqsis/tex/io/texfileheader.h
+@@ -44,8 +44,10 @@
+ #include <iostream>
+ #include <map>
+
++#ifndef Q_MOC_RUN
+ #include <boost/any.hpp>
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/tex/io/texfileattributes.h>
+
+--- aqsis-1.8.2/include/aqsis/util/autobuffer.h
++++ aqsis-1.8.2/include/aqsis/util/autobuffer.h
+@@ -41,7 +41,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/scoped_array.hpp>
++#endif
+
+ namespace Aqsis {
+
+--- aqsis-1.8.2/include/aqsis/util/enum.h
++++ aqsis-1.8.2/include/aqsis/util/enum.h
+@@ -122,7 +122,9 @@
+ #include <string>
+ #include <vector>
+
++#ifndef Q_MOC_RUN
+ #include <boost/static_assert.hpp>
++#endif
+
+ #include <aqsis/util/sstring.h> // for CqString::hash()
+
+--- aqsis-1.8.2/include/aqsis/util/execute.h
++++ aqsis-1.8.2/include/aqsis/util/execute.h
+@@ -30,7 +30,9 @@
+
+ #include <aqsis/aqsis.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/function.hpp>
++#endif
+
+ #include <string>
+ #include <vector>
+--- aqsis-1.8.2/include/aqsis/util/file.h
++++ aqsis-1.8.2/include/aqsis/util/file.h
+@@ -32,8 +32,10 @@
+
+ #include <string>
+
++#ifndef Q_MOC_RUN
+ #include <boost/filesystem/path.hpp>
+ #include <boost/tokenizer.hpp>
++#endif
+
+ namespace Aqsis {
+
+--- aqsis-1.8.2/include/aqsis/util/popen.h
++++ aqsis-1.8.2/include/aqsis/util/popen.h
+@@ -41,9 +41,11 @@
+ #include <string>
+ #include <vector>
+
++#ifndef Q_MOC_RUN
+ #include <boost/iostreams/concepts.hpp>
+ #include <boost/iostreams/stream.hpp>
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #ifndef AQSIS_POPEN_H_INCLUDED
+ #define AQSIS_POPEN_H_INCLUDED
+--- aqsis-1.8.2/include/aqsis/util/socket.h
++++ aqsis-1.8.2/include/aqsis/util/socket.h
+@@ -32,7 +32,9 @@
+
+ #include <sstream>
+
++#ifndef Q_MOC_RUN
+ #include <boost/utility.hpp>
++#endif
+
+ #ifdef AQSIS_SYSTEM_WIN32
+ # include <winsock2.h>
+--- aqsis-1.8.2/include/aqsis/util/timer.h
++++ aqsis-1.8.2/include/aqsis/util/timer.h
+@@ -39,8 +39,10 @@
+ #include <ctime>
+ #include <vector>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
+ #include <boost/timer.hpp>
++#endif
+
+ namespace Aqsis {
+
+--- aqsis-1.8.2/tools/aqsl/aqsl.cpp
++++ aqsis-1.8.2/tools/aqsl/aqsl.cpp
+@@ -36,7 +36,10 @@
+ #include <cstring>
+ #include <string>
+ #include <vector>
++
++#ifndef Q_MOC_RUN
+ #include <boost/scoped_ptr.hpp>
++#endif
+
+ #ifdef AQSIS_SYSTEM_WIN32
+ #include "io.h"
+--- aqsis-1.8.2/tools/displays/exr/d_exr.cpp
++++ aqsis-1.8.2/tools/displays/exr/d_exr.cpp
+@@ -98,7 +98,9 @@
+
+ #include <assert.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ // Lower the warning level to eliminate unavoidable warnings from the OpenEXR headers.
+ #if AQSIS_SYSTEM_WIN32 && (defined(AQSIS_COMPILER_MSVC6) || defined(AQSIS_COMPILER_MSVC7))
+--- aqsis-1.8.2/tools/displays/piqsl/piqsldisplay.cpp
++++ aqsis-1.8.2/tools/displays/piqsl/piqsldisplay.cpp
+@@ -33,10 +33,12 @@
+ #include <map>
+ #include <vector>
+
++#ifndef Q_MOC_RUN
+ #include <boost/archive/iterators/base64_from_binary.hpp>
+ #include <boost/archive/iterators/transform_width.hpp>
+ #include <boost/archive/iterators/insert_linebreaks.hpp>
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #ifdef AQSIS_SYSTEM_WIN32
+ #include <winsock2.h>
+--- aqsis-1.8.2/tools/eqsl/eqsl.cpp
++++ aqsis-1.8.2/tools/eqsl/eqsl.cpp
+@@ -55,9 +55,11 @@
+ #include <QtGui/QStatusBar>
+ #include <QtGui/QTabWidget>
+
++#ifndef Q_MOC_RUN
+ #include <boost/thread.hpp>
+ #include <boost/regex.hpp>
+ #include <boost/lexical_cast.hpp>
++#endif
+
+ #include <aqsis/version.h>
+ #include <aqsis/util/execute.h>
+--- aqsis-1.8.2/tools/miqser/miqser.cpp
++++ aqsis-1.8.2/tools/miqser/miqser.cpp
+@@ -44,7 +44,9 @@
+ #include <cstring>
+ #include <cstdlib>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/util/argparse.h>
+ #include <aqsis/util/exception.h>
+--- aqsis-1.8.2/tools/procedurals/hairgen/hair.cpp
++++ aqsis-1.8.2/tools/procedurals/hairgen/hair.cpp
+@@ -37,8 +37,10 @@
+ #include <aqsis/math/math.h>
+ #include <aqsis/math/matrix.h>
+
++#ifndef Q_MOC_RUN
+ #include <boost/tokenizer.hpp>
+ #include <boost/algorithm/string/trim.hpp>
++#endif
+
+ // project includes
+ #include "primvar.h"
+--- aqsis-1.8.2/tools/procedurals/hairgen/parenthairs.h
++++ aqsis-1.8.2/tools/procedurals/hairgen/parenthairs.h
+@@ -35,7 +35,9 @@
+ #include <vector>
+ #include <iosfwd>
+
++#ifndef Q_MOC_RUN
+ #include <boost/scoped_ptr.hpp>
++#endif
+
+ #include "kdtree/kdtree2.hpp"
+ #include "primvar.h"
+--- aqsis-1.8.2/tools/procedurals/hairgen/primvar.h
++++ aqsis-1.8.2/tools/procedurals/hairgen/primvar.h
+@@ -37,7 +37,9 @@
+ #include <vector>
+ #include <stdexcept>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
++#endif
+
+ #include <aqsis/riutil/primvartoken.h>
+ #include <aqsis/ri/ri.h>
+--- aqsis-1.8.2/tools/ptview/ptview.cpp
++++ aqsis-1.8.2/tools/ptview/ptview.cpp
+@@ -38,7 +38,9 @@
+ #include <QtGui/QFileDialog>
+ #include <QtGui/QColorDialog>
+
++#ifndef Q_MOC_RUN
+ #include <boost/program_options.hpp>
++#endif
+
+ #define NOMINMAX
+ #include <OpenEXR/ImathVec.h>
+--- aqsis-1.8.2/tools/ptview/ptview.h
++++ aqsis-1.8.2/tools/ptview/ptview.h
+@@ -33,8 +33,10 @@
+ #include <cmath>
+ #include <vector>
+
++#ifndef Q_MOC_RUN
+ #include <boost/shared_ptr.hpp>
+ #include <boost/shared_array.hpp>
++#endif
+
+ #include <QtGui/QMainWindow>
+ #include <QtOpenGL/QGLWidget>