From Lazarus wiki
Revision as of 04:48, 31 January 2021 by Nickysn (talk | contribs) (Compiling the compiler: - updated compilation instructions to point to the WASM SVN branch (where Dmitry's work on github has been integrated into and where I have continued working on it))


Compiling the compiler

Get the sources:

svn checkout https://svn.freepascal.org/svn/fpc/branches/wasm/ fpc-wasm

enter the directory:

cd fpc-wasm


make -C compiler wasm32

Using Lazarus

open ppcwasm32.lpi

hit the "compile" button.

Using command-line
make -C compiler wasm32

Using the compiler

You need a system.pas unit. It can be found here:


You'll also need the wasm bin tools:

wasm bin tools

Extract the binaries and put them somewhere in your PATH.

You'll also need the wasmtool:


  • Compile wasmtool.lpi

Put wasmtool somewhere in your PATH

And finally you need wasm-ld (don't confuse it with wasmld).

  • Download the llvm-9 release, and put the bin/ldd as wasmld in your PATH.

Hint: If your fpc.cfg has


Enclose it in #IFNDEF CPUWASM :

#ifndef cpuwasm

Otherwise, you have to create symlinks wasm-wasm-wasmld to wasmld, and wasm-wasm-wasmtool to wasmtool.


Wasm-demo is a Pascal WebAssembly demo project, ported Google's C WebAssembly example (https://codelabs.developers.google.com/codelabs/web-assembly-intro)

You follow these steps in order to get the demo project working:

1. Get the project sources: https://github.com/skalogryz/wasm-demo

Using in webassembly.studio

2. Run the wasm compiler against lyff.pas, but request the assembler file to be kept

 pp -a lyff.pas

Webassembly.studio accepts the assembler file and would compile it on the server side.

3. open up https://webassembly.studio and select "Create empty Wat Project". The project will consist of:


All files of the project can be edited through the web interface.

4. Copy and paste the contents of the following files:

(compiled) lyff.wat to main.wat.
wasm-demo\webassembly.studio\main.html to main.html
wasm-demo\webassembly.studio\main.js to main.js

Note: every time you copy and paste, don't forget to press "SAVE" button (on the right side of the web interface)

5. once all files are update, hit "Build and Run"

See Also