Class: PackageConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/pkg-config.rb

Constant Summary collapse

SEPARATOR =
File::PATH_SEPARATOR

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ PackageConfig

Returns a new instance of PackageConfig.



139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/pkg-config.rb', line 139

def initialize(name, options={})
  @name = name
  @options = options
  path = @options[:path] || ENV["PKG_CONFIG_PATH"]
  @paths = [path, guess_default_path].compact.join(SEPARATOR).split(SEPARATOR)
  @paths.unshift(*(@options[:paths] || []))
  @paths = normalize_paths(@paths)
  @msvc_syntax = @options[:msvc_syntax]
  @variables = @declarations = nil
  override_variables = self.class.custom_override_variables
  @override_variables = parse_override_variables(override_variables)
  default_override_variables = @options[:override_variables] || {}
  @override_variables = default_override_variables.merge(@override_variables)
end

Instance Attribute Details

#msvc_syntaxObject

Returns the value of attribute msvc_syntax.



138
139
140
# File 'lib/pkg-config.rb', line 138

def msvc_syntax
  @msvc_syntax
end

#pathsObject (readonly)

Returns the value of attribute paths.



137
138
139
# File 'lib/pkg-config.rb', line 137

def paths
  @paths
end

Class Method Details

.clear_configure_args_cacheObject



47
48
49
50
51
# File 'lib/pkg-config.rb', line 47

def clear_configure_args_cache
  @native_pkg_config = nil
  @native_pkg_config_prefix = nil
  @custom_override_variables = nil
end

.custom_override_variablesObject



43
44
45
# File 'lib/pkg-config.rb', line 43

def custom_override_variables
  @custom_override_variables ||= with_config("override-variables", "")
end

.native_pkg_configObject



33
34
35
# File 'lib/pkg-config.rb', line 33

def native_pkg_config
  @native_pkg_config ||= guess_native_pkg_config
end

.native_pkg_config_prefixObject



38
39
40
# File 'lib/pkg-config.rb', line 38

def native_pkg_config_prefix
  @native_pkg_config_prefix ||= compute_native_pkg_config_prefix
end

Instance Method Details

#cflagsObject



166
167
168
169
# File 'lib/pkg-config.rb', line 166

def cflags
  path_flags, other_flags = collect_cflags
  (other_flags + path_flags).join(" ")
end

#cflags_only_IObject



171
172
173
# File 'lib/pkg-config.rb', line 171

def cflags_only_I
  collect_cflags[0].join(" ")
end

#cflags_only_otherObject



175
176
177
# File 'lib/pkg-config.rb', line 175

def cflags_only_other
  collect_cflags[1].join(" ")
end

#declaration(name) ⇒ Object



217
218
219
220
# File 'lib/pkg-config.rb', line 217

def declaration(name)
  parse_pc if @declarations.nil?
  expand_value(@declarations[name])
end

#descriptionObject



208
209
210
# File 'lib/pkg-config.rb', line 208

def description
  declaration("Description")
end

#exist?Boolean

Returns:

  • (Boolean)


154
155
156
# File 'lib/pkg-config.rb', line 154

def exist?
  not pc_path.nil?
end

#libsObject



179
180
181
182
# File 'lib/pkg-config.rb', line 179

def libs
  path_flags, other_flags = collect_libs
  (path_flags + other_flags).join(" ")
end

#libs_only_lObject



184
185
186
187
188
189
190
191
192
# File 'lib/pkg-config.rb', line 184

def libs_only_l
  collect_libs[1].find_all do |arg|
    if @msvc_syntax
      /\.lib\z/ =~ arg
    else
      /\A-l/ =~ arg
    end
  end.join(" ")
end

#libs_only_LObject



194
195
196
197
198
199
200
201
202
# File 'lib/pkg-config.rb', line 194

def libs_only_L
  collect_libs[0].find_all do |arg|
    if @msvc_syntax
      /\A\/libpath:/ =~ arg
    else
      /\A-L/ =~ arg
    end
  end.join(" ")
end

#pc_pathObject



222
223
224
225
226
227
228
# File 'lib/pkg-config.rb', line 222

def pc_path
  @paths.each do |path|
    _pc_path = File.join(path, "#{@name}.pc")
    return _pc_path if File.exist?(_pc_path)
  end
  nil
end

#requiresObject



158
159
160
# File 'lib/pkg-config.rb', line 158

def requires
  parse_requires(declaration("Requires"))
end

#requires_privateObject



162
163
164
# File 'lib/pkg-config.rb', line 162

def requires_private
  parse_requires(declaration("Requires.private"))
end

#variable(name) ⇒ Object



212
213
214
215
# File 'lib/pkg-config.rb', line 212

def variable(name)
  parse_pc if @variables.nil?
  expand_value(@override_variables[name] || @variables[name])
end

#versionObject



204
205
206
# File 'lib/pkg-config.rb', line 204

def version
  declaration("Version")
end