From 1de970cf337ea799972aef6d5e9dcdec306450ea Mon Sep 17 00:00:00 2001
From: Dominik Loidolt <dominik.loidolt@univie.ac.at>
Date: Tue, 28 Mar 2023 15:26:51 +0200
Subject: [PATCH] Fix build system for documentation

---
 .gitignore                                    |  5 +++-
 doc/doxygen/Doxyfile.in                       | 12 ++++-----
 doc/doxygen/meson.build                       | 18 ++++++-------
 subprojects/doxygen-awesome-css.wrap          |  9 +++++++
 .../doxygen-awesome-css/meson.build           | 25 +++++++++++++++++++
 5 files changed, 52 insertions(+), 17 deletions(-)
 create mode 100644 subprojects/doxygen-awesome-css.wrap
 create mode 100644 subprojects/packagefiles/doxygen-awesome-css/meson.build

diff --git a/.gitignore b/.gitignore
index 4ade85f..852f22f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,12 +3,15 @@
 cmp_tool
 !test/cmp_tool
 
-#cmp_tool files
+# cmp_tool files
 *.cfg
 *.info
 *.dat
 *.cmp
 
+# Meson subprojects
+/subprojects/*
+!/subprojects/*.wrap
 
 ### C ###
 # Prerequisites
diff --git a/doc/doxygen/Doxyfile.in b/doc/doxygen/Doxyfile.in
index bd30e4c..54ee239 100644
--- a/doc/doxygen/Doxyfile.in
+++ b/doc/doxygen/Doxyfile.in
@@ -1321,9 +1321,9 @@ HTML_STYLESHEET        =
 # list). For an example see the documentation.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_EXTRA_STYLESHEET  = @DOXYDIR@/doxygen-awesome-css/doxygen-awesome.css \
-                         @DOXYDIR@/doxygen-awesome-css/doxygen-awesome-sidebar-only.css \
-                         @DOXYDIR@/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css
+HTML_EXTRA_STYLESHEET  = @AWESOMEDIR@/doxygen-awesome.css \
+                         @AWESOMEDIR@/doxygen-awesome-sidebar-only.css \
+                         @AWESOMEDIR@/doxygen-awesome-sidebar-only-darkmode-toggle.css
 
 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
 # other source files which should be copied to the HTML output directory. Note
@@ -1333,9 +1333,9 @@ HTML_EXTRA_STYLESHEET  = @DOXYDIR@/doxygen-awesome-css/doxygen-awesome.css \
 # files will be copied as-is; there are no commands or markers available.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_EXTRA_FILES       = @DOXYDIR@/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js \
-                         @DOXYDIR@/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js \
-                         @DOXYDIR@/doxygen-awesome-css/doxygen-awesome-interactive-toc.js
+HTML_EXTRA_FILES       = @AWESOMEDIR@/doxygen-awesome-darkmode-toggle.js \
+                         @AWESOMEDIR@/doxygen-awesome-fragment-copy-button.js \
+                         @AWESOMEDIR@/doxygen-awesome-interactive-toc.js
 
 
 # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
diff --git a/doc/doxygen/meson.build b/doc/doxygen/meson.build
index a375aae..5c6a0d0 100644
--- a/doc/doxygen/meson.build
+++ b/doc/doxygen/meson.build
@@ -2,23 +2,21 @@ Doxyfile_template = files('Doxyfile.in')
 
 doc_layout_files = files(
   'header.html',
-  'meson.build',
-  'plato-logo-med.png',
-  'doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js',
-  'doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js',
-  'doxygen-awesome-css/doxygen-awesome-interactive-toc.js',
-  'doxygen-awesome-css/doxygen-awesome-paragraph-link.js',
-  'doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css',
-  'doxygen-awesome-css/doxygen-awesome-sidebar-only.css',
-  'doxygen-awesome-css/doxygen-awesome.css',
+  'plato-logo-med.png'
 )
 
+doxygen_awesome_css_proj = subproject('doxygen-awesome-css')
+doxygen_awesome_css_files = doxygen_awesome_css_proj.get_variable('doxygen_awesome_files')
+doxygen_awesome_css_dep = doxygen_awesome_css_proj.get_variable('doxygen_awesome_css_dep')
+doxygen_awesome_dir = doxygen_awesome_css_dep.get_variable(internal : 'doxygen_awesome_dir')
+message(doxygen_awesome_dir)
 
 #Build a Doxyfile based on Doxyfile.in
 cdata_doc = configuration_data()
 cdata_doc.set('VERSION', meson.project_version())
 cdata_doc.set('SRCDIR', meson.project_source_root())
 cdata_doc.set('DOXYDIR', meson.current_source_dir())
+cdata_doc.set('AWESOMEDIR', doxygen_awesome_dir)
 cdata_doc.set('BUILDDIR', meson.project_build_root())
 if find_program('dot', required : false).found()
   cdata_doc.set('HAVE_DOT', 'YES')
@@ -39,7 +37,7 @@ if doxygen.found()
   custom_target('doc',
     input : doxy_file,
     output : 'generated_documentation',
-    depend_files : [doxy_file, doc_layout_files, main, cmplib_sources], # test files are missing
+    depend_files : [doxy_file, doc_layout_files, doxygen_awesome_css_files, main, cmplib_sources], # test files are missing
     command : [doxygen, '@INPUT@'],
     build_by_default : false,
     console : true,
diff --git a/subprojects/doxygen-awesome-css.wrap b/subprojects/doxygen-awesome-css.wrap
new file mode 100644
index 0000000..668ce8d
--- /dev/null
+++ b/subprojects/doxygen-awesome-css.wrap
@@ -0,0 +1,9 @@
+[wrap-file]
+directory = doxygen-awesome-css-2.2.0
+source_url = https://github.com/jothepro/doxygen-awesome-css/archive/refs/tags/v2.2.0.tar.gz
+source_filename = doxygen-awesome-css-2.5.2.tar.gz
+source_hash = d3d55d91b3609c60e57d34a0fcdc37c67eeba535495511fba2b7d981da531793
+patch_directory = doxygen-awesome-css
+
+[provide]
+doxygen-awesome-css = doxygen_awesome_css_dep
diff --git a/subprojects/packagefiles/doxygen-awesome-css/meson.build b/subprojects/packagefiles/doxygen-awesome-css/meson.build
new file mode 100644
index 0000000..dafeafc
--- /dev/null
+++ b/subprojects/packagefiles/doxygen-awesome-css/meson.build
@@ -0,0 +1,25 @@
+project('doxygen-awesome-css',
+  version: '2.2.0',
+  meson_version: '>=0.54.0',
+  license: 'MIT',
+)
+
+# Files to be installed
+doxygen_awesome_files= files(
+  'doxygen-awesome-darkmode-toggle.js',
+  'doxygen-awesome-fragment-copy-button.js',
+  'doxygen-awesome-interactive-toc.js',
+  'doxygen-awesome-paragraph-link.js',
+  'doxygen-awesome-sidebar-only-darkmode-toggle.css',
+  'doxygen-awesome-sidebar-only.css',
+  'doxygen-awesome.css'
+)
+
+
+doxygen_awesome_css_dep = declare_dependency(
+  sources : doxygen_awesome_files,
+  variables : {'doxygen_awesome_dir': meson.current_source_dir(), 'number': '3'}
+)
+
+
+
-- 
GitLab