# Cross file for WASM. # Use this file by running meson setup --cross-file resources/cross/wasm.txt # You can import other cross files after this one to override the options. [constants] # A list of functions that can run without being asyncified; proceed with caution asyncify_ignores = '["SDL_BlitScaled","SDL_UpperBlitScaled","SDL_MapRGB*","SDL_FillRect","SDL_FreeSurface","SDL_CreateRGBSurface","SDL_GetWindowSurface","SDL_PollEvent","SDL_CreateSystemCursor","SDL_SetWindowTitle","SDL_SetCursor","SDL_GetWindowSize","SDL_GetWindowPosition","lua_push*","lua_rawget*","luaL_check*","pcre2*","FT_*","Bezier_*","g_*","FT_*","ft_*","TT_*","tt_*","__*","*printf","gray_*","fopen","fclose","fread","fflush","qsort","sift"]' # Enable advising for optimizing the list above; disable this to prevent flooding logs asyncify_advise = '0' # Stack size for asyncify; increase this if you have problems with asyncify-induced crashes asyncify_stack_size = '6144' # Initial heap size in bytes; make sure it is not too low (around 64mb - 250mb) initial_heap = '104857600' # Emscripten is not always added to PATH. # Replace this variable with the path to Emscripten; # or supply a second machine file that defines this variable. toolchain = '' # The memory allocator to use. You shouldn't need to change this, # but other allocator might offer more performance at the cost of binary size. malloc_impl = 'emmalloc' # Functions exported by the main module. # This is needed if you plan to load shared libraries which need symbols from the main binary. # e.g. stdout, stderr, fopen, etc. Use another cross file to override this value. exported_functions = '_main' # Exported Filesystem modules. # For example, you can put '-lidbfs.js' to export IDBFS for later use. exported_filesystems = [] # Exported JS values in Module. # This is needed to preserve symbols after tree shaking. exported_js_values = '[]' # Extra link options passed to the linker. extra_link_options = [] # In order to run Lite XL, you will also need to bundle the /data directory. # The following option is added to the linking process to bundle the /data directory. # If you want to do this manually or the automatic bundling process does not work, # comment out the following line. bundle_paths = ['--preload-file', '../data@/usr/share/lite-xl/'] [binaries] c = toolchain / 'emcc' cpp = toolchain / 'em++' ar = toolchain / 'emar' strip = toolchain / 'emstrip' cmake = [toolchain / 'emmake', 'cmake'] pkg-config = [toolchain / 'emconfigure', 'pkg-config'] sdl2-config = [toolchain / 'emconfigure', 'sdl2-config'] file_packager = ['python3', toolchain / 'tools/file_packager.py'] [properties] needs_exe_wrapper = true [built-in options] c_args = ['-fPIC'] c_link_args = [] cpp_args = ['-fPIC'] cpp_link_args = [] [project options] buildtype = 'release' portable = true arch_tuple = 'wasm32-unknown' wrap_mode = 'nofallback' force_fallback_for = 'lua,pcre2,freetype2' c_link_args = ['-sALLOW_MEMORY_GROWTH=1', '-sINITIAL_MEMORY=' + initial_heap, '-sASYNCIFY', '-sASYNCIFY_ADVISE=' + asyncify_advise, '-sASYNCIFY_STACK_SIZE=' + asyncify_stack_size, '-sASYNCIFY_REMOVE=' + asyncify_ignores, '-sFORCE_FILESYSTEM=1', '-sEXIT_RUNTIME=1', '-sMALLOC=' + malloc_impl, '-sMAIN_MODULE=1', '-sEXPORTED_FUNCTIONS=' + exported_functions, '-sEXPORTED_RUNTIME_METHODS=' + exported_js_values] + extra_link_options + bundle_paths + exported_filesystems [pcre2:project options] jit = 'disabled' jit_sealloc = 'disabled' [host_machine] system = 'emscripten' cpu_family = 'wasm32' cpu = 'wasm32' endian = 'little'