Makefile 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. # SPDX-License-Identifier: GPL-2.0
  2. # Makefile for the drm device driver. This driver provides support for the
  3. # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
  4. CFLAGS-$(CONFIG_DRM_USE_DYNAMIC_DEBUG) += -DDYNAMIC_DEBUG_MODULE
  5. # Unconditionally enable W=1 warnings locally
  6. # --- begin copy-paste W=1 warnings from scripts/Makefile.warn
  7. subdir-ccflags-y += -Wextra -Wunused -Wno-unused-parameter
  8. subdir-ccflags-y += $(call cc-option, -Wrestrict)
  9. subdir-ccflags-y += -Wmissing-format-attribute
  10. subdir-ccflags-y += -Wold-style-definition
  11. subdir-ccflags-y += -Wmissing-include-dirs
  12. subdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable)
  13. subdir-ccflags-y += $(call cc-option, -Wunused-const-variable)
  14. subdir-ccflags-y += $(call cc-option, -Wpacked-not-aligned)
  15. subdir-ccflags-y += $(call cc-option, -Wformat-overflow)
  16. # FIXME: fix -Wformat-truncation warnings and uncomment
  17. #subdir-ccflags-y += $(call cc-option, -Wformat-truncation)
  18. subdir-ccflags-y += $(call cc-option, -Wstringop-truncation)
  19. # The following turn off the warnings enabled by -Wextra
  20. ifeq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
  21. subdir-ccflags-y += -Wno-missing-field-initializers
  22. subdir-ccflags-y += -Wno-shift-negative-value
  23. endif
  24. ifeq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
  25. subdir-ccflags-y += -Wno-sign-compare
  26. endif
  27. # --- end copy-paste
  28. # Enable -Werror in CI and development
  29. subdir-ccflags-$(CONFIG_DRM_WERROR) += -Werror
  30. drm-y := \
  31. drm_atomic.o \
  32. drm_atomic_uapi.o \
  33. drm_auth.o \
  34. drm_blend.o \
  35. drm_bridge.o \
  36. drm_cache.o \
  37. drm_color_mgmt.o \
  38. drm_colorop.o \
  39. drm_connector.o \
  40. drm_crtc.o \
  41. drm_displayid.o \
  42. drm_drv.o \
  43. drm_dumb_buffers.o \
  44. drm_edid.o \
  45. drm_eld.o \
  46. drm_encoder.o \
  47. drm_file.o \
  48. drm_fourcc.o \
  49. drm_framebuffer.o \
  50. drm_gem.o \
  51. drm_ioctl.o \
  52. drm_lease.o \
  53. drm_managed.o \
  54. drm_mm.o \
  55. drm_mode_config.o \
  56. drm_mode_object.o \
  57. drm_modes.o \
  58. drm_modeset_lock.o \
  59. drm_plane.o \
  60. drm_prime.o \
  61. drm_print.o \
  62. drm_property.o \
  63. drm_rect.o \
  64. drm_syncobj.o \
  65. drm_sysfs.o \
  66. drm_trace_points.o \
  67. drm_vblank.o \
  68. drm_vblank_work.o \
  69. drm_vma_manager.o \
  70. drm_writeback.o
  71. drm-$(CONFIG_DRM_CLIENT) += \
  72. drm_client.o \
  73. drm_client_event.o \
  74. drm_client_modeset.o \
  75. drm_client_sysrq.o
  76. drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o
  77. drm-$(CONFIG_COMPAT) += drm_ioc32.o
  78. drm-$(CONFIG_DRM_PANEL) += drm_panel.o
  79. drm-$(CONFIG_OF) += drm_of.o
  80. drm-$(CONFIG_PCI) += drm_pci.o
  81. drm-$(CONFIG_DEBUG_FS) += \
  82. drm_debugfs.o \
  83. drm_debugfs_crc.o
  84. drm-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o
  85. drm-$(CONFIG_DRM_PRIVACY_SCREEN) += \
  86. drm_privacy_screen.o \
  87. drm_privacy_screen_x86.o
  88. drm-$(CONFIG_DRM_ACCEL) += ../../accel/drm_accel.o
  89. drm-$(CONFIG_DRM_PANIC) += drm_panic.o
  90. drm-$(CONFIG_DRM_DRAW) += drm_draw.o
  91. drm-$(CONFIG_DRM_PANIC_SCREEN_QR_CODE) += drm_panic_qr.o
  92. obj-$(CONFIG_DRM) += drm.o
  93. obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o
  94. obj-$(CONFIG_DRM_PANEL_BACKLIGHT_QUIRKS) += drm_panel_backlight_quirks.o
  95. #
  96. # Memory-management helpers
  97. #
  98. #
  99. obj-$(CONFIG_DRM_EXEC) += drm_exec.o
  100. obj-$(CONFIG_DRM_GPUVM) += drm_gpuvm.o
  101. drm_gpusvm_helper-y := \
  102. drm_gpusvm.o
  103. drm_gpusvm_helper-$(CONFIG_ZONE_DEVICE) += \
  104. drm_pagemap.o\
  105. drm_pagemap_util.o
  106. obj-$(CONFIG_DRM_GPUSVM) += drm_gpusvm_helper.o
  107. obj-$(CONFIG_DRM_BUDDY) += drm_buddy.o
  108. drm_dma_helper-y := drm_gem_dma_helper.o
  109. drm_dma_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_dma.o
  110. drm_dma_helper-$(CONFIG_DRM_KMS_HELPER) += drm_fb_dma_helper.o
  111. obj-$(CONFIG_DRM_GEM_DMA_HELPER) += drm_dma_helper.o
  112. drm_shmem_helper-y := drm_gem_shmem_helper.o
  113. drm_shmem_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_shmem.o
  114. obj-$(CONFIG_DRM_GEM_SHMEM_HELPER) += drm_shmem_helper.o
  115. drm_suballoc_helper-y := drm_suballoc.o
  116. obj-$(CONFIG_DRM_SUBALLOC_HELPER) += drm_suballoc_helper.o
  117. drm_vram_helper-y := drm_gem_vram_helper.o
  118. obj-$(CONFIG_DRM_VRAM_HELPER) += drm_vram_helper.o
  119. drm_ttm_helper-y := drm_gem_ttm_helper.o
  120. drm_ttm_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_ttm.o
  121. obj-$(CONFIG_DRM_TTM_HELPER) += drm_ttm_helper.o
  122. #
  123. # Modesetting helpers
  124. #
  125. drm_kms_helper-y := \
  126. drm_atomic_helper.o \
  127. drm_atomic_state_helper.o \
  128. drm_bridge_helper.o \
  129. drm_crtc_helper.o \
  130. drm_damage_helper.o \
  131. drm_flip_work.o \
  132. drm_format_helper.o \
  133. drm_gem_atomic_helper.o \
  134. drm_gem_framebuffer_helper.o \
  135. drm_kms_helper_common.o \
  136. drm_modeset_helper.o \
  137. drm_plane_helper.o \
  138. drm_probe_helper.o \
  139. drm_self_refresh_helper.o \
  140. drm_simple_kms_helper.o \
  141. drm_vblank_helper.o
  142. drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o
  143. drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o
  144. obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
  145. #
  146. # Drivers and the rest
  147. #
  148. obj-y += tests/
  149. obj-$(CONFIG_DRM_MIPI_DBI) += drm_mipi_dbi.o
  150. obj-$(CONFIG_DRM_MIPI_DSI) += drm_mipi_dsi.o
  151. obj-y += arm/
  152. obj-y += clients/
  153. obj-y += display/
  154. obj-$(CONFIG_DRM_TTM) += ttm/
  155. obj-$(CONFIG_DRM_SCHED) += scheduler/
  156. obj-$(CONFIG_DRM_RADEON)+= radeon/
  157. obj-$(CONFIG_DRM_AMDGPU)+= amd/amdgpu/
  158. obj-$(CONFIG_DRM_AMDGPU)+= amd/amdxcp/
  159. obj-$(CONFIG_DRM_I915) += i915/
  160. obj-$(CONFIG_DRM_XE) += xe/
  161. obj-$(CONFIG_DRM_KMB_DISPLAY) += kmb/
  162. obj-$(CONFIG_DRM_MGAG200) += mgag200/
  163. obj-$(CONFIG_DRM_V3D) += v3d/
  164. obj-$(CONFIG_DRM_VC4) += vc4/
  165. obj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/
  166. obj-$(CONFIG_DRM_VGEM) += vgem/
  167. obj-$(CONFIG_DRM_VKMS) += vkms/
  168. obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/
  169. obj-$(CONFIG_DRM_NOVA) += nova/
  170. obj-$(CONFIG_DRM_EXYNOS) +=exynos/
  171. obj-$(CONFIG_DRM_ROCKCHIP) +=rockchip/
  172. obj-$(CONFIG_DRM_GMA500) += gma500/
  173. obj-$(CONFIG_DRM_UDL) += udl/
  174. obj-$(CONFIG_DRM_AST) += ast/
  175. obj-$(CONFIG_DRM_ARMADA) += armada/
  176. obj-$(CONFIG_DRM_ATMEL_HLCDC) += atmel-hlcdc/
  177. obj-y += renesas/
  178. obj-y += omapdrm/
  179. obj-$(CONFIG_DRM_SUN4I) += sun4i/
  180. obj-y += tilcdc/
  181. obj-$(CONFIG_DRM_QXL) += qxl/
  182. obj-$(CONFIG_DRM_VIRTIO_GPU) += virtio/
  183. obj-$(CONFIG_DRM_MSM) += msm/
  184. obj-$(CONFIG_DRM_TEGRA) += tegra/
  185. obj-$(CONFIG_DRM_STM) += stm/
  186. obj-$(CONFIG_DRM_STI) += sti/
  187. obj-y += imx/
  188. obj-$(CONFIG_DRM_INGENIC) += ingenic/
  189. obj-$(CONFIG_DRM_LOGICVC) += logicvc/
  190. obj-$(CONFIG_DRM_MEDIATEK) += mediatek/
  191. obj-$(CONFIG_DRM_MESON) += meson/
  192. obj-y += panel/
  193. obj-y += bridge/
  194. obj-$(CONFIG_DRM_FSL_DCU) += fsl-dcu/
  195. obj-$(CONFIG_DRM_ETNAVIV) += etnaviv/
  196. obj-y += hisilicon/
  197. obj-y += mxsfb/
  198. obj-y += sysfb/
  199. obj-y += tiny/
  200. obj-$(CONFIG_DRM_PL111) += pl111/
  201. obj-$(CONFIG_DRM_TVE200) += tve200/
  202. obj-$(CONFIG_DRM_ADP) += adp/
  203. obj-$(CONFIG_DRM_XEN) += xen/
  204. obj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo/
  205. obj-$(CONFIG_DRM_LIMA) += lima/
  206. obj-$(CONFIG_DRM_PANFROST) += panfrost/
  207. obj-$(CONFIG_DRM_PANTHOR) += panthor/
  208. obj-$(CONFIG_DRM_TYR) += tyr/
  209. obj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/
  210. obj-$(CONFIG_DRM_MCDE) += mcde/
  211. obj-$(CONFIG_DRM_TIDSS) += tidss/
  212. obj-y += xlnx/
  213. obj-y += gud/
  214. obj-$(CONFIG_DRM_HYPERV) += hyperv/
  215. obj-y += sitronix/
  216. obj-y += solomon/
  217. obj-$(CONFIG_DRM_SPRD) += sprd/
  218. obj-$(CONFIG_DRM_LOONGSON) += loongson/
  219. obj-$(CONFIG_DRM_POWERVR) += imagination/
  220. # Ensure drm headers are self-contained and pass kernel-doc
  221. hdrtest-files := \
  222. $(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \
  223. $(shell cd $(src) && find display lib -name '*.h')
  224. always-$(CONFIG_DRM_HEADER_TEST) += \
  225. $(patsubst %.h,%.hdrtest, $(hdrtest-files))
  226. # Include the header twice to detect missing include guard.
  227. quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
  228. cmd_hdrtest = \
  229. $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
  230. PYTHONDONTWRITEBYTECODE=1 $(PYTHON3) $(KERNELDOC) -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
  231. touch $@
  232. $(obj)/%.hdrtest: $(src)/%.h FORCE
  233. $(call if_changed_dep,hdrtest)