diff --git a/compileopts/config.go b/compileopts/config.go index a084403c..0da1a2b6 100644 --- a/compileopts/config.go +++ b/compileopts/config.go @@ -204,7 +204,8 @@ func (c *Config) CFlags() []string { for _, flag := range c.Target.CFlags { cflags = append(cflags, strings.ReplaceAll(flag, "{root}", goenv.Get("TINYGOROOT"))) } - if c.Target.Libc == "picolibc" { + switch c.Target.Libc { + case "picolibc": root := goenv.Get("TINYGOROOT") picolibcDir := filepath.Join(root, "lib", "picolibc", "newlib", "libc") cflags = append(cflags, @@ -213,6 +214,15 @@ func (c *Config) CFlags() []string { "-Xclang", "-internal-isystem", "-Xclang", filepath.Join(picolibcDir, "tinystdio"), ) cflags = append(cflags, "-I"+filepath.Join(root, "lib/picolibc-include")) + case "wasi-libc": + root := goenv.Get("TINYGOROOT") + cflags = append(cflags, "--sysroot="+root+"/lib/wasi-libc/sysroot") + case "": + // No libc specified, nothing to add. + default: + // Incorrect configuration. This could be handled in a better way, but + // usually this will be found by developers (not by TinyGo users). + panic("unknown libc: " + c.Target.Libc) } // Always emit debug information. It is optionally stripped at link time. cflags = append(cflags, "-g") diff --git a/targets/wasi.json b/targets/wasi.json index 7826c48d..b7852ad4 100644 --- a/targets/wasi.json +++ b/targets/wasi.json @@ -6,9 +6,6 @@ "goarch": "arm", "linker": "wasm-ld", "libc": "wasi-libc", - "cflags": [ - "--sysroot={root}/lib/wasi-libc/sysroot" - ], "ldflags": [ "--allow-undefined", "--stack-first", diff --git a/targets/wasm.json b/targets/wasm.json index bfffc005..047dd8c3 100644 --- a/targets/wasm.json +++ b/targets/wasm.json @@ -6,9 +6,6 @@ "goarch": "wasm", "linker": "wasm-ld", "libc": "wasi-libc", - "cflags": [ - "--sysroot={root}/lib/wasi-libc/sysroot" - ], "ldflags": [ "--allow-undefined", "--stack-first",