1#	$NetBSD: libmesa.mk,v 1.6 2010/07/19 05:34:27 mrg Exp $
2#
3# Consumer of this Makefile should set MESA_SRC_MODULES.
4
5INCLUDES.all=	. glapi main
6
7# Main sources
8PATHS.main=	main
9INCLUDES.main=	shader
10SRCS.main= \
11	api_arrayelt.c \
12	api_exec.c \
13	api_loopback.c \
14	api_noop.c \
15	api_validate.c \
16	accum.c \
17	attrib.c \
18	arrayobj.c \
19	blend.c \
20	bufferobj.c \
21	buffers.c \
22	clear.c \
23	clip.c \
24	colortab.c \
25	condrender.c \
26	context.c \
27	convolve.c \
28	cpuinfo.c \
29	debug.c \
30	depth.c \
31	depthstencil.c \
32	dlist.c \
33	dlopen.c \
34	drawpix.c \
35	enable.c \
36	enums.c \
37	MESAeval.c \
38	execmem.c \
39	extensions.c \
40	fbobject.c \
41	feedback.c \
42	ffvertex_prog.c \
43	fog.c \
44	formats.c \
45	framebuffer.c \
46	get.c \
47	getstring.c \
48	hash.c \
49	hint.c \
50	histogram.c \
51	image.c \
52	imports.c \
53	light.c \
54	lines.c \
55	matrix.c \
56	mipmap.c \
57	mm.c \
58	multisample.c \
59	MESApixel.c \
60	MESApixelstore.c \
61	points.c \
62	polygon.c \
63	queryobj.c \
64	rastpos.c \
65	rbadaptors.c \
66	readpix.c \
67	remap.c \
68	renderbuffer.c \
69	scissor.c \
70	shaders.c \
71	shared.c \
72	state.c \
73	stencil.c \
74	syncobj.c \
75	texcompress.c \
76	texcompress_s3tc.c \
77	texcompress_fxt1.c \
78	texenv.c \
79	texenvprogram.c \
80	texfetch.c \
81	texformat.c \
82	texgen.c \
83	texgetimage.c \
84	teximage.c \
85	texobj.c \
86	texparam.c \
87	texrender.c \
88	texstate.c \
89	texstore.c \
90	varray.c \
91	version.c \
92	viewport.c \
93	vtxfmt.c
94
95# XXX  avoid source name clashes with glx
96.PATH:		${X11SRCDIR.MesaLib}/src/mesa/main
97BUILDSYMLINKS=	${X11SRCDIR.MesaLib}/src/mesa/main/pixel.c MESApixel.c \
98		${X11SRCDIR.MesaLib}/src/mesa/main/pixelstore.c MESApixelstore.c \
99		${X11SRCDIR.MesaLib}/src/mesa/main/eval.c MESAeval.c
100
101# GL API sources
102PATHS.glapi=	glapi main
103SRCS.glapi= \
104	glapi.c \
105	glapi_dispatch.c \
106	glapi_getproc.c \
107	glapi_nop.c \
108	glthread.c
109
110# Math sources
111PATHS.math=	math
112SRCS.math= \
113	m_debug_clip.c \
114	m_debug_norm.c \
115	m_debug_xform.c \
116	m_eval.c \
117	m_matrix.c \
118	m_translate.c \
119	m_vector.c
120
121SRCS.math+= \
122	m_xform.c
123
124# Software raster sources
125PATHS.swrast=		swrast swrast_setup
126INCLUDES.swrast=	shader
127SRCS.swrast= \
128	s_aaline.c \
129	s_aatriangle.c \
130	s_accum.c \
131	s_alpha.c \
132	s_atifragshader.c \
133	s_bitmap.c \
134	s_blend.c \
135	s_blit.c \
136	s_clear.c \
137	s_copypix.c \
138	s_context.c \
139	s_depth.c \
140	s_drawpix.c \
141	s_feedback.c \
142	s_fog.c \
143	s_fragprog.c \
144	s_lines.c \
145	s_logic.c \
146	s_masking.c \
147	s_points.c \
148	s_readpix.c \
149	s_span.c \
150	s_stencil.c \
151	s_texcombine.c \
152	s_texfilter.c \
153	s_triangle.c \
154	s_zoom.c
155
156# swrast_setup
157.PATH:	${X11SRCDIR.MesaLib}/src/mesa/swrast_setup
158SRCS.ss= \
159	ss_context.c \
160	ss_triangle.c 
161
162# TNL sources
163PATHS.tnl=	tnl
164INCLUDES.tnl=	shader
165SRCS.tnl= \
166	t_context.c \
167	t_pipeline.c \
168	t_draw.c \
169	t_rasterpos.c \
170	t_vb_program.c \
171	t_vb_render.c \
172	t_vb_texgen.c \
173	t_vb_texmat.c \
174	t_vb_vertex.c \
175	t_vb_cull.c \
176	t_vb_fog.c \
177	t_vb_light.c \
178	t_vb_normals.c \
179	t_vb_points.c \
180	t_vp_build.c \
181	t_vertex.c \
182	t_vertex_sse.c \
183	t_vertex_generic.c 
184
185# VBO sources
186PATHS.vbo=	vbo
187SRCS.vbo= \
188	vbo_context.c \
189	vbo_exec.c \
190	vbo_exec_api.c \
191	vbo_exec_array.c \
192	vbo_exec_draw.c \
193	vbo_exec_eval.c \
194	vbo_rebase.c \
195	vbo_split.c \
196	vbo_split_copy.c \
197	vbo_split_inplace.c \
198	vbo_save.c \
199	vbo_save_api.c \
200	vbo_save_draw.c \
201	vbo_save_loopback.c 
202
203COPTS.vbo_save_draw.c=	-Wno-error
204
205# statetracker
206
207# Shader sources
208PATHS.shader=		shader
209INCLUDES.shader=	shader/slang
210SRCS.shader= \
211	arbprogparse.c \
212	arbprogram.c \
213	atifragshader.c \
214	hash_table.c \
215	lex.yy.c \
216	nvfragparse.c \
217	nvprogram.c \
218	nvvertparse.c \
219	program.c \
220	program_parse.tab.c \
221	program_parse_extra.c \
222	prog_cache.c \
223	prog_execute.c \
224	prog_instruction.c \
225	prog_noise.c \
226	prog_optimize.c \
227	prog_parameter.c \
228	prog_parameter_layout.c \
229	prog_print.c \
230	prog_statevars.c \
231	prog_uniform.c \
232	programopt.c \
233	symbol_table.c \
234	shader_api.c
235
236# Shader language sources
237PATHS.slang=	shader/slang
238INCLUDES.slang=	shader
239SRCS.slang= \
240	slang_builtin.c	\
241	slang_codegen.c	\
242	slang_compile.c	\
243	slang_compile_function.c	\
244	slang_compile_operation.c	\
245	slang_compile_struct.c	\
246	slang_compile_variable.c	\
247	slang_emit.c	\
248	slang_ir.c	\
249	slang_label.c	\
250	slang_link.c	\
251	slang_log.c	\
252	slang_mem.c	\
253	slang_print.c	\
254	slang_simplify.c	\
255	slang_storage.c	\
256	slang_typeinfo.c	\
257	slang_vartable.c	\
258	slang_utility.c
259
260.if 0
261ASM_C_SOURCES =	\
262	x86/common_x86.c \
263	x86/x86_xform.c \
264	x86/3dnow.c \
265	x86/sse.c \
266	x86/rtasm/x86sse.c \
267	sparc/sparc.c \
268	ppc/common_ppc.c \
269	x86-64/x86-64.c
270
271X86_SOURCES =			\
272	x86/common_x86_asm.S	\
273	x86/x86_xform2.S	\
274	x86/x86_xform3.S	\
275	x86/x86_xform4.S	\
276	x86/x86_cliptest.S	\
277	x86/mmx_blend.S		\
278	x86/3dnow_xform1.S	\
279	x86/3dnow_xform2.S	\
280	x86/3dnow_xform3.S	\
281	x86/3dnow_xform4.S	\
282	x86/3dnow_normal.S	\
283	x86/sse_xform1.S	\
284	x86/sse_xform2.S	\
285	x86/sse_xform3.S	\
286	x86/sse_xform4.S	\
287	x86/sse_normal.S	\
288	x86/read_rgba_span_x86.S
289
290X86_API =			\
291	x86/glapi_x86.S
292
293X86-64_SOURCES =		\
294	x86-64/xform4.S
295
296X86-64_API =			\
297	x86-64/glapi_x86-64.S
298
299SPARC_SOURCES =			\
300	sparc/clip.S		\
301	sparc/norm.S		\
302	sparc/xform.S
303
304SPARC_API =			\
305	sparc/glapi_sparc.S
306.endif
307
308# Common driver sources
309PATHS.common=	drivers/common
310INCLUDES.common=	shader
311SRCS.common= \
312	driverfuncs.c	\
313	meta.c
314
315# OSMesa driver sources
316PATHS.osmesa=	drivers/osmesa
317INCLUDES.osmesa=	shader
318SRCS.osmesa= \
319	osmesa.c
320
321.for _mod_ in ${MESA_SRC_MODULES}
322
323SRCS+=	${SRCS.${_mod_}}
324
325. for _path_ in ${PATHS.${_mod_}}
326.PATH:	${X11SRCDIR.MesaLib}/src/mesa/${_path_}
327. endfor
328
329. for _path_ in ${INCLUDES.${_mod_}}
330CPPFLAGS+=	-I${X11SRCDIR.MesaLib}/src/mesa/${_path_}
331. endfor
332
333.endfor
334
335.for _path_ in ${INCLUDES.all}
336CPPFLAGS+=	-I${X11SRCDIR.MesaLib}/src/mesa/${_path_}
337.endfor
338
339LIBDPLIBS=	m	${NETBSDSRCDIR}/lib/libm
340
341# build the shader headers
342.include "../../tools/glsl/Makefile.glsl"
343
344CPPFLAGS+=	-I.
345
346# XXXX
347HEADERS.slang=	library/slang_120_core_gc.h \
348		library/slang_builtin_120_common_gc.h \
349		library/slang_builtin_120_fragment_gc.h \
350		library/slang_common_builtin_gc.h \
351		library/slang_core_gc.h \
352		library/slang_fragment_builtin_gc.h \
353		library/slang_vertex_builtin_gc.h
354${SRCS.slang}: ${HEADERS.slang}
355
356library/slang_120_core_gc.h: slang_120_core.gc
357	-@mkdir -p library
358	$(GLSL) fragment $> library/slang_120_core_gc.h
359
360library/slang_builtin_120_common_gc.h: slang_builtin_120_common.gc
361	-@mkdir -p library
362	$(GLSL) fragment $> library/slang_builtin_120_common_gc.h
363
364library/slang_builtin_120_fragment_gc.h: slang_builtin_120_fragment.gc
365	-@mkdir -p library
366	$(GLSL) fragment $> library/slang_builtin_120_fragment_gc.h
367
368library/slang_common_builtin_gc.h: slang_common_builtin.gc
369	-@mkdir -p library
370	$(GLSL) fragment $> library/slang_common_builtin_gc.h
371
372library/slang_core_gc.h: slang_core.gc
373	-@mkdir -p library
374	$(GLSL) fragment $> library/slang_core_gc.h
375
376library/slang_fragment_builtin_gc.h: slang_fragment_builtin.gc
377	-@mkdir -p library
378	$(GLSL) fragment $> library/slang_fragment_builtin_gc.h
379
380library/slang_vertex_builtin_gc.h: slang_vertex_builtin.gc
381	-@mkdir -p library
382	$(GLSL) vertex $> library/slang_vertex_builtin_gc.h
383
384.PATH: ${X11SRCDIR.MesaLib}/src/mesa/shader/slang/library
385
386CLEANFILES+=	${HEADERS.slang}
387cleandir:     cleanmesa
388cleanmesa: .PHONY
389	-@if [ -d library ]; then rmdir library; fi
390
391