diff --git a/Aliases/ocio b/Aliases/ocio new file mode 120000 index 00000000000..6f690128ae9 --- /dev/null +++ b/Aliases/ocio @@ -0,0 +1 @@ +../Formula/opencolorio.rb \ No newline at end of file diff --git a/Formula/opencolorio.rb b/Formula/opencolorio.rb new file mode 100644 index 00000000000..45d3c957732 --- /dev/null +++ b/Formula/opencolorio.rb @@ -0,0 +1,94 @@ +require 'formula' + +class Opencolorio < Formula + homepage 'http://opencolorio.org/' + url 'https://github.com/imageworks/OpenColorIO/tarball/v1.0.6' + sha1 '1d7a195b684fbd0687a661aa532c5cc447215420' + + head 'https://github.com/imageworks/OpenColorIO.git' + + depends_on 'cmake' => :build + depends_on 'pkg-config' => :build + depends_on 'little-cms2' + + def options + [ + ['--with-tests', 'Verify the build with its unit tests (~1min)'], + ['--with-python', 'Build ocio with python2.7 bindings'], + ['--with-java', 'Build ocio with java bindings'], + ['--with-docs', 'Build the documentation.'] + ] + end + + def install + args = std_cmake_parameters.split + args << "-DOCIO_BUILD_JNIGLUE=ON" if ARGV.include? '--with-java' + args << "-DOCIO_BUILD_TESTS=ON" if ARGV.include? '--with-tests' + args << "-DOCIO_BUILD_DOCS=ON" if ARGV.include? '--with-docs' + args << "-DCMAKE_VERBOSE_MAKEFILE=OFF" + + # CMake-2.8.7 + CLT + llvm + Lion => CMAKE_CXX_HAS_ISYSROOT "1" + # CMake-2.8.7 + CLT + clang + Lion => CMAKE_CXX_HAS_ISYSROOT "" + # CMake puts a malformed sysroot into CXX_FLAGS in flags.make with llvm. + # Syntax like this gets added: + # -isysroot /Some/Wrong/SDKs/path + # which causes c++ includes not found when compiling with llvm. + # https://github.com/imageworks/OpenColorIO/issues/224 + # The current workaround is that the SDK directory structure is mirrored + # in the root directory, e.g. + # Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include + # /usr/include + # So we just set the sysroot to / + + args << "-DCMAKE_OSX_SYSROOT=/" if ENV.compiler == :llvm and MacOS.lion? + + + + # Python note: + # OCIO's PyOpenColorIO.so doubles as a shared library. So it lives in lib, rather + # than the usual HOMEBREW_PREFIX/lib/python2.7/site-packages per developer choice. + + if ARGV.include? '--with-python' + python_prefix = `python-config --prefix`.strip + if File.exist? "#{python_prefix}/Python" + # Python was compiled with --framework: + args << "-DPYTHON_LIBRARY='#{python_prefix}/Python'" + args << "-DPYTHON_INCLUDE_DIR='#{python_prefix}/Headers'" + else + python_version = `python-config --libs`.match('-lpython(\d+\.\d+)').captures.at(0) + python_lib = "#{python_prefix}/lib/libpython#{python_version}" + args << "-DPYTHON_INCLUDE_DIR='#{python_prefix}/include/python#{python_version}'" + if File.exists? "#{python_lib}.a" + args << "-DPYTHON_LIBRARY='#{python_lib}.a'" + else + args << "-DPYTHON_LIBRARY='#{python_lib}.dylib'" + end + end + else + args << "-DOCIO_BUILD_PYGLUE=OFF" + end + + args << '..' + + mkdir 'macbuild' do + system "cmake", *args + system "make" + system "make test" if ARGV.include? '--with-tests' + system "make install" + end + end + + def caveats + <<-EOS.undent + OpenColorIO requires several environment variables to be set. + You can source the following script in your shell-startup to do that: + #{HOMEBREW_PREFIX}/share/ocio/setup_ocio.sh + Alternatively the documentation describes what env-variables need set: + http://opencolorio.org/installation.html#environment-variables + You will require a config for OCIO to be useful. Sample configuration files + and reference images can be found at: + http://opencolorio.org/downloads.html + + EOS + end +end