1#	$NetBSD: libmesa.mk,v 1.15 2023/07/16 22:20:54 rjs Exp $
2#
3# Consumer of this Makefile should set MESA_SRC_MODULES.
4
5CPPFLAGS.ac_surface.c+=	${${ACTIVE_CC} == "clang":? -Wno-error=enum-conversion :}
6
7# The source file lists derived from src/mesa/Makefile.sources.
8# Please keep the organization in line with those files.
9
10# Main sources
11PATHS.main=	mesa/main mapi/glapi
12PATHS.main+=	../../src/mesa ../../src/mesa/main ../../src/mapi/glapi/gen
13INCLUDES.main=	glsl mesa/main ../../src/compiler/nir ../../src/mesa
14INCLUDES.main+= gallium/auxiliary ../../src
15SRCS.main= \
16	accum.c \
17	api_arrayelt.c \
18	api_exec.c \
19	arbprogram.c \
20	arrayobj.c \
21	atifragshader.c \
22	attrib.c \
23	barrier.c \
24	bbox.c \
25	blend.c \
26	blit.c \
27	bufferobj.c \
28	buffers.c \
29	clear.c \
30	clip.c \
31	colortab.c \
32	compute.c \
33	condrender.c \
34	conservativeraster.c \
35	context.c \
36	convolve.c \
37	copyimage.c \
38	cpuinfo.c \
39	MESAdebug.c \
40	debug_output.c \
41	depth.c \
42	dlist.c \
43	draw.c \
44	drawpix.c \
45	drawtex.c \
46	draw_validate.c \
47	enable.c \
48	enums.c \
49	errors.c \
50	MESAeval.c \
51	execmem.c \
52	extensions.c \
53	extensions_table.c \
54	externalobjects.c \
55	fbobject.c \
56	feedback.c \
57	ff_fragment_shader.cpp \
58	ffvertex_prog.c \
59	fog.c \
60	format_fallback.c \
61	format_utils.c \
62	formatquery.c \
63	formats.c \
64	framebuffer.c \
65	get.c \
66	genmipmap.c \
67	getstring.c \
68	glformats.c \
69	glspirv.c \
70	glthread.c \
71	glthread_bufferobj.c \
72	glthread_draw.c \
73	glthread_get.c \
74	glthread_list.c \
75	glthread_shaderobj.c \
76	glthread_varray.c \
77	hash.c \
78	hint.c \
79	histogram.c \
80	image.c \
81	light.c \
82	lines.c \
83	marshal_generated0.c \
84	marshal_generated1.c \
85	marshal_generated2.c \
86	marshal_generated3.c \
87	marshal_generated4.c \
88	marshal_generated5.c \
89	marshal_generated6.c \
90	marshal_generated7.c \
91	matrix.c \
92	mipmap.c \
93	multisample.c \
94	objectlabel.c \
95	objectpurge.c \
96	pack.c \
97	pbo.c \
98	performance_monitor.c \
99	performance_query.c \
100	pipelineobj.c \
101	MESApixel.c \
102	MESApixelstore.c \
103	pixeltransfer.c \
104	points.c \
105	polygon.c \
106	program_binary.c \
107	program_resource.c \
108	querymatrix.c \
109	queryobj.c \
110	rastpos.c \
111	readpix.c \
112	remap.c \
113	renderbuffer.c \
114	robustness.c \
115	samplerobj.c \
116	scissor.c \
117	shaderapi.c \
118	shaderimage.c \
119	shaderobj.c \
120	shader_query.cpp \
121	shared.c \
122	spirv_extensions.c \
123	state.c \
124	stencil.c \
125	syncobj.c \
126	texcompress.c \
127	texcompress_bptc.c \
128	texcompress_cpal.c \
129	texcompress_etc.c \
130	texcompress_fxt1.c \
131	texcompress_rgtc.c \
132	texcompress_s3tc.c \
133	texenv.c \
134	texformat.c \
135	texgen.c \
136	texgetimage.c \
137	teximage.c \
138	texobj.c \
139	texcompress_astc.cpp \
140	texparam.c \
141	texstate.c \
142	texstorage.c \
143	texstore.c \
144	texturebindless.c \
145	textureview.c \
146	transformfeedback.c \
147	uniform_query.cpp \
148	uniforms.c \
149	varray.c \
150	vdpau.c \
151	version.c \
152	viewport.c \
153	vtxfmt.c \
154	es1_conversion.c
155
156# AMD common code
157PATHS.amd=	amd/common amd/addrlib/src amd/addrlib/src/core \
158		amd/addrlib/src/gfx9 amd/addrlib/src/r800 \
159		amd/addrlib/src/gfx10 amd/llvm ../../src/amd/common
160INCLUDES.amd=	amd amd/common ../../src/amd/common \
161		amd/addrlib amd/addrlib/inc \
162		amd/addrlib/src amd/addrlib/src/core \
163		amd/addrlib/src/r800 \
164		amd/addrlib/src/chip/r800 \
165		amd/addrlib/src/gfx9 \
166		amd/addrlib/src/chip/gfx9 \
167		amd/addrlib/src/gfx10 \
168		amd/addrlib/src/chip/gfx10 \
169		amd/llvm ../src/util
170
171SRCS.amd+= \
172	addrinterface.cpp \
173	addrelemlib.cpp \
174	addrlib.cpp \
175	addrlib1.cpp \
176	addrlib2.cpp \
177	addrobject.cpp \
178	coord.cpp \
179	gfx9addrlib.cpp \
180	gfx10addrlib.cpp \
181	gfx10_format_table.c \
182	ciaddrlib.cpp \
183	egbaddrlib.cpp \
184	siaddrlib.cpp \
185	ac_binary.c \
186	ac_debug.c \
187	ac_gpu_info.c \
188	ac_llvm_build.c \
189	ac_llvm_cull.c \
190	ac_llvm_helper.cpp \
191	ac_llvm_util.c \
192	ac_msgpack.c \
193	ac_nir.c \
194	ac_nir_to_llvm.c \
195	ac_perfcounter.c \
196	ac_rgp.c \
197	ac_rgp_elf_object_pack.c \
198	ac_shader_args.c \
199	ac_shader_util.c \
200	ac_shadowed_regs.c \
201	ac_sqtt.c \
202	ac_surface.c \
203	ac_rtld.c
204
205# XXX  avoid source name clashes with glx
206.PATH:		${X11SRCDIR.Mesa}/src/mesa/main
207BUILDSYMLINKS+=	${X11SRCDIR.Mesa}/src/mesa/main/pixel.c MESApixel.c \
208		${X11SRCDIR.Mesa}/src/mesa/main/pixelstore.c MESApixelstore.c \
209		${X11SRCDIR.Mesa}/src/mesa/main/eval.c MESAeval.c \
210		${X11SRCDIR.Mesa}/src/mesa/main/debug.c MESAdebug.c
211
212# Math sources
213PATHS.math=	mesa/math
214SRCS.math= \
215	m_debug_clip.c \
216	m_debug_norm.c \
217	m_debug_xform.c \
218	m_eval.c \
219	m_matrix.c \
220	m_translate.c \
221	m_vector.c
222
223PATHS.math_xform=	mesa/math
224SRCS.math_xform= \
225	m_xform.c
226
227
228# VBO sources
229PATHS.vbo=	mesa/vbo
230INCLUDES.vbo=	gallium/auxiliary
231SRCS.vbo= \
232	vbo_context.c \
233	vbo_exec_api.c \
234	vbo_exec.c \
235	vbo_exec_draw.c \
236	vbo_exec_eval.c \
237	vbo_minmax_index.c \
238	vbo_noop.c \
239	vbo_save_api.c \
240	vbo_save.c \
241	vbo_save_draw.c \
242	vbo_save_loopback.c
243
244# TNL sources
245PATHS.tnl=	mesa/tnl
246SRCS.tnl= \
247	t_context.c \
248	t_draw.c \
249	t_pipeline.c \
250	t_rebase.c \
251	t_split.c \
252	t_split_copy.c \
253	t_split_inplace.c \
254	t_vb_fog.c \
255	t_vb_light.c \
256	t_vb_normals.c \
257	t_vb_points.c \
258	t_vb_program.c \
259	t_vb_render.c \
260	t_vb_texgen.c \
261	t_vb_texmat.c \
262	t_vb_vertex.c \
263	t_vertex.c \
264	t_vertex_generic.c \
265	t_vertex_sse.c \
266	t_vp_build.c
267
268# Software raster sources
269PATHS.swrast=		mesa/swrast
270INCLUDES.swrast=	mesa/main
271SRCS.swrast= \
272	s_aaline.c \
273	s_aatriangle.c \
274	s_alpha.c \
275	s_atifragshader.c \
276	s_bitmap.c \
277	s_blend.c \
278	s_blit.c \
279	s_clear.c \
280	s_context.c \
281	s_copypix.c \
282	s_depth.c \
283	s_drawpix.c \
284	s_feedback.c \
285	s_fog.c \
286	s_fragprog.c \
287	s_lines.c \
288	s_logic.c \
289	s_masking.c \
290	s_points.c \
291	s_renderbuffer.c \
292	s_span.c \
293	s_stencil.c \
294	s_texcombine.c \
295	s_texfetch.c \
296	s_texfilter.c \
297	s_texrender.c \
298	s_texture.c \
299	s_triangle.c \
300	s_zoom.c
301
302# swrast_setup
303PATHS.ss=	mesa/swrast_setup
304SRCS.ss= \
305	ss_context.c \
306	ss_triangle.c 
307
308
309# Common driver sources
310PATHS.common=	mesa/drivers/common
311SRCS.common= \
312	driverfuncs.c   \
313	meta_blit.c     \
314	meta_generate_mipmap.c  \
315	meta.c
316
317# ASM C driver sources
318PATHS.asm_c=	mesa/x86 mesa/x86/rtasm mesa/sparc mesa/x86-64
319SRCS.asm_c= \
320	common_x86.c \
321	x86_xform.c \
322	3dnow.c \
323	sse.c \
324	x86sse.c \
325	sparc.c \
326	x86-64.c
327
328# ASM assembler driver sources
329PATHS.asm_s=	mesa/x86 mesa/x86/rtasm mesa/sparc mesa/x86-64
330.if ${MACHINE} == "amd64"
331SRCS.asm_s= \
332	xform4.S
333CPPFLAGS+=	-I${X11SRCDIR.Mesa}/../src/mesa
334.elif ${MACHINE} == "sparc" || ${MACHINE} == "sparc64"
335SRCS.asm_s= \
336	sparc_clip.S \
337	norm.S \
338	xform.S
339.elif ${MACHINE} == "i386"
340SRCS.asm_s= \
341	common_x86_asm.S \
342	x86_xform2.S \
343	x86_xform3.S \
344	x86_xform4.S \
345	x86_cliptest.S \
346	mmx_blend.S \
347	3dnow_xform1.S \
348	3dnow_xform2.S \
349	3dnow_xform3.S \
350	3dnow_xform4.S \
351	sse_xform1.S \
352	sse_xform2.S \
353	sse_xform3.S \
354	sse_xform4.S \
355	sse_normal.S \
356	read_rgba_span_x86.S \
357	streaming-load-memcpy.c \
358	sse_minmax.c
359CPPFLAGS+=	-I${X11SRCDIR.Mesa}/../src/mesa
360.endif
361
362.if ${MACHINE} == "amd64" || ${MACHINE} == "i386"
363SRCS.asm_s+= \
364	streaming-load-memcpy.c \
365	sse_minmax.c
366COPTS.sse_minmax.c+= -msse4.1
367.endif
368
369# State tracker sources
370PATHS.state_tracker=	mesa/state_tracker
371INCLUDES.state_tracker=	glsl mesa/main
372SRCS.state_tracker= \
373	st_atifs_to_nir.c \
374	st_atom.c \
375	st_atom_array.c \
376	st_atom_atomicbuf.c \
377	st_atom_blend.c \
378	st_atom_clip.c \
379	st_atom_constbuf.c \
380	st_atom_depth.c \
381	st_atom_framebuffer.c \
382	st_atom_image.c \
383	st_atom_msaa.c \
384	st_atom_pixeltransfer.c \
385	st_atom_rasterizer.c \
386	st_atom_sampler.c \
387	st_atom_scissor.c \
388	st_atom_shader.c \
389	st_atom_stipple.c \
390	st_atom_storagebuf.c \
391	st_atom_tess.c \
392	st_atom_texture.c \
393	st_atom_viewport.c \
394	st_cb_bitmap.c \
395	st_cb_bitmap_shader.c \
396	st_cb_blit.c \
397	st_cb_bufferobjects.c \
398	st_cb_clear.c \
399	st_cb_compute.c \
400	st_cb_condrender.c \
401	st_cb_copyimage.c \
402	st_cb_drawpixels.c \
403	st_cb_drawpixels_shader.c \
404	st_cb_drawtex.c \
405	st_cb_eglimage.c \
406	st_cb_fbo.c \
407	st_cb_feedback.c \
408	st_cb_flush.c \
409	st_cb_memoryobjects.c \
410	st_cb_msaa.c \
411	st_cb_perfmon.c \
412	st_cb_perfquery.c \
413	st_cb_program.c \
414	st_cb_queryobj.c \
415	st_cb_rasterpos.c \
416	st_cb_readpixels.c \
417	st_cb_semaphoreobjects.c \
418	st_cb_strings.c \
419	st_cb_syncobj.c \
420	st_cb_texture.c \
421	st_cb_texturebarrier.c \
422	st_cb_viewport.c \
423	st_cb_xformfb.c \
424	st_context.c \
425	st_copytex.c \
426	st_debug.c \
427	st_draw.c \
428	st_draw_feedback.c \
429	st_extensions.c \
430	st_format.c \
431	st_gen_mipmap.c \
432	st_glsl_to_ir.cpp \
433	st_glsl_to_nir.cpp \
434	st_glsl_to_tgsi.cpp \
435	st_glsl_to_tgsi_array_merge.cpp \
436	st_glsl_to_tgsi_private.cpp \
437	st_glsl_to_tgsi_temprename.cpp \
438	st_manager.c \
439	st_nir_builtins.c \
440	st_nir_lower_builtin.c \
441	st_nir_lower_tex_src_plane.c \
442	st_pbo.c \
443	st_program.c \
444	st_sampler_view.c \
445	st_scissor.c \
446	st_shader_cache.c \
447	st_texture.c \
448	st_tgsi_lower_depth_clamp.c \
449	st_tgsi_lower_yuv.c
450
451# Program sources
452PATHS.program=	mesa/program ../../src/mesa/program
453INCLUDES.program=	glsl
454SRCS.program= \
455	arbprogparse.c \
456	ir_to_mesa.cpp \
457	prog_cache.c \
458	prog_execute.c \
459	prog_instruction.c \
460	prog_noise.c \
461	prog_opt_constant_fold.c \
462	prog_optimize.c \
463	prog_parameter.c \
464	prog_parameter_layout.c \
465	prog_print.c \
466	prog_statevars.c \
467	prog_to_nir.c \
468	program.c \
469	programopt.c \
470	program_parse.tab.c \
471	program_parse_extra.c \
472	symbol_table.c \
473	program_lexer.l
474
475# Generated
476#.PATH:	${X11SRCDIR.Mesa}/../src/mesa/program
477#SRCS.program+= \
478#	lex.yy.c
479
480
481# Run throught all the modules and setup the SRCS and CPPFLAGS etc.
482.for _mod_ in ${MESA_SRC_MODULES}
483
484SRCS+=	${SRCS.${_mod_}}
485
486. for _path_ in ${PATHS.${_mod_}}
487.PATH:	${X11SRCDIR.Mesa}/src/${_path_}
488. endfor
489
490. for _path_ in ${INCLUDES.${_mod_}}
491.  for _s in ${SRCS.${_mod_}}
492CPPFLAGS.${_s}+=	-I${X11SRCDIR.Mesa}/src/${_path_}
493.  endfor
494. endfor
495
496.endfor
497
498CPPFLAGS+=	-I${X11SRCDIR.Mesa}/include
499CPPFLAGS+=	-I${X11SRCDIR.Mesa}/src
500CPPFLAGS+=	-I${X11SRCDIR.Mesa}/src/mesa
501CPPFLAGS+=	-I${X11SRCDIR.Mesa}/src/mapi
502CPPFLAGS+=	-I${X11SRCDIR.Mesa}/src/gallium/include
503CPPFLAGS+=	-I${X11SRCDIR.Mesa}/../src/mapi/glapi
504CPPFLAGS+=	-I${X11SRCDIR.Mesa}/../src/mesa
505CPPFLAGS+=	-I${X11SRCDIR.Mesa}/../src/mesa/main
506CPPFLAGS+=	-I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/common
507
508CPPFLAGS+=	\
509	-DPACKAGE_NAME=\"Mesa\" \
510	-DPACKAGE_TARNAME=\"mesa\" \
511	-DPACKAGE_VERSION=\"${MESA_VER}\" \
512	-DPACKAGE_STRING=\"Mesa\ ${MESA_VER}\" \
513	-DVERSION=\"${MESA_VER}\" \
514	-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi\?product=Mesa\" \
515	-DPACKAGE_URL=\"\" \
516	-DPACKAGE=\"mesa\" \
517
518CPPFLAGS+=	\
519	-DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 \
520	-DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 \
521	-DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 \
522	-DHAVE___BUILTIN_BSWAP32=1 -DHAVE___BUILTIN_BSWAP64=1 \
523	-DHAVE___BUILTIN_CLZ=1 -DHAVE___BUILTIN_CLZLL=1 \
524	-DHAVE___BUILTIN_CTZ=1 -DHAVE___BUILTIN_EXPECT=1 \
525	-DHAVE___BUILTIN_FFS=1 -DHAVE___BUILTIN_FFSLL=1 \
526	-DHAVE___BUILTIN_POPCOUNT=1 -DHAVE___BUILTIN_POPCOUNTLL=1 \
527	-DHAVE___BUILTIN_UNREACHABLE=1 -DHAVE_FUNC_ATTRIBUTE_CONST=1 \
528	-DHAVE_FUNC_ATTRIBUTE_FLATTEN=1 -DHAVE_FUNC_ATTRIBUTE_FORMAT=1 \
529	-DHAVE_FUNC_ATTRIBUTE_MALLOC=1 -DHAVE_FUNC_ATTRIBUTE_PACKED=1 \
530	-DHAVE_FUNC_ATTRIBUTE_PURE=1 -DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL=1 \
531	-DHAVE_FUNC_ATTRIBUTE_UNUSED=1 -DHAVE_FUNC_ATTRIBUTE_VISIBILITY=1 \
532	-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT=1 \
533	-DHAVE_FUNC_ATTRIBUTE_WEAK=1 -DHAVE_FUNC_ATTRIBUTE_ALIAS=1 \
534	-DHAVE_FUNC_ATTRIBUTE_NORETURN=1 -DHAVE_ENDIAN_H=1 -DHAVE_DLADDR=1 \
535	-DHAVE_CLOCK_GETTIME=1 -DHAVE_PTHREAD_PRIO_INHERIT=1 \
536	-DHAVE_PTHREAD=1 \
537	-D__STDC_CONSTANT_MACROS \
538	-D__STDC_FORMAT_MACROS \
539	-D__STDC_LIMIT_MACROS \
540	-DUSE_GCC_ATOMIC_BUILTINS \
541	-DNDEBUG \
542	-DHAVE_COMPRESSION \
543	-DHAVE_SYS_SYSCTL_H \
544	-DHAVE_DLFCN_H \
545	-DHAVE_STRTOF \
546	-DHAVE_MKOSTEMP \
547	-DHAVE_TIMESPEC_GET \
548	-DHAVE_STRTOD_L \
549	-DHAVE_DL_ITERATE_PHDR \
550	-DHAVE_POSIX_MEMALIGN \
551	-DHAVE_ZLIB \
552	-DHAVE_LIBDRM -DGLX_USE_DRM \
553	-DGLX_INDIRECT_RENDERING \
554	-DGLX_DIRECT_RENDERING \
555	-DGLX_USE_TLS \
556	-DHAVE_X11_PLATFORM \
557	-DHAVE_DRM_PLATFORM \
558	-DENABLE_SHADER_CACHE \
559	-DHAVE_MINCORE
560
561.if ${MKLLVMRT} != "no"
562LLVM_VERSION!=		cd ${NETBSDSRCDIR}/external/apache2/llvm && ${MAKE} -V LLVM_VERSION
563HAVE_LLVM_VERSION!=	expr ${LLVM_VERSION:R:R} \* 256 + ${LLVM_VERSION:R:E} \* 16
564CPPFLAGS+=	\
565	-DHAVE_LLVM=${HAVE_LLVM_VERSION}
566CPPFLAGS+=	-DLLVM_AVAILABLE -DDRAW_LLVM_AVAILABLE
567CXXFLAGS+=	-fno-rtti
568.endif
569
570CPPFLAGS+=	\
571	-DLITTLEENDIAN_CPU
572
573.include "../asm.mk"
574
575CPPFLAGS+=	\
576	-DHAVE_LIBDRM -DGLX_USE_DRM -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DHAVE_ALIAS -DMESA_EGL_NO_X11_HEADERS
577
578CPPFLAGS+=	\
579	-DYYTEXT_POINTER=1
580
581CFLAGS+=	-fvisibility=hidden -fno-strict-aliasing -fno-builtin-memcmp -fcommon
582
583.include "libGL/mesa-ver.mk"
584