I think I see. But to be honest, I don't know that much about autotools, I've never used them (more than running ./configure now and then) ;) Would you perhaps like to write a pull request for this stuff?
- Alon On Tue, Feb 24, 2015 at 2:24 PM, Boris Gjenero <[email protected]> wrote: > Normally if you cross-compile for a different architecture and can't run > the created binary, the error should be ENOEXEC (Exec format error). > However, Autoconf's ./configure does not care about the error code. All > that matters is that the file fails to execute. If you simply output the JS > to a file, that shouldn't be executable without a "#!". > > BTW. Note that Autoconf ./configure will search for these possible output > files: "a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*". It > will figure out the extension of executable files based on what it finds. > So, if you produced conftest.js it would assume .js is the extension. I > think that it should also select .html if both .js and .html exist. At > least bash will sort files matching a glob pattern. Then that extension is > automatically used when compiling the target. So, it would be possible to > just "emconfigure ./configure && make" and get JS output automatically. > > On 2015-02-24 04:17 PM, Alon Zakai wrote: > >> Oh, I did not understand you properly before. >> >> The EMCONFIGURE_JS option I added forces JS usage in emconfigure, no >> exceptions. What you suggest is to also add an option that makes the >> "executables" emitted fail to run, intentionally (how should they fail >> to run, btw)? Perhaps we should call that EMCONFIGURE_JS_NOEXECUTE? >> >> - Alon >> >> >> On Mon, Feb 23, 2015 at 6:25 PM, Boris Gjenero <[email protected] >> <mailto:[email protected]>> wrote: >> >> I was specifically asking for inability to run compiled tests with >> EMCONFIGURE_JS=2 so that Autoconf ./configure will assume that it is >> cross compiling. I'm not sure that this change is supposed to do >> that. It seems like >> https://github.com/kripken/__emscripten/commit/__ >> 3702801d1fddc80d2a058507b953ed__e9dff09b11 >> >> <https://github.com/kripken/emscripten/commit/ >> 3702801d1fddc80d2a058507b953ede9dff09b11> >> simply always compiles to JS even if that would fail to run properly. >> >> The "checking whether we are cross compiling" test must fail to run >> the compiled binary in order for Autoconf ./configure to assume that >> it is cross compiling. If that binary runs but later tests fail to >> run properly, then test results may be bad, for example outputting >> empty defines like this: >> #define SIZEOF_UNSIGNED_CHAR >> #define SIZEOF_UNSIGNED_SHORT >> #define SIZEOF_UNSIGNED_INT >> #define SIZEOF_UNSIGNED_LONG >> #define SIZEOF_UNSIGNED_LONG_LONG >> #define SIZEOF_INT_P >> >> Surprisingly, I got the results I desire. The cross compiling test >> binary failed to execute with "./configure: ./conftest: >> /usr/bin/node: bad interpreter: No such file or directory" because >> it was looking for /usr/bin/node and there was only >> /usr/local/bin/node. Then Bochs 2.6.7 proceeded to configure and >> build without any ./configure hacks being needed. Impressive! >> However, if I create a /usr/bin/node symlink, I can't make >> ./configure conclude that it is cross compiling. >> >> I guess tests compiled to JS couldn't be run with EMCONFIGURE_JS=1 >> either, but most tests were being compiled to native code, so this >> wasn't causing problems. I see only one Bochs test triggering the >> error with EMCONFIGURE_JS=1: "checking for ANSI C header files". >> >> BTW. Failure to run compiled C programs can cause an error like this: >> >> checking whether we are cross compiling... configure: error: in >> `/home/bgjenero/projects/__bochs/bochs-2.6.7': >> configure: error: cannot run C compiled programs. >> If you meant to cross compile, use `--host'. >> See `config.log' for more details >> ERROR root: Configure step failed with non-zero return code 1! >> Command line: ['./configure', '--without-x', '--with-sdl2', >> '--disable-show-ips', '--enable-fast-function-calls'__, >> '--enable-handlers-chaining'] at >> /home/bgjenero/projects/bochs/__bochs-2.6.7 >> >> The solution to that error is simple and self-explanatory. I added >> --host=le32-unknown-nacl because --host=asmjs-unknown-__emscripten >> isn't recognized. >> > > -- > 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.
