github.com/metux/go-metabuild@v0.0.0-20240118143255-d9ed5ab697f9/engine/autoconf/probe/pkgconfig.go (about)

     1  package probe
     2  
     3  import (
     4  	"github.com/metux/go-metabuild/spec/check"
     5  	"github.com/metux/go-metabuild/util"
     6  	"github.com/metux/go-metabuild/util/cmd"
     7  	"github.com/metux/go-metabuild/util/compiler"
     8  )
     9  
    10  type ProbePkgConfig struct {
    11  	ProbeBase
    12  }
    13  
    14  func (p ProbePkgConfig) Probe() error {
    15  	m := p.EntryStrMap(check.KeyPkgConfig)
    16  
    17  	forBuild := p.Check.ForBuild()
    18  	envvar := util.ValIf(forBuild, "HOST_PKG_CONFIG", "PKG_CONFIG")
    19  	cmdline := cmd.EnvCmdline(envvar)
    20  	if len(cmdline) == 0 {
    21  		p.Logf("$%s not defined. assuming pkg-config", envvar)
    22  		cmdline = cmd.StrCmdline("pkg-config")
    23  	}
    24  
    25  	var res error
    26  
    27  	for id, query := range m {
    28  		if info, err := compiler.PkgConfigQuery(query, cmdline); err == nil {
    29  			p.Logf("pkgconf found: %s => %s", id, query)
    30  			p.Check.BuildConf.SetPkgConfig(forBuild, string(id), info)
    31  		} else {
    32  			p.Logf("pkgconf missing: %s => %s (%s)", id, query, err)
    33  			res = err
    34  		}
    35  	}
    36  
    37  	return res
    38  }
    39  
    40  func MakeProbePkgConfig(chk Check) ProbePkgConfig {
    41  	return ProbePkgConfig{MakeProbeBase(chk)}
    42  }