libyuv

需要があるとは思えない、libyuvの自家製Homebrewスクリプトです。私はlibvpxに組み込むつもりですが、他に用途があるのでしょうか?
コピペして、"libyuv.rb"という名前で保存してお使い下さい。

The following script installs libyuv on OSX with Homebrew.

class Libyuv < Formula
  desc "YUV scaling and conversion functionality"
  homepage "https://bugs.chromium.org/p/libyuv/adminIntro"
  url "https://chromium.googlesource.com/libyuv/libyuv.git",
      :revision => "311add63c2e73cf50cc0e89cf94ebf3fc5632560"
  head "https://chromium.googlesource.com/libyuv/libyuv.git"
  version "0.0.0"

  depends_on "cmake" => :build
  depends_on "jpeg-turbo"

  def install
    ENV.deparallelize
    ENV["LDDLFLAGS"] = "-L/usr/lib -L#{Formula["jpeg-turbo"].opt_lib}"
    ENV.append "LDFLAGS","-ljpeg"
    ENV.append "CPPFLAGS","-I#{Formula["jpeg-turbo"].opt_include}"

    args = std_cmake_args
    args << "-DJPEG_LIBRARY=#{Formula["jpeg-turbo"].opt_lib}/libjpeg.dylib"
    system "cmake", ".", *args
    system "make", "install"
  end

  test do
    system "#{Formula["libyuv"].opt_bin}/yuvconvert", "--help"
  end
end

libyuvのcmakeが勝手にlibjpegのライブラリを見つけて、mpegデコーダーに利用しようとするもリンクエラーとなるため、探せなくしてあります。
基本、"version 0.0.0" とかいう不安定版に対するスクリプトはHomebrewには採用されません。

追記

上記のlibjpegの件、libyuvのサイトに「libjpegとのリンクが上手く行かない」という旨のBug reportを発見。それに対して「libturbojpeg を使用するように」との返答がなされています。

$ nm -o /usr/local/Cellar/jpeg-turbo/1.5.2/lib/libturbojpeg.dylib | grep "_jpeg_CreateDecompress"
/usr/local/Cellar/jpeg-turbo/1.5.2/lib/libturbojpeg.dylib: 00000000000113d0 T _jpeg_CreateDecompress

なるほど、リンクできなかったオブジェクトは確かにlibturbojpegの中にあります。
jpeg-turboへのリンクに成功しました。

$ otool -L /usr/local/Cellar/libyuv/0.0.0/lib/libyuv.dylib
/usr/local/Cellar/libyuv/0.0.0/lib/libyuv.dylib:
	/usr/local/opt/libyuv/lib/libyuv.dylib (compatibility version 0.0.0, current version 0.0.0)
	/usr/local/opt/jpeg-turbo/lib/libjpeg.8.dylib (compatibility version 10.0.0, current version 10.2.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)

これを踏まえまして、上記のスクリプトjpeg-turbo を使用するものに差し替えさせていただきました。