diff --git a/CMakeLists.txt b/CMakeLists.txt index 98213013..b1962045 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -389,6 +389,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}) configure_file(Version.cpp.in Version.cpp @ONLY) set(CMAKE_INSTALL_BINDIR ".") +set(CMAKE_INSTALL_DOCDIR "doc") set(DATADIR ".") install(TARGETS ${PROJECT_NAME}) @@ -399,405 +400,11 @@ include(CPack) # Documentation find_program(PANDOC_EXECUTABLE pandoc) -if(NOT PANDOC_EXECUTABLE) +if(PANDOC_EXECUTABLE) + add_subdirectory(Documentation) +else() message(WARNING "pandoc not found!") endif() -set(DOC_DE - Documentation/de/index.md - Documentation/de/startup-arguments.md - Documentation/de/general-settings.md - Documentation/de/config-controls.md - Documentation/de/config-intellibox.md - Documentation/de/config-mastercontrol2.md - Documentation/de/config-mastercontrol.md - Documentation/de/config-redbox.md - Documentation/de/config-twincenter.md - Documentation/de/control-6051.md - Documentation/de/control-cc-schnitte.md - Documentation/de/control-cs2-tcp.md - Documentation/de/control-cs2-udp.md - Documentation/de/control-hsi88.md - Documentation/de/control-opendcc-z1.md - Documentation/de/control-z21.md - Documentation/de/config-rs232-usb.md - Documentation/de/config-locomotives.md - Documentation/de/config-multipleunits.md - Documentation/de/config-layers.md - Documentation/de/config-tracks.md - Documentation/de/config-groups.md - Documentation/de/config-switches.md - Documentation/de/config-signals.md - Documentation/de/config-accessories.md - Documentation/de/config-routes.md - Documentation/de/config-feedbacks.md - Documentation/de/config-texts.md - Documentation/de/config-counter.md - Documentation/de/automatic.md -) -set(DOCDATA_DE - ${PROJECT_SOURCE_DIR}/Documentation/de/config_layers_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/control_list_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/counter_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/counter_position_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/cs2_config_can_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/cs2_config_ip_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/cs2_tcp_config_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/cs2_udp_config_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/feedback_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/feedback_position_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/groups_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/groups_tracks_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/locomotives_automode_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/locomotives_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/locomotives_functions_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/multipleunits_automode_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/multipleunits_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/multipleunits_functions_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/multipleunits_multipleunits_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/routes_atlock_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/routes_atunlock_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/routes_automode_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/routes_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/routes_position_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/settings_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/signals_addresses_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/signals_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/signals_position_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/switches_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/switches_position_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/texts_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/texts_position_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/tracks_automode_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/tracks_basics_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/tracks_feedbacks_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/track_signals_de.png - ${PROJECT_SOURCE_DIR}/Documentation/de/tracks_position_de.png -) - -set(DOC_EN - Documentation/en/index.md - Documentation/en/startup-arguments.md - Documentation/en/general-settings.md - Documentation/en/config-controls.md - Documentation/en/config-intellibox.md - Documentation/en/config-mastercontrol2.md - Documentation/en/config-mastercontrol.md - Documentation/en/config-redbox.md - Documentation/en/config-twincenter.md - Documentation/en/control-6051.md - Documentation/en/control-cc-schnitte.md - Documentation/en/control-cs2-tcp.md - Documentation/en/control-cs2-udp.md - Documentation/en/control-hsi88.md - Documentation/en/control-opendcc-z1.md - Documentation/en/control-z21.md - Documentation/en/config-rs232-usb.md - Documentation/en/config-locomotives.md - Documentation/en/config-multipleunits.md - Documentation/en/config-layers.md - Documentation/en/config-tracks.md - Documentation/en/config-groups.md - Documentation/en/config-switches.md - Documentation/en/config-signals.md - Documentation/en/config-accessories.md - Documentation/en/config-routes.md - Documentation/en/config-feedbacks.md - Documentation/en/config-texts.md - Documentation/en/config-counter.md - Documentation/en/automatic.md -) -set(DOCDATA_EN - ${PROJECT_SOURCE_DIR}/Documentation/en/config_layers_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/control_list_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/counter_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/counter_position_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/cs2_tcp_config_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/cs2_udp_config_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/feedback_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/feedback_position_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/groups_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/groups_tracks_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/locomotives_automode_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/locomotives_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/locomotives_functions_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/multipleunits_automode_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/multipleunits_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/multipleunits_functions_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/multipleunits_multipleunits_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/routes_atlock_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/routes_atunlock_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/routes_automode_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/routes_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/routes_position_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/settings_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/signals_addresses_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/signals_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/signals_position_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/switches_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/switches_position_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/texts_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/texts_position_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/tracks_automode_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/tracks_basics_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/tracks_feedbacks_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/track_signals_en.png - ${PROJECT_SOURCE_DIR}/Documentation/en/tracks_position_en.png -) - -set(DOC_ES - Documentation/es/index.md - Documentation/es/startup-arguments.md - Documentation/es/general-settings.md - Documentation/es/config-controls.md - Documentation/es/config-intellibox.md - Documentation/es/config-mastercontrol2.md - Documentation/es/config-mastercontrol.md - Documentation/es/config-redbox.md - Documentation/es/config-twincenter.md - Documentation/es/control-6051.md - Documentation/es/control-cc-schnitte.md - Documentation/es/control-cs2-tcp.md - Documentation/es/control-cs2-udp.md - Documentation/es/control-hsi88.md - Documentation/es/control-opendcc-z1.md - Documentation/es/control-z21.md - Documentation/es/config-rs232-usb.md - Documentation/es/config-locomotives.md - Documentation/es/config-multipleunits.md - Documentation/es/config-layers.md - Documentation/es/config-tracks.md - Documentation/es/config-groups.md - Documentation/es/config-switches.md - Documentation/es/config-signals.md - Documentation/es/config-accessories.md - Documentation/es/config-routes.md - Documentation/es/config-feedbacks.md - Documentation/es/config-texts.md - Documentation/es/config-counter.md - Documentation/es/automatic.md -) -set(DOCDATA_ES - ${PROJECT_SOURCE_DIR}/Documentation/es/config_layers_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/control_list_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/cs2_tcp_config_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/cs2_udp_config_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/feedback_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/feedback_position_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/groups_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/groups_tracks_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/locomotives_automode_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/locomotives_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/locomotives_functions_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/multipleunits_automode_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/multipleunits_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/multipleunits_functions_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/multipleunits_multipleunits_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/routes_atlock_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/routes_atunlock_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/routes_automode_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/routes_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/routes_position_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/settings_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/signals_addresses_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/signals_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/signals_position_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/switches_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/switches_position_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/texts_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/texts_position_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/tracks_automode_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/tracks_basics_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/tracks_feedbacks_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/track_signals_es.png - ${PROJECT_SOURCE_DIR}/Documentation/es/tracks_position_es.png -) - -set(DOCDATA - ${PROJECT_SOURCE_DIR}/Documentation/menu_accessory.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_booster.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_control.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_counter.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_feedback.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_fullscreen.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_group.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_layer.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_loco.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_menu.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_multipleunit.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_program.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_quit.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_route.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_settings.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_signalgreen.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_signal.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_signalred.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_stop.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_street.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_switch.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_text.png - ${PROJECT_SOURCE_DIR}/Documentation/menu_track.png - ${PROJECT_SOURCE_DIR}/Documentation/style.css -) - -set(OUTPUT_HTML_DE ${CMAKE_BINARY_DIR}/doc/de/index.html) -set(OUTPUT_HTML_EN ${CMAKE_BINARY_DIR}/doc/en/index.html) -set(OUTPUT_HTML_ES ${CMAKE_BINARY_DIR}/doc/es/index.html) - -file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/doc/de) -file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/doc/en) -file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/doc/es) - -set(PANDOC_OPTS --toc --toc-depth=2 - --standalone - --css=../style.css - --template=Documentation/template.html) - -add_custom_command( - OUTPUT ${OUTPUT_HTML_DE} - COMMAND pandoc ${PANDOC_OPTS} - --metadata-file=Documentation/de/metadata.yaml - --output=${OUTPUT_HTML_DE} ${DOC_DE} - DEPENDS ${DOC_DE} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating German HTML documentation" - VERBATIM -) - -add_custom_command( - OUTPUT ${OUTPUT_HTML_EN} - COMMAND pandoc ${PANDOC_OPTS} - --metadata-file=Documentation/en/metadata.yaml - --output=${OUTPUT_HTML_EN} ${DOC_EN} - DEPENDS ${DOC_EN} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating English HTML documentation" - VERBATIM -) - -add_custom_command( - OUTPUT ${OUTPUT_HTML_ES} - COMMAND pandoc ${PANDOC_OPTS} - --metadata-file=Documentation/es/metadata.yaml - --output=${OUTPUT_HTML_ES} ${DOC_ES} - DEPENDS ${DOC_ES} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating Spanish HTML documentation" - VERBATIM -) - -add_custom_target(doc - DEPENDS ${OUTPUT_HTML_DE} ${OUTPUT_HTML_EN} ${OUTPUT_HTML_ES} -) - -foreach(DOCDATA ${DOCDATA}) - add_custom_command(TARGET doc POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${DOCDATA} - ${PROJECT_BINARY_DIR}/doc - ) -endforeach() - -foreach(DOCDATA_DE ${DOCDATA_DE}) - add_custom_command(TARGET doc POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${DOCDATA_DE} - ${PROJECT_BINARY_DIR}/doc/de - ) -endforeach() - -foreach(DOCDATA_EN ${DOCDATA_EN}) - add_custom_command(TARGET doc POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${DOCDATA_EN} - ${PROJECT_BINARY_DIR}/doc/en - ) -endforeach() - -foreach(DOCDATA_ES ${DOCDATA_ES}) - add_custom_command(TARGET doc POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${DOCDATA_ES} - ${PROJECT_BINARY_DIR}/doc/es - ) -endforeach() - -add_custom_target(doc-for-web - DEPENDS doc -) - -add_custom_command(TARGET doc-for-web POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${PROJECT_SOURCE_DIR}/Documentation/de/documentation-de - ${PROJECT_BINARY_DIR}/doc/de/documentation-de - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${PROJECT_SOURCE_DIR}/Documentation/en/documentation-en - ${PROJECT_BINARY_DIR}/doc/en/documentation-en - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${PROJECT_SOURCE_DIR}/Documentation/es/documentation-es - ${PROJECT_BINARY_DIR}/doc/es/documentation-es -) - -# Build documentation as small HTML files ("chunked html") -set(OUTPUT_CHUNKEDHTML_DE ${CMAKE_BINARY_DIR}/chunkedhtml/de) -set(OUTPUT_CHUNKEDHTML_EN ${CMAKE_BINARY_DIR}/chunkedhtml/en) -set(OUTPUT_CHUNKEDHTML_ES ${CMAKE_BINARY_DIR}/chunkedhtml/es) -file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/chunkedhtml) - -set(PANDOC_CHUNKEDOPTS --toc --toc-depth=2 - --standalone - --css=../style.css - --template=Documentation/template.html - --write=chunkedhtml - --embed-resources - --split-level=1) -add_custom_command( - OUTPUT ${OUTPUT_CHUNKEDHTML_DE}/index.html - COMMAND pandoc ${PANDOC_CHUNKEDOPTS} - --resource-path=".:Documentation:Documentation/de:doc:doc/de" - --metadata-file=Documentation/de/metadata.yaml - --output=${OUTPUT_CHUNKEDHTML_DE} ${DOC_DE} - DEPENDS ${DOC_DE} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating German Chunked HTML documentation" - VERBATIM -) - -add_custom_command( - OUTPUT ${OUTPUT_CHUNKEDHTML_EN}/index.html - COMMAND pandoc ${PANDOC_CHUNKEDOPTS} - --resource-path=".:Documentation:Documentation/en:doc:doc/en" - --metadata-file=Documentation/en/metadata.yaml - --output=${OUTPUT_CHUNKEDHTML_EN} ${DOC_EN} - DEPENDS ${DOC_EN} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating English Chunked HTML documentation" - VERBATIM -) - -add_custom_command( - OUTPUT ${OUTPUT_CHUNKEDHTML_ES}/index.html - COMMAND pandoc ${PANDOC_CHUNKEDOPTS} - --resource-path="doc/en:Documentation/en:.:Documentation:Documentation/es:doc:doc/es" - --metadata-file=Documentation/es/metadata.yaml - --output=${OUTPUT_CHUNKEDHTML_ES} ${DOC_ES} - DEPENDS ${DOC_ES} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating Spanish Chunked HTML documentation" - VERBATIM -) - -add_custom_target(chunked-doc - DEPENDS ${OUTPUT_CHUNKEDHTML_DE}/index.html ${OUTPUT_CHUNKEDHTML_EN}/index.html ${OUTPUT_CHUNKEDHTML_ES}/index.html -) - -foreach(DOCDATA ${DOCDATA}) - add_custom_command(TARGET chunked-doc POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${DOCDATA} - ${PROJECT_BINARY_DIR}/chunkedhtml - ) -endforeach() - include(CTest) add_test(NAME pytest COMMAND pytest -vv ${CMAKE_SOURCE_DIR}/tests) diff --git a/Documentation/CMakeLists.txt b/Documentation/CMakeLists.txt new file mode 100644 index 00000000..984cba12 --- /dev/null +++ b/Documentation/CMakeLists.txt @@ -0,0 +1,156 @@ +cmake_minimum_required(VERSION 3.18) + +find_program(PANDOC_EXECUTABLE pandoc REQUIRED) + +set(PANDOC_OPTS --toc --toc-depth=2 + --standalone + --css=../style.css + --template=template.html) + +set(PANDOC_CHUNKEDOPTS ${PANDOC_OPTS} + --write=chunkedhtml + --embed-resources + --split-level=1) + +# Common +set(OUTPUT_HTML ${CMAKE_CURRENT_BINARY_DIR}/doc) +install(DIRECTORY ${OUTPUT_HTML}/ DESTINATION ${CMAKE_INSTALL_DOCDIR}) + +set(OUTPUT_CHUNKEDHTML ${CMAKE_CURRENT_BINARY_DIR}/chunkedhtml) +file(MAKE_DIRECTORY ${OUTPUT_CHUNKEDHTML}) + +# common +file(GLOB DOCDATA menu_*.png style.css) +file(COPY ${DOCDATA} DESTINATION ${OUTPUT_HTML}) +file(COPY ${DOCDATA} DESTINATION ${OUTPUT_CHUNKEDHTML}) + +# German +set(OUTPUT_HTML_DE ${OUTPUT_HTML}/de) +set(OUTPUT_HTML_DE_INDEX ${OUTPUT_HTML_DE}/index.html) +set(OUTPUT_CHUNKEDHTML_DE ${OUTPUT_CHUNKEDHTML}/de) +set(OUTPUT_CHUNKEDHTML_DE_INDEX ${OUTPUT_CHUNKEDHTML_DE}/index.html) + +file(GLOB DOCDATA_DE de/*.png) +file(COPY ${DOCDATA_DE} DESTINATION ${OUTPUT_HTML_DE}) + +file(GLOB DOC_DE de/*.md) +file(MAKE_DIRECTORY ${OUTPUT_HTML_DE}) +add_custom_command( + OUTPUT ${OUTPUT_HTML_DE_INDEX} + COMMAND ${PANDOC_EXECUTABLE} ${PANDOC_OPTS} + --metadata-file=de/metadata.yaml ${DOC_DE} + --output=${OUTPUT_HTML_DE_INDEX} + DEPENDS ${DOC_DE} ${OUTPUT_HTML_DE} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating German HTML documentation" + VERBATIM +) + +file(MAKE_DIRECTORY ${OUTPUT_CHUNKEDHTML_DE}) +add_custom_command( + OUTPUT ${OUTPUT_CHUNKEDHTML_DE_INDEX} + COMMAND ${PANDOC_EXECUTABLE} ${PANDOC_CHUNKEDOPTS} + --resource-path=".:de:doc:doc/de" + --metadata-file=de/metadata.yaml + --output=${OUTPUT_CHUNKEDHTML_DE_INDEX} ${DOC_DE} + DEPENDS ${DOC_DE} ${OUTPUT_CHUNKEDHTML_DE} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating German Chunked HTML documentation" + VERBATIM +) + +# English +set(OUTPUT_HTML_EN ${OUTPUT_HTML}/en) +set(OUTPUT_HTML_EN_INDEX ${OUTPUT_HTML_EN}/index.html) +set(OUTPUT_CHUNKEDHTML_EN ${OUTPUT_CHUNKEDHTML}/en) +set(OUTPUT_CHUNKEDHTML_EN_INDEX ${OUTPUT_CHUNKEDHTML_EN}/index.html) + +file(GLOB DOCDATA_EN en/*.png) +file(COPY ${DOCDATA_EN} DESTINATION ${OUTPUT_HTML_EN}) + +file(GLOB DOC_EN en/*.md) +file(MAKE_DIRECTORY ${OUTPUT_HTML_EN}) +add_custom_command( + OUTPUT ${OUTPUT_HTML_EN_INDEX} + COMMAND ${PANDOC_EXECUTABLE} ${PANDOC_OPTS} + --metadata-file=en/metadata.yaml ${DOC_EN} + --output=${OUTPUT_HTML_EN_INDEX} + DEPENDS ${DOC_EN} ${OUTPUT_HTML_EN} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating English HTML documentation" + VERBATIM +) + +file(MAKE_DIRECTORY ${OUTPUT_CHUNKEDHTML_EN}) +add_custom_command( + OUTPUT ${OUTPUT_CHUNKEDHTML_EN_INDEX} + COMMAND ${PANDOC_EXECUTABLE} ${PANDOC_CHUNKEDOPTS} + --resource-path=".:en:doc:doc/en" + --metadata-file=en/metadata.yaml + --output=${OUTPUT_CHUNKEDHTML_EN_INDEX} ${DOC_EN} + DEPENDS ${DOC_EN} ${OUTPUT_CHUNKEDHTML_EN} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating German Chunked HTML documentation" + VERBATIM +) + +# Spanish +set(OUTPUT_HTML_ES ${OUTPUT_HTML}/es) +set(OUTPUT_HTML_ES_INDEX ${OUTPUT_HTML_ES}/index.html) +set(OUTPUT_CHUNKEDHTML_ES ${OUTPUT_CHUNKEDHTML}/es) +set(OUTPUT_CHUNKEDHTML_ES_INDEX ${OUTPUT_CHUNKEDHTML_ES}/index.html) + +file(GLOB DOCDATA_ES es/*.png) +file(COPY ${DOCDATA_ES} DESTINATION ${OUTPUT_HTML_ES}) + +file(GLOB DOC_ES es/*.md) +file(MAKE_DIRECTORY ${OUTPUT_HTML_ES}) +add_custom_command( + OUTPUT ${OUTPUT_HTML_ES_INDEX} + COMMAND ${PANDOC_EXECUTABLE} ${PANDOC_OPTS} + --metadata-file=es/metadata.yaml ${DOC_ES} + --output=${OUTPUT_HTML_ES_INDEX} + DEPENDS ${DOC_ES} ${OUTPUT_HTML_ES} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating English HTML documentation" + VERBATIM +) + +file(MAKE_DIRECTORY ${OUTPUT_CHUNKEDHTML_ES}) +add_custom_command( + OUTPUT ${OUTPUT_CHUNKEDHTML_ES_INDEX} + COMMAND ${PANDOC_EXECUTABLE} ${PANDOC_CHUNKEDOPTS} + --resource-path=".:es:en:doc:doc/es" + --metadata-file=es/metadata.yaml + --output=${OUTPUT_CHUNKEDHTML_ES_INDEX} ${DOC_ES} + DEPENDS ${DOC_ES} ${OUTPUT_CHUNKEDHTML_ES} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating German Chunked HTML documentation" + VERBATIM +) + +# build targets +add_custom_target(doc ALL + DEPENDS ${OUTPUT_HTML_DE_INDEX} ${OUTPUT_HTML_EN_INDEX} ${OUTPUT_HTML_ES_INDEX} +) + +add_custom_target(chunked-doc ALL + DEPENDS ${OUTPUT_CHUNKEDHTML_DE_INDEX} ${OUTPUT_CHUNKEDHTML_EN_INDEX} ${OUTPUT_CHUNKEDHTML_ES_INDEX} +) + +# Web +add_custom_target(doc-for-web + DEPENDS doc +) + +add_custom_command(TARGET doc-for-web POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PROJECT_CURRENT_SOURCE_DIR}/de/documentation-de + ${PROJECT_BINARY_DIR}/doc/de/documentation-de + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PROJECT_CURRENT_SOURCE_DIR}/en/documentation-en + ${PROJECT_BINARY_DIR}/doc/en/documentation-en + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PROJECT_CURRENT_SOURCE_DIR}/es/documentation-es + ${PROJECT_BINARY_DIR}/doc/es/documentation-es +)