aboutsummaryrefslogtreecommitdiffstats
path: root/doc/CMakeLists.txt
blob: 37dc8d63c08ee6fa2f51655e6bf5c5109b4a353e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
find_program(graphviz_exec dot)

if (QT_SRC_DIR)

if (NOT ${graphviz_exec} STREQUAL graphviz_exec-NOTFOUND)

add_custom_target(apidoc
                  COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/rst
                  COMMAND sphinx-build -b html  ${CMAKE_CURRENT_BINARY_DIR}/rst htmldocs
                 )

# create conf.py based on conf.py.in
configure_file("conf.py.in" "rst/conf.py" @ONLY)

# copy pyside.qdocconf to qt source dir.
configure_file("pyside.qdocconf" "${QT_SRC_DIR}/tools/qdoc3/test/pyside.qdocconf" @ONLY)
set(DOC_DATA_DIR "${CMAKE_CURRENT_BINARY_DIR}/qt4xmldoc")
set(ENV{QTDIR} ${QT_SRC_DIR} )

add_custom_target(qdoc3
                  COMMAND QTDIR=${QT_SRC_DIR} qdoc3 pyside.qdocconf
                  WORKING_DIRECTORY "${QT_SRC_DIR}/tools/qdoc3/test"
                  COMMENT "Running qdoc3 against Qt source code..."
                  SOURCE "pyside.qdocconf")

macro(create_doc module typesystem_path)
string(REGEX REPLACE "^Qt" "" module_name ${module})
string(TOLOWER ${module_name} module_name)
add_custom_target("${module}-apidoc"
COMMAND ${GENERATOR} --generatorSet=qtdoc
        ${pyside_BINARY_DIR}/global.h
        --include-paths=${QT_INCLUDE_DIR}:${QT_QTCORE_INCLUDE_DIR}
        --typesystem-paths=${pyside_SOURCE_DIR}:${${module}_BINARY_DIR}:${typesystem_path}
        ${pyside_SOURCE_DIR}/${module}/typesystem_${module_name}.xml
        --library-source-dir=${QT_SRC_DIR}
        --documentation-only
        --documentation-data-dir=${DOC_DATA_DIR}
        --documentation-out-dir=${CMAKE_CURRENT_BINARY_DIR}/rst
        --documentation-code-snippets-dir=${CMAKE_CURRENT_SOURCE_DIR}/codesnippets
WORKING_DIRECTORY ${${module}_SOURCE_DIR}

COMMENT "Running generator to generate documentation of ${module}..."
)
add_dependencies("${module}-apidoc" qdoc3)
add_dependencies(apidoc "${module}-apidoc")
endmacro()

create_doc(QtCore "")
create_doc(QtGui "${QtCore_SOURCE_DIR}")
create_doc(QtHelp "${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtHelp_SOURCE_DIR}")
create_doc(QtNetwork "${QtCore_SOURCE_DIR}")
create_doc(QtOpengl "${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtOpenGL_SOURCE_DIR}")
create_doc(QtSql "${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtSql_SOURCE_DIR}")
create_doc(QtSvg "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}")
create_doc(QtUitools "${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtXml_SOURCE_DIR}:${QtUiTools_SOURCE_DIR}")
create_doc(QtXml "${QtCore_SOURCE_DIR}")
create_doc(QtWebKit "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtNetwork_SOURCE_DIR}")
create_doc(QtMultimedia "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}")
create_doc(QtScript "${QtCore_SOURCE_DIR}")
create_doc(QtScriptTools "${QtCore_SOURCE_DIR}:${QtScript_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}")
create_doc(QtTest "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}")
create_doc(QtXmlPatterns "${QtCore_SOURCE_DIR}")
create_doc(phonon "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}")
create_doc(QtDeclarative "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtNetwork_SOURCE_DIR}")

#create devhelp file
add_custom_target(apidevhelp
    COMMAND python;${CMAKE_CURRENT_SOURCE_DIR}/pyhtml2devhelp.py;${CMAKE_BINARY_DIR}/apidoc/html;index.html >
            ${CMAKE_BINARY_DIR}/apidoc/html/PySide.devhelp;${BINDING_API_VERSION}&&;
            gzip;-9v;-f;${CMAKE_BINARY_DIR}/apidoc/html/PySide.devhelp
    COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_INSTALL_PREFIX}/share/devhelp/books"
    COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_INSTALL_PREFIX}/share/doc/${BINDING_NAME}/html" "${CMAKE_INSTALL_PREFIX}/share/devhelp/books/${BINDING_NAME}"
)

#install files
add_custom_target(apidocinstall
    COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}/share/doc/${BINDING_NAME} && cp -rv ${CMAKE_BINARY_DIR}/apidoc/* ${CMAKE_INSTALL_PREFIX}/share/doc/${BINDING_NAME}
)

add_dependencies(apidocinstall apidevhelp)

else ()
    message(STATUS "Missing graphviz tool (dot), apidoc generation targets disabled.")
endif ()

else ()
    message(STATUS "QT_SRC_DIR variable not set, apidoc generation targets disabled.")
endif ()