docs.conf 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. #
  2. # Documentation build support
  3. #
  4. # tag:docs
  5. TOUCH_DOCS=$YMAKE_PYTHON ${input:"build/scripts/touch.py"} ${kv;hide:"p DC"} ${kv;hide:"pc light-cyan"} $TARGET
  6. TOUCH_DOCS_MF=$TOUCH_DOCS && $GENERATE_MF
  7. # tag:docs
  8. ### @usage: DOCS_COPY_FILE(FROM src_dir [NAMESPCE dst_dir] files...)
  9. ###
  10. ### Copy files from src_dir to $BINDIR/dst_dir
  11. macro DOCS_COPY_FILES(FROM="${CURDIR}", NAMESPACE=".", FILES...) {
  12. .CMD=$YMAKE_PYTHON ${input:"build/scripts/copy_docs_files.py"} ${input;hide:"build/scripts/process_command_files.py"} --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --src-dir $FROM --dst-dir $BINDIR/$NAMESPACE $FILES ${input;hide;context=TEXT;pre=${FROM}/:FILES} ${output;hide;pre=${NAMESPACE}/:FILES}
  13. }
  14. # tag:docs
  15. _DOCS_USE_PLANTUML=no
  16. _DOCS_EXTRA_TOOLS=
  17. _DOCS_EXTRA_INPUTS=
  18. _DOCS_ENV=
  19. _DOCS_KV=${kv;hide:"p DO"} ${kv;hide:"pc light-cyan"} ${kv;hide:"show_out yes"}
  20. _DOCS_PLANTUML_ENV=\
  21. ${env:"JAVA_PATH=$JDK_RESOURCE_GLOBAL/bin/java"} \
  22. ${env:"PLANTUML_PATH=${ARCADIA_BUILD_ROOT}/contrib/tools/plantuml/plantuml.run.cp.jar"} \
  23. ${env:"_JAVA_OPTIONS='-Dsun.awt.fontconfig=$BINDIR/fontconfig.properties -Djava.awt.headless=true'"} \
  24. ${env:"LANG=en_US.UTF-8"} \
  25. ${env:"LC_ALL=C.UTF-8"}
  26. _DOCS_SRCS_VALUE=
  27. _DOCS_VARS_FLAG=
  28. _DOCS_YFM_OUTPUT_FORMAT=
  29. _DOCS_YFM_BOOK_OUTPUT_FORMAT=--output-format html --allowHTML
  30. _DOCS_YFM_LIB_OUTPUT_FORMAT=--output-format md --add-map-file
  31. _DOCS_YFM_CMDLINE=\
  32. ${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/extract_docs.py"} ${input;hide:"build/scripts/process_command_files.py"} --skip-prefix $ARCADIA_BUILD_ROOT --dest-dir $BINDIR/__s ${rootrel:PEERS} \
  33. && $YMAKE_PYTHON ${input:"build/scripts/stdout2stderr.py"} $YFM_TOOL_RESOURCE_GLOBAL/yfm-docs --input $BINDIR/__s --output $BINDIR/__docsbuild $_DOCS_VARS_FLAG $_DOCS_YFM_OUTPUT_FORMAT --config ${input:CONFIG} $_DOCS_EXTRA_TOOLS ${hide;input:EXTRA_INPUTS} $_DOCS_ENV \
  34. && $YMAKE_PYTHON ${input:"build/scripts/tar_sources.py"} --output $TARGET --input $BINDIR/__docsbuild $_DOCS_KV
  35. # tag:internal tag:docs
  36. macro _DOCS_YFM_CMD_IMPL(CONFIG, INCLUDE_SRCS[], EXTRA_INPUTS[]) {
  37. .CMD=$_DOCS_YFM_CMDLINE
  38. }
  39. _DOCS_YFM_CMD=$_DOCS_YFM_CMD_IMPL($_DOCS_CONFIG_VALUE INCLUDE_SRCS $_DOCS_INCLUDE_SOURCES_VALUE EXTRA_INPUTS $_DOCS_EXTRA_INPUTS)
  40. # tag:docs
  41. ### This module is intended for internal use only. Common parts for DOCS and MKDOCS multimodules
  42. ### should be defined here.
  43. module _DOCS_BARE_UNIT: _BARE_UNIT {
  44. .ALLOWED=DOCS_DIR DOCS_CONFIG DOCS_VARS
  45. .CMD=TOUCH_DOCS_MF
  46. .FINAL_TARGET=no
  47. .PEERDIR_POLICY=as_include
  48. ENABLE(_DOCS_BARE_UNIT)
  49. SET(MODULE_SUFFIX .tar.gz)
  50. SET(MODULE_LANG DOCS)
  51. }
  52. # tag:docs tag:internal
  53. _DOCS_DIR_INTERNAL_NAMESPACE=
  54. # tag:internal tag:docs
  55. _DOCS_LIBRARY_CMDLINE=\
  56. $YMAKE_PYTHON ${input:"build/scripts/copy_docs_files_to_dir.py"} ${input;hide:"build/scripts/process_command_files.py"} $_DOCS_SRCS_VALUE $_DOCS_DIR_VALUE $_DOCS_BIN_DIR_VALUE --dest-dir $BINDIR/__s --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT ${input;context=TEXT:INCLUDE_SRCS} \
  57. && $YMAKE_PYTHON ${input:"build/scripts/tar_sources.py"} --output $TARGET --input $BINDIR/__s $_DOCS_KV
  58. # tag:internal tag:docs
  59. macro _DOCS_LIBRARY_CMD_IMPL(INCLUDE_SRCS[], EXTRA_INPUTS[]) {
  60. .CMD=$_DOCS_LIBRARY_CMDLINE
  61. }
  62. _DOCS_LIBRARY_CMD=$_DOCS_LIBRARY_CMD_IMPL(INCLUDE_SRCS $_DOCS_INCLUDE_SOURCES_VALUE)
  63. # tag:docs
  64. module DOCS_LIBRARY: _DOCS_BARE_UNIT {
  65. .CMD=_DOCS_LIBRARY_CMD
  66. .ALIASES=SRCS=_DOCS_SRCS DOCS_DIR=_YFM_DOCS_DIR
  67. .EPILOGUE=_DOCS_LIBRARY_EPILOGUE
  68. ENABLE(DOCS_LIBRARY)
  69. SET(MODULE_TYPE LIBRARY)
  70. SET(MODULE_TAG DOCS_LIBRARY)
  71. SET(PEERDIR_TAGS DOCS_LIBRARY)
  72. SET(MODULE_SUFFIX .docslib)
  73. }
  74. # tag:docs
  75. macro _DOCS_SRCS(SRCDIR=".", EXCLUDE[], INCLUDE...) {
  76. SET(_VAR_DOCS_SRCS_SALT $SRCDIR $EXCLUDE $INCLUDE)
  77. SET(_DOCS_SRCS_GLOB uniq_docs_${hash:_VAR_DOCS_SRCS_SALT})
  78. _LATE_GLOB(${_DOCS_SRCS_GLOB} ${pre=${SRCDIR}/:INCLUDE} EXCLUDE ${EXCLUDE})
  79. SET_APPEND(_DOCS_INCLUDE_SOURCES_VALUE \${input:$_DOCS_SRCS_GLOB})
  80. }
  81. # tag:docs
  82. macro _DOCS_LIBRARY_EPILOGUE() {
  83. _YFM_DOCS_DIR($_YFM_DOCS_DIR_DEFAULT_VALUE)
  84. _SET_DOCS_BIN_DIR_FLAG($_DOCS_DIR_INTERNAL_NAMESPACE $MODDIR)
  85. }
  86. # tag:docs
  87. ### This module is intended for internal use only. Common parts for submodules of DOCS multimodule
  88. ### should be defined here.
  89. module _DOCS_BASE_UNIT: _DOCS_BARE_UNIT {
  90. .ALIASES=DOCS_DIR=_YFM_DOCS_DIR
  91. ENABLE(_DOCS_BASE_UNIT)
  92. PEERDIR+=build/platform/yfm
  93. DOCS_CONFIG($_DOCS_YFM_DEFAULT_CONFIG)
  94. }
  95. # tag:internal tag:docs
  96. ### _DOCS_YFM_USE_PLANTUML() # internal
  97. ###
  98. ### This macr sets appropriate dependencies for use of plantuml plugin
  99. macro _DOCS_YFM_USE_PLANTUML() {
  100. PEERDIR(build/platform/java/jdk contrib/java/openjdk-fontconfig)
  101. COPY_FILE(${ARCADIA_BUILD_ROOT}/contrib/java/openjdk-fontconfig/fontconfig.properties fontconfig.properties)
  102. SET_APPEND(_DOCS_EXTRA_TOOLS \${hide;tool:"contrib/tools/plantuml"})
  103. SET_APPEND(_DOCS_EXTRA_INPUTS fontconfig.properties)
  104. # It's rather strange that a commented statement below doesn't work
  105. # SET_APPEND(_DOCS_ENV ${_DOCS_PLANTUML_ENV})
  106. when ($_DOCS_USE_PLANTUML) {
  107. _DOCS_ENV+=$_DOCS_PLANTUML_ENV
  108. }
  109. }
  110. # tag:docs
  111. ### @usage: DOCS()
  112. ###
  113. ### Documentation project multimodule.
  114. ###
  115. ### When built directly, via RECURSE, DEPENDS or BUNDLE the output artifact is docs.tar.gz with statically generated site.
  116. ### When PEERDIRed from other DOCS() module behaves like a UNION (supplying own content and dependencies to build target).
  117. ### Peerdirs from modules other than DOCS are not accepted.
  118. ### Most usual macros are not accepted, only used with the macros DOCS_DIR(), DOCS_CONFIG(), DOCS_VARS().
  119. ###
  120. ### @see: [DOCS_DIR()](#macro_DOCS_DIR), [DOCS_CONFIG()](#macro_DOCS_CONFIG), [DOCS_VARS()](#macro_DOCS_VARS).
  121. multimodule DOCS {
  122. module DOCSBOOK: _DOCS_BASE_UNIT {
  123. .CMD=_DOCS_YFM_CMD
  124. .FINAL_TARGET=yes
  125. .PEERDIR_POLICY=as_build_from
  126. .IGNORED=DOCS_DIR DOCS_INCLUDE_SOURCES DOCS_COPY_FILES PEERDIR PYTHON RUN_PROGRAM RUN_PYTHON3 RUN_LUA RUN_JAVA_PROGRAM FROM_SANDBOX
  127. .PEERDIRSELF=DOCSLIB_INTERNAL
  128. ENABLE(DOCSBOOK)
  129. SET(MODULE_TYPE PROGRAM)
  130. SET(MODULE_TAG DOCSBOOK)
  131. SET(PEERDIR_TAGS DOCSLIB_INTERNAL)
  132. _DOCS_YFM_OUTPUT_FORMAT=$_DOCS_YFM_BOOK_OUTPUT_FORMAT
  133. PROCESS_DOCS()
  134. }
  135. module DOCSLIB: _DOCS_BASE_UNIT {
  136. .CMD=_DOCS_YFM_CMD
  137. .FINAL_TARGET=yes
  138. .PEERDIR_POLICY=as_build_from
  139. .IGNORED=DOCS_DIR DOCS_INCLUDE_SOURCES DOCS_COPY_FILES PEERDIR PYTHON RUN_PROGRAM RUN_PYTHON3 RUN_LUA RUN_JAVA_PROGRAM FROM_SANDBOX
  140. .PEERDIRSELF=DOCSLIB_INTERNAL
  141. ENABLE(DOCSLIB)
  142. SET(MODULE_TYPE PROGRAM)
  143. SET(MODULE_TAG DOCSLIB)
  144. SET(PEERDIR_TAGS DOCSLIB_INTERNAL)
  145. REALPRJNAME=preprocessed
  146. _DOCS_YFM_OUTPUT_FORMAT=$_DOCS_YFM_LIB_OUTPUT_FORMAT
  147. PROCESS_DOCS()
  148. }
  149. module DOCSLIB_INTERNAL: DOCS_LIBRARY {
  150. .IGNORED=DOCS_CONFIG
  151. .EPILOGUE=_DOCS_LIBRARY_EPILOGUE
  152. ENABLE(DOCSLIB_INTERNAL)
  153. DISABLE(START_TARGET)
  154. SET(MODULE_TYPE LIBRARY)
  155. SET(MODULE_TAG DOCSLIB_INTERNAL)
  156. SET(PEERDIR_TAGS DOCSLIB_EXTERNAL DOCS_LIBRARY)
  157. # additional .fake extension make this output suppressed by ya-bin
  158. SET(MODULE_SUFFIX .docslib.fake)
  159. SET(_DOCS_DIR_INTERNAL_NAMESPACE .)
  160. REALPRJNAME=__docs_internal
  161. }
  162. module DOCSLIB_EXTERNAL: DOCS_LIBRARY {
  163. .IGNORED=DOCS_CONFIG
  164. .EPILOGUE=_DOCS_LIBRARY_EPILOGUE
  165. ENABLE(DOCSLIB_EXTERNAL)
  166. DISABLE(START_TARGET)
  167. SET(MODULE_TYPE LIBRARY)
  168. SET(MODULE_TAG DOCSLIB_EXTERNAL)
  169. SET(PEERDIR_TAGS DOCSLIB_EXTERNAL DOCS_LIBRARY)
  170. REALPRJNAME=__docs_external
  171. }
  172. }
  173. _DOCS_MKDOCS_CMDLINE_SUFFIX=
  174. _DOCS_MKDOCS_BOOK_CMDLINE_SUFFIX=${pre=--dep ;ext=preprocessed.tar.gz:PEERS}
  175. _DOCS_MKDOCS_LIB_CMDLINE_SUFFIX=--preprocess-md-only
  176. _DOCS_MKDOCS_CMDLINE=\
  177. ${cwd:ARCADIA_ROOT} $FS_TOOLS copy_all_files $_MKDOCS_DOCS_DIR_VALUE $BINDIR/__s $_DOCS_SRCS_VALUE \
  178. && $YMAKE_PYTHON ${input:"build/scripts/copy_files_to_dir.py"} ${input;hide:"build/scripts/process_command_files.py"} --dest-dir $BINDIR/__s --skip-prefix $ARCADIA_ROOT --skip-prefix $ARCADIA_BUILD_ROOT ${input;context=TEXT:INCLUDE_SRCS} \
  179. && ${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/mkdocs_builder_wrapper.py"} $ARCADIA_BUILD_ROOT ${tool:"tools/mkdocs_builder"} --docs-dir $BINDIR/__s --output-tar $TARGET --config ${input:CONFIG} $_DOCS_VARS_FLAG $_DOCS_MKDOCS_CMDLINE_SUFFIX $_DOCS_EXTRA_TOOLS ${hide;input:EXTRA_INPUTS} $_DOCS_ENV $_DOCS_KV
  180. # tag:internal tag:docs
  181. macro _DOCS_MKDOCS_CMD_IMPL(CONFIG, INCLUDE_SRCS[], EXTRA_INPUTS[]) {
  182. .CMD=$_DOCS_MKDOCS_CMDLINE
  183. }
  184. _DOCS_MKDOCS_CMD=$_DOCS_MKDOCS_CMD_IMPL($_DOCS_CONFIG_VALUE INCLUDE_SRCS $_DOCS_INCLUDE_SOURCES_VALUE)
  185. _DOCS_YFM_DEFAULT_CONFIG=$MODDIR/.yfm
  186. _DOCS_MKDOCS_DEFAULT_CONFIG=$MODDIR/mkdocs.yml
  187. # tag:docs
  188. ### This module is intended for internal use only. Common parts for submodules of MKDOCS multimodule
  189. ### should be defined here.
  190. module _MKDOCS_BASE_UNIT: _DOCS_BARE_UNIT {
  191. .RESTRICTED=DOCS_BUILDER
  192. .ALIASES=DOCS_DIR=_MKDOCS_DOCS_DIR
  193. ENABLE(_MKDOCS_BASE_UNIT)
  194. DOCS_CONFIG($_DOCS_MKDOCS_DEFAULT_CONFIG)
  195. }
  196. # tag:internal tag:docs
  197. ### _MKDOCS_EPILOOGUE() # internal
  198. ###
  199. ### This macro executes macros which should be envoked after all user
  200. ### specified macros in the ya.make file
  201. macro _MKDOCS_EPILOGUE() {
  202. _LATE_GLOB(_DOCS_SRCS_GLOB ${pre=${ARCADIA_ROOT}/;suf=/**/*:_MKDOCS_DOCS_DIR_VALUE})
  203. SET(_DOCS_SRCS_VALUE \${input;hide:_DOCS_SRCS_GLOB})
  204. }
  205. # tag:docs
  206. ### @usage: MKDOCS()
  207. ###
  208. ### Documentation project multimodule.
  209. ###
  210. ### When built directly, via RECURSE, DEPENDS or BUNDLE the output artifact is docs.tar.gz with statically generated site (using mkdocs as builder).
  211. ### When PEERDIRed from other MKDOCS() module behaves like a UNION (supplying own content and dependencies to build target).
  212. ### Peerdirs from modules other than MKDOCS are not accepted.
  213. ### Most usual macros are not accepted, only used with the macros DOCS_DIR(), DOCS_CONFIG(), DOCS_VARS().
  214. ###
  215. ### @see: [DOCS_DIR()](#macro_DOCS_DIR), [DOCS_CONFIG()](#macro_DOCS_CONFIG), [DOCS_VARS()](#macro_DOCS_VARS).
  216. multimodule MKDOCS {
  217. module MKDOCSBOOK: _MKDOCS_BASE_UNIT {
  218. .CMD=_DOCS_MKDOCS_CMD
  219. .EPILOGUE=_MKDOCS_EPILOGUE
  220. .FINAL_TARGET=yes
  221. .PEERDIR_POLICY=as_build_from
  222. ENABLE(MKDOCSBOOK)
  223. SET(MODULE_TYPE PROGRAM)
  224. SET(PEERDIR_TAGS MKDOCSLIB)
  225. SET(MODULE_TAG MKDOCSBOOK)
  226. _DOCS_MKDOCS_CMDLINE_SUFFIX=$_DOCS_MKDOCS_BOOK_CMDLINE_SUFFIX
  227. PROCESS_MKDOCS()
  228. }
  229. module MKDOCSLIB: _MKDOCS_BASE_UNIT {
  230. .CMD=_DOCS_MKDOCS_CMD
  231. .EPILOGUE=_MKDOCS_EPILOGUE
  232. .PEERDIR_POLICY=as_include
  233. ENABLE(MKDOCSLIB)
  234. SET(MODULE_TYPE LIBRARY)
  235. SET(PEERDIR_TAGS MKDOCSLIB)
  236. SET(MODULE_TAG MKDOCSLIB)
  237. REALPRJNAME=preprocessed
  238. _DOCS_MKDOCS_CMDLINE_SUFFIX=$_DOCS_MKDOCS_LIB_CMDLINE_SUFFIX
  239. PROCESS_MKDOCS()
  240. }
  241. }
  242. # tag:docs
  243. _DOCS_USE_PLANTUML=
  244. ### @usage: USE_PLANTUML()
  245. ###
  246. ### Use PlantUML plug-in for yfm builder to render UML diagrams into documentation
  247. macro USE_PLANTUML() {
  248. ENABLE(_DOCS_USE_PLANTUML)
  249. }
  250. # tag:docs tag:deprecated
  251. ### @usage: DOCS_BUILDER(tool) # deprecated
  252. macro DOCS_BUILDER(DocsTool) {
  253. ENABLE(UNUSED_MACRO)
  254. }
  255. # tag:docs
  256. _DOCS_DIR_VALUE=
  257. _DOCS_BIN_DIR_VALUE=
  258. ### @usage: DOCS_DIR(path)
  259. ###
  260. ### Specify directory with source .md files for DOCS multimodule if it differs from project directory.
  261. ### Path must be Arcadia root relative.
  262. ###
  263. ### @see: [DOCS](#multimodule_DOCS)
  264. macro DOCS_DIR(Dir) {
  265. ENABLE(UNUSED_MACRO)
  266. }
  267. # tag:docs tag:internal
  268. macro _APPEND_DOCS_DIR_FLAG(DIR, NAMESPACE, DYMMY...) {
  269. SET_APPEND(_DOCS_DIR_VALUE --docs-dir $DIR $NAMESPACE)
  270. }
  271. # tag:docs tag:internal
  272. macro _SET_DOCS_BIN_DIR_FLAG(NAMESPACE, DUMMY...) {
  273. SET(_DOCS_BIN_DIR_VALUE --bin-dir $BINDIR $NAMESPACE $AUTO_INPUT)
  274. }
  275. # tag:docs tag:internal
  276. _YFM_DOCS_DIR_DEFAULT_VALUE=$MODDIR
  277. _YFM_DEFAULT_NAMESPACE=
  278. ### @usage: DOCS_DIR(path) # internal
  279. macro _YFM_DOCS_DIR(DIR) {
  280. _APPEND_DOCS_DIR_FLAG($DIR $_DOCS_DIR_INTERNAL_NAMESPACE $DIR)
  281. SET(_VAR_DOCS_DIR_SALT $MODDIR $DIR)
  282. SET(_DOCS_DIR_GLOB uniq_docs_dir_${hash:_VAR_DOCS_DIR_SALT})
  283. _LATE_GLOB(${_DOCS_DIR_GLOB} ${ARCADIA_ROOT}/$DIR/**/*)
  284. SET_APPEND(_DOCS_SRCS_VALUE \${input;hide:$_DOCS_DIR_GLOB})
  285. # We set the value of var _YFM_DOCS_DIR_DEFAULT_VALUE to some non-existing dir. This value
  286. # will be used in _DOCS_LIBRARY_EPILOGUE calls. In case when this macro _YFM_DOCS_DIR is
  287. # explicitly called in DOCS_LIBRARY module $MODDIR as default DOCS_DIR for DOCS_LIBRARY will
  288. # be ignore.
  289. SET(_YFM_DOCS_DIR_DEFAULT_VALUE __dummy_dir__)
  290. }
  291. # tag:docs tag:internal
  292. _MKDOCS_DOCS_DIR_VALUE=$MODDIR
  293. ### @usage: DOCS_DIR(path) # internal
  294. macro _MKDOCS_DOCS_DIR(Dir) {
  295. SET(_MKDOCS_DOCS_DIR_VALUE $Dir)
  296. }
  297. # tag:docs
  298. _DOCS_DEFAULT_CONFIG=
  299. _DOCS_CONFIG_VALUE=$_DOCS_DEFAULT_CONFIG
  300. ### @usage: DOCS_CONFIG(path)
  301. ###
  302. ### Specify path to config file for DOCS multimodule if it differs from default path.
  303. ### If used for [MKDOCS](#multimodule_MKDOCS) multimodule the default path is "%%project_directory%%/mkdocs.yml".
  304. ### If used for [DOCS](#multimodule_DOCS) multimodule the default path is "%%project_directory%%/.yfm".
  305. ### Path must be either Arcadia root relative.
  306. ###
  307. ### @see: [DOCS](#multimodule_DOCS)
  308. macro DOCS_CONFIG(File) {
  309. SET(_DOCS_CONFIG_VALUE $File)
  310. }
  311. # tag:docs
  312. _DOCS_VARS_VALUE=
  313. ### @usage: DOCS_VARS(variable1=value1 variable2=value2 ...)
  314. ###
  315. ### Specify a set of default values of template variables for DOCS multimodule.
  316. ### There must be no spaces around "=". Values will be treated as strings.
  317. ###
  318. ### @see: [DOCS](#multimodule_DOCS)
  319. macro DOCS_VARS(Args...) {
  320. SET_APPEND(_DOCS_VARS_VALUE $Args)
  321. }
  322. # tag:docs
  323. _DOCS_INCLUDE_SOURCES_VALUE=
  324. ### @usage: DOCS_INCLUDE_SOURCES(path...)
  325. ###
  326. ### Specify a list of paths to source code files which will be used as text includes in a documentation project.
  327. ### Paths must be Arcadia root relative.
  328. ###
  329. ### @see: [DOCS](#multimodule_DOCS)
  330. macro DOCS_INCLUDE_SOURCES(Args...) {
  331. SET_APPEND(_DOCS_INCLUDE_SOURCES_VALUE $Args)
  332. }