logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

gen.lua (5763B)


  1. set('version', '1.46.4')
  2. cflags{
  3. '-std=c99', '-Wall',
  4. '-Wno-address-of-packed-member', '-Wno-format-truncation',
  5. '-Wno-unused-variable', '-Wno-stringop-truncation',
  6. '-Wno-stringop-overflow', '-Wno-unused-label',
  7. '-D HAVE_CONFIG_H',
  8. '-I $outdir',
  9. '-I $outdir/include',
  10. '-I $outdir/internal',
  11. '-I $outdir/internal/support',
  12. '-I $srcdir/lib',
  13. '-isystem $builddir/pkg/linux-headers/include',
  14. '-isystem $builddir/pkg/util-linux/include',
  15. }
  16. build('cat', '$outdir/config.h', {
  17. '$builddir/probe/HAVE__THREAD_LOCAL',
  18. '$builddir/probe/SIZEOF_LONG',
  19. '$builddir/probe/SIZEOF_TIME_T',
  20. '$dir/config.h',
  21. })
  22. set('subst', {
  23. '-e s,@E2FSPROGS_VERSION@,$version,',
  24. '-e s,@E2FSPROGS_MONTH@,Aug,',
  25. '-e s,@E2FSPROGS_YEAR@,2021,',
  26. '-e s,@JDEV@,,',
  27. })
  28. local function et(file, src, hdr)
  29. src = '$outdir/'..src
  30. hdr = '$outdir/'..hdr
  31. build('awk', src, {file, '|', '$srcdir/lib/et/et_c.awk'}, {
  32. expr='-f $srcdir/lib/et/et_c.awk -v outfile=/dev/stdout outfn='..src:match('[^/]*$'),
  33. })
  34. build('awk', hdr, {file, '|', '$srcdir/lib/et/et_h.awk'}, {
  35. expr='-f $srcdir/lib/et/et_h.awk -v outfile=/dev/stdout outfn='..hdr:match('[^/]*$'),
  36. })
  37. end
  38. local function subst(output, input)
  39. output = '$outdir/'..output
  40. build('sed', output, '$srcdir/'..input, {expr='$subst'})
  41. return output
  42. end
  43. local function substman(files)
  44. for _, file in ipairs(files) do
  45. if file:hassuffix('.in') then
  46. file = subst(file:sub(1, -4), file)
  47. end
  48. man{file}
  49. end
  50. end
  51. subst('ext2_err.et', 'lib/ext2fs/ext2_err.et.in')
  52. et('$outdir/ext2_err.et', 'ext2_err.c', 'include/ext2fs/ext2_err.h')
  53. et('$srcdir/lib/support/prof_err.et', 'prof_err.c', 'internal/support/prof_err.h')
  54. build('copy', '$outdir/include/ext2fs/ext2_types.h', '$dir/ext2_types.h')
  55. sub('tools.ninja', function()
  56. toolchain(config.host)
  57. exe('gen_crc32ctable', {'lib/ext2fs/gen_crc32ctable.c'})
  58. end)
  59. rule('gen_crc32ctable', '$outdir/gen_crc32ctable >$out')
  60. build('gen_crc32ctable', '$outdir/internal/crc32c_table.h', {'|', '$outdir/gen_crc32ctable'})
  61. pkg.hdrs = {
  62. '$outdir/include/ext2fs/ext2_err.h',
  63. '$outdir/include/ext2fs/ext2_types.h',
  64. }
  65. pkg.deps = {
  66. '$outdir/config.h',
  67. '$gendir/headers',
  68. '$outdir/internal/support/prof_err.h',
  69. '$outdir/internal/crc32c_table.h',
  70. 'pkg/linux-headers/headers',
  71. 'pkg/util-linux/headers',
  72. }
  73. lib('libcomm_err.a', [[lib/et/(error_message.c et_name.c init_et.c com_err.c com_right.c)]])
  74. lib('libe2p.a', [[lib/e2p/(
  75. feature.c fgetflags.c fsetflags.c fgetversion.c fsetversion.c
  76. getflags.c getversion.c hashstr.c iod.c ls.c ljs.c mntopts.c
  77. parse_num.c pe.c pf.c ps.c setflags.c setversion.c uuid.c
  78. ostype.c percent.c crypto_mode.c fgetproject.c fsetproject.c
  79. encoding.c errcode.c
  80. )]])
  81. lib('libext2fs.a', [[$outdir/ext2_err.c lib/ext2fs/(
  82. alloc.c
  83. alloc_sb.c
  84. alloc_stats.c
  85. alloc_tables.c
  86. atexit.c
  87. badblocks.c
  88. bb_inode.c
  89. bitmaps.c
  90. bitops.c
  91. blkmap64_ba.c
  92. blkmap64_rb.c
  93. blknum.c
  94. block.c
  95. bmap.c
  96. check_desc.c
  97. closefs.c
  98. crc16.c
  99. crc32c.c
  100. csum.c
  101. dblist.c
  102. dblist_dir.c
  103. dirblock.c
  104. dirhash.c
  105. dir_iterate.c
  106. expanddir.c
  107. ext_attr.c
  108. extent.c
  109. fallocate.c
  110. fileio.c
  111. finddev.c
  112. flushb.c
  113. freefs.c
  114. gen_bitmap.c
  115. gen_bitmap64.c
  116. get_num_dirs.c
  117. get_pathname.c
  118. getsize.c
  119. getsectsize.c
  120. hashmap.c
  121. i_block.c
  122. icount.c
  123. ind_block.c
  124. initialize.c
  125. inline.c
  126. inline_data.c
  127. inode.c
  128. io_manager.c
  129. ismounted.c
  130. link.c
  131. llseek.c
  132. lookup.c
  133. mkdir.c
  134. mkjournal.c
  135. mmp.c
  136. namei.c
  137. native.c
  138. newdir.c
  139. nls_utf8.c
  140. openfs.c
  141. progress.c
  142. punch.c
  143. qcow2.c
  144. read_bb.c
  145. read_bb_file.c
  146. res_gdt.c
  147. rw_bitmaps.c
  148. sha512.c
  149. swapfs.c
  150. symlink.c
  151. undo_io.c
  152. unix_io.c
  153. sparse_io.c
  154. unlink.c
  155. valid_blk.c
  156. version.c
  157. rbtree.c
  158. dupfs.c
  159. )]])
  160. lib('libsupport.a', [[$outdir/prof_err.c lib/support/(
  161. cstring.c
  162. mkquota.c
  163. plausible.c
  164. profile.c
  165. parse_qtype.c
  166. profile_helpers.c
  167. quotaio.c
  168. quotaio_v2.c
  169. quotaio_tree.c
  170. dict.c
  171. )]])
  172. exe('bin/e2fsck', [[
  173. e2fsck/(
  174. unix.c e2fsck.c super.c pass1.c pass1b.c pass2.c
  175. pass3.c pass4.c pass5.c journal.c badblocks.c util.c dirinfo.c
  176. dx_dirinfo.c ehandler.c problem.c message.c quota.c recovery.c
  177. region.c revoke.c ea_refcount.c rehash.c
  178. logfile.c sigcatcher.c readahead.c
  179. extents.c encrypted_files.c
  180. )
  181. libsupport.a libext2fs.a libe2p.a libcomm_err.a
  182. $builddir/pkg/util-linux/libblkid.a.d
  183. $builddir/pkg/util-linux/libuuid.a.d
  184. ]])
  185. file('bin/e2fsck', '755', '$outdir/bin/e2fsck')
  186. substman{'e2fsck/e2fsck.8.in', 'e2fsck/e2fsck.conf.5.in'}
  187. exe('bin/resize2fs', [[
  188. resize/(
  189. extent.c resize2fs.c main.c online.c resource_track.c
  190. sim_progress.c
  191. )
  192. libext2fs.a libe2p.a libcomm_err.a
  193. ]])
  194. file('bin/resize2fs', '755', '$outdir/bin/resize2fs')
  195. substman{'resize/resize2fs.8.in'}
  196. build('awk', '$outdir/default_profile.c', {'$srcdir/misc/mke2fs.conf.in', '|', '$srcdir/misc/profile-to-c.awk'}, {
  197. expr='-f $srcdir/misc/profile-to-c.awk',
  198. })
  199. cc('misc/util.c')
  200. exe('bin/mke2fs', [[
  201. misc/(
  202. mke2fs.c util.c.o mk_hugefiles.c
  203. create_inode.c
  204. )
  205. $outdir/default_profile.c
  206. libsupport.a libext2fs.a libe2p.a libcomm_err.a
  207. $builddir/pkg/util-linux/libblkid.a.d
  208. $builddir/pkg/util-linux/libuuid.a.d
  209. ]])
  210. file('bin/mke2fs', '755', '$outdir/bin/mke2fs')
  211. substman{'misc/mke2fs.8.in'}
  212. sub('journal.ninja', function()
  213. cflags{
  214. '-I $srcdir/e2fsck',
  215. '-D DEBUGFS',
  216. }
  217. set('outdir', '$outdir/misc')
  218. lib('libjournal.a', [[
  219. debugfs/journal.c
  220. e2fsck/(revoke.c recovery.c)
  221. ]])
  222. end)
  223. exe('bin/tune2fs', [[
  224. misc/(tune2fs.c util.c.o libjournal.a)
  225. libsupport.a libext2fs.a libe2p.a libcomm_err.a
  226. $builddir/pkg/util-linux/libblkid.a.d
  227. $builddir/pkg/util-linux/libuuid.a.d
  228. ]])
  229. file('bin/tune2fs', '755', '$outdir/bin/tune2fs')
  230. substman{'misc/tune2fs.8.in'}
  231. exe('bin/e4crypt', [[
  232. misc/e4crypt.c
  233. libext2fs.a
  234. $builddir/pkg/util-linux/libuuid.a.d
  235. ]])
  236. file('bin/e4crypt', '755', '$outdir/bin/e4crypt')
  237. substman{'misc/e4crypt.8.in'}
  238. fetch 'git'