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