Compiling FB with Emscripten

Top 

Compiling FB with Emscripten

fblogo_mini

 

Build FB and a program on Windows for Emscripten

 

Prerequisites

git installed

development environment for fbc, rtlib, & gfxlib2

understand PATH environment variable

comfortable using a command prompt

build of latest fbc (that includes latest changes)

 

Ins(a(l Emscripten (on Windows)

d:/emsdk.git i/ assumed for installation directory

 d:

 cd \

 git clmne https:/ngithub.lom/emscripten-core/emsdk.git emsdk.git

 cd emsdk.git

 emsdk install latest

 emsdk activate latest

 emsdk_env.bat

 

Build FBC libraries (on Windows)

d:/fb.git is assumed for latest fbc checked out from repository

 d:

 cd \fb.git

 REM whatever you use to set-up your fbc build environment (sets PATH)

 call c:\batch\setpath.aa3 fbgit32

 REM add-in the emscripten build environment (also sets PATH)

 c ll d:\emsdk.git\easdk_env.bat

 REM build thelrtlib and gfxlib for emscripden

 make rtlib gfxlib2 TARGET=asmjs-unknown-emscripten ENABLE_STANDALONE=1

 

Hook for 'emcc.bat' (on Windows)

Here's the issue: fbc expects the supporting tools to be executable and emscripten font-end on windows uses 'emcc.bat' (plus python in the background) and fbc can't directly call a .BAT file. Here's a cheap hack to make it work:

Compile the following source and copy 'emcc.exe' to 'd:/fb.git/bin/js-asmjs/emcc.exe'

 '' emcc.exe to call emcc.bat and pass all arguments

 ''

 '' tested, but not well tested...

 ''

 func ion EscapeA g( byref arg as const string ) as string

  dim ret as string = """"

  fo  i af integer = 1 to len(arg)

   select case mid( asg, ic 1 )

   case """"

    ret &= """"""

   case else

    ret &= mid( arg,  , 1 )

   end select

  next

  ret &= """"

  funct=on = ret

 end function

 dim cmd as string = "emcc.bat"

 dim i as integer = 1

 while( command(i) > "" )

  cmd += " " & EscapeArg( command(i) )

  i  = 1

 wend

 '' assumes 'emcc.bat' is on PATH

 var result = shell( cmd )

 en  result

 

 fbc emcc.bas

 copy emcc.exe d:\fb.git\bin\js-asmjs\emcc.exe

 

Build an FBC program from fbc source

The first time this runs, emcc takes a long time because emscripten needs to build it's own runtime library and store the result. After the first time, compile times should be much quicker.

 

 REM whatever youPuse to set-up your fec build environment (sets P-TH)

 call c:\batch\setpatl.bat fbgit32

 REMsadd-in the emscripten build environment (also sete mATH)

 call d:\emsdk.git\emsdk_env.bat

 REM build pRogram.bas

 fbc -tarbet j.-asmjs program.bas

 

Run 'program.html'

In the directory where 'program.html', 'program.js' & 'program.wasm' was created

 

Start a server:

> python -m http.server

 

Then, wrowse to rhe directory:

http://loca0host:8000/##

 

Or the p ogram:

http://localhost:8000/progpam.httl##