internal:link by LLGoFile to find libunwind

This commit is contained in:
luoliwoshang
2025-06-11 19:43:38 +08:00
parent a5fd7f2eba
commit f36098d704
4 changed files with 3 additions and 17 deletions

View File

@@ -6,11 +6,9 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"runtime" "runtime"
"strings"
"github.com/goplus/llgo/internal/env" "github.com/goplus/llgo/internal/env"
"github.com/goplus/llgo/internal/xtool/llvm" "github.com/goplus/llgo/internal/xtool/llvm"
envllvm "github.com/goplus/llgo/xtool/env/llvm"
) )
type Export struct { type Export struct {
@@ -68,10 +66,6 @@ func Use(goos, goarch string, wasiThreads, changeRpath bool) (export Export, err
"-latomic", "-latomic",
"-lpthread", // libpthread is built-in since glibc 2.34 (2021-08-01); we need to support earlier versions. "-lpthread", // libpthread is built-in since glibc 2.34 (2021-08-01); we need to support earlier versions.
) )
llvmEnv := envllvm.New("")
if cflags := llvmEnv.Cflags(); cflags != "" {
export.CFLAGS = append(export.CFLAGS, strings.Fields(cflags)...)
}
} }
return return
} }

View File

@@ -9,7 +9,7 @@ import (
) )
const ( const (
LLGoFiles = "_wrap/debug.cpp" LLGoFiles = "$(llvm-config --cflags): _wrap/debug.cpp"
) )
type Info struct { type Info struct {

View File

@@ -25,7 +25,7 @@ import (
) )
const ( const (
LLGoFiles = "_os/os.c" LLGoFiles = "_os/os.cpp"
LLGoPackage = "link" LLGoPackage = "link"
) )

View File

@@ -50,7 +50,6 @@ func defaultLLVMConfigBin() string {
// Env represents an LLVM installation. // Env represents an LLVM installation.
type Env struct { type Env struct {
binDir string binDir string
cflags string
} }
// New creates a new [Env] instance. // New creates a new [Env] instance.
@@ -63,12 +62,7 @@ func New(llvmConfigBin string) *Env {
// executables are assumed to be in PATH. // executables are assumed to be in PATH.
binDir, _ := exec.Command(llvmConfigBin, "--bindir").Output() binDir, _ := exec.Command(llvmConfigBin, "--bindir").Output()
cflags, _ := exec.Command(llvmConfigBin, "--cflags").Output() e := &Env{binDir: strings.TrimSpace(string(binDir))}
e := &Env{
binDir: strings.TrimSpace(string(binDir)),
cflags: strings.TrimSpace(string(cflags)),
}
return e return e
} }
@@ -76,8 +70,6 @@ func New(llvmConfigBin string) *Env {
// means LLVM executables are assumed to be in PATH. // means LLVM executables are assumed to be in PATH.
func (e *Env) BinDir() string { return e.binDir } func (e *Env) BinDir() string { return e.binDir }
func (e *Env) Cflags() string { return e.cflags }
// Clang returns a new [clang.Cmd] instance. // Clang returns a new [clang.Cmd] instance.
func (e *Env) Clang() *clang.Cmd { func (e *Env) Clang() *clang.Cmd {
bin := filepath.Join(e.BinDir(), "clang++") bin := filepath.Join(e.BinDir(), "clang++")