build: support pkg-config and link args

This commit is contained in:
Li Jie
2024-06-04 16:30:21 +08:00
parent 2ddf8a44bc
commit 52d60d9623
4 changed files with 88 additions and 6 deletions

32
xtool/env/env.go vendored Normal file
View File

@@ -0,0 +1,32 @@
package env
import (
"os"
"os/exec"
"regexp"
"runtime"
"strings"
)
func ExpandEnv(s string) string {
return expandEnvWithCmd(s)
}
func expandEnvWithCmd(s string) string {
re := regexp.MustCompile(`\$\(([^)]+)\)`)
expanded := re.ReplaceAllStringFunc(s, func(m string) string {
cmd := re.FindStringSubmatch(m)[1]
var out []byte
var err error
if runtime.GOOS == "windows" {
out, err = exec.Command("cmd", "/C", cmd).Output()
} else {
out, err = exec.Command("sh", "-c", cmd).Output()
}
if err != nil {
return ""
}
return strings.TrimSpace(string(out))
})
return os.Expand(expanded, os.Getenv)
}