project(doc) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/intro.but.in ${CMAKE_CURRENT_BINARY_DIR}/intro.but) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hhc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/hhc.cmake @ONLY) # # Create directory for the html stage file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html) add_custom_target(helpsystem) set_target_properties( helpsystem PROPERTIES FOLDER HelpDocs ) target_sources(helpsystem PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/intro.but ${CMAKE_CURRENT_SOURCE_DIR}/addm.but ${CMAKE_CURRENT_SOURCE_DIR}/changem.but ${CMAKE_CURRENT_SOURCE_DIR}/drawm.but ${CMAKE_CURRENT_SOURCE_DIR}/editm.but ${CMAKE_CURRENT_SOURCE_DIR}/filem.but ${CMAKE_CURRENT_SOURCE_DIR}/helpm.but ${CMAKE_CURRENT_SOURCE_DIR}/hotbar.but ${CMAKE_CURRENT_SOURCE_DIR}/macrom.but ${CMAKE_CURRENT_SOURCE_DIR}/managem.but ${CMAKE_CURRENT_SOURCE_DIR}/optionm.but ${CMAKE_CURRENT_SOURCE_DIR}/statusbar.but ${CMAKE_CURRENT_SOURCE_DIR}/view_winm.but ${CMAKE_CURRENT_SOURCE_DIR}/navigation.but ${CMAKE_CURRENT_SOURCE_DIR}/appendix.but ${messagefile_BINARY_DIR}/messages.but ${CMAKE_CURRENT_SOURCE_DIR}/upgrade.but ${CMAKE_CURRENT_SOURCE_DIR}/warranty.but ) # # messages.but is generated in a different directory scope, CMake must not check for existance set_source_files_properties(${messagefile_BINARY_DIR}/messages.but PROPERTIES GENERATED True) # Add a custom command for cleaning the HTML staging directory add_custom_target(clean-html WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/clean-html.cmake ) # If we're using the GTK back-end, just generate "vanilla" HTML help files for use with gtkhtml if(XTRKCAD_USE_GTK) if (APPLE) target_sources(helpsystem PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/osxconf.but) else() target_sources(helpsystem PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/linconf.but) endif() get_target_property(halibut_sources helpsystem SOURCES) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/index.html DEPENDS halibut ${halibut_sources} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/clean-html.cmake COMMAND halibut ${halibut_sources} ) add_custom_target(help-html ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/index.html msgfiles) install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR} ) install( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/png.d DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/html ) install( FILES xtrkcad_lin.css DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/html ) # Copy the help files to the Help bundle if Apple if (APPLE) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/XTrackCAD.helpindex DEPENDS help-html ${halibut_sources} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html COMMAND hiutil -Cf XTrackCAD.helpindex -gva -e "IndexPage.html" -e "toc.html" ${CMAKE_CURRENT_BINARY_DIR}/html ) add_custom_target(help-index ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/XTrackCAD.helpindex) install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/XTrackCAD.help/Contents/Resources/en.lproj ) install( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/png.d DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/XTrackCAD.help/Contents/Resources/en.lproj ) install( FILES xtrkcad_osx.css DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/XTrackCAD.help/Contents/Resources/en.lproj/sty ) endif() # Otherwise, we're using the Win32 back-end, so generate a compiled HTML help file else() find_package(HTMLHelp) if("${HTML_HELP_COMPILER}" STRGREATER "") target_sources(helpsystem PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/chmconf.but ) file(GLOB IMAGE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/png.d/*) # # Use the Microsoft HTML Help Workshop to create a chm file # # Clean the working directory # Copy the image files and the CSS # Create the sources for the Help Workshop using halibut # Build the chm file # Add the chm file to the installation add_custom_target(help-chm ALL DEPENDS ${halibut_sources}) set_target_properties( help-chm PROPERTIES FOLDER HelpDocs ) get_target_property(halibut_sources helpsystem SOURCES) # hhc exits with non-zero code even on success # workaround is to create an external cmake script that # invokes hhc and handle its specific exit code configure_file("${CMAKE_CURRENT_SOURCE_DIR}/hhc.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/hhc.cmake" @ONLY) add_custom_command( TARGET help-chm DEPENDS halibut helpsystem ${IMAGE_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad_win.css WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/clean-html.cmake COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/png.d ${CMAKE_CURRENT_BINARY_DIR}/html/png.d COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad_win.css ${CMAKE_CURRENT_BINARY_DIR}/html COMMAND halibut ${halibut_sources} COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/hhc.cmake ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/html/xtrkcad.chm DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR} ) else() message(STATUS "HTML Help Workshop not found! CHM Help will not be created.") endif() endif()