From patchwork Thu Jul 31 12:32:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 24044 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id AAE10BDCC1 for ; Thu, 31 Jul 2025 12:32:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 43D7969212; Thu, 31 Jul 2025 14:32:52 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Og0evqjX"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id B894E69154 for ; Thu, 31 Jul 2025 14:32:50 +0200 (CEST) Received: from pb-laptop.local (185.221.140.213.nat.pool.zt.hu [185.221.140.213]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 853D61809 for ; Thu, 31 Jul 2025 14:32:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1753965126; bh=gslb5cGCG0RPyqIu7eOgitgv+Zygd8lETGy3bxXjupQ=; h=From:To:Subject:Date:From; b=Og0evqjXo0jEgZ12QirmuUeIn7ppFen1+QU4Nas/P1O/zMJ/R+j5Es+gvxIWe3d2+ X7lR+Bg3gatz++pDTCn7LicfumSpLF81uIKfO91IsFgTC4NNh6Q7OVaf2ZbiDCi9F7 gjH2Kr8ed/+PvVTlgOqw5C1CL7J5Yoo3qMph1rZw= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [RFC PATCH v1] Documentation: Fix documentation generation when subproject Date: Thu, 31 Jul 2025 14:32:47 +0200 Message-ID: <20250731123247.755475-1-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.50.1 MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The paths of the doxygen tag files for sphinxcontrib-doxygen must be absolute or relative the the current working directory. However, when libcamera is built as a subproject, the current working directory is the top-level build directory. Thus the paths for the tag files will not be correct. Fix that by using `configure_file()` to generate the final sphinx configuration with the appropriate paths queried from meson. Signed-off-by: Barnabás Pőcze --- Documentation/{conf.py => conf.py.in} | 6 +++--- Documentation/meson.build | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) rename Documentation/{conf.py => conf.py.in} (95%) diff --git a/Documentation/conf.py b/Documentation/conf.py.in similarity index 95% rename from Documentation/conf.py rename to Documentation/conf.py.in index f50be60a1..097e579b5 100644 --- a/Documentation/conf.py +++ b/Documentation/conf.py.in @@ -74,11 +74,11 @@ pygments_style = None doxylink = { 'doxy-pub': ( - 'Documentation/api-html/tagfile.xml', + '@TOP_BUILDDIR@/Documentation/api-html/tagfile.xml', '../api-html/', ), 'doxy-int': ( - 'Documentation/internal-api-html/tagfile.xml', + '@TOP_BUILDDIR@/Documentation/internal-api-html/tagfile.xml', '../internal-api-html/', ), } @@ -89,7 +89,7 @@ doxylink = { # a list of builtin themes. # html_theme = 'theme' -html_theme_path = ['.'] +html_theme_path = ['@THEME_DIR@'] # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the diff --git a/Documentation/meson.build b/Documentation/meson.build index b898ba3a0..0710084fe 100644 --- a/Documentation/meson.build +++ b/Documentation/meson.build @@ -142,11 +142,20 @@ if sphinx.found() .format(mod, version, min_version)) endif + sphinx_conf = configure_file(input : 'conf.py.in', + output : 'conf.py', + configuration : { + 'TOP_BUILDDIR': meson.project_build_root(), + 'THEME_DIR': meson.current_source_dir(), + }) + + sphinx_conf_dir = fs.parent(sphinx_conf) + docs_sources = [ 'camera-sensor-model.rst', 'code-of-conduct.rst', 'coding-style.rst', - 'conf.py', + sphinx_conf, 'contributing.rst', 'design/ae.rst', 'documentation-contents.rst', @@ -171,6 +180,7 @@ if sphinx.found() custom_target('documentation', command : [sphinx, '-D', release, '-q', '-W', '-b', 'html', + '--conf-dir', sphinx_conf_dir, meson.current_source_dir(), '@OUTPUT@'], input : docs_sources, output : 'html', @@ -184,7 +194,9 @@ if sphinx.found() install_tag : 'doc') custom_target('documentation-linkcheck', - command : [sphinx, '-W', '-b', 'linkcheck', meson.current_source_dir(), '@OUTPUT@'], + command : [sphinx, '-W', '-b', 'linkcheck', + '--conf-dir', sphinx_conf_dir, + meson.current_source_dir(), '@OUTPUT@'], build_always_stale : true, input : docs_sources, output : 'linkcheck')