run with a minimum of tweaking. Rewriting them for modern ed looks really hard. Fixes: #84
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| include("plat/build.lua")
 | |
| 
 | |
| -- For now, all floats are little-endian.
 | |
| local byte_order = "mach/i86/libfp/byte_order.h"
 | |
| 
 | |
| -- For now, only cpm uses software floating-point.
 | |
| for _, plat in ipairs({"cpm"}) do
 | |
| 	local edits = {}
 | |
| 	for _, src in fpairs("./*.c", "./*.e") do
 | |
| 
 | |
| 		-- Compile each src file into assembly code.
 | |
| 		local n = basename(src):gsub("%.%w*$", "")
 | |
| 		local assembly = ackfile {
 | |
| 			name = "s_"..plat.."/"..n,
 | |
| 			srcs = { src },
 | |
| 			deps = {
 | |
| 				"./*.h",
 | |
| 				byte_order,
 | |
| 			},
 | |
| 			suffix = ".s",
 | |
| 			vars = {
 | |
| 				["+ackcflags"] = { "-I"..dirname(byte_order) },
 | |
| 				plat = plat
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		-- Run FP.script to edit the assembly code.
 | |
| 		edits[#edits+1] = normalrule {
 | |
| 			name = "ed_"..plat.."/"..n,
 | |
| 			ins = {
 | |
| 				"./FP.script",
 | |
| 				"util/cmisc+ed",
 | |
| 				assembly,
 | |
| 			},
 | |
| 			outleaves = { n..".s" },
 | |
| 			commands = {
 | |
| 				"%{ins[2]} -s %{ins[3]} <%{ins[1]} >%{outs}"
 | |
| 			}
 | |
| 		}
 | |
| 	end
 | |
| 
 | |
| 	acklibrary {
 | |
| 		name = "lib_"..plat,
 | |
| 		srcs = { edits },
 | |
| 		vars = { plat = plat }
 | |
| 	}
 | |
| 
 | |
| 	installable {
 | |
| 		name = "pkg_"..plat,
 | |
| 		map = {
 | |
| 			["$(PLATIND)/"..plat.."/libfp.a"] = "+lib_"..plat,
 | |
| 		}
 | |
| 	}
 | |
| end
 |