xref: /netbsd-src/external/mit/xorg/lib/dri/Makefile (revision 1faf623fbf53b30583d4c65008aaac04269dce60)
1# $NetBSD: Makefile,v 1.43 2024/05/08 16:53:34 christos Exp $
2
3# Link the mesa_dri_drivers mega driver.
4
5NOLINT=		# Lots of "Unsupported platform" due to undefined __GNUC__
6
7.include <bsd.own.mk>
8
9.include "../mesa-which.mk"
10
11.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" || \
12    ${MACHINE} == "evbarm"
13
14LIBISMODULE=	yes
15LIBISCXX=     yes
16
17SHLIB_MAJOR=	0
18
19LIB=		mesa_dri_drivers
20DRIDIR=		${X11USRLIBDIR}/modules/dri
21DRIDEBUGDIR=	${DEBUGDIR}${X11USRLIBDIR}/modules/dri
22
23LDFLAGS+=	-Wl,--build-id=sha1
24
25#	-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/${MODULE}/server \
26
27CPPFLAGS+= \
28	-I${X11SRCDIR.Mesa}/src/egl/main \
29	-I${X11SRCDIR.Mesa}/src/egl/drivers/dri \
30	-I${X11SRCDIR.Mesa}/../src/mesa/drivers/dri/common \
31	-I${DESTDIR}${X11INCDIR}/libdrm \
32	-I${X11SRCDIR.Mesa}/../src/util
33
34.if ${MACHINE_ARCH} == "i386"
35CPPFLAGS.brw_disk_cache.c+=	-march=i586
36.endif
37
38#CPPFLAGS+=	-D_NETBSD_SOURCE -DPTHREADS
39
40# We don't actually build this on non-x86/non-evbarm at all, currently.
41# The following if statements are not effective since we only
42# get here for x86 and evbarm
43.if ${MACHINE_ARCH} == "alpha"
44DRIVERS=	r200 radeon
45.elif ${MACHINE} == "macppc" || ${MACHINE} == "ofppc"
46DRIVERS=	r200 radeon
47.elif ${MACHINE_ARCH} == "sparc64" || ${MACHINE_ARCH} == "sparc"
48DRIVERS=	r200 radeon
49.elif ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
50DRIVERS=	i915 i965 r200 radeon
51.elif ${MACHINE} == "prep" || ${MACHINE} == "bebox"
52DRIVERS=	r200 radeon
53.elif ${MACHINE} == "evbarm"
54DRIVERS=	r200 radeon
55.endif
56
57DRI_SUBDIRS= ${DRIVERS}
58
59.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
60
61DRI_SOURCES.i915+= \
62	i830_context.c \
63	i830_state.c \
64	i830_texblend.c \
65	i830_texstate.c \
66	i830_vtbl.c \
67	i915_context.c \
68	i915_debug_fp.c \
69	i915_fragprog.c \
70	i915_program.c \
71	i915_state.c \
72	i915_texstate.c \
73	i915_vtbl.c \
74	i915_tex_layout.c
75
76I915_INTEL_FILES = \
77	intel_batchbuffer.c \
78	intel_blit.c \
79	intel_buffer_objects.c \
80	intel_buffers.c \
81	intel_clear.c \
82	intel_context.c \
83	intel_extensions.c \
84	intel_fbo.c \
85	intel_mipmap_tree.c \
86	intel_pixel.c \
87	intel_pixel_bitmap.c \
88	intel_pixel_copy.c \
89	intel_pixel_draw.c \
90	intel_pixel_read.c \
91	intel_regions.c \
92	intel_render.c \
93	intel_screen.c \
94	intel_state.c \
95	intel_syncobj.c \
96	intel_tex.c \
97	intel_tex_copy.c \
98	intel_tex_image.c \
99	intel_tex_layout.c \
100	intel_tex_subimage.c \
101	intel_tex_validate.c \
102	intel_tris.c
103
104.for _f in ${I915_INTEL_FILES}
105BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i915/${_f} i915_${_f}
106DRI_SOURCES.i915+=	i915_${_f}
107CPPFLAGS.i915_${_f}+=	-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i915
108.endfor
109
110.PATH: ${X11SRCDIR.Mesa}/src/intel/blorp
111.PATH: ${X11SRCDIR.Mesa}/src/intel/common
112.PATH: ${X11SRCDIR.Mesa}/src/intel/compiler
113.PATH: ${X11SRCDIR.Mesa}/src/intel/dev
114.PATH: ${X11SRCDIR.Mesa}/src/intel/ds
115.PATH: ${X11SRCDIR.Mesa}/src/intel/isl
116.PATH: ${X11SRCDIR.Mesa}/src/intel/perf
117.PATH: ${X11SRCDIR.Mesa}/../src/intel/
118.PATH: ${X11SRCDIR.Mesa}/../src/intel/compiler
119.PATH: ${X11SRCDIR.Mesa}/../src/intel/isl
120.PATH: ${X11SRCDIR.Mesa}/../src/intel/perf
121
122DRI_SOURCES.i965+= \
123	blorp.c \
124	blorp_blit.c \
125	blorp_clear.c \
126	brw_batch.c \
127	brw_binding_tables.c \
128	brw_blit.c \
129	brw_blorp.c \
130	brw_mipmap_tree.c \
131	brw_buffer_objects.c \
132	brw_buffers.c \
133	brw_bufmgr.c \
134	brw_cfg.cpp \
135	brw_clear.c \
136	brw_clip.c \
137	brw_clip_line.c \
138	brw_clip_point.c \
139	brw_clip_tri.c \
140	brw_clip_unfilled.c \
141	brw_clip_util.c \
142	brw_compile_clip.c \
143	brw_compile_ff_gs.c \
144	brw_compile_sf.c \
145	brw_compiler.c \
146	brw_compute.c \
147	brw_conditional_render.c \
148	brw_context.c \
149	brw_copy_image.c \
150	brw_cs.c \
151	brw_curbe.c \
152	brw_dead_control_flow.cpp \
153	brw_debug_recompile.c \
154	brw_disasm.c \
155	brw_disasm_info.c \
156	brw_disk_cache.c \
157	brw_draw.c \
158	brw_draw_upload.c \
159	brw_eu.cpp \
160	brw_eu_compact.c \
161	brw_eu_emit.c \
162	brw_eu_util.c \
163	brw_eu_validate.c \
164	brw_extensions.c \
165	brw_fbo.c \
166	brw_fs.cpp \
167	brw_fs_bank_conflicts.cpp \
168	brw_fs_cmod_propagation.cpp \
169	brw_fs_combine_constants.cpp \
170	brw_fs_copy_propagation.cpp \
171	brw_fs_cse.cpp \
172	brw_fs_dead_code_eliminate.cpp \
173	brw_fs_generator.cpp \
174	brw_fs_live_variables.cpp \
175	brw_fs_lower_pack.cpp \
176	brw_fs_lower_regioning.cpp \
177	brw_fs_nir.cpp \
178	brw_fs_reg_allocate.cpp \
179	brw_ff_gs.c \
180	brw_formatquery.c \
181	brw_fs_register_coalesce.cpp \
182	brw_fs_saturate_propagation.cpp \
183	brw_fs_scoreboard.cpp \
184	brw_fs_sel_peephole.cpp \
185	brw_fs_validate.cpp \
186	brw_fs_visitor.cpp \
187	brw_generate_mipmap.c \
188	brw_gs.c \
189	brw_gs_surface_state.c \
190	brw_interpolation_map.c \
191	brw_ir_performance.cpp \
192	brw_link.cpp \
193	brw_meta_util.c \
194	brw_mipmap_tree.c \
195	brw_misc_state.c \
196	brw_nir.c \
197	brw_nir_analyze_boolean_resolves.c \
198	brw_nir_analyze_ubo_ranges.c \
199	brw_nir_attribute_workarounds.c \
200	brw_nir_clamp_image_1d_2d_array_sizes.c \
201	brw_nir_lower_alpha_to_coverage.c \
202	brw_nir_lower_conversions.c \
203	brw_nir_lower_cs_intrinsics.c \
204	brw_nir_lower_intersection_shader.c \
205	brw_nir_lower_mem_access_bit_sizes.c \
206	brw_nir_lower_rt_intrinsics.c \
207	brw_nir_lower_scoped_barriers.c \
208	brw_nir_lower_shader_calls.c \
209	brw_nir_lower_storage_image.c \
210	brw_nir_opt_peephole_ffma.c \
211	brw_nir_rt.c \
212	brw_nir_tcs_workarounds.c \
213	brw_nir_trig_workarounds.c \
214	brw_nir_uniforms.cpp \
215	brw_object_purgeable.c \
216	brw_packed_float.c \
217	brw_performance_query.c \
218	brw_pipe_control.c \
219	brw_pixel.c \
220	brw_pixel_bitmap.c \
221	brw_pixel_copy.c \
222	brw_pixel_draw.c \
223	brw_pixel_read.c \
224	brw_predicated_break.cpp \
225	brw_primitive_restart.c \
226	brw_program.c \
227	brw_program_binary.c \
228	brw_program_cache.c \
229	brw_queryobj.c \
230	brw_reg_type.c \
231	brw_reset.c \
232	brw_screen.c \
233	brw_sf.c \
234	brw_schedule_instructions.cpp \
235	brw_shader.cpp \
236	brw_state.c \
237	brw_state_upload.c \
238	brw_surface_formats.c \
239	brw_sync.c \
240	brw_tcs.c \
241	brw_tcs_surface_state.c \
242	brw_tes.c \
243	brw_tes_surface_state.c \
244	brw_tex.c \
245	brw_tex_copy.c \
246	brw_tex_image.c \
247	brw_tex_validate.c \
248	brw_upload.c \
249	brw_urb.c \
250	brw_util.c \
251	brw_vec4.cpp \
252	brw_vec4_cmod_propagation.cpp \
253	brw_vec4_copy_propagation.cpp \
254	brw_vec4_cse.cpp \
255	brw_vec4_dead_code_eliminate.cpp \
256	brw_vec4_generator.cpp \
257	brw_vec4_gs_nir.cpp \
258	brw_vec4_gs_visitor.cpp \
259	brw_vec4_live_variables.cpp \
260	brw_vec4_nir.cpp \
261	brw_vec4_reg_allocate.cpp \
262	brw_vec4_surface_builder.cpp \
263	brw_vec4_tcs.cpp \
264	brw_vec4_tes.cpp \
265	brw_vec4_visitor.cpp \
266	brw_vec4_vs_visitor.cpp \
267	brw_vs.c \
268	brw_vs_surface_state.c \
269	brw_vue_map.c \
270	brw_wm.c \
271	brw_wm_iz.cpp \
272	brw_wm_surface_state.c \
273	gfx6_clip_state.c \
274	gfx6_constant_state.c \
275	gfx6_gs_visitor.cpp \
276	gfx6_multisample_state.c \
277	gfx6_queryobj.c \
278	gfx6_sampler_state.c \
279	gfx6_sol.c \
280	gfx6_urb.c \
281	gfx7_l3_state.c \
282	gfx7_sol_state.c \
283	gfx7_urb.c \
284	gfx8_depth_state.c \
285	gfx8_multisample_state.c \
286	hsw_queryobj.c \
287	hsw_sol.c \
288	intel_perf_metrics.c \
289	isl.c \
290	isl_aux_info.c \
291	isl_drm.c \
292	isl_format.c \
293	isl_format_layout.c \
294	isl_gfx4.c \
295	isl_gfx6.c \
296	isl_gfx7.c \
297	isl_gfx8.c \
298	isl_gfx9.c \
299	isl_gfx12.c \
300	isl_storage_image.c \
301	isl_tiled_memcpy.c \
302	isl_tiled_memcpy_normal.c \
303	isl_tiled_memcpy_sse41.c
304
305I965_INTEL_COMMON_FILES = \
306	intel_aux_map.c \
307	intel_batch_decoder.c \
308	intel_decoder.c \
309	intel_disasm.c \
310	intel_gem.c \
311	intel_l3_config.c \
312	intel_measure.c \
313	intel_sample_positions.c \
314	intel_urb_config.c \
315	intel_uuid.c
316
317I965_INTEL_DEV_FILES = \
318	intel_debug.c \
319	intel_dev_info.c \
320	intel_device_info.c
321
322I965_INTEL_PERF_FILES = \
323	intel_perf.c \
324	intel_perf_query.c \
325	intel_perf_mdapi.c
326
327INTEL_GENS_BLORP=	40 45 50 60 70 75 80 90 110
328
329.for _gen in ${INTEL_GENS_BLORP}
330BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_state_upload.c ${_gen}_state_upload.c
331BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_blorp_exec.c ${_gen}_blorp_exec.c
332BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_pipe_control.c ${_gen}_pipe_control.c
333DRI_SOURCES.i965+=	${_gen}_state_upload.c ${_gen}_blorp_exec.c ${_gen}_pipe_control.c
334
335CPPFLAGS.${_gen}_state_upload.c+=	-DGFX_VERx10=${_gen}
336CPPFLAGS.${_gen}_blorp_exec.c+=		-DGFX_VERx10=${_gen}
337CPPFLAGS.${_gen}_pipe_control.c+=	-DGFX_VERx10=${_gen}
338.endfor
339
340INTEL_GENS_ISL=	40 50 60 70 75 80 90 110 120 125
341
342.for _gen in ${INTEL_GENS_ISL}
343BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/intel/isl/isl_emit_depth_stencil.c ${_gen}_isl_emit_depth_stencil.c
344BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/intel/isl/isl_surface_state.c ${_gen}_isl_surface_state.c
345DRI_SOURCES.i965+=	${_gen}_isl_emit_depth_stencil.c ${_gen}_isl_surface_state.c
346
347CPPFLAGS.${_gen}_isl_emit_depth_stencil.c+=	-DGFX_VERx10=${_gen} -I${X11SRCDIR.Mesa}/src/intel/isl/
348CPPFLAGS.${_gen}_isl_surface_state.c+=		-DGFX_VERx10=${_gen} -I${X11SRCDIR.Mesa}/src/intel/isl/
349.endfor
350
351.for _f in ${I965_INTEL_COMMON_FILES}
352BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/intel/common/${_f} i965_${_f}
353DRI_SOURCES.i965+=	i965_${_f}
354.endfor
355.for _f in ${I965_INTEL_DEV_FILES}
356BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/intel/dev/${_f} i965_${_f}
357DRI_SOURCES.i965+=	i965_${_f}
358.endfor
359.for _f in ${I965_INTEL_PERF_FILES}
360BUILDSYMLINKS+=			${X11SRCDIR.Mesa}/src/intel/perf/${_f} i965_${_f}
361DRI_SOURCES.i965+=		i965_${_f}
362CPPFLAGS.i965_${_f}+=	-I${X11SRCDIR.Mesa}/src/intel/perf
363.endfor
364
365.for _f in ${DRI_SOURCES.i965}
366CPPFLAGS.${_f} +=	-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965 \
367			-I${X11SRCDIR.Mesa}/src/intel \
368			-I${X11SRCDIR.Mesa}/src/intel/common \
369			-I${X11SRCDIR.Mesa}/src/intel/compiler \
370			-I${X11SRCDIR.Mesa}/src/intel/dev \
371			-I${X11SRCDIR.Mesa}/../src/intel \
372			-I${X11SRCDIR.Mesa}/src/compiler/nir \
373			-I${X11SRCDIR.Mesa}/../src/compiler/nir \
374			-I${X11SRCDIR.Mesa}/../src
375.endfor
376
377# Needs mfence
378CPPFLAGS.brw_bufmgr.c+=	-msse2
379
380.endif
381
382DRI_SOURCES.r200 = \
383	r200_context.c \
384	r200_ioctl.c \
385	r200_state.c \
386	r200_state_init.c \
387	r200_cmdbuf.c \
388	r200_tex.c \
389	r200_texstate.c \
390	r200_tcl.c \
391	r200_swtcl.c \
392	r200_maos.c \
393	r200_sanity.c \
394	r200_fragshader.c \
395	r200_vertprog.c \
396	r200_blit.c
397
398R200_RADEON_FILES= \
399	radeon_buffer_objects.c \
400	radeon_common_context.c \
401	radeon_common.c \
402	radeon_dma.c \
403	radeon_debug.c \
404	radeon_fbo.c \
405	radeon_fog.c \
406	radeon_mipmap_tree.c \
407	radeon_pixel_read.c \
408	radeon_queryobj.c \
409	radeon_span.c \
410	radeon_texture.c \
411	radeon_tex_copy.c \
412	radeon_tile.c \
413	radeon_screen.c
414
415.for _f in ${R200_RADEON_FILES}
416BUILDSYMLINKS+=		${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon/${_f} r200_${_f}
417DRI_SOURCES.r200+=	r200_${_f}
418.endfor
419
420.for _f in ${DRI_SOURCES.r200}
421CPPFLAGS.${_f} +=	-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/r200/server \
422			-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/r200 \
423			-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon/server \
424			-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon \
425			-DRADEON_R200
426.endfor
427
428DRI_SOURCES.radeon = \
429	radeon_buffer_objects.c \
430	radeon_common_context.c \
431	radeon_common.c \
432	radeon_dma.c \
433	radeon_debug.c \
434	radeon_fbo.c \
435	radeon_fog.c \
436	radeon_mipmap_tree.c \
437	radeon_pixel_read.c \
438	radeon_queryobj.c \
439	radeon_span.c \
440	radeon_texture.c \
441	radeon_tex_copy.c \
442	radeon_tile.c \
443	radeon_context.c \
444	radeon_ioctl.c \
445	radeon_screen.c \
446	radeon_state.c \
447	radeon_state_init.c \
448	radeon_tex.c \
449	radeon_texstate.c \
450	radeon_tcl.c \
451	radeon_swtcl.c \
452	radeon_maos.c \
453	radeon_sanity.c \
454	radeon_blit.c
455
456.for _f in ${DRI_SOURCES.radeon}
457CPPFLAGS.${_f} +=	-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon/server \
458			-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon \
459			-DRADEON_R100
460.endfor
461
462.for _d in ${DRI_SUBDIRS}
463SRCS+=	${DRI_SOURCES.${_d}}
464.PATH: ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/${_d}
465.endfor
466
467
468LIBDPLIBS+=	expat		${NETBSDSRCDIR}/external/mit/expat/lib/libexpat
469LIBDPLIBS+=	m		${NETBSDSRCDIR}/lib/libm
470LIBDPLIBS+=	pthread		${NETBSDSRCDIR}/lib/libpthread
471LIBDPLIBS+= 	glapi		${.CURDIR}/../libglapi${OLD_SUFFIX}
472LIBDPLIBS+= 	drm		${.CURDIR}/../libdrm
473.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
474LIBDPLIBS+= 	drm_intel	${.CURDIR}/../libdrm_intel
475.endif
476LIBDPLIBS+= 	drm_radeon	${.CURDIR}/../libdrm_radeon
477
478MESA_SRC_MODULES=  main math math_xform vbo tnl swrast ss common asm_c program asm_s
479.include "../libmesa.mk"
480.include "../libglsl.mk"
481
482.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
483SRCS+=	streaming-load-memcpy.c
484CPPFLAGS.streaming-load-memcpy.c+=	-msse4.1
485CPPFLAGS.isl_tiled_memcpy_sse41.c+=	-msse4.1
486.endif
487
488CWARNFLAGS.clang+=	-Wno-error=atomic-alignment
489CWARNFLAGS.clang+=	-Wno-error=typedef-redefinition
490
491.include "../driver.mk"
492
493.for _d in ${DRIVERS}
494SYMLINKS+= mesa_dri_drivers.so.${SHLIB_MAJOR} ${DRIDIR}/${_d}_dri.so.${SHLIB_MAJOR}
495SYMLINKS+= ${_d}_dri.so.${SHLIB_MAJOR} ${DRIDIR}/${_d}_dri.so
496.if ${MKDEBUG} != "no"
497SYMLINKS+= mesa_dri_drivers.so.${SHLIB_MAJOR}.debug ${DRIDEBUGDIR}/${_d}_dri.so.${SHLIB_MAJOR}.debug
498.endif
499.endfor
500
501.endif
502
503PKGCONFIG=	dri
504PKGDIST.dri=	${X11SRCDIR.Mesa}/../src/pkgconfig
505.include "${.CURDIR}/../libGL/mesa-ver.mk"
506PKGCONFIG_VERSION.dri=	${MESA_VER}
507
508# XXX remove these from bsd.x11.mk
509PKGCONFIG_SED_FLAGS= \
510	-e "s,@DRI_DRIVER_INSTALL_DIR@,${X11USRLIBDIR}/modules/dri,; \
511	    s,@DRI_PC_REQ_PRIV@,,"
512
513.PATH:          ${X11SRCDIR.Mesa}/src/util
514
515FILESDIR=	/etc
516BUILDSYMLINKS+=	00-mesa-defaults.conf drirc
517FILES=		drirc
518
519.PATH:          ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/common
520
521.include <bsd.x11.mk>
522.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" || \
523    ${MACHINE} == "evbarm"
524LIBDIR=		${X11USRLIBDIR}/modules/dri
525
526CWARNFLAGS.clang+=	-Wno-error=initializer-overrides -Wno-error=switch \
527			-Wno-error=tautological-constant-out-of-range-compare \
528			-Wno-error=enum-conversion \
529			-Wno-error=implicit-int-float-conversion \
530			-Wno-error=tautological-constant-compare \
531			-Wno-c99-designator -Wno-xor-used-as-pow \
532			-Wno-typedef-redefinition
533
534COPTS+= -Wno-error=stack-protector
535
536COPTS.u_atomic.c+=	${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 10:? -Wno-builtin-declaration-mismatch :}
537
538.include <bsd.lib.mk>
539.else
540.include <bsd.inc.mk>
541.endif
542# Don't re-build .c files when .y files change
543.y.c:
544