Skip to content

Building NoDOM from source

John O'Sullivan edited this page Oct 26, 2026 · 19 revisions

Prerequisites

Windows has been the primary development platform for NoDOM. Debugging C++ WASM in Chrome can be challenging; hence NoDOM's breadboard.exe native win32 app, which enables a lot of test scenarios to play out in Visual Studio's excellent debugger. Figma use the same ploy with their C++ WASM codebase, with the difference being their "breadboard" is a MacOS app. So any work fixing, extending or enhancing NoDOM's C++ implementation requires Windows with a hand install of these major tools...

  • Microsoft Visual Studio 2022 Community: you'll need MSVC to build breadboard.exe, NoDOM's win32 x64 native test bed.
  • Emscripten: you'll need the emcc compiler and linker to build NoDOM source C++ into WASM for browser deployment.
  • Python 3.12+: you'll need Python to run the test servers.
  • Boost 1.79+: all the win32 binaries, including breadboard.exe, require Boost threads, asio, and some other utils.
  • DuckDB 1.4.0+: download the platform and CLI for Windows from duckdb.org. pip will take care of the Python API later.
  • Microsoft Pix: NoDOM uses MS' Game Dev Kit Pix profiler in breadboard.exe
  • GNU Make: we use old fashioned make files to drive the Emscripten WASM build.

choco install is a great way to get utils like make on Windows these days. Once you have these major tools in your Windows dev env you're ready to build NoDOM from source. Start with a git clone...

git clone https://github.com/osullivj/nodom.git
cd nodom
git submodule update --init --recursive
cd sh

Now edit ndroot.bat to match your install paths for the tools above. Overlook ND_WABT_HOME and ND_SSL_HOME settings in ndroot.bat pro tem. Now you can run these three scripts in sh...

ndroot
ndinit
ndide

Your DOS box will now have an environment configured for MSVC and emcc builds. For instance, for the wasm build...

# bld nodom without DuckDB bulk cache
make -f Makefile.nodom
# bld nodom with DuckDB bulk cache
make -f Makefile.nodom_duck
# clean nodom with DuckDB bulk cache
make -f Makefile.nodom_duck clean
# non C++ build steps
make -f Makefile.nodom_duck web

To launch MSVC at the command line so it picks up correct paths for DLLs etc run this in your DOS box...

start devenv

...NB this must be in the same DOS box where you did ndroot,ndinit,ndide as the MSVC project files use the env vars setup in ndroot.bat. Once Visual Studio has started load src\cpp\breadboard.sln. At this stage any build errors will likely be path related. It is probable you'll have to go around this loop a few times...

  • New Command Prompt ("DOS box")
  • cd <my_root_dir>/nodom/sh
  • Edit paths in ndroot.bat
  • Run ndroot,ndinit,ndide,"start devenv" sequence
  • Load breadboard.sln and attempt build
  • If build fails close MSVC and the DOS box and try again...

Once C++ builds are succeeding in MSVC you can be confident the paths set in your sh\ndroot.bat are correct. Now you can create the virtual env for the example Python servers...

cd %ND_HOME%\sh
venv.bat

Clone this wiki locally