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 }