xref: /netbsd-src/external/mit/xorg/lib/gallium/Makefile (revision f21b7d7f2cbdd5c14b3882c4e8a3d43580d460a6)
1# $NetBSD: Makefile,v 1.16 2016/09/27 19:18:42 joerg Exp $
2
3# Link the gallium mega driver.
4
5LIBISMODULE=	yes
6LIBISCXX=     yes
7
8.include <bsd.own.mk>
9
10SHLIB_MAJOR=    0
11
12LIB=		gallium_dri
13DRIDIR=		${X11USRLIBDIR}/modules/dri
14DRIDEBUGDIR=	${DEBUGDIR}${X11USRLIBDIR}/modules/dri
15
16CXXFLAGS+=	-std=c++11
17CPPFLAGS+=	-I${DESTDIR}${X11INCDIR}/libdrm
18
19GALLIUM_SUBDIRS= \
20	auxiliary \
21	auxiliary/cso_cache \
22	auxiliary/draw \
23	auxiliary/hud \
24	auxiliary/indices \
25	auxiliary/os \
26	auxiliary/pipebuffer \
27	auxiliary/postprocess \
28	auxiliary/rbug \
29	auxiliary/rtasm \
30	auxiliary/tgsi \
31	auxiliary/translate \
32	auxiliary/util \
33	auxiliary/vl \
34	drivers/galahad \
35	drivers/identity \
36	drivers/noop \
37	drivers/trace \
38	drivers/rbug \
39	drivers/softpipe \
40	winsys/sw/null \
41	winsys/sw/dri \
42	winsys/sw/kms-dri \
43	state_trackers/dri
44
45GALLIUM_SUBDIRS_ATI= \
46	drivers/radeon \
47	drivers/r600 \
48	drivers/r600/sb \
49	winsys/radeon/drm
50
51GALLIUM_SUBDIRS_NOUVEAU= \
52	drivers/nouveau \
53	drivers/nouveau/nv30 \
54	drivers/nouveau/nv50 \
55	drivers/nouveau/codegen \
56	drivers/nouveau/nvc0 \
57	winsys/nouveau/drm
58
59BUILD_RADEON=0
60BUILD_NOUVEAU=0
61.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
62BUILD_RADEON=1
63.endif
64.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" || ${MACHINE} == "evbarm"
65BUILD_NOUVEAU=1
66.endif
67
68DRIVERS=		kms_swrast swrast
69.if ${BUILD_RADEON} == 1
70DRIVERS+=		r600
71GALLIUM_SUBDIRS+=	${GALLIUM_SUBDIRS_ATI}
72.endif
73.if ${BUILD_NOUVEAU} == 1
74DRIVERS+=		nouveau
75GALLIUM_SUBDIRS+=	${GALLIUM_SUBDIRS_NOUVEAU}
76.endif
77
78GALLIUM_SOURCES.auxiliary/cso_cache= \
79	cso_cache.c \
80	cso_context.c \
81	cso_hash.c
82GALLIUM_SOURCES.auxiliary/draw= \
83	draw_context.c \
84	draw_fs.c \
85	draw_gs.c \
86	draw_pipe.c \
87	draw_pipe_aaline.c \
88	draw_pipe_aapoint.c \
89	draw_pipe_clip.c \
90	draw_pipe_cull.c \
91	draw_pipe_flatshade.c \
92	draw_pipe_offset.c \
93	draw_pipe_pstipple.c \
94	draw_pipe_stipple.c \
95	draw_pipe_twoside.c \
96	draw_pipe_unfilled.c \
97	draw_pipe_util.c \
98	draw_pipe_validate.c \
99	draw_pipe_vbuf.c \
100	draw_pipe_wide_line.c \
101	draw_pipe_wide_point.c \
102	draw_prim_assembler.c \
103	draw_pt.c \
104	draw_pt_emit.c \
105	draw_pt_fetch.c \
106	draw_pt_fetch_emit.c \
107	draw_pt_fetch_shade_emit.c \
108	draw_pt_fetch_shade_pipeline.c \
109	draw_pt_post_vs.c \
110	draw_pt_so_emit.c \
111	draw_pt_util.c \
112	draw_pt_vsplit.c \
113	draw_vertex.c \
114	draw_vs.c \
115	draw_vs_exec.c \
116	draw_vs_variant.c
117GALLIUM_SOURCES.auxiliary/hud= \
118	font.c \
119	hud_context.c \
120	hud_cpu.c \
121	hud_fps.c \
122	hud_driver_query.c
123GALLIUM_SOURCES.auxiliary/indices= \
124	u_primconvert.c
125GALLIUM_SOURCES.auxiliary/os= \
126	os_misc.c \
127	os_process.c \
128	os_time.c
129GALLIUM_SOURCES.auxiliary/pipebuffer= \
130	pb_buffer_fenced.c \
131	pb_buffer_malloc.c \
132	pb_bufmgr_alt.c \
133	pb_bufmgr_cache.c \
134	pb_bufmgr_debug.c \
135	pb_bufmgr_mm.c \
136	pb_bufmgr_ondemand.c \
137	pb_bufmgr_pool.c \
138	pb_bufmgr_slab.c \
139	pb_validate.c
140GALLIUM_SOURCES.auxiliary/postprocess= \
141	pp_celshade.c \
142	pp_colors.c \
143	pp_init.c \
144	pp_mlaa.c \
145	pp_run.c \
146	pp_program.c
147GALLIUM_SOURCES.auxiliary/rbug= \
148	rbug_connection.c \
149	rbug_context.c \
150	rbug_core.c \
151	rbug_demarshal.c \
152	rbug_texture.c \
153	rbug_shader.c
154GALLIUM_SOURCES.auxiliary/rtasm= \
155	rtasm_cpu.c \
156	rtasm_execmem.c \
157	rtasm_x86sse.c
158GALLIUM_SOURCES.auxiliary/tgsi= \
159	tgsi_build.c \
160	tgsi_dump.c \
161	tgsi_exec.c \
162	tgsi_info.c \
163	tgsi_iterate.c \
164	tgsi_parse.c \
165	tgsi_sanity.c \
166	tgsi_scan.c \
167	tgsi_strings.c \
168	tgsi_text.c \
169	tgsi_transform.c \
170	tgsi_ureg.c \
171	tgsi_util.c
172GALLIUM_SOURCES.auxiliary/translate= \
173	translate.c \
174	translate_cache.c \
175	translate_generic.c \
176	translate_sse.c
177GALLIUM_SOURCES.auxiliary/util= \
178	u_debug.c \
179	u_debug_describe.c \
180	u_debug_flush.c \
181	u_debug_memory.c \
182	u_debug_refcnt.c \
183	u_debug_stack.c \
184	u_debug_symbol.c \
185	u_dump_defines.c \
186	u_dump_state.c \
187	u_bitmask.c \
188	u_blit.c \
189	u_blitter.c \
190	u_cache.c \
191	u_caps.c \
192	u_cpu_detect.c \
193	u_dl.c \
194	u_draw.c \
195	u_draw_quad.c \
196	u_format.c \
197	u_format_other.c \
198	u_format_latc.c \
199	u_format_s3tc.c \
200	u_format_rgtc.c \
201	u_format_etc.c \
202	u_format_bptc.c \
203	u_format_tests.c \
204	u_format_yuv.c \
205	u_format_zs.c \
206	u_framebuffer.c \
207	u_gen_mipmap.c \
208	u_handle_table.c \
209	u_hash.c \
210	u_hash_table.c \
211	u_helpers.c \
212	u_index_modify.c \
213	u_keymap.c \
214	u_linear.c \
215	u_linkage.c \
216	u_network.c \
217	u_math.c \
218	u_mm.c \
219	u_pstipple.c \
220	u_ringbuffer.c \
221	u_sampler.c \
222	u_simple_shaders.c \
223	u_slab.c \
224	u_snprintf.c \
225	u_staging.c \
226	u_suballoc.c \
227	u_surface.c \
228	u_surfaces.c \
229	u_texture.c \
230	u_tile.c \
231	u_transfer.c \
232	u_resource.c \
233	u_upload_mgr.c \
234	u_vbuf.c
235GALLIUM_SOURCES.auxiliary/vl= \
236	vl_csc.c \
237	vl_compositor.c \
238	vl_matrix_filter.c \
239	vl_median_filter.c \
240	vl_decoder.c \
241	vl_mpeg12_decoder.c \
242	vl_mpeg12_bitstream.c \
243	vl_zscan.c \
244	vl_idct.c \
245	vl_mc.c \
246	vl_vertex_buffers.c \
247	vl_video_buffer.c \
248	vl_deint_filter.c
249
250# Generated
251.PATH: ${X11SRCDIR.MesaLib}/../src/gallium/auxiliary
252GALLIUM_SOURCES.auxiliary= \
253	u_indices_gen.c \
254	u_unfilled_gen.c \
255	u_format_table.c
256.for _f in ${GALLIUM_SOURCES.auxiliary}
257CPPFLAGS.${_f} +=	-I${X11SRCDIR.MesaLib}/src/gallium/auxiliary/util
258.endfor
259
260GALLIUM_SOURCES.drivers/galahad= \
261	glhd_objects.c \
262	glhd_context.c \
263	glhd_screen.c
264
265GALLIUM_SOURCES.drivers/identity = \
266        id_objects.c \
267        id_context.c \
268        id_screen.c
269
270GALLIUM_SOURCES.drivers/noop = \
271        noop_pipe.c \
272        noop_state.c
273
274GALLIUM_SOURCES.drivers/trace = \
275        tr_context.c \
276        tr_dump.c \
277        tr_dump_state.c \
278        tr_screen.c \
279        tr_texture.c
280
281GALLIUM_SOURCES.drivers/rbug = \
282        DRIVERrbug_core.c \
283        DRIVERrbug_context.c \
284        rbug_objects.c \
285        rbug_screen.c
286# Conflicts with auxiliary/rbug/ files
287BUILDSYMLINKS+=	${X11SRCDIR.MesaLib}/src/gallium/drivers/rbug/rbug_core.c    DRIVERrbug_core.c
288BUILDSYMLINKS+=	${X11SRCDIR.MesaLib}/src/gallium/drivers/rbug/rbug_context.c DRIVERrbug_context.c
289CPPFLAGS.DRIVERrbug_core.c+=	-I${X11SRCDIR.MesaLib}/src/gallium/auxiliary
290CPPFLAGS.DRIVERrbug_core.c+=	-I${X11SRCDIR.MesaLib}/src/gallium/drivers/rbug
291CPPFLAGS.DRIVERrbug_core.c+=	-I${X11SRCDIR.MesaLib}/src/gallium/drivers
292CPPFLAGS.DRIVERrbug_context.c+=	-I${X11SRCDIR.MesaLib}/src/gallium/auxiliary
293CPPFLAGS.DRIVERrbug_context.c+=	-I${X11SRCDIR.MesaLib}/src/gallium/drivers/rbug
294CPPFLAGS.DRIVERrbug_context.c+=	-I${X11SRCDIR.MesaLib}/src/gallium/drivers
295
296GALLIUM_SOURCES.drivers/radeon = \
297        cayman_msaa.c \
298        r600_buffer_common.c \
299        r600_pipe_common.c \
300        r600_query.c \
301        r600_streamout.c \
302        r600_texture.c \
303        radeon_video.c \
304        radeon_uvd.c \
305        radeon_vce.c \
306        radeon_vce_40_2_2.c
307#LLVM_C_FILES := \
308#        radeon_elf_util.c \
309#        radeon_setup_tgsi_llvm.c \
310#        radeon_llvm_emit.c \
311#        radeon_llvm_util.c
312
313GALLIUM_SOURCES.drivers/r600 = \
314        r600_asm.c \
315        r600_blit.c \
316        r600_hw_context.c \
317        r600_isa.c \
318        r600_pipe.c \
319        r600_shader.c \
320        r600_state.c \
321        r700_asm.c \
322        evergreen_hw_context.c \
323        evergreen_state.c \
324        eg_asm.c \
325        r600_state_common.c \
326        evergreen_compute.c \
327        compute_memory_pool.c \
328        r600_uvd.c
329GALLIUM_SOURCES.drivers/r600/sb = \
330        sb_bc_builder.cpp \
331        sb_bc_decoder.cpp \
332        sb_bc_dump.cpp \
333        sb_bc_finalize.cpp \
334        sb_bc_parser.cpp \
335        sb_context.cpp \
336        sb_core.cpp \
337        sb_dce_cleanup.cpp \
338        sb_def_use.cpp \
339        sb_dump.cpp \
340        sb_expr.cpp \
341        sb_gcm.cpp \
342        sb_gvn.cpp \
343        sb_if_conversion.cpp \
344        sb_ir.cpp \
345        sb_liveness.cpp \
346        sb_pass.cpp \
347        sb_peephole.cpp \
348        sb_psi_ops.cpp \
349        sb_ra_checker.cpp \
350        sb_ra_coalesce.cpp \
351        sb_ra_init.cpp \
352        sb_sched.cpp \
353        sb_shader.cpp \
354        sb_ssa_builder.cpp \
355        sb_valtable.cpp
356#LLVM_C_SOURCES = r600_llvm.c
357
358.for _f in ${GALLIUM_SOURCES.drivers/r600} ${GALLIUM_SOURCES.drivers/r600/sb}
359CPPFLAGS.${_f} +=	-I${X11SRCDIR.MesaLib}/src/gallium/drivers/r600
360.endfor
361
362GALLIUM_SOURCES.drivers/nouveau = \
363	nouveau_screen.c \
364	nouveau_fence.c \
365	nouveau_mm.c \
366	nouveau_buffer.c \
367	nouveau_heap.c \
368	nouveau_video.c \
369	nouveau_vp3_video.c \
370	nouveau_vp3_video_bsp.c \
371	nouveau_vp3_video_vp.c
372
373GALLIUM_SOURCES.drivers/nouveau/nv30 = \
374	nv30_screen.c \
375	nv30_context.c \
376	nv30_format.c \
377	nv30_resource.c \
378	nv30_transfer.c \
379	nv30_miptree.c \
380	nv30_state.c \
381	nv30_state_validate.c \
382	nv30_texture.c \
383	nv30_fragtex.c \
384	nv40_verttex.c \
385	nv30_fragprog.c \
386	nv30_vertprog.c \
387	nv30_clear.c \
388	nv30_vbo.c \
389	nv30_push.c \
390	nv30_draw.c \
391	nv30_query.c \
392	nvfx_vertprog.c \
393	nvfx_fragprog.c
394
395GALLIUM_SOURCES.drivers/nouveau/nv50 = \
396	nv50_context.c \
397	nv50_formats.c \
398	nv50_miptree.c \
399	nv50_resource.c \
400	nv50_screen.c \
401	nv50_state.c \
402	nv50_state_validate.c \
403	nv50_surface.c \
404	nv50_tex.c \
405	nv50_transfer.c \
406	nv50_vbo.c \
407	nv50_program.c \
408	nv50_shader_state.c \
409	nv50_push.c \
410	nv50_query.c \
411	nv84_video.c \
412	nv84_video_bsp.c \
413	nv84_video_vp.c \
414	nv98_video.c \
415	nv98_video_bsp.c \
416	nv98_video_vp.c \
417	nv98_video_ppp.c
418
419GALLIUM_SOURCES.drivers/nouveau/codegen = \
420	nv50_ir.cpp \
421	nv50_ir_bb.cpp \
422	nv50_ir_build_util.cpp \
423	nv50_ir_emit_nv50.cpp \
424	nv50_ir_from_tgsi.cpp \
425	nv50_ir_graph.cpp \
426	nv50_ir_lowering_nv50.cpp \
427	nv50_ir_peephole.cpp \
428	nv50_ir_print.cpp \
429	nv50_ir_ra.cpp \
430	nv50_ir_ssa.cpp \
431	nv50_ir_target.cpp \
432	nv50_ir_target_nv50.cpp \
433	nv50_ir_util.cpp \
434	nv50_ir_emit_nvc0.cpp \
435	nv50_ir_emit_gk110.cpp \
436	nv50_ir_emit_gm107.cpp \
437	nv50_ir_lowering_nvc0.cpp \
438	nv50_ir_lowering_gm107.cpp \
439	nv50_ir_target_nvc0.cpp \
440	nv50_ir_target_gm107.cpp
441
442GALLIUM_SOURCES.drivers/nouveau/nvc0 = \
443	nvc0_compute.c \
444	nvc0_context.c \
445	nvc0_formats.c \
446	nvc0_miptree.c \
447	nvc0_resource.c \
448	nvc0_screen.c \
449	nvc0_state.c \
450	nvc0_state_validate.c \
451	nvc0_surface.c \
452	nvc0_tex.c \
453	nvc0_transfer.c \
454	nvc0_vbo.c \
455	nvc0_vbo_translate.c \
456	nvc0_program.c \
457	nvc0_shader_state.c \
458	nvc0_query.c \
459	nve4_compute.c \
460	nvc0_video.c \
461	nvc0_video_bsp.c \
462	nvc0_video_vp.c \
463	nvc0_video_ppp.c
464
465.for _f in ${GALLIUM_SOURCES.drivers/nouveau} \
466	   ${GALLIUM_SOURCES.drivers/nouveau/nv30} \
467	   ${GALLIUM_SOURCES.drivers/nouveau/nv50} \
468	   ${GALLIUM_SOURCES.drivers/nouveau/codegen} \
469	   ${GALLIUM_SOURCES.drivers/nouveau/nvc0}
470CPPFLAGS.${_f} +=	-I${X11SRCDIR.MesaLib}/src/gallium/drivers/nouveau
471.endfor
472
473
474GALLIUM_SOURCES.winsys/radeon/drm = \
475        radeon_drm_bo.c \
476        radeon_drm_cs.c \
477        radeon_drm_cs_dump.c \
478        radeon_drm_winsys.c
479
480GALLIUM_SOURCES.winsys/nouveau/drm = \
481        nouveau_drm_winsys.c
482
483GALLIUM_SOURCES.drivers/softpipe = \
484        sp_fs_exec.c \
485        sp_clear.c \
486        sp_fence.c \
487        sp_flush.c \
488        sp_query.c \
489        sp_context.c \
490        sp_draw_arrays.c \
491        sp_prim_vbuf.c \
492        sp_quad_pipe.c \
493        sp_quad_stipple.c \
494        sp_quad_depth_test.c \
495        sp_quad_fs.c \
496        sp_quad_blend.c \
497        sp_screen.c \
498        sp_setup.c \
499        sp_state_blend.c \
500        sp_state_clip.c \
501        sp_state_derived.c \
502        sp_state_sampler.c \
503        sp_state_shader.c \
504        sp_state_so.c \
505        sp_state_rasterizer.c \
506        sp_state_surface.c \
507        sp_state_vertex.c \
508        sp_texture.c \
509        sp_tex_sample.c \
510        sp_tex_tile_cache.c \
511        sp_tile_cache.c \
512        sp_surface.c
513
514GALLIUM_SOURCES.winsys/sw/null = \
515	null_sw_winsys.c
516
517GALLIUM_SOURCES.winsys/sw/dri = \
518	dri_sw_winsys.c
519
520GALLIUM_SOURCES.winsys/sw/kms-dri = \
521	kms_dri_sw_winsys.c
522
523GALLIUM_SOURCES.state_trackers/dri = \
524        dri_context.c \
525        dri_drawable.c \
526        dri_query_renderer.c \
527        dri_screen.c \
528	drisw.c \
529	dri2.c
530.for _f in ${GALLIUM_SOURCES.state_trackers/dri}
531CPPFLAGS.${_f} +=	-I${X11SRCDIR.MesaLib}/src/gallium/state_trackers/dri/common
532.endfor
533
534# missing
535CPPFLAGS+=	\
536	-DGALLIUM_SOFTPIPE \
537	-DGALLIUM_STATIC_TARGETS=1 \
538	-DMESA_EGL_NO_X11_HEADERS
539
540.for _d in ${GALLIUM_SUBDIRS}
541SRCS+=	${GALLIUM_SOURCES.${_d}}
542.PATH: ${X11SRCDIR.MesaLib}/src/gallium/${_d}
543.endfor
544
545#. if defined(${GALLIUM_SOURCES.${_d}})
546#SRCS+=	${GALLIUM_SOURCES.${_d}}
547#. endif
548
549.include "../libloader.mk"
550
551
552LIBDPLIBS+=	m		${.CURDIR}/../../../../../lib/libm
553.if ${BUILD_RADEON} == 1 || ${BUILD_NOUVEAU} == 1
554LIBDPLIBS+= 	drm		${.CURDIR}/../libdrm
555.if ${BUILD_RADEON} == 1
556LIBDPLIBS+= 	drm_radeon	${.CURDIR}/../libdrm_radeon
557.endif	# ${BUILD_RADEON} == 1
558.if ${BUILD_NOUVEAU} == 1
559LIBDPLIBS+= 	drm_nouveau	${.CURDIR}/../libdrm_nouveau
560.endif	# ${BUILD_NOUVEAU} == 1
561.endif	# ${BUILD_RADEON} == 1 || ${BUILD_NOUVEAU} == 1
562LIBDPLIBS+= 	glapi		${.CURDIR}/../libglapi
563LIBDPLIBS+=	expat		${.CURDIR}/../../../../../external/mit/expat/lib/libexpat
564
565LDFLAGS+=	-Wl,--version-script=${X11SRCDIR.MesaLib}/src/gallium/targets/dri/dri.sym
566
567##  build mesagallium parts
568MESA_SRC_MODULES=  main math vbo state_tracker program asm_s
569.include "../libmesa.mk"
570.include "../libglsl.mk"
571
572# Special addition for just gallium; it misses the rest of asm_c files.
573.PATH: ${X11SRCDIR.MesaLib}/src/mesa/x86
574SRCS+=	common_x86.c
575
576.if ${MACHINE} == "amd64" || ${MACHINE} == "i386"
577SRCS+=	streaming-load-memcpy.c
578CFLAGS.streaming-load-memcpy.c+= -msse4.1
579.endif
580
581.include "../driver.mk"
582
583
584.PATH: ${X11SRCDIR.MesaLib}/src/gallium/targets/dri
585SRCS+=	target.c
586
587CPPFLAGS+= \
588	-I${X11SRCDIR.MesaLib}/src/gallium/include \
589	-I${X11SRCDIR.MesaLib}/src/gallium/auxiliary \
590	-I${X11SRCDIR.MesaLib}/src/gallium/drivers \
591	-I${X11SRCDIR.MesaLib}/../src/mesa/drivers/dri/common
592
593CPPFLAGS.target.c += \
594	-DDRI_TARGET \
595	-DGALLIUM_GALAHAD \
596	-DGALLIUM_NOOP \
597	-DGALLIUM_RBUG \
598	-DGALLIUM_TRACE \
599	-DGALLIUM_SOFTPIPE \
600	-I${X11SRCDIR.MesaLib}/src/gallium/state_trackers/dri \
601	-I${X11SRCDIR.MesaLib}/src/loader \
602	-I${X11SRCDIR.MesaLib}/src/gallium/winsys
603
604.if ${BUILD_RADEON} == 1
605CPPFLAGS.target.c += \
606	-DGALLIUM_R200 \
607	-DGALLIUM_R600
608.endif	# ${BUILD_RADEON} == 1
609
610.if ${BUILD_NOUVEAU} == 1
611CPPFLAGS.target.c += \
612	-DGALLIUM_NOUVEAU
613.endif	# ${BUILD_NOUVEAU} == 1
614
615CWARNFLAGS.clang+=	-Wno-error=constant-conversion \
616			-Wno-error=tautological-constant-out-of-range-compare \
617			-Wno-error=pointer-sign \
618			-Wno-error=switch \
619			-Wno-error=absolute-value \
620			-Wno-error=tautological-compare \
621			-Wno-error=static-in-inline \
622			-Wno-error=logical-not-parentheses
623
624.include <bsd.x11.mk>
625LIBDIR=		${X11USRLIBDIR}/modules/dri
626
627.for _d in ${DRIVERS}
628SYMLINKS+= gallium_dri.so ${DRIDIR}/${_d}_dri.so
629SYMLINKS+= gallium_dri.so.${SHLIB_MAJOR} ${DRIDIR}/${_d}_dri.so.${SHLIB_MAJOR}
630.if ${MKDEBUG} != "no"
631SYMLINKS+= gallium_dri.so.${SHLIB_MAJOR}.debug ${DRIDEBUGDIR}/${_d}_dri.so.${SHLIB_MAJOR}.debug
632.endif
633.endfor
634
635.if ${MACHINE_ARCH} == "sparc" || ${COMMON_MACHINE_ARCH:U} == "sparc"
636COPTS+=	${${ACTIVE_CC} == "clang":? -Wa,-Av8plus  :}
637.endif
638
639.include <bsd.lib.mk>
640# Don't regenerate c files
641.y.c:
642