module PKGConfig

def add_path(path)

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

def cflags(pkg)

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

def cflags_only_I(pkg)

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

def cflags_only_other(pkg)

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

def check_version?(pkg, major=0, minor=0, micro=0)

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

def description(pkg)

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

def exist?(pkg)

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

def have_package(pkg, major=nil, minor=0, micro=0)

def have_package(pkg, major=nil, minor=0, micro=0)
  message = "#{pkg}"
  unless major.nil?
    message << " version (>= #{major}.#{minor}.#{micro})"
  end
  major ||= 0
  result = checking_for(checking_message(message), "%s") do
    if check_version?(pkg, major, minor, micro)
      "yes (#{modversion(pkg)})"
    else
      "no"
    end
  end
  enough_version = (result != "no")
  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

def libs(pkg)

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

def libs_only_L(pkg)

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

def libs_only_l(pkg)

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

def modversion(pkg)

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

def msvc?

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

def package_config(package)

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

def set_override_variable(key, value)

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

def variable(pkg, name)

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