Компиляция модуля Wasm с уровнями оптимизации 02 и 03 для загрузки в AudioWorlet?

Я пытаюсь скомпилировать .wasmmodule.js с дополнительной оптимизацией для работы в AudioWorklet.

Я использую файл .post.js для добавления «модуля экспорта по умолчанию» к скомпилированному Wasm с помощью флага компиляции --post-js. Это хорошо работает с оптимизацией 01, которая является текущей конфигурацией компиляции, используемой в примерах шаблонов проектирования рабочихлетов.

$(EMSCR) $(CFLAGS) --post-js $(POST_JS) -o $(OUTPUT) $(SRC_EM) $(SRC) 

CFLAGS=--bind -O1\
-s WASM=1 \
-s BINARYEN_ASYNC_COMPILATION=0 \
-s SINGLE_FILE=1 \
-s ALLOW_MEMORY_GROWTH=1 \
-s ABORTING_MALLOC=0 \
-s TOTAL_MEMORY=128Mb

У меня возникают проблемы с компиляцией с флагами оптимизации 02 и 03, потому что мне нужно загрузить Wasm с экспортом по умолчанию.

Если я прокомментирую экспорт --post.js, компиляция отлично работает с уровнем оптимизации 02 или 03. Однако тогда мы не сможем загрузить Wasm в рабочий лист, за исключением:

Например, «Ошибка при загрузке рабочеголета: SyntaxError: запрошенный модуль '../../build/m.wasmmodule.js' не предоставляет экспорт с именем 'default

Я пробовал разные комбинации, но не смог с этим справиться.

Есть идеи, есть ли другая конфигурация, которую я мог бы попробовать?

Большое спасибо


person Francisco Bernardo    schedule 04.03.2020    source источник


Ответы (2)


Если вы используете синтаксис ESM JavaScript import MyModule from './MyModule.js', попробуйте использовать эти флаги Emscripten:

-s EXPORT_ES6=1 \
-s MODULARIZE=1 \
person AnthumChris    schedule 22.04.2020

У меня была та же проблема, и я исправил ее, используя --extern-post-js вместо --post-js, который добавляет экспорт после, когда вся остальная работа компилятора была сделана, включая оптимизацию.

person Luis M Gato    schedule 09.07.2021