Module: PKGConfig
- Defined in:
- lib/pkg-config/version.rb,
lib/pkg-config.rb
Overview
Copyright © 2012-2024 Sutou Kouhei <[email protected]>
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
Constant Summary collapse
- VERSION =
"1.5.8"
- @@paths =
[]
- @@override_variables =
{}
Class Method Summary collapse
- .add_path(path) ⇒ Object
- .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
- .modversion(pkg) ⇒ Object
- .msvc? ⇒ Boolean
- .package_config(package) ⇒ Object
- .set_override_variable(key, value) ⇒ Object
- .variable(pkg, name) ⇒ Object
Class Method Details
.add_path(path) ⇒ Object
575 576 577 |
# File 'lib/pkg-config.rb', line 575 def add_path(path) @@paths << path end |
.cflags(pkg) ⇒ Object
610 611 612 |
# File 'lib/pkg-config.rb', line 610 def cflags(pkg) package_config(pkg).cflags end |
.cflags_only_I(pkg) ⇒ Object
614 615 616 |
# File 'lib/pkg-config.rb', line 614 def cflags_only_I(pkg) package_config(pkg).cflags_only_I end |
.cflags_only_other(pkg) ⇒ Object
618 619 620 |
# File 'lib/pkg-config.rb', line 618 def cflags_only_other(pkg) package_config(pkg).cflags_only_other end |
.check_version?(pkg, major = 0, minor = 0, micro = 0) ⇒ Boolean
634 635 636 637 638 639 640 641 642 643 |
# File 'lib/pkg-config.rb', line 634 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
626 627 628 |
# File 'lib/pkg-config.rb', line 626 def description(pkg) package_config(pkg).description end |
.exist?(pkg) ⇒ Boolean
594 595 596 |
# File 'lib/pkg-config.rb', line 594 def exist?(pkg) package_config(pkg).exist? end |
.have_package(pkg, major = nil, minor = 0, micro = 0) ⇒ Object
645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 |
# File 'lib/pkg-config.rb', line 645 def have_package(pkg, major=nil, minor=0, micro=0) = "#{pkg}" unless major.nil? << " version (>= #{major}.#{minor}.#{micro})" end major ||= 0 result = checking_for((), "%s") do if check_version?(pkg, major, minor, micro) "yes (#{modversion(pkg)})" else if exist?(pkg) "no (#{modversion(pkg)})" else "no (nonexistent)" end end end enough_version = result.start_with?("yes") if enough_version libraries = libs_only_l(pkg) dldflags = libs(pkg) dldflags = (Shellwords.shellwords(dldflags) - Shellwords.shellwords(libraries)) dldflags = dldflags.map {|s| /\s/ =~ s ? "\"#{s}\"" : s }.join(" ") $libs += " " + libraries if /mswin/ =~ RUBY_PLATFORM $DLDFLAGS += " " + dldflags else $LDFLAGS += " " + dldflags end $CFLAGS += " " + cflags_only_other(pkg) if defined?($CXXFLAGS) $CXXFLAGS += " " + cflags_only_other(pkg) end $INCFLAGS += " " + cflags_only_I(pkg) end enough_version end |
.libs(pkg) ⇒ Object
598 599 600 |
# File 'lib/pkg-config.rb', line 598 def libs(pkg) package_config(pkg).libs end |
.libs_only_l(pkg) ⇒ Object
602 603 604 |
# File 'lib/pkg-config.rb', line 602 def libs_only_l(pkg) package_config(pkg).libs_only_l end |
.libs_only_L(pkg) ⇒ Object
606 607 608 |
# File 'lib/pkg-config.rb', line 606 def libs_only_L(pkg) package_config(pkg).libs_only_L end |
.modversion(pkg) ⇒ Object
622 623 624 |
# File 'lib/pkg-config.rb', line 622 def modversion(pkg) package_config(pkg).version end |
.msvc? ⇒ Boolean
583 584 585 |
# File 'lib/pkg-config.rb', line 583 def msvc? /mswin/.match(RUBY_PLATFORM) and /^cl\b/.match(RbConfig::CONFIG["CC"]) end |
.package_config(package) ⇒ Object
587 588 589 590 591 592 |
# File 'lib/pkg-config.rb', line 587 def package_config(package) PackageConfig.new(package, :msvc_syntax => msvc?, :override_variables => @@override_variables, :paths => @@paths) end |
.set_override_variable(key, value) ⇒ Object
579 580 581 |
# File 'lib/pkg-config.rb', line 579 def set_override_variable(key, value) @@override_variables[key] = value end |
.variable(pkg, name) ⇒ Object
630 631 632 |
# File 'lib/pkg-config.rb', line 630 def variable(pkg, name) package_config(pkg).variable(name) end |