diff --git a/.gitignore b/.gitignore index c312cbdcb..1e31738e6 100644 --- a/.gitignore +++ b/.gitignore @@ -72,6 +72,7 @@ spack* # Populated by doc generation /doc/py_api /doc/_build +/doc/cpp_api/ # CLion artifacts .idea/ diff --git a/cmake/FindSphinx.cmake b/cmake/FindSphinx.cmake index 6d8a34f38..d3e96e0de 100644 --- a/cmake/FindSphinx.cmake +++ b/cmake/FindSphinx.cmake @@ -2,12 +2,7 @@ find_program(SPHINX_BUILD_EXECUTABLE NAMES sphinx-build DOC "Path to sphinx-build executable") -find_program(SPHINX_API_DOC_EXECUTABLE - NAMES sphinx-apidoc - DOC "Path to sphinx-apidoc executable") - include(FindPackageHandleStandardArgs) # Handle standard arguments to find_package -find_package_handle_standard_args(Sphinx "Failed to find sphinx-executable" - SPHINX_BUILD_EXECUTABLE SPHINX_API_DOC_EXECUTABLE) +find_package_handle_standard_args(Sphinx "Failed to find sphinx executable" SPHINX_BUILD_EXECUTABLE) diff --git a/cmake/podioDoxygen.cmake b/cmake/podioDoxygen.cmake index da2bee132..3ccc107d1 100644 --- a/cmake/podioDoxygen.cmake +++ b/cmake/podioDoxygen.cmake @@ -2,48 +2,19 @@ find_package(Doxygen) find_package(Sphinx) if(DOXYGEN_FOUND AND SPHINX_FOUND) - # temporarily override the version for doxy generation (for nightly snapshots) - set(tmp ${podio_VERSION}) - if(DOXYVERSION) - set(podio_VERSION ${DOXYVERSION}) - endif() + set(SPHINX_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/doc/_build) - set(DOXYGEN_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/doc/_build) - file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIRECTORY}) # Doxygen doesn't create this for us - - set(DOXYGEN_FILE ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - - add_custom_target(doxygen - ${DOXYGEN_EXECUTABLE} ${DOXYGEN_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" VERBATIM) - - add_custom_target(pybindings_doc - COMMAND - ${SPHINX_API_DOC_EXECUTABLE} --force -o ${CMAKE_CURRENT_SOURCE_DIR}/doc/py_api - ${CMAKE_SOURCE_DIR}/python ${CMAKE_SOURCE_DIR}/python/podio/test_*.py - COMMENT "Generating python bindigns documentation" VERBATIM - ) - - set(SPHINX_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/sphinx_build) - - add_custom_target(Sphinx + add_custom_target(documentation COMMAND - ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/src/:$ENV{LD_LIBRARY_PATH} ROOT_INCLUDE_PATH=${CMAKE_SOURCE_DIR}/include" - ${SPHINX_BUILD_EXECUTABLE} -b html - -Dbreathe_projects.PODIO=${DOXYGEN_OUTPUT_DIRECTORY}/xml + ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/src/:$ENV{LD_LIBRARY_PATH};ROOT_INCLUDE_PATH=${CMAKE_SOURCE_DIR}/include;" + ${SPHINX_BUILD_EXECUTABLE} -M html ${CMAKE_SOURCE_DIR}/doc ${SPHINX_OUTPUT_DIRECTORY} - DEPENDS doxygen pybindings_doc - COMMENT "Building sphinx documentation" VERBATIM + COMMENT "Building documentation" VERBATIM ) install(DIRECTORY ${SPHINX_OUTPUT_DIRECTORY}/ DESTINATION ${CMAKE_INSTALL_DOCDIR} OPTIONAL) - - # revert version to old value - set(podio_VERSION ${tmp}) - unset(tmp) else() message(WARNING "Could not generate documentation because either Doxygen or Sphinx could not be found") endif() diff --git a/doc/conf.py b/doc/conf.py index cd0b696ad..c7098d099 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -143,8 +143,7 @@ "-o", "py_api", "../python", - "*/test_*.py", # exclude tests - "podio_version.py", # exclude the convenience version wrapper + "*test_*.py", # exclude tests ] ) diff --git a/include/podio/SIOBlockUserData.h b/include/podio/SIOBlockUserData.h index 2c2c5d275..4d3110fba 100644 --- a/include/podio/SIOBlockUserData.h +++ b/include/podio/SIOBlockUserData.h @@ -14,24 +14,24 @@ #include #include -namespace { - -/// helper function to get valid sio block names -template > -inline std::string sio_name() { - std::string s = podio::userDataTypeName(); - std::replace(s.begin(), s.end(), ' ', '_'); - return s; -} -} // namespace - namespace podio { +namespace detail { + + /// helper function to get valid sio block names + template > + inline std::string sio_name() { + std::string s = podio::userDataTypeName(); + std::replace(s.begin(), s.end(), ' ', '_'); + return s; + } +} // namespace detail template > class SIOBlockUserData : public podio::SIOBlock { public: SIOBlockUserData() : - SIOBlock(::sio_name(), sio::version::encode_version(UserDataCollection::schemaVersion, 0)) { + SIOBlock(detail::sio_name(), + sio::version::encode_version(UserDataCollection::schemaVersion, 0)) { podio::SIOBlockFactory::instance().registerBlockForCollection(podio::userDataTypeName(), this); }