All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
	jani.nikula@intel.com, David Airlie <airlied@gmail.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Masahiro Yamada <masahiroy@kernel.org>,
	lucas.demarchi@intel.com
Subject: [PATCH v2 16/16] drm: ensure drm headers are self-contained and pass kernel-doc
Date: Fri,  8 Mar 2024 13:55:54 +0200	[thread overview]
Message-ID: <ba6527a126daeae8e66e1cd64053580645106612.1709898638.git.jani.nikula@intel.com> (raw)
In-Reply-To: <cover.1709898638.git.jani.nikula@intel.com>

Ensure drm headers build, are self-contained, have header guards, and
have no kernel-doc warnings, when CONFIG_DRM_HEADER_TEST=y.

The mechanism follows similar patters used in i915, xe, and usr/include.

To cover include/drm, we need to recurse there using the top level
Kbuild and the new include/Kbuild files.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 Kbuild                   |  1 +
 drivers/gpu/drm/Kconfig  | 11 +++++++++++
 drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
 include/Kbuild           |  1 +
 include/drm/Makefile     | 18 ++++++++++++++++++
 5 files changed, 49 insertions(+)
 create mode 100644 include/Kbuild
 create mode 100644 include/drm/Makefile

diff --git a/Kbuild b/Kbuild
index 464b34a08f51..f327ca86990c 100644
--- a/Kbuild
+++ b/Kbuild
@@ -97,3 +97,4 @@ obj-$(CONFIG_SAMPLES)	+= samples/
 obj-$(CONFIG_NET)	+= net/
 obj-y			+= virt/
 obj-y			+= $(ARCH_DRIVERS)
+obj-$(CONFIG_DRM_HEADER_TEST)	+= include/
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index c08e18108c2a..dd17685ef6e7 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -429,3 +429,14 @@ config DRM_WERROR
 	  this config option is disabled by default.
 
 	  If in doubt, say N.
+
+config DRM_HEADER_TEST
+	bool "Ensure DRM headers are self-contained and pass kernel-doc"
+	depends on EXPERT
+	default n
+	help
+	  Ensure the DRM subsystem headers both under drivers/gpu/drm and
+	  include/drm compile, are self-contained, have header guards, and have
+	  no kernel-doc warnings.
+
+	  If in doubt, say N.
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index a73c04d2d7a3..6605d5686d01 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -218,3 +218,21 @@ obj-y			+= solomon/
 obj-$(CONFIG_DRM_SPRD) += sprd/
 obj-$(CONFIG_DRM_LOONGSON) += loongson/
 obj-$(CONFIG_DRM_POWERVR) += imagination/
+
+# Ensure drm headers are self-contained and pass kernel-doc
+hdrtest-files := \
+	$(shell cd $(srctree)/$(src) && find . -maxdepth 1 -name 'drm_*.h') \
+	$(shell cd $(srctree)/$(src) && find display lib -name '*.h')
+
+always-$(CONFIG_DRM_HEADER_TEST) += \
+	$(patsubst %.h,%.hdrtest, $(hdrtest-files))
+
+# Include the header twice to detect missing include guard.
+quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
+      cmd_hdrtest = \
+		$(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
+		$(srctree)/scripts/kernel-doc -none $(if $(CONFIG_DRM_WERROR),-Werror) $<; \
+		touch $@
+
+$(obj)/%.hdrtest: $(src)/%.h FORCE
+	$(call if_changed_dep,hdrtest)
diff --git a/include/Kbuild b/include/Kbuild
new file mode 100644
index 000000000000..5e76a599e2dd
--- /dev/null
+++ b/include/Kbuild
@@ -0,0 +1 @@
+obj-$(CONFIG_DRM_HEADER_TEST)	+= drm/
diff --git a/include/drm/Makefile b/include/drm/Makefile
new file mode 100644
index 000000000000..b9f391d7aadd
--- /dev/null
+++ b/include/drm/Makefile
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: GPL-2.0
+
+# Ensure drm headers are self-contained and pass kernel-doc
+hdrtest-files := \
+	$(shell cd $(srctree)/$(src) && find * -name '*.h' 2>/dev/null)
+
+always-$(CONFIG_DRM_HEADER_TEST) += \
+	$(patsubst %.h,%.hdrtest, $(hdrtest-files))
+
+# Include the header twice to detect missing include guard.
+quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
+      cmd_hdrtest = \
+		$(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
+		$(srctree)/scripts/kernel-doc -none $(if $(CONFIG_DRM_WERROR),-Werror) $<; \
+		touch $@
+
+$(obj)/%.hdrtest: $(src)/%.h FORCE
+	$(call if_changed_dep,hdrtest)
-- 
2.39.2


  parent reply	other threads:[~2024-03-08 11:57 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-08 11:55 [PATCH v2 00/16] drm: fix headers, add header test facility Jani Nikula
2024-03-08 11:55 ` [PATCH v2 01/16] drm: add missing header guards to drm_crtc_internal.h Jani Nikula
2024-03-08 17:19   ` Alex Deucher
2024-03-08 11:55 ` [PATCH v2 02/16] drm: add missing header guards to drm_crtc_helper_internal.h Jani Nikula
2024-03-08 17:21   ` Alex Deucher
2024-03-08 11:55 ` [PATCH v2 03/16] drm/encoder: improve drm_encoder_slave.h kernel-doc Jani Nikula
2024-03-08 17:21   ` Alex Deucher
2024-03-08 11:55 ` [PATCH v2 04/16] drm/i2c: silence ch7006.h and sil164.h kernel-doc warnings Jani Nikula
2024-03-08 11:55 ` [PATCH v2 05/16] drm/i915: fix i915_gsc_proxy_mei_interface.h kernel-doc Jani Nikula
2024-03-08 11:55 ` [PATCH v2 06/16] drm/i915/hdcp: fix i915_hdcp_interface.h kernel-doc warnings Jani Nikula
2024-03-08 11:55 ` [PATCH v2 07/16] drm/i915/pxp: fix i915_pxp_tee_interface.h " Jani Nikula
2024-03-08 15:10   ` Lucas De Marchi
2024-03-08 11:55 ` [PATCH v2 08/16] m68k: pgtable: Add missing #include <asm/page.h> Jani Nikula
2024-03-08 11:55 ` [PATCH v2 09/16] drm/ttm: fix ttm_bo.h kernel-doc warnings Jani Nikula
2024-03-08 13:03   ` Christian König
2024-03-08 16:07   ` [PATCH v3] " Jani Nikula
2024-03-08 11:55 ` [PATCH v2 10/16] drm/ttm: make ttm_caching.h self-contained Jani Nikula
2024-03-08 17:22   ` Alex Deucher
2024-03-08 11:55 ` [PATCH v2 11/16] drm/ttm: fix ttm_execbuf_util.h kernel-doc warnings Jani Nikula
2024-03-08 11:55 ` [PATCH v2 12/16] drm/ttm: fix ttm_kmap_iter.h " Jani Nikula
2024-03-08 11:55 ` [PATCH v2 13/16] drm/ttm: make ttm_pool.h self-contained Jani Nikula
2024-03-08 17:22   ` Alex Deucher
2024-03-08 11:55 ` [PATCH v2 14/16] drm/dp_mst: avoid includes in drm_dp_mst_topology_internal.h Jani Nikula
2024-03-08 15:12   ` Lucas De Marchi
2024-03-08 11:55 ` [PATCH v2 15/16] drm: avoid includes in drm_crtc_helper_internal.h Jani Nikula
2024-03-08 15:12   ` Lucas De Marchi
2024-03-08 11:55 ` Jani Nikula [this message]
2024-03-11 12:33   ` [PATCH v2 16/16] drm: ensure drm headers are self-contained and pass kernel-doc Jani Nikula
2024-03-08 13:50 ` ✓ CI.Patch_applied: success for drm: fix headers, add header test facility Patchwork
2024-03-08 13:51 ` ✗ CI.checkpatch: warning " Patchwork
2024-03-08 13:52 ` ✓ CI.KUnit: success " Patchwork
2024-03-08 14:02 ` ✓ CI.Build: " Patchwork
2024-03-08 14:03 ` ✓ CI.Hooks: " Patchwork
2024-03-08 14:04 ` ✗ CI.checksparse: warning " Patchwork
2024-03-08 14:39 ` ✓ CI.BAT: success " Patchwork
2024-03-08 14:46 ` ✗ Fi.CI.CHECKPATCH: warning " Patchwork
2024-03-08 14:46 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-03-08 15:00 ` ✓ Fi.CI.BAT: success " Patchwork
2024-03-08 17:38 ` ✓ CI.Patch_applied: success for drm: fix headers, add header test facility (rev2) Patchwork
2024-03-08 17:38 ` ✗ CI.checkpatch: warning " Patchwork
2024-03-08 17:39 ` ✓ CI.KUnit: success " Patchwork
2024-03-08 17:49 ` ✓ CI.Build: " Patchwork
2024-03-08 17:50 ` ✓ CI.Hooks: " Patchwork
2024-03-08 17:51 ` ✗ CI.checksparse: warning " Patchwork
2024-03-08 18:26 ` ✓ CI.BAT: success " Patchwork
2024-03-08 19:30 ` ✗ Fi.CI.CHECKPATCH: warning " Patchwork
2024-03-08 19:30 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-03-08 19:47 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-03-11 12:35 ` [PATCH v2 00/16] drm: fix headers, add header test facility Jani Nikula

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ba6527a126daeae8e66e1cd64053580645106612.1709898638.git.jani.nikula@intel.com \
    --to=jani.nikula@intel.com \
    --cc=airlied@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=masahiroy@kernel.org \
    --cc=mripard@kernel.org \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.