aboutsummaryrefslogtreecommitdiff
path: root/cmake/platforms
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/platforms')
-rw-r--r--cmake/platforms/emscripten.cmake67
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()