summaryrefslogtreecommitdiffhomepage
path: root/tasks
diff options
context:
space:
mode:
authorKouhei Sutou <[email protected]>2016-12-11 21:27:47 +0900
committerKouhei Sutou <[email protected]>2016-12-11 21:35:56 +0900
commit237d26fd86871cfd1e3531af87b1bf7654887bc3 (patch)
tree36f538bb90ce17fe23b4189f4b2fd51fb6f557fa /tasks
parent3cc913490b708fe4d0e78e48f86e6e39cf3d8576 (diff)
downloadmruby-237d26fd86871cfd1e3531af87b1bf7654887bc3.tar.gz
mruby-237d26fd86871cfd1e3531af87b1bf7654887bc3.zip
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
Diffstat (limited to 'tasks')
-rw-r--r--tasks/mrbgem_spec.rake16
1 files changed, 16 insertions, 0 deletions
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