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

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

Returns:

  • (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

Returns:

  • (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)
  message = "#{pkg}"
  unless major.nil?
    message << " version (>= #{major}.#{minor}.#{micro})"
  end
  major ||= 0
  enough_version = checking_for(checking_message(message), "%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

Returns:

  • (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