Skip to content

Instantly share code, notes, and snippets.

@asakasinsky
Forked from Potherca/compile-lynx-wasm.sh
Created January 18, 2023 15:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asakasinsky/432b6d9d21c277ce6194ffbc0430869a to your computer and use it in GitHub Desktop.
Save asakasinsky/432b6d9d21c277ce6194ffbc0430869a to your computer and use it in GitHub Desktop.
Steps to compile the Lynx web browser to Web Assembly
# Sources used in figuring this out:
#
# - https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm
# - https://emscripten.org/docs/compiling/Building-Projects.html#building-projects
# Set up Emscripten SDK
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk/
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
# Test compile so we know EMScripten works
cd -
wget https://raw.githubusercontent.com/emscripten-core/emscripten/master/src/shell_minimal.html
wget https://gist.githubusercontent.com/Potherca/89a4ce1f018c7d39a6fa0320673c8d57/raw/hello3.c
emcc -o hello3.html hello3.c -O3 -s WASM=1 --shell-file shell_minimal.html -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall']"
# Compile Lynx so we know that works
sudo touch /usr/local/etc/lynx.cfg && sudo chown $USER /usr/local/etc/lynx.cfg
sudo touch /usr/local/etc/lynx.lss && sudo chown $USER /usr/local/etc/lynx.lss
wget https://invisible-mirror.net/archives/lynx/tarballs/lynx2.9.0dev.6.zip
unzip lynx2.9.0dev.6.zip
cd ../lynx2.9.0dev.6/
./configure --with-ssl
make
./lynx https://invisible-mirror.net/archives/lynx/tarballs/
# Compile Lynx with EMScripten
emconfigure ./configure --with-ssl
emmake make
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment