101 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| include("mach/proto/as/build.lua")
 | |
| include("mach/proto/ncg/build.lua")
 | |
| include("mach/proto/mcg/build.lua")
 | |
| include("mach/proto/top/build.lua")
 | |
| 
 | |
| definerule("ackfile",
 | |
| 	{
 | |
| 		srcs = { type="targets" },
 | |
| 		deps = { type="targets", default={} },
 | |
| 	},
 | |
| 	function (e)
 | |
| 		local plat = e.vars.plat
 | |
| 
 | |
| 		return cfile {
 | |
| 			name = e.name,
 | |
| 			srcs = e.srcs,
 | |
| 			deps = {
 | |
| 				"lang/cem/cemcom.ansi+pkg",
 | |
| 				"lang/cem/cpp.ansi+pkg",
 | |
| 				"lang/m2/comp+pkg",
 | |
| 				"lang/pc/comp+pkg",
 | |
| 				"plat/"..plat.."+tools",
 | |
| 				"util/ack+pkg",
 | |
| 				"util/ego+pkg",
 | |
| 				"util/misc+pkg",
 | |
| 				e.deps
 | |
| 			},
 | |
| 			commands = {
 | |
| 				"ACKDIR=$(INSDIR) $(INSDIR)/bin/ack -m%{plat} -c -o %{outs} %{ins} %{hdrpaths} %{ackcflags}"
 | |
| 			}
 | |
| 		}
 | |
| 	end
 | |
| )
 | |
| 
 | |
| definerule("acklibrary",
 | |
| 	{
 | |
| 		srcs = { type="targets", default={} },
 | |
| 		hdrs = { type="targets", default={} },
 | |
| 		deps = { type="targets", default={} },
 | |
| 	},
 | |
| 	function (e)
 | |
| 		return clibrary {
 | |
| 			name = e.name,
 | |
| 			srcs = e.srcs,
 | |
| 			hdrs = e.hdrs,
 | |
| 			deps = {
 | |
| 				"util/arch+pkg",
 | |
| 				e.deps
 | |
| 			},
 | |
| 			_cfile = ackfile,
 | |
| 			commands = {
 | |
| 				"rm -f %{outs[1]}",
 | |
| 				"ACKDIR=$(INSDIR) $(INSDIR)/bin/aal qc %{outs[1]} %{ins}"
 | |
| 			}
 | |
| 		}
 | |
| 	end
 | |
| )
 | |
| 
 | |
| definerule("ackprogram",
 | |
| 	{
 | |
| 		srcs = { type="targets", default={} },
 | |
| 		deps = { type="targets", default={} },
 | |
| 	},
 | |
| 	function (e)
 | |
| 		return cprogram {
 | |
| 			name = e.name,
 | |
| 			srcs = e.srcs,
 | |
| 			deps = {
 | |
| 				"plat/"..e.vars.plat.."+pkg",
 | |
| 				"util/ack+pkg",
 | |
| 				"util/led+pkg",
 | |
| 				e.deps
 | |
| 			},
 | |
| 			_clibrary = acklibrary,
 | |
| 			commands = {
 | |
| 				"ACKDIR=$(INSDIR) $(INSDIR)/bin/ack -m%{plat} -.%{lang} -o %{outs} %{ins}"
 | |
| 			}
 | |
| 		}
 | |
| 	end
 | |
| )
 | |
| 
 | |
| definerule("build_plat_libs",
 | |
| 	{
 | |
| 		arch = { type="string" },
 | |
| 		plat = { type="string" },
 | |
| 	},
 | |
| 	function(e)
 | |
| 		return installable {
 | |
| 			name = e.name,
 | |
| 			map = {
 | |
| 				"lang/basic/lib+pkg_"..e.plat,
 | |
| 				"lang/cem/libcc.ansi+pkg_"..e.plat,
 | |
| 				"lang/m2/libm2+pkg_"..e.plat,
 | |
| 				"lang/pc/libpc+pkg_"..e.plat,
 | |
| 				["$(PLATIND)/"..e.plat.."/libem.a"] = "mach/"..e.arch.."/libem+lib_"..e.plat,
 | |
| 				["$(PLATIND)/"..e.plat.."/libend.a"] = "mach/"..e.arch.."/libend+lib_"..e.plat,
 | |
| 			}
 | |
| 		}
 | |
| 	end
 | |
| )
 | |
| 
 |