pyodide/cpython/Makefile

129 lines
3.9 KiB
Makefile
Raw Normal View History

2018-03-30 17:08:06 +00:00
PYODIDE_ROOT=$(abspath ..)
include ../Makefile.envs
2018-02-27 22:57:22 +00:00
ROOT=$(abspath .)
2020-12-07 23:19:16 +00:00
BUILD=$(ROOT)/build/Python-$(PYVERSION)
2018-02-27 22:57:22 +00:00
INSTALL=$(ROOT)/installs/python-$(PYVERSION)
TARBALL=$(ROOT)/downloads/Python-$(PYVERSION).tgz
URL=https://www.python.org/ftp/python/$(PYVERSION)/Python-$(PYVERSION).tgz
LIB=libpython$(PYMINOR).a
2018-07-18 13:26:18 +00:00
ZLIBVERSION = 1.2.11
ZLIBTARBALL=$(ROOT)/downloads/zlib-$(ZLIBVERSION).tar.gz
ZLIBBUILD=$(ROOT)/build/zlib-$(ZLIBVERSION)
ZLIBURL=https://zlib.net/zlib-1.2.11.tar.gz
SQLITETARBALL=$(ROOT)/downloads/sqlite-autoconf-3270200.tar.gz
SQLITEBUILD=$(ROOT)/build/sqlite-autoconf-3270200
SQLITEURL=https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
2019-08-22 11:43:18 +00:00
BZIP2TARBALL=$(ROOT)/downloads/bzip2-1.0.2.tar.gz
BZIP2BUILD=$(ROOT)/build/bzip2-1.0.2
2020-12-16 16:55:05 +00:00
BZIP2URL=ftp://sourceware.org/pub/bzip2/v102/bzip2-1.0.2.tar.gz
2019-08-22 11:43:18 +00:00
2018-07-18 13:26:18 +00:00
2018-03-20 22:58:59 +00:00
all: $(INSTALL)/lib/$(LIB)
2018-02-27 22:57:22 +00:00
2018-03-20 22:58:59 +00:00
$(INSTALL)/lib/$(LIB): $(BUILD)/$(LIB)
2018-02-27 22:57:22 +00:00
( \
cd $(BUILD); \
sed -i -e 's/libinstall:.*/libinstall:/' Makefile; \
2018-03-20 22:58:59 +00:00
touch $(BUILD)/$(LIB) ; \
2020-12-07 23:19:16 +00:00
emmake make PYTHON_FOR_BUILD=$(HOSTPYTHON) CROSS_COMPILE=yes inclinstall libinstall $(LIB) -j $${PYODIDE_JOBS:-3} && \
2018-02-27 22:57:22 +00:00
cp $(LIB) $(INSTALL)/lib/ && \
2020-12-07 23:19:16 +00:00
cp $(HOSTPYTHONROOT)/lib/python$(PYMINOR)/`$(HOSTPYTHON) -c "import sysconfig; print(sysconfig._get_sysconfigdata_name())"`.py $(INSTALL)/lib/python$(PYMINOR)/_sysconfigdata__emscripten_.py; \
sed -i -e 's#'"$(PYODIDE_ROOT)"'##g' $(INSTALL)/lib/python$(PYMINOR)/_sysconfigdata__emscripten_.py; \
2018-02-27 22:57:22 +00:00
)
clean:
-rm -fr $(BUILD)
2018-02-28 20:39:16 +00:00
-rm -fr $(INSTALL)
2018-02-27 22:57:22 +00:00
2018-02-27 22:57:22 +00:00
$(TARBALL):
[ -d $(ROOT)/downloads ] || mkdir $(ROOT)/downloads
wget -q -O $@ $(URL)
md5sum --quiet --check checksums || (rm $@; false)
2018-07-18 13:26:18 +00:00
$(ZLIBTARBALL):
[ -d $(ROOT)/downloads ] || mkdir $(ROOT)/downloads
wget -q -O $@ $(ZLIBURL)
$(SQLITETARBALL):
[ -d $(ROOT)/downloads ] || mkdir $(ROOT)/downloads
wget -q -O $@ $(SQLITEURL)
2019-08-22 11:43:18 +00:00
$(BZIP2TARBALL):
[ -d $(ROOT)/downloads ] || mkdir $(ROOT)/downloads
wget -q -O $@ $(BZIP2URL)
2018-02-27 22:57:22 +00:00
$(BUILD)/.patched: $(TARBALL)
[ -d $(BUILD) ] || (mkdir -p $(dir $(BUILD)); tar -C $(dir $(BUILD)) -xf $(TARBALL))
cat patches/*.patch | (cd $(BUILD) ; patch -p1)
touch $@
$(ZLIBBUILD)/.configured: $(ZLIBTARBALL)
2018-07-18 13:26:18 +00:00
[ -d $(ROOT)/build ] || (mkdir $(ROOT)/build)
tar -C $(ROOT)/build/ -xf $(ROOT)/downloads/zlib-1.2.11.tar.gz
cd $(ZLIBBUILD); emconfigure ./configure
2018-07-18 13:26:18 +00:00
touch $@
$(SQLITEBUILD)/libsqlite3.la: $(SQLITETARBALL)
[ -d $(ROOT)/build ] || (mkdir $(ROOT)/build)
tar -C $(ROOT)/build/ -xf $(SQLITETARBALL)
( \
cd $(SQLITEBUILD); \
emconfigure ./configure; \
emmake make -j $${PYODIDE_JOBS:-3}; \
)
2019-08-22 11:43:18 +00:00
$(BZIP2BUILD)/libbz2.a: $(BZIP2TARBALL)
[ -d $(ROOT)/build ] || (mkdir $(ROOT)/build)
tar -C $(ROOT)/build/ -xf $(BZIP2TARBALL)
( \
cd $(BZIP2BUILD); \
emmake make -j $${PYODIDE_JOBS:-3} CC=emcc CFLAGS="-Wall -Winline -O2 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64" AR=emar RANLIB=emranlib libbz2.a; \
2019-08-22 11:43:18 +00:00
)
$(BUILD)/Makefile: $(BUILD)/.patched $(ZLIBBUILD)/.configured $(SQLITEBUILD)/libsqlite3.la $(BZIP2BUILD)/libbz2.a
2018-02-27 22:57:22 +00:00
cp config.site $(BUILD)/
( \
cd $(BUILD); \
2020-12-15 07:56:43 +00:00
EMCC_CFLAGS="-s WASM=0" CONFIG_SITE=./config.site READELF=true LD_RUN_PATH="$(SQLITEBUILD):$(BZIP2BUILD)" emconfigure \
./configure \
CPPFLAGS="-I$(SQLITEBUILD) -I$(BZIP2BUILD) -I$(ZLIBBUILD)" \
2019-08-22 11:43:18 +00:00
LDFLAGS="-L$(SQLITEBUILD) -L$(BZIP2BUILD)" \
--without-pymalloc \
--disable-shared \
--disable-ipv6 \
--without-gcc \
--host=asmjs-unknown-emscripten \
--build=$(shell $(BUILD)/config.guess) \
--prefix=$(INSTALL) ; \
2018-02-27 22:57:22 +00:00
)
2020-12-07 23:19:16 +00:00
$(BUILD)/$(LIB): $(BUILD)/Makefile Setup.local
2018-02-27 22:57:22 +00:00
cp Setup.local $(BUILD)/Modules/
cat pyconfig.undefs.h >> $(BUILD)/pyconfig.h
2018-02-27 22:57:22 +00:00
( \
2020-12-07 23:19:16 +00:00
cp $(HOSTPYTHONROOT)/lib/python$(PYMINOR)/`$(HOSTPYTHON) -c "import sysconfig; print(sysconfig._get_sysconfigdata_name())"`.py $(BUILD)/Lib/_sysconfigdata__emscripten_.py; \
2018-02-27 22:57:22 +00:00
cd $(BUILD); \
2020-12-07 23:19:16 +00:00
emmake make CROSS_COMPILE=yes $(LIB) -j $${PYODIDE_JOBS:-3} \
2018-02-27 22:57:22 +00:00
)
2020-12-07 23:19:16 +00:00
sed -i -e 's/\-undefined dynamic_lookup//' $(BUILD)/Lib/_sysconfigdata__emscripten_.py
2018-03-20 22:58:59 +00:00
touch $(BUILD)/$(LIB)