xref: /linux/drivers/gpu/drm/Makefile (revision 4f38da1f027ea2c9f01bb71daa7a299c191b6940)
1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
29026e0d1SMaxime Ripard
3c0e09200SDave Airlie# Makefile for the drm device driver.  This driver provides support for the
4c0e09200SDave Airlie# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
5c0e09200SDave Airlie
684ec6728SJim CromieCFLAGS-$(CONFIG_DRM_USE_DYNAMIC_DEBUG)	+= -DDYNAMIC_DEBUG_MODULE
784ec6728SJim Cromie
8a61ddb43SJani Nikula# Unconditionally enable W=1 warnings locally
9a61ddb43SJani Nikula# --- begin copy-paste W=1 warnings from scripts/Makefile.extrawarn
10a61ddb43SJani Nikulasubdir-ccflags-y += -Wextra -Wunused -Wno-unused-parameter
11a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wrestrict)
12a61ddb43SJani Nikulasubdir-ccflags-y += -Wmissing-format-attribute
13a61ddb43SJani Nikulasubdir-ccflags-y += -Wold-style-definition
14a61ddb43SJani Nikulasubdir-ccflags-y += -Wmissing-include-dirs
15a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable)
16a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wunused-const-variable)
17a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wpacked-not-aligned)
18a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wformat-overflow)
19a61ddb43SJani Nikula# FIXME: fix -Wformat-truncation warnings and uncomment
20a61ddb43SJani Nikula#subdir-ccflags-y += $(call cc-option, -Wformat-truncation)
21a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wstringop-truncation)
22a61ddb43SJani Nikula# The following turn off the warnings enabled by -Wextra
23a61ddb43SJani Nikulaifeq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
24a61ddb43SJani Nikulasubdir-ccflags-y += -Wno-missing-field-initializers
25a61ddb43SJani Nikulasubdir-ccflags-y += -Wno-type-limits
26a61ddb43SJani Nikulasubdir-ccflags-y += -Wno-shift-negative-value
27a61ddb43SJani Nikulaendif
28a61ddb43SJani Nikulaifeq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
29a61ddb43SJani Nikulasubdir-ccflags-y += -Wno-sign-compare
30a61ddb43SJani Nikulaendif
31a61ddb43SJani Nikula# --- end copy-paste
32a61ddb43SJani Nikula
33f89632a9SJani Nikula# Enable -Werror in CI and development
34f89632a9SJani Nikulasubdir-ccflags-$(CONFIG_DRM_WERROR) += -Werror
35f89632a9SJani Nikula
36ca002242SJani Nikuladrm-y := \
37ca002242SJani Nikula	drm_atomic.o \
38ca002242SJani Nikula	drm_atomic_uapi.o \
39ca002242SJani Nikula	drm_auth.o \
40ca002242SJani Nikula	drm_blend.o \
41ca002242SJani Nikula	drm_bridge.o \
42ca002242SJani Nikula	drm_cache.o \
43ca002242SJani Nikula	drm_color_mgmt.o \
44ca002242SJani Nikula	drm_connector.o \
45ca002242SJani Nikula	drm_crtc.o \
46ca002242SJani Nikula	drm_displayid.o \
47413c6466SThomas Zimmermann	drm_drv.o \
48ca002242SJani Nikula	drm_dumb_buffers.o \
49ca002242SJani Nikula	drm_edid.o \
50f415a607SJani Nikula	drm_eld.o \
51ca002242SJani Nikula	drm_encoder.o \
52ca002242SJani Nikula	drm_file.o \
53ca002242SJani Nikula	drm_fourcc.o \
54ca002242SJani Nikula	drm_framebuffer.o \
55ca002242SJani Nikula	drm_gem.o \
56ca002242SJani Nikula	drm_ioctl.o \
57ca002242SJani Nikula	drm_lease.o \
58ca002242SJani Nikula	drm_managed.o \
59ca002242SJani Nikula	drm_mm.o \
60ca002242SJani Nikula	drm_mode_config.o \
61ca002242SJani Nikula	drm_mode_object.o \
62ca002242SJani Nikula	drm_modes.o \
63ca002242SJani Nikula	drm_modeset_lock.o \
64ca002242SJani Nikula	drm_plane.o \
65ca002242SJani Nikula	drm_prime.o \
66ca002242SJani Nikula	drm_print.o \
67ca002242SJani Nikula	drm_property.o \
68e0a8f8c6SThomas Zimmermann	drm_rect.o \
69ca002242SJani Nikula	drm_syncobj.o \
70ca002242SJani Nikula	drm_sysfs.o \
71ca002242SJani Nikula	drm_trace_points.o \
72ca002242SJani Nikula	drm_vblank.o \
73ca002242SJani Nikula	drm_vblank_work.o \
7472071beeSThomas Zimmermann	drm_vma_manager.o \
75ca002242SJani Nikula	drm_writeback.o
761f828b4dSThomas Zimmermanndrm-$(CONFIG_DRM_CLIENT) += \
771f828b4dSThomas Zimmermann	drm_client.o \
781f828b4dSThomas Zimmermann	drm_client_event.o \
791f828b4dSThomas Zimmermann	drm_client_modeset.o
80a33d42ddSChris Wilsondrm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o
81c0e09200SDave Airliedrm-$(CONFIG_COMPAT) += drm_ioc32.o
82aead40eaSThierry Redingdrm-$(CONFIG_DRM_PANEL) += drm_panel.o
837e435aadSRussell Kingdrm-$(CONFIG_OF) += drm_of.o
845c7a0bb0SThomas Zimmermanndrm-$(CONFIG_PCI) += drm_pci.o
85ca002242SJani Nikuladrm-$(CONFIG_DEBUG_FS) += \
86ca002242SJani Nikula	drm_debugfs.o \
87ca002242SJani Nikula	drm_debugfs_crc.o
8853fd40a9SJani Nikuladrm-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o
89ca002242SJani Nikuladrm-$(CONFIG_DRM_PRIVACY_SCREEN) += \
90ca002242SJani Nikula	drm_privacy_screen.o \
91ca002242SJani Nikula	drm_privacy_screen_x86.o
928bf48897SOded Gabbaydrm-$(CONFIG_DRM_ACCEL) += ../../accel/drm_accel.o
93bf9fb17cSJocelyn Falempedrm-$(CONFIG_DRM_PANIC) += drm_panic.o
9431fa2c1cSJocelyn Falempedrm-$(CONFIG_DRM_DRAW) += drm_draw.o
95cb5164acSJocelyn Falempedrm-$(CONFIG_DRM_PANIC_SCREEN_QR_CODE) += drm_panic_qr.o
96c6eafc99SThomas Zimmermannobj-$(CONFIG_DRM)	+= drm.o
97c0e09200SDave Airlie
98c6eafc99SThomas Zimmermannobj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o
9922e5c7aeSThomas Weißschuhobj-$(CONFIG_DRM_PANEL_BACKLIGHT_QUIRKS) += drm_panel_backlight_quirks.o
100c6eafc99SThomas Zimmermann
101c6eafc99SThomas Zimmermann#
102c6eafc99SThomas Zimmermann# Memory-management helpers
103c6eafc99SThomas Zimmermann#
10409593216SChristian König#
10509593216SChristian Königobj-$(CONFIG_DRM_EXEC) += drm_exec.o
106fe7acaa7SDanilo Krummrichobj-$(CONFIG_DRM_GPUVM) += drm_gpuvm.o
107f86ad0edSMatthew Brost
108f86ad0edSMatthew Brostdrm_gpusvm_helper-y := \
109f86ad0edSMatthew Brost	drm_gpusvm.o\
110f86ad0edSMatthew Brost	drm_pagemap.o
111f86ad0edSMatthew Brostobj-$(CONFIG_DRM_GPUSVM) += drm_gpusvm_helper.o
112c6eafc99SThomas Zimmermann
113c6eafc99SThomas Zimmermannobj-$(CONFIG_DRM_BUDDY) += drm_buddy.o
1146a2d2ddfSJavier Martinez Canillas
1154a83c26aSDanilo Krummrichdrm_dma_helper-y := drm_gem_dma_helper.o
116b79fe9abSThomas Zimmermanndrm_dma_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_dma.o
1174a83c26aSDanilo Krummrichdrm_dma_helper-$(CONFIG_DRM_KMS_HELPER) += drm_fb_dma_helper.o
1184a83c26aSDanilo Krummrichobj-$(CONFIG_DRM_GEM_DMA_HELPER) += drm_dma_helper.o
1194b2b5e14SThomas Zimmermann
1204b2b5e14SThomas Zimmermanndrm_shmem_helper-y := drm_gem_shmem_helper.o
121150f431aSThomas Zimmermanndrm_shmem_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_shmem.o
1224b2b5e14SThomas Zimmermannobj-$(CONFIG_DRM_GEM_SHMEM_HELPER) += drm_shmem_helper.o
1234b2b5e14SThomas Zimmermann
124849ee8a2SMaarten Lankhorstdrm_suballoc_helper-y := drm_suballoc.o
125849ee8a2SMaarten Lankhorstobj-$(CONFIG_DRM_SUBALLOC_HELPER) += drm_suballoc_helper.o
126849ee8a2SMaarten Lankhorst
127b22b51a0SThomas Zimmermanndrm_vram_helper-y := drm_gem_vram_helper.o
12885438a8dSThomas Zimmermannobj-$(CONFIG_DRM_VRAM_HELPER) += drm_vram_helper.o
12985438a8dSThomas Zimmermann
130ff540b76SGerd Hoffmanndrm_ttm_helper-y := drm_gem_ttm_helper.o
131aae4682eSThomas Zimmermanndrm_ttm_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_ttm.o
132ff540b76SGerd Hoffmannobj-$(CONFIG_DRM_TTM_HELPER) += drm_ttm_helper.o
133ff540b76SGerd Hoffmann
134c6eafc99SThomas Zimmermann#
135c6eafc99SThomas Zimmermann# Modesetting helpers
136c6eafc99SThomas Zimmermann#
137c6eafc99SThomas Zimmermann
138ca002242SJani Nikuladrm_kms_helper-y := \
139ca002242SJani Nikula	drm_atomic_helper.o \
140ca002242SJani Nikula	drm_atomic_state_helper.o \
14156ae6212SMaxime Ripard	drm_bridge_helper.o \
142ca002242SJani Nikula	drm_crtc_helper.o \
143ca002242SJani Nikula	drm_damage_helper.o \
144ca002242SJani Nikula	drm_flip_work.o \
145ca002242SJani Nikula	drm_format_helper.o \
146644edf52SThomas Zimmermann	drm_gem_atomic_helper.o \
1476dd7b6ceSThomas Zimmermann	drm_gem_framebuffer_helper.o \
148ca002242SJani Nikula	drm_kms_helper_common.o \
149ca002242SJani Nikula	drm_modeset_helper.o \
150ca002242SJani Nikula	drm_plane_helper.o \
151ca002242SJani Nikula	drm_probe_helper.o \
152ca002242SJani Nikula	drm_self_refresh_helper.o \
153ca002242SJani Nikula	drm_simple_kms_helper.o
154123387d5SMaarten Lankhorstdrm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o
155dadd28d4SThomas Zimmermanndrm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o
1566fcefd56SDave Airlieobj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
157c6eafc99SThomas Zimmermann
158c6eafc99SThomas Zimmermann#
159c6eafc99SThomas Zimmermann# Drivers and the rest
160c6eafc99SThomas Zimmermann#
161c6eafc99SThomas Zimmermann
162b85be042SMaxime Ripardobj-y			+= tests/
16313a8195bSDave Airlie
164174102f4SNoralf Trønnesobj-$(CONFIG_DRM_MIPI_DBI) += drm_mipi_dbi.o
165068a0023SAndrzej Hajdaobj-$(CONFIG_DRM_MIPI_DSI) += drm_mipi_dsi.o
16637fc9bb0Sjames qian wang (Arm Technology China)obj-y			+= arm/
167a49e7e81SThomas Zimmermannobj-y			+= clients/
168da68386dSThomas Zimmermannobj-y			+= display/
169176f613eSJerome Glisseobj-$(CONFIG_DRM_TTM)	+= ttm/
17087440329SChristian Königobj-$(CONFIG_DRM_SCHED)	+= scheduler/
171c0e09200SDave Airlieobj-$(CONFIG_DRM_RADEON)+= radeon/
172d38ceaf9SAlex Deucherobj-$(CONFIG_DRM_AMDGPU)+= amd/amdgpu/
1733b60b70dSJames Zhuobj-$(CONFIG_DRM_AMDGPU)+= amd/amdxcp/
174c0e09200SDave Airlieobj-$(CONFIG_DRM_I915)	+= i915/
175dd08ebf6SMatthew Brostobj-$(CONFIG_DRM_XE)	+= xe/
176ed794057SAnitha Chrisanthusobj-$(CONFIG_DRM_KMB_DISPLAY)  += kmb/
177414c4531SDave Airlieobj-$(CONFIG_DRM_MGAG200) += mgag200/
17857692c94SEric Anholtobj-$(CONFIG_DRM_V3D)  += v3d/
179c8b75bcaSEric Anholtobj-$(CONFIG_DRM_VC4)  += vc4/
180fb1d9738SJakob Bornecrantzobj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/
181502e95c6SZach Reiznerobj-$(CONFIG_DRM_VGEM)	+= vgem/
1821c7c5fd9SHaneen Mohammedobj-$(CONFIG_DRM_VKMS)	+= vkms/
1836ee73861SBen Skeggsobj-$(CONFIG_DRM_NOUVEAU) +=nouveau/
184cdeaeb9dSDanilo Krummrichobj-$(CONFIG_DRM_NOVA) += nova/
1851c248b7dSInki Daeobj-$(CONFIG_DRM_EXYNOS) +=exynos/
1862048e328SMark Yaoobj-$(CONFIG_DRM_ROCKCHIP) +=rockchip/
18791c75492SAlan Coxobj-$(CONFIG_DRM_GMA500) += gma500/
1885320918bSDave Airlieobj-$(CONFIG_DRM_UDL) += udl/
189312fec14SDave Airlieobj-$(CONFIG_DRM_AST) += ast/
19096f60e37SRussell Kingobj-$(CONFIG_DRM_ARMADA) += armada/
1911a396789SBoris Brezillonobj-$(CONFIG_DRM_ATMEL_HLCDC)	+= atmel-hlcdc/
19211696c5eSBiju Dasobj-y			+= renesas/
1939960aa7cSTomi Valkeinenobj-y			+= omapdrm/
1949026e0d1SMaxime Ripardobj-$(CONFIG_DRM_SUN4I) += sun4i/
195c87d2453SJyri Sarhaobj-y			+= tilcdc/
196f64122c1SDave Airlieobj-$(CONFIG_DRM_QXL) += qxl/
197dc5698e8SDave Airlieobj-$(CONFIG_DRM_VIRTIO_GPU) += virtio/
198c8afe684SRob Clarkobj-$(CONFIG_DRM_MSM) += msm/
199dee8268fSThierry Redingobj-$(CONFIG_DRM_TEGRA) += tegra/
200b759012cSYannick Fertreobj-$(CONFIG_DRM_STM) += stm/
201f2cb3148SBenjamin Gaignardobj-$(CONFIG_DRM_STI) += sti/
202ce625f45SLaurentiu Palcuobj-y 			+= imx/
20390b86fccSPaul Cercueilobj-$(CONFIG_DRM_INGENIC) += ingenic/
204efeeaefeSPaul Kocialkowskiobj-$(CONFIG_DRM_LOGICVC) += logicvc/
205119f5173SCK Huobj-$(CONFIG_DRM_MEDIATEK) += mediatek/
206bbbe775eSNeil Armstrongobj-$(CONFIG_DRM_MESON)	+= meson/
207280921deSThierry Redingobj-y			+= panel/
208a9fe713dSSean Paulobj-y			+= bridge/
209109eee2fSJianwei Wangobj-$(CONFIG_DRM_FSL_DCU) += fsl-dcu/
210a8c21a54SThe etnaviv authorsobj-$(CONFIG_DRM_ETNAVIV) += etnaviv/
21123e7b2abSXinliang Liuobj-y			+= hisilicon/
2129db35bb3SMarek Vasutobj-y			+= mxsfb/
213319251c5SThomas Zimmermannobj-y			+= sysfb/
214043386a0SNoralf Trønnesobj-y			+= tiny/
215bed41005STom Cookseyobj-$(CONFIG_DRM_PL111) += pl111/
216179c02feSLinus Walleijobj-$(CONFIG_DRM_TVE200) += tve200/
217332122ebSSasha Finkelsteinobj-$(CONFIG_DRM_ADP) += adp/
218c575b7eeSOleksandr Andrushchenkoobj-$(CONFIG_DRM_XEN) += xen/
219131abc56SHans de Goedeobj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo/
220a1d2a633SQiang Yuobj-$(CONFIG_DRM_LIMA)  += lima/
221f3ba9122SRob Herringobj-$(CONFIG_DRM_PANFROST) += panfrost/
222d72f0490SBoris Brezillonobj-$(CONFIG_DRM_PANTHOR) += panthor/
223*cf4fd52eSDaniel Almeidaobj-$(CONFIG_DRM_TYR) += tyr/
2244f2a8f58SJoel Stanleyobj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/
2255fc537bfSLinus Walleijobj-$(CONFIG_DRM_MCDE) += mcde/
22632a1795fSJyri Sarhaobj-$(CONFIG_DRM_TIDSS) += tidss/
227d76271d2SHyun Kwonobj-y			+= xlnx/
22840e1a70bSNoralf Trønnesobj-y			+= gud/
22976c56a5aSDeepak Rawatobj-$(CONFIG_DRM_HYPERV) += hyperv/
2309b8f3200SMarcus Folkessonobj-y			+= sitronix/
231a61732e8SJavier Martinez Canillasobj-y			+= solomon/
23243531eddSKevin Tangobj-$(CONFIG_DRM_SPRD) += sprd/
233f39db26cSSui Jingfengobj-$(CONFIG_DRM_LOONGSON) += loongson/
2344babef07SSarah Walkerobj-$(CONFIG_DRM_POWERVR) += imagination/
23562ae4568SJani Nikula
23662ae4568SJani Nikula# Ensure drm headers are self-contained and pass kernel-doc
23762ae4568SJani Nikulahdrtest-files := \
23862ae4568SJani Nikula	$(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \
23962ae4568SJani Nikula	$(shell cd $(src) && find display lib -name '*.h')
24062ae4568SJani Nikula
24162ae4568SJani Nikulaalways-$(CONFIG_DRM_HEADER_TEST) += \
24262ae4568SJani Nikula	$(patsubst %.h,%.hdrtest, $(hdrtest-files))
24362ae4568SJani Nikula
24462ae4568SJani Nikula# Include the header twice to detect missing include guard.
24562ae4568SJani Nikulaquiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
24662ae4568SJani Nikula      cmd_hdrtest = \
24762ae4568SJani Nikula		$(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
2485c5c32d7SMauro Carvalho Chehab		 PYTHONDONTWRITEBYTECODE=1 $(KERNELDOC) -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
24962ae4568SJani Nikula		touch $@
25062ae4568SJani Nikula
25162ae4568SJani Nikula$(obj)/%.hdrtest: $(src)/%.h FORCE
25262ae4568SJani Nikula	$(call if_changed_dep,hdrtest)
253