Last active
April 13, 2024 16:05
-
-
Save Potherca/866dfc72de9bfe0fc5627945446826a6 to your computer and use it in GitHub Desktop.
Steps to compile the Lynx web browser to Web Assembly
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
I haven't yet, this is still an ongoing experiment... My next step is to try with one of
- https://github.com/rhaberkorn/emcurses
- https://github.com/jamesbiv/ncurses-emscripten
- https://github.com/ilyaigpetrov/ncurses-for-emscripten
Some of the reading I have yet to go throug are:
Have you figured out how to get ncurses working with emscripten?
Sadly, due to the influence of the pandemic, I was not able to continue working on this for the last few years. I _do _ plan on picking this up again, but I do not have a timetable yet.
Ahh, okay. If I only want to be able to run lynx -dump
and don't particularly need the curses component of the browser, is there some way I might be able to circumvent the requirement? Do you have any insight on how I might go about compiling lynx
without curses?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How did you get ncurses to work with emscripten?