diff options
Diffstat (limited to 'cmake/platforms')
| -rw-r--r-- | cmake/platforms/emscripten.cmake | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/cmake/platforms/emscripten.cmake b/cmake/platforms/emscripten.cmake index 244cfcb..3cbcab4 100644 --- a/cmake/platforms/emscripten.cmake +++ b/cmake/platforms/emscripten.cmake @@ -6,6 +6,11 @@ set(CMAKE_EXECUTABLE_SUFFIX ".js") set(WASM ON CACHE BOOL "Compile to WebAssembly rather than plain JavaScript") +find_program(HALIBUT halibut) +if(NOT HALIBUT) + message(WARNING "HTML documentation cannot be built (did not find halibut)") +endif() + set(emcc_export_list # Event handlers for mouse and keyboard input _mouseup @@ -62,4 +67,66 @@ function(set_platform_puzzle_target_properties NAME TARGET) endfunction() function(build_platform_extras) + if(HALIBUT) + set(help_dir ${CMAKE_CURRENT_BINARY_DIR}/help) + add_custom_command(OUTPUT ${help_dir}/en + COMMAND ${CMAKE_COMMAND} -E make_directory ${help_dir}/en) + add_custom_command(OUTPUT ${help_dir}/en/index.html + COMMAND ${HALIBUT} --html -Chtml-template-fragment:%k + ${CMAKE_CURRENT_SOURCE_DIR}/puzzles.but + DEPENDS + ${help_dir}/en + ${CMAKE_CURRENT_SOURCE_DIR}/puzzles.but + WORKING_DIRECTORY ${help_dir}/en) + add_custom_target(kaios_help ALL + DEPENDS ${help_dir}/en/index.html) + endif() + + # This is probably not the right way to set the destination. + set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH + "Installation path" FORCE) + + add_custom_target(kaios-extras ALL) + + foreach(name ${puzzle_names}) + add_custom_command( + OUTPUT ${name}-manifest.webapp + COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kaios/manifest.pl + "${name}" "${displayname_${name}}" "${description_${name}}" + "${objective_${name}}" > "${name}-manifest.webapp" + VERBATIM + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kaios/manifest.pl) + + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/kaios) + add_custom_command( + OUTPUT ${name}-kaios.html + COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kaios/apppage.pl + "${name}" "${displayname_${name}}" > "${name}-kaios.html" + VERBATIM + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kaios/apppage.pl) + + add_custom_target(${name}-kaios-extras + DEPENDS ${name}-manifest.webapp ${name}-kaios.html) + add_dependencies(kaios-extras ${name}-kaios-extras) + + install(TARGETS ${name} DESTINATION kaios/${name}) + # Release builds generate an initial memory image alongside the + # JavaScript, but CMake doesn't seem to know about it to install + # it. + install(FILES $<TARGET_FILE:${name}>.mem OPTIONAL + DESTINATION kaios/${name}) + install(FILES ${ICON_DIR}/${name}-56kai.png ${ICON_DIR}/${name}-112kai.png + DESTINATION kaios/${name} OPTIONAL) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-kaios.html + RENAME ${name}.html + DESTINATION kaios/${name}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-manifest.webapp + RENAME manifest.webapp + DESTINATION kaios/${name}) + if (HALIBUT) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/help + DESTINATION kaios/${name}) + endif() + + endforeach() endfunction() |