My ogv.js media decoder/player project pulls in several C libraries, most of which use the GNU autoconf build system. autoconf is notoriously difficult to wrap one's head around, but it's used on a lot of projects so emscripten has some hacks to make it work a little better out of the box...
Recently I was told of a regression with shared library support detection on Linux build hosts, which I tracked down to the removal of one of those hacks since emscripten 1.30. Patch for emscripten master: https://github.com/kripken/emscripten/pull/3538 What I'd like instead of relying on these hacks is to invoke autoconf's built-in support for cross-compiling, so the toolchain fully understands that it's cross-compiling to JavaScript and not building for Mac or Linux. This can be done by passing the option "--host=asmjs-unknown-emscripten" to configure. There are two major problems blocking me from using it right now: 1) GNU's config.guess / config.sub scripts don't yet recognize emscripten as a valid OS target, and craps out. You can work around this by using "--host=asmjs-local-emscripten" for now -- the "local" overrides the validity checks. I have a patch for these files sitting around which I need to clean up and submit upstream. A lot of stuff seems to "just work" in the build process this way, except... 2) GNU libtool's macros for autoconf don't recognize emscripten as supporting shared libraries, so projects using it only produce static .a libs. Using static libraries with emscripten seems very flaky. Emscripten's docs recommend building shared libraries instead, so I've been relying on producing .so or .dylib files (depending on the build host system!) and manually linking to them instead of using -lwhatever. I should be able to whip up a patch to libtool's autoconf macros to accept emscripten as a target and produce .so files consistently regardless of the build host system. Alternately... it might make more sense to *not* enable shared libraries, and figure out why linking to the static libraries is failing. I'm not yet sure whether that's a problem with the libraries, the archive tool, emscripten, my build, or what. :D (Note that autoconf is a weird system; *source releases* of software tend to include the configure script in them, but *source control* checkouts usually do not... so people building projects checked out from source control need the proper versions of autoconf/libtool/etc, it's all kind of confusing.) But it'd be nice to get fixes in the tools upstream so as they trickle out, it gets easier to use the cross-compilation mode. :) -- brion vibber (brion @ pobox.com / bvibber @ wikimedia.org) -- 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.
