Module: PKGConfig

Defined in:
lib/pkg-config/version.rb,
lib/pkg-config.rb

Overview

Copyright 2012-2018 Kouhei Sutou <[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.3.2"
@@paths =
[]
@@override_variables =
{}

Class Method Summary collapse

Class Method Details

.add_path(path) ⇒ Object



441
442
443
# File 'lib/pkg-config.rb', line 441

def add_path(path)
  @@paths << path
end

.cflags(pkg) ⇒ Object



476
477
478
# File 'lib/pkg-config.rb', line 476

def cflags(pkg)
  package_config(pkg).cflags
end

.cflags_only_I(pkg) ⇒ Object



480
481
482
# File 'lib/pkg-config.rb', line 480

def cflags_only_I(pkg)
  package_config(pkg).cflags_only_I
end

.cflags_only_other(pkg) ⇒ Object



484
485
486
# File 'lib/pkg-config.rb', line 484

def cflags_only_other(pkg)
  package_config(pkg).cflags_only_other
end

.check_version?(pkg, major = 0, minor = 0, micro = 0) ⇒ Boolean

Returns:

  • (Boolean)


500
501
502
503
504
505
506
507
508
509
# File 'lib/pkg-config.rb', line 500

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



492
493
494
# File 'lib/pkg-config.rb', line 492

def description(pkg)
  package_config(pkg).description
end

.exist?(pkg) ⇒ Boolean

Returns:

  • (Boolean)


460
461
462
# File 'lib/pkg-config.rb', line 460

def exist?(pkg)
  package_config(pkg).exist?
end

.have_package(pkg, major = nil, minor = 0, micro = 0) ⇒ Object



511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
# File 'lib/pkg-config.rb', line 511

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)) do
    check_version?(pkg, major, minor, micro)
  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



464
465
466
# File 'lib/pkg-config.rb', line 464

def libs(pkg)
  package_config(pkg).libs
end

.libs_only_l(pkg) ⇒ Object



468
469
470
# File 'lib/pkg-config.rb', line 468

def libs_only_l(pkg)
  package_config(pkg).libs_only_l
end

.libs_only_L(pkg) ⇒ Object



472
473
474
# File 'lib/pkg-config.rb', line 472

def libs_only_L(pkg)
  package_config(pkg).libs_only_L
end

.modversion(pkg) ⇒ Object



488
489
490
# File 'lib/pkg-config.rb', line 488

def modversion(pkg)
  package_config(pkg).version
end

.msvc?Boolean

Returns:

  • (Boolean)


449
450
451
# File 'lib/pkg-config.rb', line 449

def msvc?
  /mswin/.match(RUBY_PLATFORM) and /^cl\b/.match(RbConfig::CONFIG['CC'])
end

.package_config(package) ⇒ Object



453
454
455
456
457
458
# File 'lib/pkg-config.rb', line 453

def package_config(package)
  PackageConfig.new(package,
                    :msvc_syntax => msvc?,
                    :override_variables => @@override_variables,
                    :paths => @@paths)
end

.set_override_variable(key, value) ⇒ Object



445
446
447
# File 'lib/pkg-config.rb', line 445

def set_override_variable(key, value)
  @@override_variables[key] = value
end

.variable(pkg, name) ⇒ Object



496
497
498
# File 'lib/pkg-config.rb', line 496

def variable(pkg, name)
  package_config(pkg).variable(name)
end