summaryrefslogtreecommitdiff
path: root/.pc/0001-Fix_built-in_documentation_dependencies.patch/docs/CMakeLists.txt
blob: 0cbfd675af8186bae66bba46593bbfc97bf5b5bb (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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
###############################################################################
### External Doc Apps ###

# setuptools
set(SETUPTOOLS_VERSION 0.6c11)
ExternalProject_Add(setuptools
    URL ${CMAKE_SOURCE_DIR}/ext/setuptools-${SETUPTOOLS_VERSION}.tar.gz
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${EXTDIST_PYTHONPATH}
    BUILD_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py build
    INSTALL_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py install --prefix=${EXTDIST_ROOT}
)

# docutils
set(DOCUTILS_VERSION 0.7)
ExternalProject_Add(docutils
    DEPENDS setuptools
    URL ${CMAKE_SOURCE_DIR}/ext/docutils-${DOCUTILS_VERSION}.tar.gz
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${EXTDIST_PYTHONPATH}
    BUILD_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py build
    INSTALL_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py install --prefix=${EXTDIST_ROOT}
)

# jinja2
set(JINJA2_VERSION 2.5.5)
ExternalProject_Add(Jinja2
    DEPENDS setuptools
    URL ${CMAKE_SOURCE_DIR}/ext/Jinja2-${JINJA2_VERSION}.tar.gz
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${EXTDIST_PYTHONPATH}
    BUILD_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py build
    INSTALL_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py install --prefix=${EXTDIST_ROOT}
)

# Pygments
set(PYGMENTS_VERSION 1.3.1)
ExternalProject_Add(Pygments
    DEPENDS setuptools
    URL ${CMAKE_SOURCE_DIR}/ext/Pygments-${PYGMENTS_VERSION}.tar.gz
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${EXTDIST_PYTHONPATH}
    BUILD_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py build
    INSTALL_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py install --prefix=${EXTDIST_ROOT}
)

# sphinx
set(SPHINX_VERSION f52b631f501a) # 1.1pre
ExternalProject_Add(Sphinx
    DEPENDS setuptools docutils Jinja2 Pygments
    URL ${CMAKE_SOURCE_DIR}/ext/sphinx-${SPHINX_VERSION}.tar.gz
    PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/ext/sphinx-${SPHINX_VERSION}.patch
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${EXTDIST_PYTHONPATH}
    BUILD_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py build
    INSTALL_COMMAND PYTHONPATH=${PYTHONPATH} python setup.py install --prefix=${EXTDIST_ROOT} --install-scripts=${EXTDIST_ROOT}/bin
)

###############################################################################
### Create Doc Targets ###

message(STATUS "Create sphinx conf.py from conf.py.in")
configure_file(${CMAKE_SOURCE_DIR}/docs/conf.py.in
    ${CMAKE_BINARY_DIR}/docs/conf.py @ONLY)

message(STATUS "Copying doc to staging area")
file(COPY ${CMAKE_SOURCE_DIR}/docs/ DESTINATION ${CMAKE_BINARY_DIR}/docs)

message(STATUS "Copy extra doc files to staging area")
list(APPEND DOCFILES ${CMAKE_SOURCE_DIR}/README)
list(APPEND DOCFILES ${CMAKE_SOURCE_DIR}/INSTALL)
list(APPEND DOCFILES ${CMAKE_SOURCE_DIR}/ChangeLog)
list(APPEND DOCFILES ${CMAKE_SOURCE_DIR}/LICENSE)
list(APPEND DOCFILES ${CMAKE_SOURCE_DIR}/share/nuke/ocionuke/viewer.py)
CopyFiles(RSTDOC ${DOCFILES})

message(STATUS "Extracting .rst files from C++ headers")
ExtractRstCPP(${CMAKE_SOURCE_DIR}/export/OpenColorIO/OpenColorIO.h developers/api/OpenColorIO.rst)
ExtractRstCPP(${CMAKE_SOURCE_DIR}/export/OpenColorIO/OpenColorTransforms.h developers/api/OpenColorTransforms.rst)
ExtractRstCPP(${CMAKE_SOURCE_DIR}/export/OpenColorIO/OpenColorTypes.h developers/api/OpenColorTypes.rst)

add_custom_target(doc ALL
    COMMAND PYTHONPATH=${PYTHONPATH} ${EXTDIST_BINPATH}/sphinx-build -b html . ${CMAKE_CURRENT_BINARY_DIR}/build-html
    DEPENDS
        OpenColorIO
        PyOpenColorIO
        ${CMAKE_BINARY_DIR}/docs/conf.py
        developers/api/OpenColorIO.rst
        developers/api/OpenColorTransforms.rst
        developers/api/OpenColorTypes.rst
        ${RSTDOC_OUTPUT}
    COMMENT "Building html docs"
    SOURCES ${DOCFILES})

# note: ExternalProject will not build when added to a add_custom_target this
# works around this problem. This seems to be fixed in the cmake ^HEAD
add_dependencies(doc Sphinx) 

install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build-html/
        DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/OpenColorIO/html
        PATTERN .* EXCLUDE
)

find_package(LATEX)
if(PDFLATEX_COMPILER)
    
    add_custom_target(latex
        COMMAND PYTHONPATH=${PYTHONPATH} ${EXTDIST_BINPATH}/sphinx-build -b latex . ${CMAKE_CURRENT_BINARY_DIR}/build-latex
        DEPENDS
            OpenColorIO
            ${CMAKE_BINARY_DIR}/docs/conf.py
            developers/api/OpenColorIO.rst
            developers/api/OpenColorTransforms.rst
            developers/api/OpenColorTypes.rst
            ${RSTDOC_OUTPUT}
        COMMENT "Building latex doc"
        SOURCES ${DOCFILES})
    add_dependencies(latex Sphinx)
    
    add_custom_target(pdf ALL
        COMMAND ${PDFLATEX_COMPILER} OpenColorIO.tex
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build-latex
        COMMENT "Building pdf doc"
        SOURCES ${DOCFILES})
    add_dependencies(pdf latex)
    
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/build-latex/OpenColorIO.pdf
            DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/OpenColorIO/)
    
endif()