spl-core 8.1.2__tar.gz → 9.0.0rc1.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/PKG-INFO +7 -5
  2. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/pyproject.toml +6 -6
  3. spl_core-9.0.0rc1.dev1/src/spl_core/__init__.py +1 -0
  4. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/common.cmake +57 -59
  5. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kconfig/kconfig.py +272 -271
  6. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/create.py +5 -6
  7. spl_core-9.0.0rc1.dev1/src/spl_core/kickstart/templates/application/src/greeter/src/greeter.h +15 -0
  8. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/bootstrap.json +1 -1
  9. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/build.ps1 +1 -1
  10. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/conf.py +4 -0
  11. spl_core-9.0.0rc1.dev1/src/spl_core/kickstart/templates/project/doc/_static/force-light-mermaid.js +2 -0
  12. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/doc/components/index.md +0 -1
  13. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/index.md +0 -1
  14. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/pypeline.yaml +1 -1
  15. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/pyproject.toml +1 -1
  16. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/report_generation/spl_sphinx.py +1 -1
  17. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/spl.cmake +3 -0
  18. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/steps/collect_pr_changes.py +5 -6
  19. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/test_utils/archive_artifacts_collection.py +4 -5
  20. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/test_utils/artifacts_archiver.py +19 -19
  21. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/test_utils/base_variant_test_runner.py +9 -11
  22. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/test_utils/junit_merger.py +1 -2
  23. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/test_utils/spl_build.py +8 -8
  24. spl_core-8.1.2/src/spl_core/__init__.py +0 -1
  25. spl_core-8.1.2/src/spl_core/kickstart/templates/application/src/greeter/src/greeter.h +0 -6
  26. spl_core-8.1.2/src/spl_core/kickstart/templates/project/doc/Doxyfile.in +0 -2774
  27. spl_core-8.1.2/src/spl_core/kickstart/templates/project/doc/doxygen-awesome/LICENSE +0 -21
  28. spl_core-8.1.2/src/spl_core/kickstart/templates/project/doc/doxygen-awesome/doxygen-awesome.css +0 -2530
  29. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/LICENSE +0 -0
  30. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/README.md +0 -0
  31. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/__run.py +0 -0
  32. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/common/__init__.py +0 -0
  33. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/common/path.py +0 -0
  34. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/conan.cmake +0 -0
  35. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/config/KConfig +0 -0
  36. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/gcov_maid/__init__.py +0 -0
  37. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/gcov_maid/gcov_maid.py +0 -0
  38. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kconfig/__init__.py +0 -0
  39. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kconfig.cmake +0 -0
  40. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/__init__.py +0 -0
  41. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/.vscode/cmake-variants.json +0 -0
  42. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/KConfig +0 -0
  43. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/src/greeter/CMakeLists.txt +0 -0
  44. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/src/greeter/doc/_images/screenshot.png +0 -0
  45. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/src/greeter/doc/index.md +0 -0
  46. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/src/greeter/src/greeter.c +0 -0
  47. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/src/greeter/test/test_greeter.cc +0 -0
  48. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/src/main/CMakeLists.txt +0 -0
  49. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/src/main/doc/index.md +0 -0
  50. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/src/main/src/main.c +0 -0
  51. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/test/EnglishVariant/test__EnglishVariant.py +0 -0
  52. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/test/German/test__GermanVariant.py +0 -0
  53. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/variants/EnglishVariant/config.cmake +0 -0
  54. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/variants/EnglishVariant/parts.cmake +0 -0
  55. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/variants/GermanVariant/config.cmake +0 -0
  56. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/variants/GermanVariant/config.txt +0 -0
  57. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/application/variants/GermanVariant/parts.cmake +0 -0
  58. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/.gitignore +0 -0
  59. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/.vscode/cmake-kits.json +0 -0
  60. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/.vscode/extensions.json +0 -0
  61. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/.vscode/launch.json +0 -0
  62. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/.vscode/settings.json +0 -0
  63. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/.vscode/tasks.json +0 -0
  64. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/CMakeLists.txt +0 -0
  65. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/README.md +0 -0
  66. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/build.bat +0 -0
  67. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/doc/common/index.md +0 -0
  68. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/doc/common/sphinx_configuration.md +0 -0
  69. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/doc/software_architecture/index.md +0 -0
  70. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/doc/software_requirements/index.md +0 -0
  71. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/doc/test_report_template.txt +0 -0
  72. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/pytest.ini +0 -0
  73. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/scoopfile.json +0 -0
  74. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/tools/toolchains/clang/toolchain.cmake +0 -0
  75. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/kickstart/templates/project/tools/toolchains/gcc/toolchain.cmake +0 -0
  76. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/main.py +0 -0
  77. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/report_generation/__init__.py +0 -0
  78. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/report_generation/spl_html_settings.py +0 -0
  79. {spl_core-8.1.2 → spl_core-9.0.0rc1.dev1}/src/spl_core/report_generation/ubproject.toml +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spl-core
3
- Version: 8.1.2
3
+ Version: 9.0.0rc1.dev1
4
4
  Summary: Software Product Line Support for CMake
5
5
  License: MIT
6
6
  License-File: LICENSE
7
7
  Author: Avengineers
8
8
  Author-email: karsten.guenther@kamg.de
9
- Requires-Python: >=3.10,<3.12
9
+ Requires-Python: >=3.10,<3.14
10
10
  Classifier: Development Status :: 2 - Pre-Alpha
11
11
  Classifier: Intended Audience :: Developers
12
12
  Classifier: License :: OSI Approved :: MIT License
@@ -15,17 +15,19 @@ Classifier: Operating System :: OS Independent
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
18
20
  Classifier: Topic :: Software Development :: Libraries
21
+ Requires-Dist: clanguru (>=0,<1)
19
22
  Requires-Dist: cookiecutter (==2.7.1)
20
- Requires-Dist: doxysphinx (>=3.3,<4.0)
21
23
  Requires-Dist: gcovr (>=8.6,<9.0)
22
24
  Requires-Dist: hammocking (>=1.0,<2.0)
23
- Requires-Dist: junitparser (>=5.0,<6.0)
25
+ Requires-Dist: junitparser
24
26
  Requires-Dist: kconfiglib (>=14.1,<15.0)
25
27
  Requires-Dist: mlx-traceability (>=10,<12)
26
28
  Requires-Dist: myst-parser (>=0.16)
27
29
  Requires-Dist: py-app-dev (>=2.1,<3.0)
28
- Requires-Dist: py7zr (>=1.0,<2.0)
30
+ Requires-Dist: py7zr (>=1.1.0,<2.0.0)
29
31
  Requires-Dist: pypeline-runner (>=1,<=2)
30
32
  Requires-Dist: pypeline-semantic-release (>=0.5,<1.0)
31
33
  Requires-Dist: sphinx (>=7.3,<9.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "spl-core"
3
- version = "8.1.2"
3
+ version = "9.0.0-rc1.dev.1"
4
4
  description = "Software Product Line Support for CMake"
5
5
  authors = ["Avengineers <karsten.guenther@kamg.de>"]
6
6
  license = "MIT"
@@ -25,14 +25,14 @@ junit_merger = "spl_core.test_utils.junit_merger:main"
25
25
  "Changelog" = "https://github.com/avengineers/spl-core/blob/develop/CHANGELOG.md"
26
26
 
27
27
  [tool.poetry.dependencies]
28
- python = ">=3.10,<3.12"
28
+ python = ">=3.10,<3.14"
29
29
  py-app-dev = "^2.1"
30
30
  cookiecutter = "==2.7.1"
31
31
  gcovr = "^8.6"
32
32
  hammocking = "^1.0"
33
+ clanguru = ">=0,<1"
33
34
  kconfiglib = "^14.1"
34
35
  typer = ">=0,<1"
35
- doxysphinx = "^3.3"
36
36
  sphinx = ">=7.3,<9.0"
37
37
  sphinx-rtd-theme = ">=2,<4"
38
38
  sphinxcontrib-mermaid = ">=0.9,<2.1"
@@ -49,8 +49,8 @@ sphinx-book-theme = "^1.1"
49
49
  sphinx-design = ">=0.5,<0.7"
50
50
  pypeline-semantic-release = ">=0.5,<1.0"
51
51
  pypeline-runner = ">=1,<=2"
52
- py7zr = "^1.0"
53
- junitparser = "^5.0"
52
+ py7zr = "^1.1.0"
53
+ junitparser = "*"
54
54
 
55
55
  [tool.poetry.group.dev.dependencies]
56
56
  pytest = ">=7,<10"
@@ -106,7 +106,7 @@ exclude_lines = [
106
106
  ]
107
107
 
108
108
  [tool.ruff]
109
- target-version = "py38"
109
+ target-version = "py313"
110
110
  line-length = 220
111
111
  lint.ignore = [
112
112
  "D203", # 1 blank line required before class docstring
@@ -0,0 +1 @@
1
+ __version__ = "9.0.0-rc1.dev.1"
@@ -1,20 +1,3 @@
1
- # Option to run doxysphinx in sequential mode (avoids crashes on some systems).
2
- # Can be set via:
3
- # 1. CMake option: -DSPL_DOXYSPHINX_SEQUENTIAL=ON
4
- # 2. Environment variable: SPL_DOXYSPHINX_SEQUENTIAL=ON (no project file changes needed)
5
- # The environment variable takes precedence if set.
6
- if(DEFINED ENV{SPL_DOXYSPHINX_SEQUENTIAL})
7
- set(SPL_DOXYSPHINX_SEQUENTIAL "$ENV{SPL_DOXYSPHINX_SEQUENTIAL}" CACHE BOOL "Run doxysphinx build with --sequential option" FORCE)
8
- endif()
9
-
10
- option(SPL_DOXYSPHINX_SEQUENTIAL "Run doxysphinx build with --sequential option" OFF)
11
-
12
- if(SPL_DOXYSPHINX_SEQUENTIAL)
13
- set(SPL_DOXYSPHINX_EXTRA_ARGS "--sequential")
14
- else()
15
- set(SPL_DOXYSPHINX_EXTRA_ARGS "")
16
- endif()
17
-
18
1
  macro(_spl_slash_to_underscore out in)
19
2
  string(REGEX REPLACE "/" "_" ${out} ${in})
20
3
  endmacro()
@@ -319,6 +302,13 @@ macro(spl_create_component)
319
302
  _spl_add_test_suite(${component_name} "${SOURCES}" "${TEST_SOURCES}")
320
303
  endif()
321
304
 
305
+ # Generate source documentation using clanguru
306
+ set(_COMPONENT_SOURCE_DOCS_INCLUDE_PATTERN "")
307
+ set(_clanguru_all_sources ${SOURCES} ${TEST_SOURCES})
308
+ if(_clanguru_all_sources)
309
+ _spl_generate_clanguru_source_docs(${component_name} "${_clanguru_all_sources}")
310
+ endif()
311
+
322
312
  set(_component_dir ${CMAKE_CURRENT_LIST_DIR})
323
313
  set(_component_doc_dir ${_component_dir}/doc)
324
314
  set(_component_test_junit_xml ${CMAKE_CURRENT_BINARY_DIR}/junit.xml)
@@ -401,27 +391,13 @@ Code Coverage
401
391
 
402
392
  ")
403
393
 
404
- # generate Doxyfile from template
405
- set(_component_doxyfile ${_component_reports_out_dir}/Doxyfile)
406
- set(DOXYGEN_PROJECT_NAME "${CREATE_COMPONENT_LONG_NAME} Documentation")
407
- set(DOXYGEN_OUTPUT_DIRECTORY ${_component_reports_out_dir}/doxygen)
408
- set(DOXYGEN_INPUT "${_component_dir}/src ${_component_dir}/test ${KCONFIG_OUT_DIR}")
409
-
410
- # We need to add the googletest include directory to the doxygen include path
411
- # to be able to resolve the TEST() macros in the test files.
412
- set(DOXYGEN_INCLUDE_PATH "${_sphinx_source_dir}/build/modules/googletest-src/googletest/include ${KCONFIG_OUT_DIR}")
413
- set(DOXYGEN_AWESOME_PATH "${_sphinx_source_dir}/doc/doxygen-awesome")
414
- configure_file(${_sphinx_source_dir}/doc/Doxyfile.in ${_component_doxyfile} @ONLY)
415
- file(RELATIVE_PATH _rel_component_doxyfile ${CMAKE_CURRENT_BINARY_DIR} ${_component_doxyfile})
416
- file(RELATIVE_PATH _rel_component_doxysphinx_index_rst ${_sphinx_source_dir} ${DOXYGEN_OUTPUT_DIRECTORY}/html/index)
417
-
418
394
  file(WRITE ${_reports_config_json} "{
419
395
  \"component_info\": ${_component_info},
420
396
  \"include_patterns\": [\"${_rel_component_doc_dir}/**\",\"${_rel_component_reports_out_dir}/**\"]
421
397
  }")
422
398
 
423
399
  # add the generated files as dependency to cmake configure step
424
- set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${_reports_config_json} ${_unit_test_spec_rst} ${_unit_test_results_rst} ${_component_doxyfile})
400
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${_reports_config_json} ${_unit_test_spec_rst} ${_unit_test_results_rst})
425
401
 
426
402
  set(_cov_out_html reports/html/${_rel_component_reports_out_dir}/coverage/index.html)
427
403
  file(RELATIVE_PATH _cov_out_json ${CMAKE_CURRENT_BINARY_DIR} ${_component_coverage_json})
@@ -435,32 +411,22 @@ Code Coverage
435
411
  COMMENT "Generating component coverage html report ${_cov_out_html} ..."
436
412
  )
437
413
 
438
- # We need to have a separate component doxygen generation target because it is required
439
- # by both the component and variant reports.
440
- add_custom_target(
441
-
442
- # No OUTPUT is defined to force execution of this target every time
443
- ${component_name}_doxygen
444
- COMMAND ${CMAKE_COMMAND} -E make_directory ${_component_reports_out_dir}
445
- COMMAND ${CMAKE_COMMAND} -E remove_directory ${DOXYGEN_OUTPUT_DIRECTORY}
446
- COMMAND ${CMAKE_COMMAND} -E make_directory ${DOXYGEN_OUTPUT_DIRECTORY}
447
- COMMAND doxygen ${_rel_component_doxyfile}
448
- )
449
-
450
414
  # No OUTPUT is defined to force execution of this target every time
451
415
  # TODO: list of dependencies is not complete
452
416
  add_custom_target(
453
417
  ${component_name}_report
454
418
  COMMAND ${CMAKE_COMMAND} -E make_directory ${_component_reports_out_dir}
455
- COMMAND doxysphinx build ${_sphinx_source_dir} ${_component_reports_html_out_dir} ${_rel_component_doxyfile} ${SPL_DOXYSPHINX_EXTRA_ARGS}
456
419
  COMMAND ${CMAKE_COMMAND} -E env SPHINX_BUILD_CONFIGURATION_FILE=${_reports_config_json} AUTOCONF_JSON_FILE=${AUTOCONF_JSON} VARIANT=${VARIANT} -- sphinx-build -E -b html ${_sphinx_source_dir} ${_component_reports_html_out_dir}
457
420
  BYPRODUCTS ${_component_reports_html_out_dir}/index.html
458
- DEPENDS ${TEST_OUT_JUNIT} ${component_name}_doxygen ${_cov_out_html}
421
+ DEPENDS ${TEST_OUT_JUNIT} ${_cov_out_html}
459
422
  )
460
423
  endif(TEST_SOURCES)
461
424
 
462
425
  # Collect all component sphinx include pattern to be used in the variant targets (docs, reports)
463
426
  list(APPEND COMPONENTS_SPHINX_INCLUDE_PATTERNS "${_rel_component_doc_dir}/**" "${_rel_component_docs_out_dir}/**" "${_rel_component_reports_out_dir}/**")
427
+ if(_COMPONENT_SOURCE_DOCS_INCLUDE_PATTERN)
428
+ list(APPEND COMPONENTS_SPHINX_INCLUDE_PATTERNS "${_COMPONENT_SOURCE_DOCS_INCLUDE_PATTERN}")
429
+ endif()
464
430
  set(COMPONENTS_SPHINX_INCLUDE_PATTERNS ${COMPONENTS_SPHINX_INCLUDE_PATTERNS} PARENT_SCOPE)
465
431
  endif(EXISTS ${_component_doc_dir}/index.rst OR EXISTS ${_component_doc_dir}/index.md)
466
432
  endif(BUILD_KIT STREQUAL prod)
@@ -562,10 +528,8 @@ Code Coverage
562
528
 
563
529
  ")
564
530
 
565
- # For every component we need to create specific coverage and doxysphinx targets to make sure
531
+ # For every component we need to create specific coverage targets to make sure
566
532
  # the output files are generated in the overall variant sphinx output directory.
567
- # This will avoid the need to copy all the component coverage and doxygen files from the component
568
- # directories to the variant directory.
569
533
  foreach(component_info ${COMPONENTS_INFO})
570
534
  string(JSON component_name GET ${component_info} name)
571
535
  string(JSON component_path GET ${component_info} path)
@@ -583,15 +547,6 @@ Code Coverage
583
547
  )
584
548
  list(APPEND _components_coverage_html ${_cov_out_html})
585
549
 
586
- set(_rel_component_doxyfile ${component_path}/reports/Doxyfile)
587
- add_custom_target(
588
- ${component_name}_doxysphinx
589
- COMMAND ${CMAKE_COMMAND} -E make_directory ${_variant_component_reports_out_dir}
590
- COMMAND doxysphinx build ${PROJECT_SOURCE_DIR} ${_reports_html_output_dir} ${_rel_component_doxyfile} ${SPL_DOXYSPHINX_EXTRA_ARGS}
591
- DEPENDS ${component_name}_doxygen
592
- COMMENT "Generating variant component doxysphinx report ${component_name}_doxysphinx ..."
593
- )
594
- list(APPEND _components_variant_doxysphinx_targets ${component_name}_doxysphinx)
595
550
  endif()
596
551
  endforeach()
597
552
 
@@ -623,7 +578,7 @@ Code Coverage
623
578
  # We need to call sphinx-build with -E to make sure all files are regenerated.
624
579
  COMMAND ${CMAKE_COMMAND} -E env SPHINX_BUILD_CONFIGURATION_FILE=${_reports_config_json} AUTOCONF_JSON_FILE=${AUTOCONF_JSON} VARIANT=${VARIANT} -- sphinx-build -E -b html ${PROJECT_SOURCE_DIR} ${_reports_html_output_dir}
625
580
  BYPRODUCTS ${_reports_html_output_dir}/index.html
626
- DEPENDS ${JUNIT_OUT_VARIANT_XML} ${COV_OUT_VARIANT_JSON} _components_variant_coverage_html_target ${_components_variant_doxysphinx_targets}
581
+ DEPENDS ${JUNIT_OUT_VARIANT_XML} ${COV_OUT_VARIANT_JSON} _components_variant_coverage_html_target source_docs
627
582
  )
628
583
  endmacro()
629
584
 
@@ -835,6 +790,49 @@ macro(_spl_add_test_suite COMPONENT_NAME PROD_SRC TEST_SOURCES)
835
790
  )
836
791
  endmacro(_spl_add_test_suite)
837
792
 
793
+ macro(_spl_generate_clanguru_source_docs COMPONENT_NAME SRC_FILES)
794
+ if(NOT CLANGURU_EXECUTABLE)
795
+ find_program(CLANGURU_EXECUTABLE clanguru)
796
+ endif()
797
+ if(NOT CLANGURU_EXECUTABLE)
798
+ message(WARNING "clanguru not found, skipping source documentation generation")
799
+ return()
800
+ endif()
801
+
802
+ set(_clanguru_docs_out_dir ${CMAKE_CURRENT_BINARY_DIR}/source_docs)
803
+ set(_clanguru_doc_outputs "")
804
+ foreach(_src_file ${SRC_FILES})
805
+ get_filename_component(_src_name ${_src_file} NAME)
806
+ set(_doc_output ${_clanguru_docs_out_dir}/${_src_name}.rst)
807
+ add_custom_command(
808
+ OUTPUT ${_doc_output}
809
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${_clanguru_docs_out_dir}
810
+ COMMAND ${CLANGURU_EXECUTABLE} docs
811
+ --source-file ${_src_file}
812
+ --output-file ${_doc_output}
813
+ --compilation-database ${CLANGURU_COMPILE_COMMANDS}
814
+ --format rst
815
+ # Strip @rst/@endrst markers from generated RST so Sphinx can process directives directly
816
+ COMMAND python -c "import pathlib,re$<SEMICOLON> p=pathlib.Path(r'${_doc_output}')$<SEMICOLON> p.write_text(re.sub(r'(?m)^\\s*@(?:end)?rst\\s*$$','',p.read_text(encoding='utf-8')),encoding='utf-8')"
817
+ DEPENDS ${_src_file}
818
+ COMMENT "Generating RST docs for ${_src_name} (${COMPONENT_NAME})"
819
+ )
820
+ list(APPEND _clanguru_doc_outputs ${_doc_output})
821
+ endforeach()
822
+
823
+ if(_clanguru_doc_outputs)
824
+ add_custom_target(
825
+ ${COMPONENT_NAME}_source_docs
826
+ DEPENDS ${_clanguru_doc_outputs}
827
+ )
828
+ add_dependencies(source_docs ${COMPONENT_NAME}_source_docs)
829
+
830
+ # Expose source_docs directory for Sphinx include patterns
831
+ file(RELATIVE_PATH _rel_clanguru_docs_out_dir ${PROJECT_SOURCE_DIR} ${_clanguru_docs_out_dir})
832
+ set(_COMPONENT_SOURCE_DOCS_INCLUDE_PATTERN "${_rel_clanguru_docs_out_dir}/**")
833
+ endif()
834
+ endmacro(_spl_generate_clanguru_source_docs)
835
+
838
836
  macro(spl_add_conan_requires requirement)
839
837
  list(APPEND CONAN__REQUIRES ${requirement})
840
838
  endmacro(spl_add_conan_requires)