opkg

statically linked package installer
git clone anongit@rnpnr.xyz:opkg.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

gen.lua (2367B)


      1 local arch = ({
      2 	aarch64='arm64',
      3 	x86_64='x86',
      4 	riscv64='riscv',
      5 })[config.target.platform:match('[^-]*')]
      6 sub('tools.ninja', function()
      7 	toolchain(config.host)
      8 	exe('unifdef', {'scripts/unifdef.c'})
      9 end)
     10 
     11 rule('header', 'sed -E -f $dir/header.sed $in >$out.tmp && { $outdir/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ $out.tmp >$out; [ $$? -le 1 ]; } && rm $out.tmp')
     12 rule('wrapper', [[printf '#include <asm-generic/%s>\n' $file >$out]])
     13 
     14 local function process(outdir, srcdir, files)
     15 	local outs = {}
     16 	for i, file in ipairs(files) do
     17 		local out = outdir..'/'..file
     18 		outs[i] = out
     19 		build('header', out, {srcdir..'/'..file, '|', '$dir/header.sed', '$outdir/unifdef'})
     20 	end
     21 	return outs
     22 end
     23 
     24 local mandatory = {
     25 	-- <awk '$1 == "mandatory-y" {printf "\\t'\'%s\'',\\n", $3}' src/include/uapi/asm-generic/Kbuild
     26 	'auxvec.h',
     27 	'bitsperlong.h',
     28 	'bpf_perf_event.h',
     29 	'byteorder.h',
     30 	'errno.h',
     31 	'fcntl.h',
     32 	'ioctl.h',
     33 	'ioctls.h',
     34 	'ipcbuf.h',
     35 	'mman.h',
     36 	'msgbuf.h',
     37 	'param.h',
     38 	'poll.h',
     39 	'posix_types.h',
     40 	'ptrace.h',
     41 	'resource.h',
     42 	'sembuf.h',
     43 	'setup.h',
     44 	'shmbuf.h',
     45 	'sigcontext.h',
     46 	'siginfo.h',
     47 	'signal.h',
     48 	'socket.h',
     49 	'sockios.h',
     50 	'stat.h',
     51 	'statfs.h',
     52 	'swab.h',
     53 	'termbits.h',
     54 	'termios.h',
     55 	'types.h',
     56 	'unistd.h',
     57 }
     58 
     59 local basefiles = load('base.lua')
     60 local archfiles = load(arch..'.lua')
     61 
     62 build('awk', '$outdir/include/linux/version.h', {'$srcdir/Makefile', '|', '$dir/version.awk'}, {
     63 	expr='-f $dir/version.awk',
     64 })
     65 
     66 pkg.hdrs = {
     67 	'$outdir/include/linux/version.h',
     68 	process('$outdir/include', '$srcdir/include/uapi', basefiles),
     69 	process('$outdir/include', '$srcdir/arch/'..arch..'/include/uapi', archfiles),
     70 	install=true,
     71 }
     72 
     73 for _, file in ipairs(archfiles) do
     74 	archfiles[file] = true
     75 end
     76 
     77 local function wrap(file)
     78 	local out = '$outdir/include/asm/'..file
     79 	build('wrapper', out, nil, {file=file})
     80 	table.insert(pkg.hdrs, out)
     81 end
     82 for _, file in ipairs(mandatory) do
     83 	if not archfiles['asm/'..file] then
     84 		wrap(file)
     85 	end
     86 end
     87 for _, file in ipairs(archfiles.generic) do
     88 	wrap(file)
     89 end
     90 
     91 for _, spec in ipairs(archfiles.unistd) do
     92 	local out = '$outdir/include/asm/'..spec.dst
     93 	build('awk', out, {'$srcdir/'..spec.src, '|', '$dir/unistd.awk'}, {
     94 		expr={
     95 			'-v file='..spec.dst,
     96 			string.format([[-v abi='%s']], spec.abi),
     97 			'-v off='..(spec.off or ''),
     98 			'-f $dir/unistd.awk',
     99 		},
    100 	})
    101 	table.insert(pkg.hdrs, out)
    102 end
    103 
    104 fetch('local')