wasi: specify wasi-libc in a different way
This way is more consistent with how picolibc is specified and allows generating a helpful error message. This error message should never be generated for TinyGo binary releases, only when doing local development.
Этот коммит содержится в:
родитель
9c3e479432
коммит
869baca117
3 изменённых файлов: 17 добавлений и 6 удалений
|
@ -186,7 +186,9 @@ func Build(pkgName, outpath string, config *compileopts.Config, action func(Buil
|
|||
}
|
||||
|
||||
// Add libc dependency if needed.
|
||||
if config.Target.Libc == "picolibc" {
|
||||
root := goenv.Get("TINYGOROOT")
|
||||
switch config.Target.Libc {
|
||||
case "picolibc":
|
||||
path, job, err := Picolibc.load(config.Triple(), config.CPU(), dir)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -198,12 +200,21 @@ func Build(pkgName, outpath string, config *compileopts.Config, action func(Buil
|
|||
linkerDependencies = append(linkerDependencies, job)
|
||||
}
|
||||
ldflags = append(ldflags, path)
|
||||
case "wasi-libc":
|
||||
path := filepath.Join(root, "lib/wasi-libc/sysroot/lib/wasm32-wasi/libc.a")
|
||||
if _, err := os.Stat(path); os.IsNotExist(err) {
|
||||
return errors.New("could not find wasi-libc, perhaps you need to run `make wasi-libc`?")
|
||||
}
|
||||
ldflags = append(ldflags, path)
|
||||
case "":
|
||||
// no library specified, so nothing to do
|
||||
default:
|
||||
return fmt.Errorf("unknown libc: %s", config.Target.Libc)
|
||||
}
|
||||
|
||||
// Add jobs to compile extra files. These files are in C or assembly and
|
||||
// contain things like the interrupt vector table and low level operations
|
||||
// such as stack switching.
|
||||
root := goenv.Get("TINYGOROOT")
|
||||
for i, path := range config.ExtraFiles() {
|
||||
abspath := filepath.Join(root, path)
|
||||
outpath := filepath.Join(dir, "extra-"+strconv.Itoa(i)+"-"+filepath.Base(path)+".o")
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
"goarch": "arm",
|
||||
"compiler": "clang",
|
||||
"linker": "wasm-ld",
|
||||
"libc": "wasi-libc",
|
||||
"cflags": [
|
||||
"--target=wasm32--wasi",
|
||||
"--sysroot={root}/lib/wasi-libc/sysroot",
|
||||
|
@ -14,8 +15,7 @@
|
|||
"--allow-undefined",
|
||||
"--stack-first",
|
||||
"--export-dynamic",
|
||||
"--no-demangle",
|
||||
"{root}/lib/wasi-libc/sysroot/lib/wasm32-wasi/libc.a"
|
||||
"--no-demangle"
|
||||
],
|
||||
"emulator": ["wasmtime"],
|
||||
"wasm-abi": "generic"
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
"goarch": "wasm",
|
||||
"compiler": "clang",
|
||||
"linker": "wasm-ld",
|
||||
"libc": "wasi-libc",
|
||||
"cflags": [
|
||||
"--target=wasm32--wasi",
|
||||
"--sysroot={root}/lib/wasi-libc/sysroot",
|
||||
|
@ -14,8 +15,7 @@
|
|||
"--allow-undefined",
|
||||
"--stack-first",
|
||||
"--export-all",
|
||||
"--no-demangle",
|
||||
"{root}/lib/wasi-libc/sysroot/lib/wasm32-wasi/libc.a"
|
||||
"--no-demangle"
|
||||
],
|
||||
"emulator": ["node", "targets/wasm_exec.js"],
|
||||
"wasm-abi": "js"
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче