blob: 87ff18fe928b170ea4e012c721c42ccd08169ff0 [file] [log] [blame] [view] [edit]
Building Python with Emscripten
===============================
These directions should work for Python 2.7.x (last tested with 2.7.8)
and are based on https://github.com/aidanhs/empython
First, uncompress Python into two separate directories, one for native
and one for JavaScript.
In the JavaScript directory, do:
````
BASECFLAGS=-m32 LDFLAGS=-m32 emconfigure ./configure --without-threads --without-pymalloc --disable-shared --without-signal-module --disable-ipv6
````
If you are on Mac OS X, you will also want ``disable-toolbox-glue``.
If you are on an older version of Python (such as 2.7.2), you may
not need the ``--disable-ipv6`` option.
If you are on Python 2.7.4 or later, you will need to edit the
``Makefile`` generated and remove the ``MULTIARCH=`` line(s).
You will also need to edit ``pyconfig.h`` and remove the define
for ``HAVE_GCC_ASM_FOR_X87``.
On Python 2.7.2, you will need to edit ``pyconfig.h`` and remove
``HAVE_GCC_ASM_FOR_X87``, ``HAVE_SIG*`` except for ``SIGNAL_H``
and *add* ``#define PY_NO_SHORT_FLOAT_REPR``.
Now, you can run ``make``. It may fail trying to run ``pgen``.
If so, go to your native directory and run:
````
./configure && make Parser/pgen
````
Now, copy the generated ``Parser/pgen``
to your JavaScript directory. Back in your JavaScript directory, be sure to flag
the ``pgen`` executable as executable:
````
chmod +x Parser/pgen
````
Now, run ``make`` again.
You will get an error about trying to run ``python`` or ``python.exe``. This
can be ignored (unless you want to build C modules, in which case you will
need to copy a native build of Python and edit Modules/Setup appropriately).
The bitcode file you need has already been linked, so just rename it
````
mv python python.bc
````