Makefile revision 1.7 1 # $NetBSD: Makefile,v 1.7 2023/07/15 21:24:46 rjs 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.
8 NOLINT=
9
10 LINTFLAGS+= -X 213 # void function '%s' cannot return value
11 LINTFLAGS+= -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.
16 build_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
26 LIBISMODULE= yes
27 LIBISCXX= yes
28
29 SHLIB_MAJOR= 0
30
31 LIB= mesa_dri_drivers
32 DRIDIR= ${X11USRLIBDIR}/modules/dri
33 DRIDEBUGDIR= ${DEBUGDIR}${X11USRLIBDIR}/modules/dri
34
35 LDFLAGS+= -Wl,--build-id=sha1
36
37 # -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/${MODULE}/server \
38
39 CPPFLAGS+= \
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"
47 CPPFLAGS.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"
56 DRIVERS= r200 radeon
57 .elif ${MACHINE} == "macppc" || ${MACHINE} == "ofppc"
58 DRIVERS= r200 radeon
59 .elif ${MACHINE_ARCH} == "sparc64" || ${MACHINE_ARCH} == "sparc"
60 DRIVERS= r200 radeon
61 .elif ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
62 DRIVERS= i915 i965 r200 radeon
63 .elif ${MACHINE} == "prep" || ${MACHINE} == "bebox"
64 DRIVERS= r200 radeon
65 .elif ${MACHINE} == "evbarm"
66 DRIVERS= r200 radeon
67 .endif
68
69 DRI_SUBDIRS= ${DRIVERS}
70
71 DRI_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
86 I915_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}
115 BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i915/${_f} i915_${_f}
116 DRI_SOURCES.i915+= i915_${_f}
117 CPPFLAGS.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
129 DRI_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
291 I965_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
314 INTEL_GENS_BLORP= 40 45 50 60 70 75 80 90 100 110
315
316 .for _gen in ${INTEL_GENS_BLORP}
317 BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_state_upload.c ${_gen}_state_upload.c
318 BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_blorp_exec.c ${_gen}_blorp_exec.c
319 BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_pipe_control.c ${_gen}_pipe_control.c
320 DRI_SOURCES.i965+= ${_gen}_state_upload.c ${_gen}_blorp_exec.c ${_gen}_pipe_control.c
321
322 CPPFLAGS.${_gen}_state_upload.c+= -DGEN_VERSIONx10=${_gen}
323 CPPFLAGS.${_gen}_blorp_exec.c+= -DGEN_VERSIONx10=${_gen}
324 CPPFLAGS.${_gen}_pipe_control.c+= -DGEN_VERSIONx10=${_gen}
325 .endfor
326
327 INTEL_GENS_ISL= 40 50 60 70 75 80 90 100 110
328
329 .for _gen in ${INTEL_GENS_ISL}
330 BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/intel/isl/isl_emit_depth_stencil.c ${_gen}_isl_emit_depth_stencil.c
331 BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/intel/isl/isl_surface_state.c ${_gen}_isl_surface_state.c
332 DRI_SOURCES.i965+= ${_gen}_isl_emit_depth_stencil.c ${_gen}_isl_surface_state.c
333
334 CPPFLAGS.${_gen}_isl_emit_depth_stencil.c+= -DGEN_VERSIONx10=${_gen} -I${X11SRCDIR.Mesa}/src/intel/isl/
335 CPPFLAGS.${_gen}_isl_surface_state.c+= -DGEN_VERSIONx10=${_gen} -I${X11SRCDIR.Mesa}/src/intel/isl/
336 .endfor
337
338 .for _f in ${I965_INTEL_FILES}
339 BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/${_f} i965_${_f}
340 DRI_SOURCES.i965+= i965_${_f}
341 .endfor
342
343 .for _f in ${DRI_SOURCES.i965}
344 CPPFLAGS.${_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
353 CPPFLAGS.brw_bufmgr.c+= -msse2
354
355 DRI_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
371 R200_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}
389 BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon/${_f} r200_${_f}
390 DRI_SOURCES.r200+= r200_${_f}
391 .endfor
392
393 .for _f in ${DRI_SOURCES.r200}
394 CPPFLAGS.${_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
401 DRI_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}
430 CPPFLAGS.${_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}
436 SRCS+= ${DRI_SOURCES.${_d}}
437 .PATH: ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/${_d}
438 .endfor
439
440
441 LIBDPLIBS+= expat ${NETBSDSRCDIR}/external/mit/expat/lib/libexpat
442 LIBDPLIBS+= m ${NETBSDSRCDIR}/lib/libm
443 LIBDPLIBS+= pthread ${NETBSDSRCDIR}/lib/libpthread
444 LIBDPLIBS+= glapi ${.CURDIR}/../libglapi${OLD_SUFFIX}
445 LIBDPLIBS+= drm ${.CURDIR}/../libdrm
446 .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
447 LIBDPLIBS+= drm_intel ${.CURDIR}/../libdrm_intel
448 .endif
449 LIBDPLIBS+= drm_radeon ${.CURDIR}/../libdrm_radeon
450
451 MESA_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"
456 SRCS+= streaming-load-memcpy.c
457 CPPFLAGS.streaming-load-memcpy.c+= -msse4.1
458 CPPFLAGS.isl_tiled_memcpy_sse41.c+= -msse4.1
459 .endif
460
461 CFLAGS+= ${${ACTIVE_CC} == "clang":? -Wno-error=atomic-alignment :}
462
463 .include "../driver${OLD_SUFFIX}.mk"
464
465 .for _d in ${DRIVERS}
466 SYMLINKS+= mesa_dri_drivers.so.${SHLIB_MAJOR} ${DRIDIR}/${_d}_dri.so.${SHLIB_MAJOR}
467 SYMLINKS+= ${_d}_dri.so.${SHLIB_MAJOR} ${DRIDIR}/${_d}_dri.so
468 .if ${MKDEBUG} != "no"
469 SYMLINKS+= mesa_dri_drivers.so.${SHLIB_MAJOR}.debug ${DRIDEBUGDIR}/${_d}_dri.so.${SHLIB_MAJOR}.debug
470 .endif
471 .endfor
472
473 .endif
474
475 PKGCONFIG= dri
476 PKGDIST.dri= ${X11SRCDIR.Mesa}/../src/pkgconfig
477 .include "${.CURDIR}/../libGL${OLD_SUFFIX}/mesa-ver.mk"
478 PKGCONFIG_VERSION.dri= ${MESA_VER}
479
480 # XXX remove these from bsd.x11.mk
481 PKGCONFIG_SED_FLAGS= \
482 -e "s,@DRI_DRIVER_INSTALL_DIR@,${X11USRLIBDIR}/modules/dri,; \
483 s,@DRI_PC_REQ_PRIV@,,"
484
485 .PATH: ${X11SRCDIR.Mesa}/src/util
486
487 FILESDIR= /etc
488 BUILDSYMLINKS+= 00-mesa-defaults.conf drirc
489 FILES= drirc
490
491 .PATH: ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/common
492
493 .include <bsd.x11.mk>
494 .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" || \
495 ${MACHINE} == "evbarm"
496 LIBDIR= ${X11USRLIBDIR}/modules/dri
497
498 CWARNFLAGS.clang+= -Wno-error=initializer-overrides -Wno-error=switch \
499 -Wno-error=tautological-constant-out-of-range-compare \
500 -Wno-error=enum-conversion \
501 -Wno-error=implicit-int-float-conversion \
502 -Wno-error=tautological-constant-compare \
503 -Wno-c99-designator -Wno-xor-used-as-pow
504
505 COPTS+= -Wno-error=stack-protector
506
507 COPTS.u_atomic.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 10:? -Wno-builtin-declaration-mismatch :}
508
509 COPTS.brw_eu_compact.c+= -Wno-error=stack-protector
510 COPTS.brw_fs_copy_propagation.cpp+= -Wno-error=stack-protector
511 COPTS.brw_fs.cpp+= -Wno-error=stack-protector
512 COPTS.brw_fs_reg_allocate.cpp+= -Wno-error=stack-protector
513
514 .include <bsd.lib.mk>
515 .else
516 .include <bsd.inc.mk>
517 .endif
518 # Don't re-build .c files when .y files change
519 .y.c:
520