this repo has no description
1if (DEFINED EMSCRIPTEN)
2 add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js
3 COMMAND python3 ${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=\"['callMain', 'cwrap', 'FS', 'ENV']\" -s DISABLE_EXCEPTION_CATCHING=0 -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()