[PATCH libdrm] Update/fix the {copy,commit}-headers targets

Emil Velikov emil.l.velikov at gmail.com
Wed Jan 27 06:08:21 PST 2016


On 27 January 2016 at 13:50, Daniel Vetter <daniel at ffwll.ch> wrote:
> On Wed, Jan 27, 2016 at 01:23:11PM +0000, Emil Velikov wrote:
>> As some headers do not reside in include/drm we need to tweak our rules,
>> and exclude headers that shouldn't be distributed [XXX: clarify why ?].
>>
>> To avoid the extra magic of diving into the kernel tree running `make
>> headers_install', just sed out the only reason why we need it - __user.
>>
>> Cc: Alex Deucher <alexander.deucher at amd.com>
>> Cc: Michel Dänzer <michel.daenzer at amd.com>
>> Cc: Ben Skeggs <bskeggs at redhat.com>
>> Cc: Dave Airlie <airlied at redhat.com>
>> Cc: Daniel Stone <daniels at collabora.com>
>> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
>> Cc: Inki Dae <inki.dae at samsung.com>
>> Cc: Rob Clark <robclark at freedesktop.org>
>> Cc: Tomi Valkeinen <tomi.valkeinen at ti.com>
>> Cc: Daniel Kurtz <djkurtz at chromium.org>
>> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
>> ---
>>
>> Gents,
>> As one runs `make copy-headers' we get a massive diff stat (+1500/-800)
>> and a handful of issues gets pointed out.
>> Please let me know of your prefered solution (regardless if one will get
>> to it soon) and if we should consider it a blocker (B) or not (N).
>>
>> Thanks
>> Emil
>>
>>  - (N) Header license miss-match - omap, msm, exynos. Update the kernel
>> ones ?
>>
>>  - (N) Broken compat ioctls - exynos (and the UMS drivers) - using
>> unsigned int as opposed to _u32/64. Considering they're 32bit only, we
>> can get away with 'breaking' the ABI and using the proper ones ?
>>
>>  - (N, keep local for now) C++ compat - libdrm has a hack/workaround
>> (virtual is a keyword in C++), which I'd like us to upstream plus some
>> extern C wrappers.
>>
>>  - (?) Missing UMS symbols - see _DRM_GEM
>>
>>  - (?) Non C89 compliant (see DRM_DRAWABLE_CLIPRECTS) - do we still
>> want/need that ?
>>
>>  - (B) Using include <drm/...> as opposed to include "..." - drm.h,
>> nouveau_drm.h. Should be fixed in kernel.
>>
>>  - (N) ABI 'break'
>>   + drm - struct drm_mode_get_connector extra pad
>>   + tegra - struct drm_tegra_gem_mmap extra pad
>>
>>  - (B) API break
>>   + drm - missing DRM_MODE_OBJECT_*
>>   + nouveau - missing (gs)etparam - both structs and macros. everything
>> else is fine/unused.
>>   + radeon - RADEON_TILING_R600_NO_SCANOUT, CIK_TILE_MODE_COLOR_2D* and
>> CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_* - quick grep shows no users
>>   + omap - struct drm_omap_get_base, DRM_OMAP_GET_BASE + IOCTL
>>
>>  - (N) (unneeded?) API additions - nouveau's DRM_IOCTL_NOUVEAU_GEM_*
>>
>>  - (N) __KERNEL__ condiditionals. Is it really an issue - sure if looks
>> a bit spurious but that's about it.
>>
>>
>>  Makefile.am | 9 ++++++++-
>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/Makefile.am b/Makefile.am
>> index ca41508..6c71d3a 100644
>> --- a/Makefile.am
>> +++ b/Makefile.am
>> @@ -126,7 +126,14 @@ endif
>>
>>  copy-headers :
>>       cp -r $(kernel_source)/include/uapi/drm/*.h $(top_srcdir)/include/drm/
>> +     sed -i "s/__user //g" $(top_srcdir)/include/drm/*.h
>> +     mv $(top_srcdir)/include/drm/exynos_drm.h $(top_srcdir)/exynos/
>> +     mv $(top_srcdir)/include/drm/msm_drm.h $(top_srcdir)/freedreno/msm/
>> +     mv $(top_srcdir)/include/drm/omap_drm.h $(top_srcdir)/omap/
>> +     rm $(top_srcdir)/include/drm/armada_drm.h
>> +     rm $(top_srcdir)/include/drm/etnaviv_drm.h
>> +     rm $(top_srcdir)/include/drm/i810_drm.h
>> +     rm $(top_srcdir)/include/drm/vc4_drm.h
>
> You can't copy headers directly. First you need to generate them in the
> kernel sources:
>
> $ make headers_install
>
> Then you can copy them from usr/include/*
>
> That should at least get rid of the __KERNEL__ stuff. Then any serious
> issues should be fixed in the upstream kernel first.
I agree that copying the headers isn't that good of an idea. Then
again as that causes zero problems - it brings in __KERNEL__ and
__user, latter of which sed out. So wouldn't it be better to focus on
the serious issues first ? Of course, that doesn't mean we have to
forget about this one :-P

-Emil
P.S. Diving into other projects and executing make foo/bar is frowned
upon, normally.


More information about the dri-devel mailing list