set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/admin/InstallInfo.txt")
set(CPACK_SOURCE_IGNORE_FILES "\\\\.isreposource$;\\\\.git/;\\\\.gitignore$")
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_SOURCE_DIR}/CPackInit.cmake")
-set(CPACK_SOURCE_INSTALLED_DIRECTORIES "${CMAKE_SOURCE_DIR};/;${CMAKE_BINARY_DIR}/share/man;share/man")
+set(CPACK_SOURCE_INSTALLED_DIRECTORIES "${CMAKE_SOURCE_DIR};/;${CMAKE_BINARY_DIR}/share/man1;share/man1;${CMAKE_BINARY_DIR}/share/man7;share/man7;${CMAKE_BINARY_DIR}/share/html/final;share/html/final")
set(CPACK_PACKAGE_CONTACT "gmx-users@gromacs.org")
#must come after all cpack settings!
#TODO: add check that source doesn't contain any untracked files
if(CPACK_SOURCE_PACKAGE_FILE_NAME) #building source package
get_filename_component(CMAKE_BINARY_DIR ${CPACK_OUTPUT_CONFIG_FILE} PATH)
- if(NOT EXISTS "${CMAKE_BINARY_DIR}/share/man/man1/gmx-view.1")
+ if (NOT EXISTS "${CMAKE_BINARY_DIR}/share/man/man1/gmx-view.1" OR
+ NOT EXISTS "${CMAKE_BINARY_DIR}/share/html/final/online.html")
message(FATAL_ERROR
- "To create a complete source package all man pages need to be generated. "
- "You need to run 'make man' or set GMX_BUILD_MANPAGES=ON to get "
+ "To create a complete source package all man and HTML pages need "
+ "to be generated. "
+ "You need to run 'make man html' or set GMX_BUILD_HELP=ON to get "
"them automatically built together with the binaries.")
endif()
endif()
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
+option(GMX_BUILD_HELP "Build man pages and HTML help automatically" OFF)
+mark_as_advanced(GMX_BUILD_HELP)
+if (GMX_BUILD_HELP AND SOURCE_IS_SOURCE_DISTRIBUTION AND
+ "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
+
+ message(FATAL_ERROR
+ "Rebuilding HTML and man pages it not supported for in-source "
+ "builds from a source distribution. "
+ "Set GMX_BUILD_HELP=OFF or do an out-of-source build to proceed.")
+endif()
+
add_subdirectory(html)
add_subdirectory(man)
add_subdirectory(template)
DESTINATION ${DATA_INSTALL_DIR}/top
COMPONENT data
PATTERN "*~" EXCLUDE)
-
-install(DIRECTORY . DESTINATION ${DATA_INSTALL_DIR}
- COMPONENT data
- PATTERN "Makefile*" EXCLUDE
- PATTERN "CMake*" EXCLUDE
- PATTERN "cmake*" EXCLUDE
- PATTERN "*~" EXCLUDE
- PATTERN "template" EXCLUDE
-)
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
-if(NOT CMAKE_CROSSCOMPILING)
- set(CAN_BUILD_HTMLHELP ON)
-else()
- set(CAN_BUILD_HTMLHELP OFF)
+set(OUTPUT_DIR final)
+
+if(SOURCE_IS_SOURCE_DISTRIBUTION)
+ # Make sure source package contains HTML pages.
+ if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OUTPUT_DIR}/online.html")
+ message(FATAL_ERROR "Man pages are missing from source package.")
+ endif()
endif()
-if(CAN_BUILD_HTMLHELP)
- set(OUTPUT_DIR final)
- add_custom_target(html
- ${CMAKE_COMMAND}
- -D SOURCE_HTML_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -D OUTPUT_DIR=${OUTPUT_DIR}
- -D STEP=PRE
- -P ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
- COMMAND gmx -quiet help -export html
- COMMAND ${CMAKE_COMMAND}
- -D SOURCE_HTML_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -D OUTPUT_DIR=${OUTPUT_DIR}
- -D STEP=POST
- -P ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
- COMMENT "Generating HTML help"
- VERBATIM)
+add_custom_target(html
+ ${CMAKE_COMMAND}
+ -D SOURCE_HTML_DIR=${CMAKE_CURRENT_SOURCE_DIR}
+ -D OUTPUT_DIR=${OUTPUT_DIR}
+ -D STEP=PRE
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
+ COMMAND gmx -quiet help -export html
+ COMMAND ${CMAKE_COMMAND}
+ -D SOURCE_HTML_DIR=${CMAKE_CURRENT_SOURCE_DIR}
+ -D OUTPUT_DIR=${OUTPUT_DIR}
+ -D STEP=POST
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
+ COMMENT "Generating HTML help"
+ VERBATIM)
+
+set(HTML_PAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+if (GMX_BUILD_HELP)
+ set_target_properties(html PROPERTIES EXCLUDE_FROM_ALL OFF)
set_directory_properties(PROPERTIES
- ADDITIONAL_MAKE_CLEAN_FILES "${OUTPUT_DIR};header.html")
+ ADDITIONAL_MAKE_CLEAN_FILES "${OUTPUT_DIR};header.processed.html")
+ set(HTML_PAGE_DIR ${CMAKE_CURRENT_BINARY_DIR})
+endif()
+
+if (SOURCE_IS_SOURCE_DISTRIBUTION OR GMX_BUILD_HELP)
+ install(DIRECTORY ${HTML_PAGE_DIR}/${OUTPUT_DIR}/
+ DESTINATION ${DATA_INSTALL_DIR}/html
+ COMPONENT html)
endif()
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
-if(NOT SOURCE_IS_SOURCE_DISTRIBUTION)
- if(NOT CMAKE_CROSSCOMPILING)
- # Defaults to off to avoid breaking the build.
- # Can be changed if someone finds a nice solution for cases where the
- # binary does not execute on the compilation host.
- option(GMX_BUILD_MANPAGES "Build man pages" OFF)
- mark_as_advanced(GMX_BUILD_MANPAGES)
- else()
- message(STATUS "Building the man pages is not available when "
- "cross-compiling the developer version from git")
- endif()
-else()
+if(SOURCE_IS_SOURCE_DISTRIBUTION)
# Make sure source package contains all man pages.
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/man1/gmx-view.1")
message(FATAL_ERROR "Man pages are missing from source package.")
endif()
endif()
-if(GMX_BUILD_MANPAGES)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man1)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man7)
- file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/man7/gromacs.7.in
- DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/man7)
- # TODO: It could be nicer to not do this as part of the ALL target,
- # but instead on demand as part of make install.
- add_custom_target(man ALL
- gmx -quiet help -export man
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating man pages for programs"
- VERBATIM)
- install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man1
- DESTINATION ${MAN_INSTALL_DIR}
- COMPONENT man)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/man7/gromacs.7
- DESTINATION ${MAN_INSTALL_DIR}/man7
- COMPONENT man)
+add_custom_target(man
+ ${CMAKE_COMMAND} -E make_directory man1
+ COMMAND ${CMAKE_COMMAND} -E make_directory man7
+ COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/man7/gromacs.7.in" man7/
+ COMMAND gmx -quiet help -export man
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating man pages"
+ VERBATIM)
+
+set(MAN_PAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+if (GMX_BUILD_HELP)
+ set_target_properties(man PROPERTIES EXCLUDE_FROM_ALL OFF)
set_directory_properties(PROPERTIES
- ADDITIONAL_MAKE_CLEAN_FILES man1)
+ ADDITIONAL_MAKE_CLEAN_FILES "man1;man7/gromacs.7")
+ set(MAN_PAGE_DIR ${CMAKE_CURRENT_BINARY_DIR})
+endif()
# man pages are only available if they are either build or this is a source archive
-elseif(SOURCE_IS_SOURCE_DISTRIBUTION)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man7/gromacs.7
+if (SOURCE_IS_SOURCE_DISTRIBUTION OR GMX_BUILD_HELP)
+ install(FILES ${MAN_PAGE_DIR}/man7/gromacs.7
DESTINATION ${MAN_INSTALL_DIR}/man7
COMPONENT man)
- install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/man1
+ install(DIRECTORY ${MAN_PAGE_DIR}/man1
DESTINATION ${MAN_INSTALL_DIR}
COMPONENT man)
endif()