are automatically flattened (leading to better build files), and the list and filename functions are vastly more orthogonal.
		
			
				
	
	
		
			25 lines
		
	
	
	
		
			409 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
	
		
			409 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
cprogram {
 | 
						|
	name = "tabgen",
 | 
						|
	srcs = { "./tabgen.c" }
 | 
						|
}
 | 
						|
 | 
						|
definerule("tabgen",
 | 
						|
	{
 | 
						|
		srcs = { type="targets" },
 | 
						|
	},
 | 
						|
	function(e)
 | 
						|
		local symname = basename(filenamesof(e.srcs)[1]):gsub("%.tab$", "")
 | 
						|
 | 
						|
		return normalrule {
 | 
						|
			name = e.name,
 | 
						|
			ins = {
 | 
						|
				"util/cmisc+tabgen",
 | 
						|
				e.srcs
 | 
						|
			},
 | 
						|
			outleaves = { symname..".c" },
 | 
						|
			commands = {
 | 
						|
				"%{ins[1]} -f%{ins[2]} > %{outs} || rm %{outs}"
 | 
						|
			}
 | 
						|
		}
 | 
						|
	end
 | 
						|
)
 |