CMakeLists.txt (1951B)
1 if (NOT JPEGXL_ENABLE_TOOLS OR NOT EMSCRIPTEN) 2 return() 3 endif() 4 5 # WASM API facade. 6 add_executable(jxl_decoder jxl_decoder.cc jxl_decompressor.cc no_png.cc) 7 add_executable(jxl_decoder_for_test jxl_decoder.cc jxl_decompressor.cc no_png.cc) 8 target_link_libraries(jxl_decoder jxl_extras-internal jxl_threads) 9 target_link_libraries(jxl_decoder_for_test jxl_extras-internal jxl_threads) 10 11 set(JXL_C_SYMBOLS 12 _free 13 _malloc 14 ) 15 16 set(JXL_DECODER_SYMBOLS 17 _jxlCreateInstance 18 _jxlDestroyInstance 19 _jxlFlush 20 _jxlProcessInput 21 ) 22 23 set(JXL_DECOMPRESSOR_SYMBOLS 24 _jxlDecompress 25 _jxlCleanup 26 ) 27 28 set(JXL_MODULE_SYMBOLS ${JXL_C_SYMBOLS} ${JXL_DECODER_SYMBOLS} ${JXL_DECOMPRESSOR_SYMBOLS}) 29 30 list(JOIN JXL_MODULE_SYMBOLS ", " JXL_MODULE_EXPORTS) 31 32 set(JXL_WASM_SITE_LINK_FLAGS " -O3 -s FILESYSTEM=0 --closure 1 -mnontrapping-fptoint") 33 set(JXL_WASM_TEST_LINK_FLAGS " -O1 -s NODERAWFS=1 ") 34 35 set(JXL_WASM_BASE_LINK_FLAGS "\ 36 -s ALLOW_MEMORY_GROWTH=1 \ 37 -s DISABLE_EXCEPTION_CATCHING=1 \ 38 -s MODULARIZE=1 \ 39 ") 40 41 if (JPEGXL_ENABLE_WASM_TRHEADS) 42 set(JXL_WASM_BASE_LINK_FLAGS "${JXL_WASM_BASE_LINK_FLAGS} \ 43 -s USE_PTHREADS=1 \ 44 -s PTHREAD_POOL_SIZE=4 \ 45 ") 46 endif() 47 48 # libpng is used only by "decompressor" 49 set(JXL_DECODER_LINK_FLAGS "${JXL_WASM_BASE_LINK_FLAGS} \ 50 -s EXPORT_NAME=\"JxlDecoderModule\" \ 51 -s \"EXPORTED_FUNCTIONS=[${JXL_MODULE_EXPORTS}]\" \ 52 ") 53 54 set_target_properties(jxl_decoder PROPERTIES LINK_FLAGS 55 "${JXL_DECODER_LINK_FLAGS} ${JXL_WASM_SITE_LINK_FLAGS}") 56 57 set_target_properties(jxl_decoder_for_test PROPERTIES LINK_FLAGS 58 "${JXL_DECODER_LINK_FLAGS} ${JXL_WASM_TEST_LINK_FLAGS}") 59 60 if (BUILD_TESTING) 61 add_test( 62 NAME test_wasm_jxl_decoder 63 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} 64 --no-experimental-fetch 65 ${CMAKE_CURRENT_SOURCE_DIR}/jxl_decoder_test.js 66 ) 67 set_tests_properties(test_wasm_jxl_decoder PROPERTIES 68 ENVIRONMENT NODE_PATH=$<TARGET_FILE_DIR:jxl_decoder_for_test>) 69 endif() # BUILD_TESTING