It was done so that the build of optimizer can be matched with the same desired build flags that user chooses emsdk to install clang with (32bit vs 64bit or debug vs release). True, if you do git clean on the repository, you'll have to reissue emsdk install on the emscripten tool so that it rebuilds the optimizer into it. I changed this behavior so that in the next 1.30.0 release, the optimizer will be built into a sibling directory instead of a subdirectory so that git cleaning won't disrupt emsdk operation.
2015-04-11 5:29 GMT+03:00 Boris Gjenero <[email protected]>: > I'm guessing that I deleted the optimizer via git clean. > Maybe tools/optimizer_build/ should be in Emscripten's .gitignore? > > The SDK can successfully build the optimizer; I never saw that fail. > > Emscripten itself has code in get_native_optimizer() > in tools/js_optimizer.py which builds the optimizer, placing it in > ~/.emscripten_cache/optimizer.exe. It will only build the optimizer > if EMSCRIPTEN_NATIVE_OPTIMIZER is not set. > https://github.com/kripken/emscripten/blob/master/tools/js_optimizer.py#L64 > > Considering that Emscripten can build the native optimizer, I wonder why > the SDK needs to do that? > > On Friday, 10 April 2015 07:40:28 UTC-4, jj wrote: >> >> The way I use Emscripten SDK with git is that I first do 'emsdk install >> sdk-incoming-64bit', and then go to the emsdk/emscripten/incoming directory >> and do a "git remote add juj https://github.com/juj/emscripten.git" to >> add in my remote. That allows me to work with my own fork inside the emsdk >> directory structure. >> >> Emsdk needs to build the native optimizer at install time to match with >> the installation of prebuilt packages. Did that build step fail for you? >> >> If you use Emscripten from a custom git cloned directory outside emsdk, >> then the best workflow is like you mention to first install the sdk and >> activate it, and then edit ~/.emscripten to override your own path >> locations. Note that you don't need to do this again when updating later, >> since the path structure stays the same when you later update with e.g. >> "emsdk install sdk-incoming-64bit". >> >> 2015-04-10 7:30 GMT+03:00 Boris Gjenero <[email protected]>: >> >>> I initially installed Emscripten via the SDK, but I only use the SDK to >>> update Clang and set the path. I update Emscripten and do other things >>> there directly via Git commands. This led to a problem. I'm not calling >>> this a bug because you're probably supposed to let the SDK manage the stuff >>> in its folder without interference. >>> >>> Attempts to link with optimization failed due to failure to run the >>> native optimizer. I could link without optimization or >>> with EMCC_NATIVE_OPTIMIZER=0. When installing Emscripten, the SDK builds >>> the native optimizer and sets EMSCRIPTEN_NATIVE_OPTIMIZER in ~/.emscripten >>> to the location of that binary. Emscripten would normally try to find the >>> optimizer in the cache, and build it if it's not found there. However, with >>> EMSCRIPTEN_NATIVE_OPTIMIZER set it simply tries to run the specified path >>> as the optimizer. This means it fails if the optimizer isn't found there. >>> It also means cache clearing in response to Emscripten version changes >>> won't ensure that the latest optimizer is used. >>> >>> The solution is to always update via the SDK after installing via the >>> SDK, or to edit ~/.emscripten and delete the EMSCRIPTEN_NATIVE_OPTIMIZER >>> line. >>> >> -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
