From: Kai Ninomiya Date: Wed, 18 Sep 2019 06:53:30 +0000 (-0700) Subject: use custom es6 modularization instead of MODULARIZE=1 X-Git-Tag: upstream/11.4.0~395^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=230117a02cc1996242d8a718980e754fca2fac55;p=platform%2Fupstream%2Fglslang.git use custom es6 modularization instead of MODULARIZE=1 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 150ae7a..c2adeb0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,18 +112,9 @@ if(EMSCRIPTEN) add_link_options("SHELL: --closure 1") add_link_options("SHELL: -s ALLOW_MEMORY_GROWTH=1") - add_link_options("SHELL: -s MODULARIZE=1") if(ENABLE_EMSCRIPTEN_SINGLE_FILE) add_link_options("SHELL: -s SINGLE_FILE=1") endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) - - if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) - add_link_options("SHELL: -s ENVIRONMENT=node") - add_link_options("SHELL: -s BINARYEN_ASYNC_COMPILATION=0") - else() - add_link_options("SHELL: -s ENVIRONMENT=web,worker") - add_link_options("SHELL: -s EXPORT_ES6=1") - endif() else() if(ENABLE_GLSLANG_WEB) if(MSVC) diff --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt index c73c345..e8238c3 100644 --- a/glslang/OSDependent/Web/CMakeLists.txt +++ b/glslang/OSDependent/Web/CMakeLists.txt @@ -4,7 +4,21 @@ target_link_libraries(glslang.js glslang SPIRV) if(EMSCRIPTEN) set_target_properties(glslang.js PROPERTIES OUTPUT_NAME "glslang" - SUFFIX ".js" - LINK_FLAGS "--bind -s EXPORT_NAME=\"glslangModule\"") + SUFFIX ".js") em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js") + + target_link_options(glslang.js PRIVATE + "SHELL:--bind -s MODULARIZE=1") + if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + target_link_options(glslang.js PRIVATE + "SHELL:-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0") + else() + target_link_options(glslang.js PRIVATE + "SHELL:-s ENVIRONMENT=web,worker") + endif() + + if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + add_custom_command(TARGET glslang.js POST_BUILD + COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) + endif() endif(EMSCRIPTEN) diff --git a/glslang/OSDependent/Web/glslang.after.js b/glslang/OSDependent/Web/glslang.after.js new file mode 100644 index 0000000..c2cfc35 --- /dev/null +++ b/glslang/OSDependent/Web/glslang.after.js @@ -0,0 +1,26 @@ +export default (() => { + const initialize = () => { + return new Promise(resolve => { + Module({ + locateFile() { + const i = import.meta.url.lastIndexOf('/') + return import.meta.url.substring(0, i) + '/glslang.wasm'; + }, + onRuntimeInitialized() { + resolve({ + compileGLSLZeroCopy: this.compileGLSLZeroCopy, + compileGLSL: this.compileGLSL, + }); + }, + }); + }); + }; + + let instance; + return () => { + if (!instance) { + instance = initialize(); + } + return instance; + }; +})();