-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathCMakeLists.txt
98 lines (80 loc) · 4 KB
/
CMakeLists.txt
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
# set input and output files
set(DOXYGEN_CPP_IN ${CMAKE_CURRENT_SOURCE_DIR}/DoxyfileCpp.in)
set(DOXYGEN_CPP_OUT ${CMAKE_CURRENT_BINARY_DIR}/DoxyfileCpp)
# request to configure the file
configure_file(${DOXYGEN_CPP_IN} ${DOXYGEN_CPP_OUT} @ONLY)
# set input and output files
set(DOXYGEN_PY_CLIENT_IN ${CMAKE_CURRENT_SOURCE_DIR}/DoxyfilePyClient.in)
set(DOXYGEN_PY_CLIENT_OUT ${CMAKE_CURRENT_BINARY_DIR}/DoxyfilePyClient)
# request to configure the file
configure_file(${DOXYGEN_PY_CLIENT_IN} ${DOXYGEN_PY_CLIENT_OUT} @ONLY)
# set input and output files
set(DOXYGEN_JAVA_CLIENT_IN ${CMAKE_CURRENT_SOURCE_DIR}/DoxyfileJavaClient.in)
set(DOXYGEN_JAVA_CLIENT_OUT ${CMAKE_CURRENT_BINARY_DIR}/DoxyfileJavaClient)
# request to configure the file
configure_file(${DOXYGEN_JAVA_CLIENT_IN} ${DOXYGEN_JAVA_CLIENT_OUT} @ONLY)
# set input and output files
set(MKDOCS_IN ${CMAKE_CURRENT_SOURCE_DIR}/mkdocs.yml.in)
set(MKDOCS_OUT ${CMAKE_CURRENT_BINARY_DIR}/mkdocs.yml)
# request to configure the file
configure_file(${MKDOCS_IN} ${MKDOCS_OUT} @ONLY)
# generate text documentation using mkdocs
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mkdocs.stamp
DEPENDS ${MKDOCS_IN} ${CMAKE_CURRENT_SOURCE_DIR}/src/*.md
COMMAND ${MKDOCS_EXECUTABLE} build
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/mkdocs.stamp
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating Documentation with MkDocs"
VERBATIM)
add_custom_target(mkdocs ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mkdocs.stamp)
# generate doxygen API documentation
file(GLOB_RECURSE CPP_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../libjiffy/src/jiffy/*.h)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cpp.log
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mkdocs.stamp ${DOXYGEN_CPP_IN} ${CPP_SOURCE}
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_CPP_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating C++ API documentation with Doxygen"
VERBATIM)
add_custom_target(doxygen_cpp ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/cpp.log)
file(GLOB_RECURSE PY_CLIENT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../pyjiffy/jiffy/*.py)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/py_client.log
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mkdocs.stamp ${DOXYGEN_PY_CLIENT_IN} ${PY_CLIENT_SOURCES}
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_PY_CLIENT_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating Python Client API documentation with Doxygen"
VERBATIM)
add_custom_target(pyclient_doc ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/py_client.log)
file(GLOB JAVA_CLIENT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../jffy4j/core/src/main/java/*.java)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/java_client.log
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mkdocs.stamp ${DOXYGEN_JAVA_CLIENT_IN} ${JAVA_CLIENT_SOURCES}
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_JAVA_CLIENT_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating Java Client API documentation with Doxygen"
VERBATIM)
add_custom_target(javaclient_doc ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/java_client.log)
add_custom_target(docs
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mkdocs.stamp ${CMAKE_CURRENT_BINARY_DIR}/cpp.log ${CMAKE_CURRENT_BINARY_DIR}/py_client.log ${CMAKE_CURRENT_BINARY_DIR}/java_client.log)
#serve documentation website locally
add_custom_target(docs_serve
COMMAND ${MKDOCS_EXECUTABLE} serve
DEPENDS docs
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Serving Documentation built by MkDocs"
VERBATIM)
add_custom_target(docs_publish
DEPENDS docs
COMMAND git checkout gh-pages
COMMAND cp -r site/* ${PROJECT_SOURCE_DIR}
COMMAND git add -A
COMMAND git commit -m "Updated project GitHub Pages"
COMMAND git push
COMMAND git checkout -
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})