Use WASM instead of asm.js

This commit is contained in:
Michael Droettboom 2018-03-29 15:24:33 -04:00
parent 693fac82bc
commit 695bf2c80f
2 changed files with 27 additions and 24 deletions

View File

@ -8,15 +8,15 @@ CC=emcc
CXX=em++ CXX=em++
OPTFLAGS=-O3 OPTFLAGS=-O3
CXXFLAGS=-std=c++14 $(OPTFLAGS) -g -I$(CPYTHONINC) -Wno-warn-absolute-paths CXXFLAGS=-std=c++14 $(OPTFLAGS) -g -I$(CPYTHONINC) -Wno-warn-absolute-paths
LDFLAGS=$(OPTFLAGS) \ LDFLAGS=\
$(CPYTHONROOT)/installs/python-$(PYVERSION)/lib/libpython$(PYMINOR).a \ $(CPYTHONROOT)/installs/python-$(PYVERSION)/lib/libpython$(PYMINOR).a \
-s "BINARYEN_METHOD='native-wasm'" \ -s "BINARYEN_METHOD='native-wasm'" \
-s TOTAL_MEMORY=268435456 \ -s TOTAL_MEMORY=268435456 \
-s MAIN_MODULE=1 \ -s MAIN_MODULE=1 \
-s ASSERTIONS=2 \
-s EMULATED_FUNCTION_POINTERS=1 \ -s EMULATED_FUNCTION_POINTERS=1 \
-s EMULATE_FUNCTION_POINTER_CASTS=1 \ -s EMULATE_FUNCTION_POINTER_CASTS=1 \
-s EXPORTED_FUNCTIONS='["_main"]' \ -s EXPORTED_FUNCTIONS='["_main"]' \
-s WASM=1 \
--memory-init-file 0 --memory-init-file 0
NUMPY_ROOT=numpy/build/numpy NUMPY_ROOT=numpy/build/numpy
@ -25,7 +25,6 @@ NUMPY_LIBS=\
$(NUMPY_ROOT)/core/umath.so \ $(NUMPY_ROOT)/core/umath.so \
$(NUMPY_ROOT)/linalg/lapack_lite.so \ $(NUMPY_ROOT)/linalg/lapack_lite.so \
$(NUMPY_ROOT)/linalg/_umath_linalg.so \ $(NUMPY_ROOT)/linalg/_umath_linalg.so \
$(NUMPY_ROOT)/fft/fftpack_lite.so \
$(NUMPY_ROOT)/random/mtrand.so $(NUMPY_ROOT)/random/mtrand.so
SITEPACKAGES=root/lib/python$(PYMINOR)/site-packages SITEPACKAGES=root/lib/python$(PYMINOR)/site-packages
@ -85,5 +84,5 @@ $(CPYTHONLIB):
make -C $(CPYTHONROOT) make -C $(CPYTHONROOT)
$(NUMPY_LIBS): $(NUMPY_LIBS): $(CPYTHONLIB)
make -C numpy make -C numpy

View File

@ -36,11 +36,12 @@ RANDOM_SRC=$(HOSTDIR)/numpy/random
CC=emcc CC=emcc
AR=emar AR=emar
CFLAGS=-O3 -Werror -std=c99 -DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -I$(ROOT)/config -I$(INCLUDE) -I$(GENINCLUDE)/numpy -I$(INCLUDE)/private -I$(SRC) -I$(SRC)/.. -I$(SRC)/private -I$(SRC)/npymath -I$(SRC)/multiarray -I$(SRC)/umath -I$(SRC)/npysort -I$(PYTHONINCLUDE) -I$(GENSRC)/private -I$(GENSRC)/npymath -I$(GENSRC)/umath CFLAGS=-O3 -Werror -std=c99 -DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -I$(ROOT)/config -I$(INCLUDE) -I$(GENINCLUDE)/numpy -I$(INCLUDE)/private -I$(SRC) -I$(SRC)/.. -I$(SRC)/private -I$(SRC)/npymath -I$(SRC)/multiarray -I$(SRC)/umath -I$(SRC)/npysort -I$(PYTHONINCLUDE) -I$(GENSRC)/private -I$(GENSRC)/npymath -I$(GENSRC)/umath
LDFLAGS=-Werror \ LDFLAGS=\
-Werror \
-s EMULATED_FUNCTION_POINTERS=1 \ -s EMULATED_FUNCTION_POINTERS=1 \
-s EMULATE_FUNCTION_POINTER_CASTS=1 \ -s EMULATE_FUNCTION_POINTER_CASTS=1 \
-s ASSERTIONS=2 \
-s SIDE_MODULE=1 \ -s SIDE_MODULE=1 \
-s WASM=1 \
--memory-init-file 0 --memory-init-file 0
@ -50,7 +51,6 @@ all: \
$(BUILDCORE)/umath.so \ $(BUILDCORE)/umath.so \
$(BUILDLINALG)/lapack_lite.so \ $(BUILDLINALG)/lapack_lite.so \
$(BUILDLINALG)/_umath_linalg.so \ $(BUILDLINALG)/_umath_linalg.so \
$(BUILDFFT)/fftpack_lite.so \
$(BUILDRANDOM)/mtrand.so $(BUILDRANDOM)/mtrand.so
@ -82,7 +82,7 @@ $(BUILD)/numpy/__init__.py: $(HOSTBUILD)/lib.$(PLATFORMSLUG)/numpy/__init__.py
[ -d $(BUILD) ] || mkdir $(BUILD) [ -d $(BUILD) ] || mkdir $(BUILD)
cp -r $(HOSTBUILD)/lib.$(PLATFORMSLUG)/numpy $(BUILD) && \ cp -r $(HOSTBUILD)/lib.$(PLATFORMSLUG)/numpy $(BUILD) && \
cd $(BUILD); find . -name "*.so" -type f -delete cd $(BUILD); find . -name "*.so" -type f -delete
touch $(BUILD)/numpy/__init__.py
$(ROOT)/.patched: $(HOSTDIR)/setup.py $(ROOT)/.patched: $(HOSTDIR)/setup.py
cat patches/*.patch | (cd $(HOSTDIR) ; patch -p1) cat patches/*.patch | (cd $(HOSTDIR) ; patch -p1)
@ -171,18 +171,22 @@ UMATH_SRC=\
$(SRC)/umath/umathmodule.bc \ $(SRC)/umath/umathmodule.bc \
LAPACK_LITE_SRC=\ LAPACK_BLAS_SRC=\
$(LINALG_SRC)/lapack_litemodule.bc \
$(LINALG_SRC)/lapack_lite/python_xerbla.bc \ $(LINALG_SRC)/lapack_lite/python_xerbla.bc \
$(LINALG_SRC)/lapack_lite/f2c_z_lapack.bc \ $(LINALG_SRC)/lapack_lite/f2c_z_lapack.bc \
$(LINALG_SRC)/lapack_lite/f2c_d_lapack.bc \ $(LINALG_SRC)/lapack_lite/f2c_d_lapack.bc \
$(LINALG_SRC)/lapack_lite/f2c_s_lapack.bc \ $(LINALG_SRC)/lapack_lite/f2c_s_lapack.bc \
$(LINALG_SRC)/lapack_lite/f2c_c_lapack.bc \
$(LINALG_SRC)/lapack_lite/f2c_lapack.bc \ $(LINALG_SRC)/lapack_lite/f2c_lapack.bc \
$(LINALG_SRC)/lapack_lite/f2c_blas.bc \ $(LINALG_SRC)/lapack_lite/f2c_blas.bc \
$(LINALG_SRC)/lapack_lite/f2c_config.bc \ $(LINALG_SRC)/lapack_lite/f2c_config.bc \
$(LINALG_SRC)/lapack_lite/f2c.bc $(LINALG_SRC)/lapack_lite/f2c.bc
LAPACK_LITE_SRC=\
$(LINALG_SRC)/lapack_litemodule.bc
UMATH_LINALG_SRC=\ UMATH_LINALG_SRC=\
$(LINALG_GENSRC)/umath_linalg.bc $(LINALG_GENSRC)/umath_linalg.bc
@ -200,33 +204,33 @@ MTRAND_SRC=\
$(BUILDCORE)/multiarray.so: $(MULTIARRAY_SRC) $(NPYMATH_SRC) $(NPYSORT_SRC) $(BUILDCORE)/multiarray.so: $(MULTIARRAY_SRC) $(NPYMATH_SRC) $(NPYSORT_SRC)
$(CC) $(LDFLAGS) $^ -o $(BUILDCORE)/multiarray.js $(CC) $(LDFLAGS) $^ -o $(BUILDCORE)/multiarray.wasm
mv $(BUILDCORE)/multiarray.js $(BUILDCORE)/multiarray.so mv $(BUILDCORE)/multiarray.wasm $(BUILDCORE)/multiarray.so
$(BUILDCORE)/umath.so: $(UMATH_SRC) $(NPYMATH_SRC) $(BUILDCORE)/umath.so: $(UMATH_SRC) $(NPYMATH_SRC)
$(CC) $(LDFLAGS) $^ -o $(BUILDCORE)/umath.js $(CC) $(LDFLAGS) $^ -o $(BUILDCORE)/umath.wasm
mv $(BUILDCORE)/umath.js $(BUILDCORE)/umath.so mv $(BUILDCORE)/umath.wasm $(BUILDCORE)/umath.so
$(BUILDLINALG)/lapack_lite.so: $(LAPACK_LITE_SRC) $(BUILDLINALG)/lapack_lite.so: $(LAPACK_LITE_SRC) $(LAPACK_BLAS_SRC) $(NPYMATH_SRC)
$(CC) $(LDFLAGS) $^ -o $(BUILDLINALG)/lapack_lite.js $(CC) $(LDFLAGS) $^ -o $(BUILDLINALG)/lapack_lite.wasm
mv $(BUILDLINALG)/lapack_lite.js $(BUILDLINALG)/lapack_lite.so mv $(BUILDLINALG)/lapack_lite.wasm $(BUILDLINALG)/lapack_lite.so
$(BUILDLINALG)/_umath_linalg.so: $(UMATH_LINALG_SRC) $(BUILDLINALG)/_umath_linalg.so: $(UMATH_LINALG_SRC) $(LAPACK_BLAS_SRC) $(NPYMATH_SRC)
$(CC) $(LDFLAGS) $^ -o $(BUILDLINALG)/_umath_linalg.js $(CC) $(LDFLAGS) $^ -o $(BUILDLINALG)/_umath_linalg.wasm
mv $(BUILDLINALG)/_umath_linalg.js $(BUILDLINALG)/_umath_linalg.so mv $(BUILDLINALG)/_umath_linalg.wasm $(BUILDLINALG)/_umath_linalg.so
$(BUILDFFT)/fftpack_lite.so: $(FFTPACK_LITE_SRC) $(BUILDFFT)/fftpack_lite.so: $(FFTPACK_LITE_SRC)
$(CC) $(LDFLAGS) $^ -o $(BUILDFFT)/fftpack_lite.js $(CC) $(LDFLAGS) $^ -o $(BUILDFFT)/fftpack_lite.wasm
mv $(BUILDFFT)/fftpack_lite.js $(BUILDFFT)/fftpack_lite.so mv $(BUILDFFT)/fftpack_lite.wasm $(BUILDFFT)/fftpack_lite.so
$(BUILDRANDOM)/mtrand.so: $(MTRAND_SRC) $(BUILDRANDOM)/mtrand.so: $(MTRAND_SRC)
$(CC) $(LDFLAGS) $^ -o $(BUILDRANDOM)/mtrand.js $(CC) $(LDFLAGS) $^ -o $(BUILDRANDOM)/mtrand.wasm
mv $(BUILDRANDOM)/mtrand.js $(BUILDRANDOM)/mtrand.so mv $(BUILDRANDOM)/mtrand.wasm $(BUILDRANDOM)/mtrand.so
%.bc: %.c $(BUILD)/numpy/__init__.py %.bc: %.c $(BUILD)/numpy/__init__.py