Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/python-wasm
Path: blob/main/core/zlib/Makefile
1391 views
include ../build/Makefile-vars

# See https://github.com/sagemathinc/zlib/releases
ZLIB_VERSION = 1.2.13

# https://stackoverflow.com/questions/18136918/how-to-get-current-relative-directory-of-your-makefile

all: deps wasm

URL = https://github.com/sagemathinc/zlib/archive/refs/tags/${ZLIB_VERSION}.tar.gz
TARBALL = ${UPSTREAM}/zlib-${ZLIB_VERSION}.tar.xz

include ../build/Makefile-rules

# NATIVE

${DIST_NATIVE}/.built: ${BUILD_NATIVE}/.build
	cd ../build && make zig
	cd ${BUILD_NATIVE} \
		&&	AR="zig ar" \
			CC="zig cc ${ZIG_NATIVE_CFLAGS_GNU} " \
			./configure --static --prefix=${DIST_NATIVE} \
		&&	make install -j8
	touch ${DIST_NATIVE}/.built

# WASM

${DIST_WASM}/.built: ${BUILD_WASM}/.build
	cd ../build && make zig
	cd ${BUILD_WASM} \
		&&	CHOST=none \
			AR="zig ar" \
			CC="cowasm-cc" \
			CFLAGS="-Oz -fvisibility-main" \
			./configure --static --prefix=${DIST_WASM} \
		&&	make -j8 install
	# Strangely the libz.a that gets built is mangled, e.g., "nm -a libz.a"
	# says "LLVM ERROR: malformed uleb128, extends past end"
	# so we just rebuild the archive from scratch from all of the .o files.
	# This happens both with and without -fPIC.
	cd ${BUILD_WASM} && \
		rm libz.a && \
		zig ar rc libz.a *.o && \
		cp libz.a ${DIST_WASM}/lib
	touch ${DIST_WASM}/.built


test: ${DIST_WASM}/.built
	cd ${BUILD_WASM} \
		&& make example \
		&& ${BIN}/cowasm ./example