# -*- ruby -*-

$LOAD_PATH.unshift("./../glib2/lib")
require 'gnome2/rake/package-task'

package_task = GNOME2::Rake::PackageTask.new do |package|
  package.summary = "Ruby/GStreamer is a Ruby binding for GStreamer."
  package.description = "Ruby/GStreamer is a Ruby binding for GStreamer."
  package.dependency.gem.runtime = ["glib2", "gobject-introspection"]
  package.windows.packages = []
  package.windows.dependencies = []
  package.windows.build_dependencies = [
    "glib2", "atk", "pango", "gdk_pixbuf2", "gtk2", "gobject-introspection",
  ]
  xiph_download_url_base = "http://downloads.xiph.org/releases"
  freedesktop_download_url_base = "http://gstreamer.freedesktop.org/src"
  sf_net_download_url_base = "http://downloads.sourceforge.net/project"
  libmad_version = "0.15.1b"
  package.external_packages = [
    {
      :name => "libjpeg",
      :base_name => "jpeg-9a",
      :archive_base_name => "jpegsrc.v9a.tar.gz",
      :download_base_url => "http://www.ijg.org/files",
      :label => "libjpeg",
      :windows => {
        :configure_args => [],
        :built_file => "bin/libjpeg-9.dll",
      },
    },
    {
      :name => "sqlite-autoconf",
      :download_base_url => "http://www.sqlite.org/2014",
      :label => "SQLite",
      :version => "3080600",
      :compression_method => "gz",
      :windows => {
        :configure_args => [],
        :built_file => "bin/libsqlite3-0.dll",
      },
    },
    {
      :name => "libsoup",
      :download_site => :gnome,
      :label => "libsoup",
      :version => "2.48.1",
      :compression_method => "xz",
      :windows => {
        :configure_args => [
          "--enable-introspection",
          "--without-apache-httpd",
        ],
        :build_concurrently => false,
        :patches => [
        ],
        :built_file => "bin/libsoup-2.4-1.dll",
      },
    },
    {
      :name => "libogg",
      :download_base_url => "#{xiph_download_url_base}/ogg",
      :label => "Ogg",
      :version => "1.3.1",
      :windows => {
        :configure_args => [],
        :built_file => "bin/libogg-0.dll",
      },
    },
    {
      :name => "libvorbis",
      :download_base_url => "#{xiph_download_url_base}/vorbis",
      :label => "Vorbis",
      :version => "1.3.3",
      :windows => {
        :configure_args => [],
        :built_file => "bin/libvorbis-0.dll",
      },
    },
    {
      :name => "libtheora",
      :download_base_url => "#{xiph_download_url_base}/theora",
      :label => "Theora",
      :version => "1.1.1",
      :windows => {
        :configure_args => [
          "--disable-examples"
        ],
        :build_concurrently => false,
        :patches => [
          "libtheora-1.1.1-use-lf-in-def.diff",
        ],
        :built_file => "bin/libtheora-0.dll",
      },
    },
    # {
    #   :name => "libmad",
    #   :download_base_url => "#{sf_net_download_url_base}/mad/libmad/#{libmad_version}",
    #   :label => "MAD",
    #   :version => libmad_version,
    #   :windows => {
    #     :configure_args => ["CFLAGS=-O3 -march=i686"],
    #     :need_autoreconf => true,
    #     :patches => ["libmad-0.15.1b-fix-mingw-build.diff"],
    #   },
    # },
    {
      :name => "flac",
      :download_base_url => "#{xiph_download_url_base}/flac",
      :label => "FLAC",
      :version => "1.3.0",
      :compression_method => "xz",
      :windows => {
        :configure_args => ["--disable-cpplibs"],
        :built_file => "bin/libFLAC-8.dll",
      },
    },
    {
      :name => "speex",
      :download_base_url => "#{xiph_download_url_base}/speex",
      :label => "Speex",
      :version => "1.2rc1",
      :windows => {
        :configure_args => [],
        :built_file => "bin/libspeex-1.dll",
      },
    },
    {
      :name => "gstreamer",
      :download_base_url => "#{freedesktop_download_url_base}/gstreamer",
      :label => "GStreamer",
      :version => "1.4.3",
      :compression_method => "xz",
      :windows => {
        :configure_args => [
          "--enable-check",
          "--enable-introspection",
        ],
        :build_concurrently => false,
        :built_file => "bin/libgstreamer-1.0-0.dll",
      },
    },
    {
      :name => "gst-plugins-base",
      :download_base_url => "#{freedesktop_download_url_base}/gst-plugins-base",
      :label => "GStreamer plugins (base)",
      :version => "1.4.3",
      :compression_method => "xz",
      :windows => {
        :configure_args => [
          "--enable-introspection",
        ],
        :build_concurrently => false,
        :built_file => "lib/gstreamer-1.0/libgstgio.dll",
      },
    },
    {
      :name => "gst-plugins-good",
      :download_base_url => "#{freedesktop_download_url_base}/gst-plugins-good",
      :label => "GStreamer plugins (good)",
      :version => "1.4.3",
      :compression_method => "xz",
      :windows => {
        :configure_args => [
          "--disable-shout2",
        ],
        :built_file => "lib/gstreamer-1.0/libgstcairo.dll",
      },
    },
    {
      :name => "gst-plugins-bad",
      :download_base_url => "#{freedesktop_download_url_base}/gst-plugins-bad",
      :label => "GStreamer plugins (bad)",
      :version => "1.4.3",
      :compression_method => "xz",
      :windows => {
        :configure_args => ["--disable-librfb"],
        :cc_args => [
          "-std=c99",
        ],
        :built_file => "lib/gstreamer-1.0/libgstmxf.dll",
      },
    },
    # {
    #   :name => "gst-plugins-ugly",
    #   :download_base_url => "#{freedesktop_download_url_base}/gst-plugins-ugly",
    #   :label => "GStreamer plugins (ugly)",
    #   :version => "1.4.3",
    #   :compression_method => "xz",
    #   :windows => {
    #     :configure_args => [],
    #   },
    # },
    {
      :name => "gst-libav",
      :download_base_url => "#{freedesktop_download_url_base}/gst-libav",
      :label => "GStreamer libav",
      :version => "1.4.3",
      :compression_method => "xz",
      :windows => {
        :configure_args => [
          "--with-libav-extra-configure=" +
            "--cross-prefix=#{package.windows.build_host}- " +
            "--target-os=mingw32 " +
            "--arch=i686 " +
            "--pkg-config=pkg-config " +
            "--disable-gpl " +
            "--disable-yasm",
        ],
        :built_file => "lib/gstreamer-1.0/libgstlibav.dll",
      },
      :bundled_packages => [
        {
          :name => "libav",
          :path => "gst-libs/ext/libav",
          :license_files => [
            "LICENSE",
            "CREDITS",
            "COPYING.GPLv2",
            "COPYING.GPLv3",
            "COPYING.LGPLv2.1",
            "COPYING.LGPLv3",
          ],
        }
      ],
    },
  ]
  package.cross_compiling do |spec|
    if /mingw|mswin/ =~ spec.platform.to_s
      spec.add_runtime_dependency("pango", ">= #{package.version}")
      spec.add_runtime_dependency("gdk_pixbuf2", ">= #{package.version}")
    end
  end
end
package_task.define
