# This builds mandoc, so we can make man pages available
include ../build/Makefile-vars
TARBALL = ${SRC}/mandoc-2022-10-14.tar.xz
POSIX_WASM = $(shell cowasm-package-path @cowasm/posix-wasm)
ZLIB_WASM = $(shell cowasm-package-path @cowasm/zlib)
all: deps wasm
include ../build/Makefile-rules
${BUILD_WASM}/.patched: ${BUILD_WASM}/.build
cp ${SRC}/config.h ${SRC}/Makefile.local ${BUILD_WASM}
touch ${BUILD_WASM}/.patched
# TODO: we could move fts out of coreutils and back into a separate library and
# then use it, instead of the compat here. It should be moved to maybe posix-wasm.h
# actually, to save space in executables.
# Configure takes a long time and is always the same since it's always targetting
# webassembly, so we take the files it creates and just copy them in. Here
# is how to regenerate the files from scratch:
# make clean
# make configure
configure: node_modules ${BUILD_WASM}/.build
cd ${BUILD_WASM} \
&& ./configure \
CC="cowasm-cc" \
CFLAGS="-fvisibility-main -I${POSIX_WASM} -I${ZLIB_WASM}/include -Oz" \
PREFIX=${DIST_WASM} \
&& echo '#include "posix-wasm.h"' >> config.h \
&& echo '#define EFTYPE EINVAL' >> config.h \
&& echo '#undef HAVE_FTS' >> config.h \
&& echo '#undef HAVE_STRINGLIST' >> config.h
${DIST_WASM}/.built: node_modules ${BUILD_WASM}/.patched
cd ../build && make zig
cd ${BUILD_WASM} \
&& make -j8 \
AR="zig ar" \
RANLIB="zig ranlib" \
CC="cowasm-cc" \
CFLAGS="-fvisibility-main -I${POSIX_WASM} -I${ZLIB_WASM}/include -Oz" \
LDFLAGS="-L ${ZLIB_WASM}/lib -lz" \
PREFIX=${DIST_WASM} \
man
mkdir -p ${DIST_WASM}/bin
cp -v ${BUILD_WASM}/mandoc ${DIST_WASM}/bin/man
touch ${DIST_WASM}/.built
test: node_modules wasm
echo "" | cowasm ${DIST_WASM}/bin/man build/wasm/man.1 | grep "display manual pages"