From: Jani Nikula <jani.nikula@intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: add Makefile magic for testing headers are self-contained
Date: Wed, 03 Apr 2019 14:44:51 +0300 [thread overview]
Message-ID: <87mul7z51o.fsf@intel.com> (raw)
In-Reply-To: <20190403103827.24987-1-chris@chris-wilson.co.uk>
On Wed, 03 Apr 2019, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> From: Jani Nikula <jani.nikula@intel.com>
>
> The below commits added dummy files to test that certain headers are
> self-contained, i.e. compilable as standalone units:
>
> 39e2f501c1b4 ("drm/i915: Split struct intel_context definition to its own header")
> 3a891a626794 ("drm/i915: Move intel_engine_mask_t around for use by i915_request_types.h")
> 8b74594aa455 ("drm/i915: Split out i915_priolist_types into its own header")
>
> The idea is fine, but the implementation is a bit tedious and
> inflexible, and does not really scale well.
>
> Implement the same in make using autogenerated dummy sources to include
> the headers.
>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> Use patsubst liberally to reduce the chore of adding more headers.
> make clean doesn't quite work yet, although it seems to be the right
> style.
I don't know what gives, I'm unable to make it work. I've been trying
with O= builds.
> ---
> drivers/gpu/drm/i915/.gitignore | 1 +
> drivers/gpu/drm/i915/Makefile | 16 ++++---------
> drivers/gpu/drm/i915/Makefile.header-test | 24 +++++++++++++++++++
> .../i915/test_i915_active_types_standalone.c | 7 ------
> .../test_i915_gem_context_types_standalone.c | 7 ------
> .../test_i915_priolist_types_standalone.c | 7 ------
> .../test_i915_scheduler_types_standalone.c | 7 ------
> .../test_i915_timeline_types_standalone.c | 7 ------
> .../test_intel_context_types_standalone.c | 7 ------
> .../i915/test_intel_engine_types_standalone.c | 7 ------
> .../test_intel_workarounds_types_standalone.c | 7 ------
> 11 files changed, 30 insertions(+), 67 deletions(-)
> create mode 100644 drivers/gpu/drm/i915/.gitignore
> create mode 100644 drivers/gpu/drm/i915/Makefile.header-test
> delete mode 100644 drivers/gpu/drm/i915/test_i915_active_types_standalone.c
> delete mode 100644 drivers/gpu/drm/i915/test_i915_gem_context_types_standalone.c
> delete mode 100644 drivers/gpu/drm/i915/test_i915_priolist_types_standalone.c
> delete mode 100644 drivers/gpu/drm/i915/test_i915_scheduler_types_standalone.c
> delete mode 100644 drivers/gpu/drm/i915/test_i915_timeline_types_standalone.c
> delete mode 100644 drivers/gpu/drm/i915/test_intel_context_types_standalone.c
> delete mode 100644 drivers/gpu/drm/i915/test_intel_engine_types_standalone.c
> delete mode 100644 drivers/gpu/drm/i915/test_intel_workarounds_types_standalone.c
>
> diff --git a/drivers/gpu/drm/i915/.gitignore b/drivers/gpu/drm/i915/.gitignore
> new file mode 100644
> index 000000000000..cff45d81f42f
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/.gitignore
> @@ -0,0 +1 @@
> +header_test_*.c
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 30bf3301ea24..91eaccca4f4f 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -32,6 +32,11 @@ CFLAGS_intel_fbdev.o = $(call cc-disable-warning, override-init)
> subdir-ccflags-y += \
> $(call as-instr,movntdqa (%eax)$(comma)%xmm0,-DCONFIG_AS_MOVNTDQA)
>
> +# Extra header tests
> +ifeq ($(CONFIG_DRM_I915_WERROR),y)
> +include $(src)/Makefile.header-test
> +endif
> +
Agreed on adding this first, though you'll need to omit -j to actually
make it happen first.
> # Please keep these build lists sorted!
>
> # core driver code
> @@ -57,17 +62,6 @@ i915-$(CONFIG_COMPAT) += i915_ioc32.o
> i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o intel_pipe_crc.o
> i915-$(CONFIG_PERF_EVENTS) += i915_pmu.o
>
> -# Test the headers are compilable as standalone units
> -i915-$(CONFIG_DRM_I915_WERROR) += \
> - test_i915_active_types_standalone.o \
> - test_i915_gem_context_types_standalone.o \
> - test_i915_priolist_types_standalone.o \
> - test_i915_scheduler_types_standalone.o \
> - test_i915_timeline_types_standalone.o \
> - test_intel_context_types_standalone.o \
> - test_intel_engine_types_standalone.o \
> - test_intel_workarounds_types_standalone.o
> -
> # GEM code
> i915-y += \
> i915_active.o \
> diff --git a/drivers/gpu/drm/i915/Makefile.header-test b/drivers/gpu/drm/i915/Makefile.header-test
> new file mode 100644
> index 000000000000..5396bd6bae4c
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/Makefile.header-test
> @@ -0,0 +1,24 @@
> +# SPDX-License-Identifier: MIT
> +# Copyright © 2019 Intel Corporation
> +
> +# Test the headers are compilable as standalone units
> +header_test := \
> + i915_active_types.h \
> + i915_gem_context_types.h \
> + i915_priolist_types.h \
> + i915_scheduler_types.h \
> + i915_timeline_types.h \
> + intel_context_types.h \
> + intel_engine_types.h \
> + intel_workarounds_types.h
> +
> +quiet_cmd_header_test = HDRTEST $@
> + cmd_header_test = echo "\#include \"$(<F)\"" > $@
> +
> +header_test_%.c: %.h
> + $(call cmd,header_test)
> +
> +# To test <base>.h add header_test_<base>.o here
The comment just became stale.
> +extra-y += $(foreach h,$(header_test),$(patsubst %.h,header_test_%.o,$(h)))
Nice.
For making subdirs work, I think the rules should be separate from
declaring the headers to test, i.e. each subdir needs to have a Makefile
that's included using "obj-y += subdir/" in the parent instead of
"include $(src)/subdir/Makefile". Ideally, the rules would be in the
global Makefile.build... using something like "headertest-y". But let's
not get ahead of ourselves.
> +
> +clean-files += $(foreach h,$(header_test),$(patsubst %.h,header_test_%.c,$(h)))
> diff --git a/drivers/gpu/drm/i915/test_i915_active_types_standalone.c b/drivers/gpu/drm/i915/test_i915_active_types_standalone.c
> deleted file mode 100644
> index 144ebd153e57..000000000000
> --- a/drivers/gpu/drm/i915/test_i915_active_types_standalone.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -/*
> - * SPDX-License-Identifier: MIT
> - *
> - * Copyright © 2019 Intel Corporation
> - */
> -
> -#include "i915_active_types.h"
> diff --git a/drivers/gpu/drm/i915/test_i915_gem_context_types_standalone.c b/drivers/gpu/drm/i915/test_i915_gem_context_types_standalone.c
> deleted file mode 100644
> index 4e4da4860bc2..000000000000
> --- a/drivers/gpu/drm/i915/test_i915_gem_context_types_standalone.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -/*
> - * SPDX-License-Identifier: MIT
> - *
> - * Copyright © 2019 Intel Corporation
> - */
> -
> -#include "i915_gem_context_types.h"
> diff --git a/drivers/gpu/drm/i915/test_i915_priolist_types_standalone.c b/drivers/gpu/drm/i915/test_i915_priolist_types_standalone.c
> deleted file mode 100644
> index f465eb99bb47..000000000000
> --- a/drivers/gpu/drm/i915/test_i915_priolist_types_standalone.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -/*
> - * SPDX-License-Identifier: MIT
> - *
> - * Copyright © 2019 Intel Corporation
> - */
> -
> -#include "i915_priolist_types.h"
> diff --git a/drivers/gpu/drm/i915/test_i915_scheduler_types_standalone.c b/drivers/gpu/drm/i915/test_i915_scheduler_types_standalone.c
> deleted file mode 100644
> index 8afa2c3719fb..000000000000
> --- a/drivers/gpu/drm/i915/test_i915_scheduler_types_standalone.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -/*
> - * SPDX-License-Identifier: MIT
> - *
> - * Copyright © 2019 Intel Corporation
> - */
> -
> -#include "i915_scheduler_types.h"
> diff --git a/drivers/gpu/drm/i915/test_i915_timeline_types_standalone.c b/drivers/gpu/drm/i915/test_i915_timeline_types_standalone.c
> deleted file mode 100644
> index f58e148e8946..000000000000
> --- a/drivers/gpu/drm/i915/test_i915_timeline_types_standalone.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -/*
> - * SPDX-License-Identifier: MIT
> - *
> - * Copyright © 2019 Intel Corporation
> - */
> -
> -#include "i915_timeline_types.h"
> diff --git a/drivers/gpu/drm/i915/test_intel_context_types_standalone.c b/drivers/gpu/drm/i915/test_intel_context_types_standalone.c
> deleted file mode 100644
> index b39e3c4e6551..000000000000
> --- a/drivers/gpu/drm/i915/test_intel_context_types_standalone.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -/*
> - * SPDX-License-Identifier: MIT
> - *
> - * Copyright © 2019 Intel Corporation
> - */
> -
> -#include "intel_context_types.h"
> diff --git a/drivers/gpu/drm/i915/test_intel_engine_types_standalone.c b/drivers/gpu/drm/i915/test_intel_engine_types_standalone.c
> deleted file mode 100644
> index d05e4cdcbcf9..000000000000
> --- a/drivers/gpu/drm/i915/test_intel_engine_types_standalone.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -/*
> - * SPDX-License-Identifier: MIT
> - *
> - * Copyright © 2019 Intel Corporation
> - */
> -
> -#include "intel_engine_types.h"
> diff --git a/drivers/gpu/drm/i915/test_intel_workarounds_types_standalone.c b/drivers/gpu/drm/i915/test_intel_workarounds_types_standalone.c
> deleted file mode 100644
> index 4f658bb00825..000000000000
> --- a/drivers/gpu/drm/i915/test_intel_workarounds_types_standalone.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -/*
> - * SPDX-License-Identifier: MIT
> - *
> - * Copyright © 2019 Intel Corporation
> - */
> -
> -#include "intel_workarounds_types.h"
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2019-04-03 11:42 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-03 10:06 [PATCH] drm/i915: add Makefile magic for testing headers are self-contained Jani Nikula
2019-04-03 10:10 ` Chris Wilson
2019-04-03 10:12 ` Chris Wilson
2019-04-03 10:19 ` Chris Wilson
2019-04-03 10:38 ` Chris Wilson
2019-04-03 11:44 ` Jani Nikula [this message]
2019-04-03 10:57 ` Chris Wilson
2019-04-03 11:40 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: add Makefile magic for testing headers are self-contained (rev2) Patchwork
2019-04-03 11:40 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-04-03 12:05 ` ✓ Fi.CI.BAT: success " Patchwork
2019-04-03 13:32 ` [PATCH v3] drm/i915: add Makefile magic for testing headers are self-contained Jani Nikula
2019-04-03 13:36 ` Chris Wilson
2019-04-03 13:53 ` Jani Nikula
2019-04-03 13:52 ` [PATCH v4] " Jani Nikula
2019-04-03 15:35 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: add Makefile magic for testing headers are self-contained (rev4) Patchwork
2019-04-03 15:36 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-04-03 16:34 ` ✓ Fi.CI.BAT: success " Patchwork
2019-04-04 6:58 ` ✗ Fi.CI.IGT: failure " Patchwork
2019-04-04 17:24 ` 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=87mul7z51o.fsf@intel.com \
--to=jani.nikula@intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox