118 lines
3.6 KiB
Ruby
118 lines
3.6 KiB
Ruby
|
# -*- 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
|