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