Module: PKGConfig
- Defined in:
- lib/orchid/pkg-config.rb
Constant Summary collapse
- @@cmd =
with_config('pkg-config', ENV["PKG_CONFIG"] || 'pkg-config')
- @@list =
{}
Class Method Summary collapse
- .cflags(pkg) ⇒ Object
- .cflags_only_I(pkg) ⇒ Object
- .cflags_only_other(pkg) ⇒ Object
- .check_version?(pkg, major = 0, minor = 0, micro = 0) ⇒ Boolean
- .description(pkg) ⇒ Object
- .exist?(pkg) ⇒ Boolean
- .have_package(pkg, major = nil, minor = 0, micro = 0) ⇒ Object
- .libs(pkg) ⇒ Object
- .libs_only_l(pkg) ⇒ Object
- .libs_only_L(pkg) ⇒ Object
- .list_all ⇒ Object
- .modversion(pkg) ⇒ Object
- .name(pkg) ⇒ Object
- .provides(pkg) ⇒ Object
- .requires(pkg) ⇒ Object
- .variable(pkg, var) ⇒ Object
- .version ⇒ Object
Class Method Details
.cflags(pkg) ⇒ Object
44 45 46 |
# File 'lib/orchid/pkg-config.rb', line 44 def cflags(pkg) `#{@@cmd} --cflags #{pkg}`.chomp end |
.cflags_only_I(pkg) ⇒ Object
48 49 50 |
# File 'lib/orchid/pkg-config.rb', line 48 def cflags_only_I(pkg) `#{@@cmd} --cflags-only-I #{pkg}`.chomp end |
.cflags_only_other(pkg) ⇒ Object
52 53 54 |
# File 'lib/orchid/pkg-config.rb', line 52 def cflags_only_other(pkg) `#{@@cmd} --cflags-only-other #{pkg}`.chomp end |
.check_version?(pkg, major = 0, minor = 0, micro = 0) ⇒ Boolean
89 90 91 92 93 94 95 96 97 98 |
# File 'lib/orchid/pkg-config.rb', line 89 def check_version?(pkg, major = 0, minor = 0, micro = 0) return false unless exist?(pkg) ver = modversion(pkg).split(".").collect{|item| item.to_i} (0..2).each {|i| ver[i] = 0 unless ver[i]} (ver[0] > major || (ver[0] == major && ver[1] > minor) || (ver[0] == major && ver[1] == minor && ver[2] >= micro)) end |
.description(pkg) ⇒ Object
77 78 79 |
# File 'lib/orchid/pkg-config.rb', line 77 def description(pkg) @@list[pkg][1] end |
.exist?(pkg) ⇒ Boolean
28 29 30 |
# File 'lib/orchid/pkg-config.rb', line 28 def exist?(pkg) system("#{@@cmd} --exists #{pkg}") end |
.have_package(pkg, major = nil, minor = 0, micro = 0) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/orchid/pkg-config.rb', line 100 def have_package(pkg, major = nil, minor = 0, micro = 0) if major.nil? STDOUT.print("checking for #{pkg}... ") else STDOUT.print("checking for #{pkg} version (>= #{major}.#{minor}.#{micro})... ") end major ||= 0 STDOUT.flush if check_version?(pkg, major, minor, micro) STDOUT.print "yes\n" libraries = libs_only_l(pkg) dldflags = libs(pkg) dldflags = (Shellwords.shellwords(dldflags) - Shellwords.shellwords(libraries)).map{|s| /\s/ =~ s ? "\"#{s}\"" : s }.join(' ') $libs += ' ' + libraries if /mswin32/ =~ RUBY_PLATFORM $DLDFLAGS += ' ' + dldflags else $LDFLAGS += ' ' + dldflags end $CFLAGS += ' ' + cflags(pkg) true else STDOUT.print "no\n" false end end |
.libs(pkg) ⇒ Object
32 33 34 |
# File 'lib/orchid/pkg-config.rb', line 32 def libs(pkg) `#{@@cmd} --libs #{pkg}`.chomp end |
.libs_only_l(pkg) ⇒ Object
40 41 42 |
# File 'lib/orchid/pkg-config.rb', line 40 def libs_only_l(pkg) `#{@@cmd} --libs-only-l #{pkg}`.chomp end |
.libs_only_L(pkg) ⇒ Object
36 37 38 |
# File 'lib/orchid/pkg-config.rb', line 36 def libs_only_L(pkg) `#{@@cmd} --libs-only-L #{pkg}`.chomp end |
.list_all ⇒ Object
68 69 70 71 |
# File 'lib/orchid/pkg-config.rb', line 68 def list_all # Returns [pkg, name, description] @@list.keys.collect{|key| [key] + @@list[key]}.sort end |
.modversion(pkg) ⇒ Object
60 61 62 |
# File 'lib/orchid/pkg-config.rb', line 60 def modversion(pkg) `#{@@cmd} --modversion #{pkg}`.chomp end |
.name(pkg) ⇒ Object
73 74 75 |
# File 'lib/orchid/pkg-config.rb', line 73 def name(pkg) @@list[pkg][0] end |
.provides(pkg) ⇒ Object
81 82 83 |
# File 'lib/orchid/pkg-config.rb', line 81 def provides(pkg) `#{@@cmd} --print-provides #{pkg}`.chomp end |
.requires(pkg) ⇒ Object
85 86 87 |
# File 'lib/orchid/pkg-config.rb', line 85 def requires(pkg) `#{@@cmd} --print-requires #{pkg}`.chomp.gsub("\n", ", ") end |
.variable(pkg, var) ⇒ Object
56 57 58 |
# File 'lib/orchid/pkg-config.rb', line 56 def variable(pkg, var) `#{@@cmd} --variable=#{var} #{pkg}`.chomp end |
.version ⇒ Object
64 65 66 |
# File 'lib/orchid/pkg-config.rb', line 64 def version `#{@@cmd} --version`.chomp end |