@@ -228,40 +228,36 @@ auto runOnFile(const CLI& cli, const std::string& fileName) -> bool {
228228 auto toolchainId = cli.getSingle (" -toolchain" );
229229
230230 if (!toolchainId) {
231- #if defined(__APPLE__)
232- toolchainId = " darwin" ;
233- #elif defined(__wasi__)
234231 toolchainId = " wasm32" ;
235- #elif defined(__linux__)
236- toolchainId = " linux" ;
237- #elif defined(_MSC_VER)
238- toolchainId = " windows" ;
239- #endif
240232 }
241233
242234 if (toolchainId == " darwin" ) {
243235 toolchain = std::make_unique<MacOSToolchain>(preprocesor);
244236 } else if (toolchainId == " wasm32" ) {
245237 auto wasmToolchain = std::make_unique<Wasm32WasiToolchain>(preprocesor);
246238
239+ fs::path app_dir;
240+
241+ #if __wasi__
242+ app_dir = fs::path (" /" );
243+ #elif __unix__
244+ char * app_name = realpath (cli.app_name .c_str (), nullptr );
245+ app_dir = fs::path (app_name).remove_filename ().string ();
246+ std::free (app_name);
247+ #endif
248+
249+ wasmToolchain->setAppdir (app_dir.string ());
250+
247251 if (auto paths = cli.get (" --sysroot" ); !paths.empty ()) {
248252 wasmToolchain->setSysroot (paths.back ());
249253 } else {
254+ fs::path sysroot_dir;
250255#if __wasi__
251- wasmToolchain-> setSysroot (" /wasi-sysroot" );
256+ sysroot_dir = fs::path (" /wasi-sysroot" );
252257#elif __unix__
253- char * app_name = realpath (cli.app_name .c_str (), nullptr );
254-
255- const fs::path app_dir = fs::path (app_name).remove_filename ();
256- wasmToolchain->setAppdir (app_dir.string ());
257-
258- const auto sysroot_dir = app_dir / " ../lib/wasi-sysroot" ;
259- wasmToolchain->setSysroot (sysroot_dir.string ());
260-
261- if (app_name) {
262- std::free (app_name);
263- }
258+ sysroot_dir = app_dir / " ../lib/wasi-sysroot" ;
264259#endif
260+ wasmToolchain->setSysroot (sysroot_dir.string ());
265261 }
266262
267263 toolchain = std::move (wasmToolchain);
0 commit comments