diff --git a/CMakeLists.txt b/CMakeLists.txt index 248aa21d..f7f875bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,31 +70,35 @@ if (BUILDDOC) COMMENT "Generating API documentation with Doxygen" VERBATIM ) endif (DOXYGEN_FOUND) - # check if sphinx is installed + # check if Sphinx is installed and add target to generate API documentation find_package (Sphinx) if(SPHINX_FOUND) - # python required for sphinx build - find_package (PythonLibs) - string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING}) - list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR) - list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR) - # check if site-packages exists, might need a more robust way on adding make install dependency and paths - if (EXISTS ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/) - configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/pydoc/conf.py @ONLY) - configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/index.rst ${CMAKE_CURRENT_BINARY_DIR}/pydoc/index.rst) - add_custom_target (pydoc - ${SPHINX_API_EXECUTABLE} -f -o pydoc ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/ - #use a separate cmake FILE module for string replacement instead - COMMAND sed -i.bak s|site-packages|sensor-drivers|g pydoc/modules.rst - COMMAND ${SPHINX_EXECUTABLE} -b html pydoc html/python - COMMAND sed -i.bak s|\">pyupm_|\">|g html/python/index.html html/python/modules.html - COMMAND sed -i.bak s|\\smodule||g html/python/index.html html/python/modules.html - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Sphinx" VERBATIM - ) - else() - message( WARNING " - Sphinx documentation depends on python libs generated by 'install' target. Run cmake again after installation to create 'pydoc' target!") - endif() + # python required for Sphinx build + find_package (PythonLibs) + string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING}) + list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR) + list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR) + set (SITE_PACKAGES ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages) + + # throw a warning if site-packages doesn't exist, might need a more robust way on adding make install dependency and paths + if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/${SITE_PACKAGES}) + message( WARNING " - Sphinx documentation 'pydoc' target depends on python libs generated by 'install' target. Run that first!") + endif() + + configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/pydoc/conf.py @ONLY) + configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/index.rst ${CMAKE_CURRENT_BINARY_DIR}/pydoc/index.rst) + add_custom_target (pydoc + ${SPHINX_API_EXECUTABLE} -f -o pydoc ${SITE_PACKAGES} + # todo: use a separate cmake FILE module for string replacement instead + COMMAND sed -i.bak s|site-packages|sensor-drivers|g pydoc/modules.rst + COMMAND ${SPHINX_EXECUTABLE} -b html pydoc html/python + COMMAND sed -i.bak s|\">pyupm_|\">|g html/python/index.html html/python/modules.html + COMMAND sed -i.bak s|[[:space:]]module||g html/python/index.html html/python/modules.html + # cleanup .pyc files + COMMAND find ${SITE_PACKAGES} -name *.pyc -exec rm {} \; + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Sphinx" VERBATIM + ) endif() endif() diff --git a/doxy/conf.py.in b/doxy/conf.py.in index b6c44305..e47c79b2 100644 --- a/doxy/conf.py.in +++ b/doxy/conf.py.in @@ -22,7 +22,7 @@ import shlex # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, "@CMAKE_INSTALL_LIBDIR@/python@PYTHON_VERSION_MAJOR@.@PYTHON_VERSION_MINOR@/site-packages/") sys.path.insert(0, "@CMAKE_INSTALL_LIBDIR@") -sys.path.insert(0, "@MRAA_LIBDIR@") +sys.path.insert(0, "@MRAA_LIBDIR@@LIB_SUFFIX@") # -- General configuration ------------------------------------------------