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" | ||||
|  |  | |||
		Загрузка…
	
	Создание таблицы
		
		Сослаться в новой задаче
	
	 Ayke van Laethem
						Ayke van Laethem