Fix field3d test to run properly
oslc adjustment for newer OSX releases: can't count on /usr/bin/cpp-4.2, only use it if present,
otherwise fall back on /usr/bin/cpp.
While I'm in there, change several references to boost::filesystem::exists to
OIIO::Filesystem::exists, which wraps it to catch exceptions.
Nuke "size" from register_closure API

This parameter is not necessary at all as the size
of the struct is present in the last entry of the
params list.
texture/texture3d support for subimage selection by name as well as index.
Also fix a bug with texture3d optional arguments.
OSLCompilerImpl::retrive_source more gracefully handle cases where the source file ends before we hit the line number we were looking for.
boost wave fixes:
* add BOOST_WAVE= directive to the top level Makefile
* Fix bug where we lost proper ordering of -D and -U when using wave
* Turns out we need -isystem defined for gcc as well as clang, or else
  the warnings in Boost wave will abort compilation.
* wave was making cluttered error output by using full pathnames, so chop
  off the cwd if it's a prefix.
* wave had a bug when using force_include wherein subsequent lines and files
  will be incorrect, this makes error messages totally bogus.  Work around
  this by inserting the #include "stdosl.h" at the head of the file ourselves,
  and then further work around the fact that this will throw all reported
  line numbers in the main file off by 1.
LLVM_NAMESPACE lets you select a custom LLVM namespace
Restore compatibility with OIIO <= 1.0 by guarding use of the new 'subimagename'.
Augment testsuite/texture-wrap to test 'default' wrap from the file
Cleanup library symbol visibility issues.

* On gcc-based systems, use __attribute__((visibility("hidden|default")))
  (in export.h) to clearly mark which symbols must be visible as part of
  the public API (or that must be found by dlsym() in order for LLVM to
  correctly generate code to call them from shaders), versus symbols
  used only internally to the library that don't need to be visible to
  apps linking OSL libraries.  Note that Windows already did this for DLLs.

* For Unix-like systems, if the CMake variable HIDE_SYMBOLS is on (or
  'make HIDE_SYMBOLS=1'), then use -fvisibility=hidden on the compile & link
  lines to control symbol visibility so that the default is to hide symbols
  not marked as part of the public APIs.  (Note: Windows does this by
  default.)  Even if HIDE_SYBOLS=1, the symbols are not hidden for DEBUG
  builds, so that all the symbols are available.

* Add Makefile/CMake option LLVM_STATIC to use static LLVM libs rather than
  dynamic library.

* On Linux, when LLVM_STATIC is used, also use linker option --version-script
  and a custom version-script for liboslexec.so in order to force LLVM's
  symbols to also remain hidden outside the OSL library.  This is extremely
  helpful to apps that want to embed OSL but also embed LLVM for other reasons
  (and not necessarily the same version of LLVM) -- this makes sure the
  symbols don't crash when the program runs, leading to strange crashes.
Explicitly set cmake policy about preferring local cmake modules (ported from OIIO)
Fixes to work with LLVM 3.1 (also eliminate an unused CMake variable)
Bug fix to Gabor noise -- we inadvertently used undefined order of evaluation.

C and C++ do not specify the order in which function parameters are evaluated.
So in our Gabor implementation, we had this:
        Vec3 x_i_c (rng(), rng(), rng());
The rng() is stateful.  gcc evaluated them right-to-left, but we discovered
the problem when compiling with clang, which evaluates left-to-right, thus
giving us a totally different noise seed!
clang: squash more warnings
A general purpose shader example
Adjust the spec for OSL getattribute() to perform automatic type conversions.

Specifically, getattribute(name,value) no longer requires an exact match
between value and the type of the named attribute.  The automatic type
conversions include those that are allowed by assignment in OSL source
code: int to float, float to int (truncation), float or int to triple
(replicating the value), any triple to any other triple.  Additionally,
the following conversions which are not allowed by assignment in OSL
source code will also be performed by this call: float (or int) to
float[2] (replication into both array elements), float[2] to triple
(setting the third component to 0).
Add a handy 'convert_value' utility to ShadingSystem
to make it easy for RendererServices client code to implement getattribute()
with the new extended type conversion rules.
Adjust SS::convert_value so it's value to pass NULL for src & dst.
In this case, it won't actually do the copy, but it still returns a value
telling you if the proposed conversion is a supported one.
Allow OSL printf of closures to recursively print closures-containing-closures.
Matrix parms initialized by m=matrix(consta,constb,...) should statically initialize, not need init ops.
This makes it similar to triples, and makes oslinfo work sensibly for
a wider variety of cases.