this repo has no description
at develop 3.3 kB view raw
1if (DEFINED EMSCRIPTEN) 2 add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js 3 COMMAND python ${EMSCRIPTEN_ROOT_PATH}/tools/file_packager.py minizinc.data --lz4 --preload ${PROJECT_SOURCE_DIR}/share@/minizinc --from-emcc --js-output=${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js 4 COMMENT "building data store minizinc.data") 5 6 set(EMSCRIPTEN_CXX_FLAGS "-s MINIZ_NO_ARCHIVE_APIS -s MINIZ_NO_ZLIB_APIS") 7 set(EMSCRIPTEN_LINK_FLAGS " -s FORCE_FILESYSTEM=1 -s LZ4=1 -s MODULARIZE=1 -s EXTRA_EXPORTED_RUNTIME_METHODS=\"['cwrap', 'FS', 'ENV']\" -s DISABLE_EXCEPTION_CATCHING=0 -s BINARYEN_TRAP_MODE=\"clamp\" -s ALLOW_MEMORY_GROWTH=1 --no-heap-copy") 8 9 # ------------------------------------------------------------------------------------------------------------------- 10 # -- Web Assembly Configuration. 11 12 # MiniZinc main executable 13 em_link_pre_js(minizinc ${PROJECT_SOURCE_DIR}/cmake/support/emscripten_file_packager_patch.js) 14 em_link_pre_js(minizinc ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js) 15 16 set_target_properties(minizinc PROPERTIES CXX_FLAGS ${EMSCRIPTEN_CXX_FLAGS}) 17 set_target_properties(minizinc PROPERTIES LINK_FLAGS "-s WASM=1 -s EXPORT_NAME=\"'MINIZINC'\" ${EMSCRIPTEN_LINK_FLAGS}") 18 19 install(FILES ${PROJECT_BINARY_DIR}/minizinc.wasm DESTINATION bin) 20 install(FILES ${PROJECT_BINARY_DIR}/minizinc.data DESTINATION bin) 21 22 # mzn2doc executable 23 em_link_pre_js(mzn2doc ${PROJECT_SOURCE_DIR}/cmake/support/emscripten_file_packager_patch.js) 24 em_link_pre_js(mzn2doc ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js) 25 26 set_target_properties(mzn2doc PROPERTIES CXX_FLAGS ${EMSCRIPTEN_CXX_FLAGS}) 27 set_target_properties(mzn2doc PROPERTIES LINK_FLAGS "-s WASM=1 -s EXPORT_NAME=\"'MZN2DOC'\" ${EMSCRIPTEN_LINK_FLAGS}") 28 install(FILES ${PROJECT_BINARY_DIR}/mzn2doc.wasm DESTINATION bin) 29 30 # ------------------------------------------------------------------------------------------------------------------- 31 # -- ASM.js (JavaScript) Configuration. 32 33 # MiniZinc main executable 34 add_executable(minizinc_asm minizinc.cpp) 35 target_link_libraries(minizinc_asm mzn) 36 37 em_link_pre_js(minizinc_asm ${PROJECT_SOURCE_DIR}/cmake/support/emscripten_file_packager_patch.js) 38 em_link_pre_js(minizinc_asm ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js) 39 40 set_target_properties(minizinc_asm PROPERTIES CXX_FLAGS ${EMSCRIPTEN_CXX_FLAGS}) 41 set_target_properties(minizinc_asm PROPERTIES LINK_FLAGS "-s WASM=0 -s EXPORT_NAME=\"'MINIZINC'\" ${EMSCRIPTEN_LINK_FLAGS}") 42 43 install(TARGETS minizinc_asm RUNTIME DESTINATION bin) 44 install(FILES $<TARGET_FILE_NAME:minizinc_asm>.mem DESTINATION bin) 45 46 # mzn2doc executable 47 add_executable(mzn2doc_asm mzn2doc.cpp) 48 target_link_libraries(mzn2doc_asm mzn) 49 50 em_link_pre_js(mzn2doc_asm ${PROJECT_SOURCE_DIR}/cmake/support/emscripten_file_packager_patch.js) 51 em_link_pre_js(mzn2doc_asm ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js) 52 53 set_target_properties(mzn2doc_asm PROPERTIES CXX_FLAGS ${EMSCRIPTEN_CXX_FLAGS}) 54 set_target_properties(mzn2doc_asm PROPERTIES LINK_FLAGS "-s WASM=0 -s EXPORT_NAME=\"'MZN2DOC'\" ${EMSCRIPTEN_LINK_FLAGS}") 55 56 install(TARGETS mzn2doc_asm RUNTIME DESTINATION bin) 57 install(FILES $<TARGET_FILE_NAME:mzn2doc_asm>.mem DESTINATION bin) 58endif()