internal:link by LLGoFile to find libunwind
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
LLGoFiles = "_wrap/debug.cpp"
|
LLGoFiles = "$(llvm-config --cflags): _wrap/debug.cpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Info struct {
|
type Info struct {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
LLGoFiles = "_os/os.c"
|
LLGoFiles = "_os/os.cpp"
|
||||||
LLGoPackage = "link"
|
LLGoPackage = "link"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
10
xtool/env/llvm/llvm.go
vendored
10
xtool/env/llvm/llvm.go
vendored
@@ -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++")
|
||||||
|
|||||||
Reference in New Issue
Block a user