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