# -*- ruby -*- # # Copyright (C) 2012-2013 Ruby-GNOME2 Project Team # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA $LOAD_PATH.unshift("./../glib2/lib") require "gnome2/rake/package-task" package_task = GNOME2::Rake::PackageTask.new do |package| package.summary = "Ruby/GObjectIntrospection is a Ruby binding of GObjectIntrospection." package.description = "Ruby/GObjectIntrospection is a Ruby binding of GObjectIntrospection." package.dependency.gem.runtime = ["glib2"] package.dependency.gem.development = [["test-unit", ">= 2"]] package.windows.packages = [] package.windows.dependencies = [] package.windows.build_dependencies = ["glib2"] package.external_packages = [ { :name => "glib", :download_site => :gnome, :label => "GLib", :version => "2.36.2", :compression_method => "xz", :windows => { :build => false, }, :native => { :build => true, :need_autoreconf => true, }, }, { :name => "gobject-introspection", :download_site => :gnome, :label => "gobject-introspection", :version => "1.36.0", :compression_method => "xz", :windows => { :configure_args => [ "--with-g-ir-scanner=#{package.native.absolute_binary_dir}/bin/g-ir-scanner", "--disable-tests", ], :patches => [ "0001-Support-external-g-ir-scanner.patch", ], :need_autoreconf => true, }, :native => { :build => true, :patches => [ # "cross-compilable-g-ir-scanner.diff", ], } }, ] end package_task.define namespace :native do namespace :"gobject-introspection" do desc "Make g-ir-scanner workable for Windows on non Windows" task :cross do g_ir_scanner_dir = package_task.native.absolute_binary_dir g_ir_scanner_dir += "lib/gobject-introspection/giscanner" Dir.chdir(g_ir_scanner_dir.to_s) do patch = "#{package_task.package.patches_dir}/cross-g-ir-scanner.diff" sh("patch -p2 < #{patch}") end end end namespace :builder do task :after => "native:gobject-introspection:cross" end end namespace :win32 do namespace :"gobject-introspection" do desc "Use native tools" task :cross do pkg_config_dir = package_task.windows.absolute_binary_dir + "lib/pkgconfig" pc_path = pkg_config_dir + "gobject-introspection-1.0.pc" original_pc = pc_path.read new_pc = "" new_pc << "native_prefix=#{package_task.native.absolute_binary_dir}\n" new_pc << "native_bindir=${native_prefix}/bin\n" original_pc.each_line do |line| case line when /\Ag_ir_(scanner|compiler)=/ new_pc << line.gsub(/\${bindir}/, "${native_bindir}") else new_pc << line end end pc_path.open("w") do |pc_file| pc_file.write(new_pc) end end end namespace :builder do task :after => "win32:gobject-introspection:cross" end end