From 237d26fd86871cfd1e3531af87b1bf7654887bc3 Mon Sep 17 00:00:00 2001 From: Kouhei Sutou Date: Sun, 11 Dec 2016 21:27:47 +0900 Subject: Support pkg-config in mrbgem.rake Example usage: MRuby::Gem::Specification.new('mruby-onig-regexp') do |spec| # ... if spec.search_package('onigmo') # Use onigmo.h when onigmo.pc exist. spec.cc.defines += ["HAVE_ONIGMO_H"] elsif spec.search_package('oniguruma') # Use oniguruma.h when oniguruma.pc exist. spec.cc.defines += ["HAVE_ONIGURUMA_H"] else # Use bundled Onigmo otherwise. # ... end end --- tasks/mrbgem_spec.rake | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'tasks/mrbgem_spec.rake') diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake index 78d912980..0aeeddaf1 100644 --- a/tasks/mrbgem_spec.rake +++ b/tasks/mrbgem_spec.rake @@ -1,6 +1,7 @@ require 'pathname' require 'forwardable' require 'tsort' +require 'shellwords' module MRuby module Gem @@ -126,6 +127,21 @@ module MRuby "#{build_dir}/gem_test.c" end + def search_package(name, version_query=nil) + package_query = name + package_query += " #{version_query}" if version_query + _pp "PKG-CONFIG", package_query + escaped_package_query = Shellwords.escape(package_query) + if system("pkg-config --exists #{escaped_package_query}") + cc.flags += [`pkg-config --cflags #{escaped_package_query}`.strip] + cxx.flags += [`pkg-config --cflags #{escaped_package_query}`.strip] + linker.flags += [`pkg-config --libs #{escaped_package_query}`.strip] + true + else + false + end + end + def funcname @funcname ||= @name.gsub('-', '_') end -- cgit v1.2.3 From ee7fc56dd0d7bd2aa8be8a24290ae1de32b0dcec Mon Sep 17 00:00:00 2001 From: Sorah Fukumori Date: Mon, 9 Jan 2017 10:08:06 +0900 Subject: Put package's libs flag after %{objs} In case LDFLAG contains "-Wl,--as-needed" or "--as-needed" is enabled by default, "-l" flags should appear after objs specifiction. --- tasks/mrbgem_spec.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tasks/mrbgem_spec.rake') diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake index 0aeeddaf1..3053c3d49 100644 --- a/tasks/mrbgem_spec.rake +++ b/tasks/mrbgem_spec.rake @@ -135,7 +135,7 @@ module MRuby if system("pkg-config --exists #{escaped_package_query}") cc.flags += [`pkg-config --cflags #{escaped_package_query}`.strip] cxx.flags += [`pkg-config --cflags #{escaped_package_query}`.strip] - linker.flags += [`pkg-config --libs #{escaped_package_query}`.strip] + linker.flags_before_libraries += [`pkg-config --libs #{escaped_package_query}`.strip] true else false -- cgit v1.2.3 From 131566753dc497fa2b4d7159eeed61bb9e2a1885 Mon Sep 17 00:00:00 2001 From: palkan Date: Mon, 13 Feb 2017 20:57:29 +0300 Subject: Separate compilers setup from config setup Fixes #3418. --- tasks/mrbgem_spec.rake | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tasks/mrbgem_spec.rake') diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake index 3053c3d49..1f7cde529 100644 --- a/tasks/mrbgem_spec.rake +++ b/tasks/mrbgem_spec.rake @@ -90,7 +90,9 @@ module MRuby build.libmruby << @objs instance_eval(&@build_config_initializer) if @build_config_initializer + end + def setup_compilers compilers.each do |compiler| compiler.define_rules build_dir, "#{dir}" compiler.defines << %Q[MRBGEM_#{funcname.upcase}_VERSION=#{version}] @@ -419,6 +421,8 @@ module MRuby @ary = tsort_dependencies gem_table.keys, gem_table, true + each(&:setup_compilers) + each do |g| import_include_paths(g) end -- cgit v1.2.3