Module: PKGConfig
- Defined in:
- lib/pkg-config/version.rb,
lib/pkg-config.rb
Overview
Copyright 2012-2022 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.4.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
525 526 527 |
# File 'lib/pkg-config.rb', line 525 def add_path(path) @@paths << path end |
.cflags(pkg) ⇒ Object
560 561 562 |
# File 'lib/pkg-config.rb', line 560 def cflags(pkg) package_config(pkg).cflags end |
.cflags_only_I(pkg) ⇒ Object
564 565 566 |
# File 'lib/pkg-config.rb', line 564 def cflags_only_I(pkg) package_config(pkg).cflags_only_I end |
.cflags_only_other(pkg) ⇒ Object
568 569 570 |
# File 'lib/pkg-config.rb', line 568 def cflags_only_other(pkg) package_config(pkg).cflags_only_other end |
.check_version?(pkg, major = 0, minor = 0, micro = 0) ⇒ Boolean
584 585 586 587 588 589 590 591 592 593 |
# File 'lib/pkg-config.rb', line 584 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
576 577 578 |
# File 'lib/pkg-config.rb', line 576 def description(pkg) package_config(pkg).description end |
.exist?(pkg) ⇒ Boolean
544 545 546 |
# File 'lib/pkg-config.rb', line 544 def exist?(pkg) package_config(pkg).exist? end |
.have_package(pkg, major = nil, minor = 0, micro = 0) ⇒ Object
595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 |
# File 'lib/pkg-config.rb', line 595 def have_package(pkg, major=nil, minor=0, micro=0) = "#{pkg}" unless major.nil? << " version (>= #{major}.#{minor}.#{micro})" end major ||= 0 enough_version = checking_for((), "%s") do if check_version?(pkg, major, minor, micro) "yes (#{modversion(pkg)})" else "no" end end 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
548 549 550 |
# File 'lib/pkg-config.rb', line 548 def libs(pkg) package_config(pkg).libs end |
.libs_only_l(pkg) ⇒ Object
552 553 554 |
# File 'lib/pkg-config.rb', line 552 def libs_only_l(pkg) package_config(pkg).libs_only_l end |
.libs_only_L(pkg) ⇒ Object
556 557 558 |
# File 'lib/pkg-config.rb', line 556 def libs_only_L(pkg) package_config(pkg).libs_only_L end |
.modversion(pkg) ⇒ Object
572 573 574 |
# File 'lib/pkg-config.rb', line 572 def modversion(pkg) package_config(pkg).version end |
.msvc? ⇒ Boolean
533 534 535 |
# File 'lib/pkg-config.rb', line 533 def msvc? /mswin/.match(RUBY_PLATFORM) and /^cl\b/.match(RbConfig::CONFIG["CC"]) end |
.package_config(package) ⇒ Object
537 538 539 540 541 542 |
# File 'lib/pkg-config.rb', line 537 def package_config(package) PackageConfig.new(package, :msvc_syntax => msvc?, :override_variables => @@override_variables, :paths => @@paths) end |
.set_override_variable(key, value) ⇒ Object
529 530 531 |
# File 'lib/pkg-config.rb', line 529 def set_override_variable(key, value) @@override_variables[key] = value end |
.variable(pkg, name) ⇒ Object
580 581 582 |
# File 'lib/pkg-config.rb', line 580 def variable(pkg, name) package_config(pkg).variable(name) end |