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