Welcome to little lamb

Code » limb » commit 87312a1

Update to latest changes in comain

author Olivier Brunel
2023-03-31 13:46:28 UTC
committer Olivier Brunel
2023-05-20 18:06:13 UTC
parent 5133ef68b446474902308c3b7913da1a68bf8621

Update to latest changes in comain

Meaning move source into src/liblimb & src/mkrabintables for auto
assignment of objects to library/binary.
Also we'll put source files into a subdir of their defining header, much
like we do with documentation, now moved into src/doc.

.gitignore +5 -7
meta/bins/mkrabintables +0 -14
meta/libs/limb +0 -117
meta/options/blake3asm/desc +1 -0
meta/options/blake3asm/isdefault +23 -0
meta/options/blake3asm/objs +4 -0
meta/options/blake3noasm/desc +0 -0
meta/options/blake3noasm/isdefault +5 -0
meta/options/blake3noasm/objs +4 -0
meta/options/optimize +1 -0
meta/options/optimizeOff +1 -0
meta/options/warnings +1 -0
project.mk +8 -21
{doc => src/doc}/blake3.h.0.md +0 -0
{doc => src/doc/blake3.h}/blake3_init.3.md +0 -0
{doc => src/doc}/buffer.h.0.md +0 -0
{doc => src/doc/buffer.h}/buffer_putescall.3.md +0 -0
{doc => src/doc/buffer.h}/buffer_puthex.3.md +0 -0
{doc => src/doc/buffer.h}/buffer_putmsg.3.md +0 -0
{doc => src/doc}/bytestr.h.0.md +0 -0
{doc => src/doc/bytestr.h}/byte_get_match_full.3.md +0 -0
{doc => src/doc/bytestr.h}/byte_str.3.md +0 -0
{doc => src/doc}/direntry.h.0.md +0 -0
{doc => src/doc/direntry.h}/opendirat.3.md +0 -0
{doc => src/doc}/djbunix.h.0.md +0 -0
{doc => src/doc/djbunix.h}/rm_rfat.3.md +0 -0
{doc => src/doc/djbunix.h}/salsat.3.md +0 -0
{doc => src/doc/djbunix.h}/sareadlinkat.3.md +0 -0
{doc => src/doc}/exitcode.h.0.md +0 -0
{doc => src/doc}/gccattributes.h.0.md +0 -0
{doc => src/doc}/hasher.h.0.md +0 -0
{doc => src/doc/hasher.h}/hasher_hash.3.md +0 -0
{doc => src/doc}/hasher_blake3.h.0.md +0 -0
{doc => src/doc}/hasher_sha1.h.0.md +0 -0
{doc => src/doc}/hasher_sha256.h.0.md +0 -0
{doc => src/doc}/hasher_sha3_224.h.0.md +0 -0
{doc => src/doc}/hasher_sha3_256.h.0.md +0 -0
{doc => src/doc}/hasher_sha3_384.h.0.md +0 -0
{doc => src/doc}/hasher_sha3_512.h.0.md +0 -0
{doc => src/doc}/hasher_sha512.h.0.md +0 -0
{doc => src/doc}/hlookup.h.0.md +0 -0
{doc => src/doc/hlookup.h}/hlookup.3.md +0 -0
{doc => src/doc}/hmac.h.0.md +0 -0
{doc => src/doc/hmac.h}/hmac.3.md +0 -0
{doc => src/doc}/hmap.h.0.md +0 -0
{doc => src/doc/hmap.h}/hmap_init.3.md +0 -0
{doc => src/doc}/int.h.0.md +0 -0
{doc => src/doc}/loadopt.h.0.md +0 -0
{doc => src/doc/loadopt.h}/loadopt.3.md +0 -0
{doc => src/doc}/nextsplit.h.0.md +0 -0
{doc => src/doc/nextsplit.h}/nextsplit_ae.3.md +0 -0
{doc => src/doc}/obuffer.h.0.md +0 -0
{doc => src/doc/obuffer.h}/obuffer_put.3.md +0 -0
{doc => src/doc/obuffer.h}/obuffer_putmsg.3.md +0 -0
{doc => src/doc}/obuffers.h.0.md +0 -0
{doc => src/doc/obuffers.h}/obuffers_addextra.3.md +0 -0
{doc => src/doc/obuffers.h}/obuffers_addlog.3.md +0 -0
{doc => src/doc/obuffers.h}/out_putmsg.3.md +0 -0
{doc => src/doc}/output.h.0.md +0 -0
{doc => src/doc/output.h}/die.3.md +0 -0
{doc => src/doc/output.h}/out.3.md +0 -0
{doc => src/doc/output.h}/ret.3.md +0 -0
{doc => src/doc/output.h}/warn.3.md +0 -0
{doc => src/doc}/parseopt.h.0.md +0 -0
{doc => src/doc/parseopt.h}/parseopt.3.md +0 -0
{doc => src/doc}/saencdata.h.0.md +0 -0
{doc => src/doc/saencdata.h}/saencdata.3.md +0 -0
{doc => src/doc}/samisc.h.0.md +0 -0
{doc => src/doc/samisc.h}/sacoloff.3.md +0 -0
{doc => src/doc/samisc.h}/sacolptr.3.md +0 -0
{doc => src/doc/samisc.h}/saoff2ptr.3.md +0 -0
{doc => src/doc}/sha3.h.0.md +0 -0
{doc => src/doc/sha3.h}/sha3_224_init.3.md +0 -0
{doc => src/doc}/siovec.h.0.md +0 -0
{doc => src/doc/siovec.h}/siovec_gather0.3.md +0 -0
{doc => src/doc/siovec.h}/siovec_memcmp.3.md +0 -0
{doc => src/doc/siovec.h}/siovec_off.3.md +0 -0
{doc => src/doc/siovec.h}/siovec_seek_bytechr.3.md +0 -0
{doc => src/doc/siovec.h}/siovec_seek_bytein.3.md +0 -0
{doc => src/doc/siovec.h}/siovec_seek_gather.3.md +0 -0
{doc => src/doc}/u16.h.0.md +0 -0
{doc => src/doc/u16.h}/u16_fmt.3.md +0 -0
{doc => src/doc/u16.h}/u16_le.3.md +0 -0
{doc => src/doc/u16.h}/u16_pack.3.md +0 -0
{doc => src/doc/u16.h}/u16_scan.3.md +0 -0
{doc => src/doc}/u32.h.0.md +0 -0
{doc => src/doc/u32.h}/u32_fmt.3.md +0 -0
{doc => src/doc/u32.h}/u32_le.3.md +0 -0
{doc => src/doc/u32.h}/u32_pack.3.md +0 -0
{doc => src/doc/u32.h}/u32_scan.3.md +0 -0
{doc => src/doc}/u64.h.0.md +0 -0
{doc => src/doc/u64.h}/u64_fmt.3.md +0 -0
{doc => src/doc/u64.h}/u64_fmt_generic.3.md +0 -0
{doc => src/doc/u64.h}/u64_le.3.md +0 -0
{doc => src/doc/u64.h}/u64_pack.3.md +0 -0
{doc => src/doc/u64.h}/u64_scan.3.md +0 -0
{doc => src/doc}/uint64.h.0.md +0 -0
{doc => src/doc/uint64.h}/msb64.3.md +0 -0
{doc => src/doc/uint64.h}/uint64_pack_trim.3.md +0 -0
{doc => src/doc}/unix-transactional.h.0.md +0 -0
{doc => src/doc/unix-transactional.h}/open_createat.3.md +0 -0
{doc => src/doc/unix-transactional.h}/open_exclat.3.md +0 -0
{include => src/include}/blake3.h +1 -0
{include => src/include}/err.h +0 -0
{include => src/include}/hmap.h +0 -0
{include => src/include}/loadopt.h +0 -0
{include => src/include}/sha3/byte_order.h +0 -0
{include => src/include}/sha3/sha3.h +0 -0
src/liblimb/+skalibs +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_avx2.c +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_avx2_x86-64_unix.S +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_avx512.c +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_avx512_x86-64_unix.S +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_dispatch.c +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_impl.c +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_portable.c +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_sse2.c +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_sse2_x86-64_unix.S +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_sse41.c +0 -0
src/{blake3 => liblimb/blake3.h}/blake3_sse41_x86-64_unix.S +0 -0
src/{ => liblimb/buffer.h}/buffer_putesc.c +0 -0
src/{ => liblimb/buffer.h}/buffer_putescall.c +0 -0
src/{ => liblimb/buffer.h}/buffer_putescs.c +0 -0
src/{ => liblimb/buffer.h}/buffer_puthex.c +0 -0
src/{ => liblimb/buffer.h}/buffer_putmsg.c +0 -0
src/{ => liblimb/bytestr.h}/byte_get_match.c +0 -0
src/{ => liblimb/bytestr.h}/byte_get_match_full.c +0 -0
src/{ => liblimb/bytestr.h}/byte_str.c +0 -0
src/{ => liblimb/direntry.h}/opendirat.c +0 -0
src/{ => liblimb/djbunix.h}/rm_rf_in_tmpat.c +0 -0
src/{ => liblimb/djbunix.h}/rm_rf_tmpat.c +0 -0
src/{ => liblimb/djbunix.h}/rm_rfat.c +0 -0
src/{ => liblimb/djbunix.h}/rmstar_in_tmpat.c +0 -0
src/{ => liblimb/djbunix.h}/rmstar_tmpat.c +0 -0
src/{ => liblimb/djbunix.h}/rmstarat.c +0 -0
src/{ => liblimb/djbunix.h}/salsat.c +0 -0
src/{ => liblimb/djbunix.h}/sareadlink0.c +0 -0
src/{ => liblimb/djbunix.h}/sareadlinkat.c +0 -0
src/{ => liblimb/djbunix.h}/sareadlinkat0.c +0 -0
src/{ => liblimb/hasher.h}/hasher_hash.c +0 -0
src/{ => liblimb/hasher_blake3.h}/hasher_blake3.c +0 -0
src/{ => liblimb/hasher_sha1.h}/hasher_sha1.c +0 -0
src/{ => liblimb/hasher_sha256.h}/hasher_sha256.c +0 -0
src/{ => liblimb/hasher_sha3_224.h}/hasher_sha3_224.c +0 -0
src/{ => liblimb/hasher_sha3_256.h}/hasher_sha3_256.c +0 -0
src/{ => liblimb/hasher_sha3_384.h}/hasher_sha3_384.c +0 -0
src/{ => liblimb/hasher_sha3_512.h}/hasher_sha3_512.c +0 -0
src/{ => liblimb/hasher_sha512.h}/hasher_sha512.c +0 -0
src/{ => liblimb/hlookup.h}/hlookup.c +0 -0
src/{ => liblimb/hlookup.h}/hlookup32.c +0 -0
src/{ => liblimb/hlookup.h}/hlookup64.c +0 -0
src/{ => liblimb/hmac.h}/hmac.c +0 -0
src/{hmap => liblimb/hmap.h}/grow.c +0 -0
src/{hmap => liblimb/hmap.h}/hmap_free.c +0 -0
src/{hmap => liblimb/hmap.h}/hmap_get.c +0 -0
src/{hmap => liblimb/hmap.h}/hmap_init.c +0 -0
src/{hmap => liblimb/hmap.h}/hmap_set.c +0 -0
src/{hmap => liblimb/hmap.h}/lookup.c +0 -0
{include => src/liblimb/include}/limb/blake3.h +0 -0
{include => src/liblimb/include}/limb/buffer.h +0 -0
{include => src/liblimb/include}/limb/bytestr.h +0 -0
{include => src/liblimb/include}/limb/direntry.h +0 -0
{include => src/liblimb/include}/limb/djbunix.h +0 -0
{include => src/liblimb/include}/limb/exitcode.h +0 -0
{include => src/liblimb/include}/limb/gccattributes.h +0 -0
{include => src/liblimb/include}/limb/hasher.h +0 -0
{include => src/liblimb/include}/limb/hasher_blake3.h +0 -0
{include => src/liblimb/include}/limb/hasher_sha1.h +0 -0
{include => src/liblimb/include}/limb/hasher_sha256.h +0 -0
{include => src/liblimb/include}/limb/hasher_sha3_224.h +0 -0
{include => src/liblimb/include}/limb/hasher_sha3_256.h +0 -0
{include => src/liblimb/include}/limb/hasher_sha3_384.h +0 -0
{include => src/liblimb/include}/limb/hasher_sha3_512.h +0 -0
{include => src/liblimb/include}/limb/hasher_sha512.h +0 -0
{include => src/liblimb/include}/limb/hlookup.h +0 -0
{include => src/liblimb/include}/limb/hmac.h +0 -0
{include => src/liblimb/include}/limb/hmap.h +0 -0
{include => src/liblimb/include}/limb/int.h +0 -0
{include => src/liblimb/include}/limb/loadopt.h +0 -0
{include => src/liblimb/include}/limb/nextsplit.h +0 -0
{include => src/liblimb/include}/limb/obuffer.h +0 -0
{include => src/liblimb/include}/limb/obuffers.h +0 -0
{include => src/liblimb/include}/limb/output.h +0 -0
{include => src/liblimb/include}/limb/parseopt.h +0 -0
{include => src/liblimb/include}/limb/saencdata.h +0 -0
{include => src/liblimb/include}/limb/samisc.h +0 -0
{include => src/liblimb/include}/limb/sha3.h +0 -0
{include => src/liblimb/include}/limb/siovec.h +0 -0
{include => src/liblimb/include}/limb/u16.h +0 -0
{include => src/liblimb/include}/limb/u32.h +0 -0
{include => src/liblimb/include}/limb/u64.h +0 -0
{include => src/liblimb/include}/limb/uint64.h +0 -0
{include => src/liblimb/include}/limb/unix-transactional.h +0 -0
src/{ => liblimb/loadopt.h}/loadopt.c +0 -0
src/{ => liblimb/loadopt.h}/loadopt_handle_noconfig.c +0 -0
src/{ => liblimb/nextsplit.h}/nextsplit_ae.c +0 -0
src/{ => liblimb/nextsplit.h}/nextsplit_buz.c +0 -0
src/{ => liblimb/nextsplit.h}/nextsplit_rabin.c +0 -0
src/{ => liblimb/obuffer.h}/obuffer_put.c +0 -0
src/{ => liblimb/obuffer.h}/obuffer_putmsg.c +0 -0
src/{ => liblimb/obuffer.h}/obuffers_putmsg.c +0 -0
src/{ => liblimb/obuffers.h}/dbg_putmsg.c +0 -0
src/{ => liblimb/obuffers.h}/err_putmsg.c +0 -0
src/{ => liblimb/obuffers.h}/err_putmsgdie.c +0 -0
src/{ => liblimb/obuffers.h}/extras_putmsg.c +0 -0
src/{ => liblimb/obuffers.h}/obuffers_adddbg.c +0 -0
src/{ => liblimb/obuffers.h}/obuffers_addextra.c +0 -0
src/{ => liblimb/obuffers.h}/obuffers_addlog.c +0 -0
src/{ => liblimb/obuffers.h}/obuffers_remdbg.c +0 -0
src/{ => liblimb/obuffers.h}/obuffers_remextra.c +0 -0
src/{ => liblimb/obuffers.h}/obuffers_remlog.c +0 -0
src/{ => liblimb/obuffers.h}/out_putmsg.c +0 -0
src/{ => liblimb/obuffers.h}/out_putmsgdie.c +0 -0
src/{ => liblimb/parseopt.h}/parseopt.c +0 -0
src/{ => liblimb/saencdata.h}/saencdata.c +0 -0
src/{ => liblimb/samisc.h}/sacoloff.c +0 -0
src/{ => liblimb/samisc.h}/sacolptr.c +0 -0
src/{ => liblimb/samisc.h}/saoff2ptr.c +0 -0
src/{sha3 => liblimb/sha3.h}/byte_order.c +0 -0
src/{sha3 => liblimb/sha3.h}/rhash_sha3_process_block.c +0 -0
src/{sha3 => liblimb/sha3.h}/sha3_224_init.c +0 -0
src/{sha3 => liblimb/sha3.h}/sha3_256_init.c +0 -0
src/{sha3 => liblimb/sha3.h}/sha3_384_init.c +0 -0
src/{sha3 => liblimb/sha3.h}/sha3_512_init.c +0 -0
src/{sha3 => liblimb/sha3.h}/sha3_final.c +0 -0
src/{sha3 => liblimb/sha3.h}/sha3_init.c +0 -0
src/{sha3 => liblimb/sha3.h}/sha3_update.c +0 -0
src/{ => liblimb/siovec.h}/siovec_gather0.c +0 -0
src/{ => liblimb/siovec.h}/siovec_memcmp.c +0 -0
src/{ => liblimb/siovec.h}/siovec_off.c +0 -0
src/{ => liblimb/siovec.h}/siovec_seek_bytechr.c +0 -0
src/{ => liblimb/siovec.h}/siovec_seek_bytein.c +0 -0
src/{ => liblimb/siovec.h}/siovec_seek_gather.c +0 -0
src/{ => liblimb/siovec.h}/siovec_seek_gather0.c +0 -0
src/{ => liblimb}/u640_fmt_generic.c +0 -0
src/{ => liblimb}/u64_fmt_generic.c +0 -0
src/{ => liblimb/uint64.h}/msb64.c +0 -0
src/{ => liblimb/uint64.h}/uint64_pack_trim.c +0 -0
src/{ => liblimb/uint64.h}/uint64_unpack_trim.c +0 -0
src/{ => liblimb/unix-transactional.h}/open_createat.c +0 -0
src/{ => liblimb/unix-transactional.h}/open_exclat.c +0 -0
src/{ => liblimb/unix-transactional.h}/openc_createat.c +0 -0
src/{ => liblimb/unix-transactional.h}/openc_exclat.c +0 -0
src/mkrabintables/+skalibs +0 -0
src/mkrabintables/buffer_putesc.o +1 -0
src/mkrabintables/buffer_putescall.o +1 -0
src/mkrabintables/buffer_putescs.o +1 -0
src/mkrabintables/buffer_puthex.o +1 -0
src/mkrabintables/buffer_putmsg.o +1 -0
src/mkrabintables/err_putmsg.o +1 -0
src/mkrabintables/err_putmsgdie.o +1 -0
src/mkrabintables/extras_putmsg.o +1 -0
src/{tools => mkrabintables}/mkrabintables.c +0 -0
src/mkrabintables/msb64.o +1 -0
src/mkrabintables/obuffer_putmsg.o +1 -0
src/mkrabintables/obuffers_putmsg.o +1 -0
src/mkrabintables/u64_fmt_generic.o +1 -0

diff --git a/.gitignore b/.gitignore
index 827b9aa..a15029b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,12 +2,10 @@
 /configure
 /common.mk
 /config.mk
-/include/config.h
-/include/limb/rabin-tables.h
-*.o
-*.lo
-*.d
-liblimb.a
-liblimb.so
+/src/include/config.h
+/src/liblimb/include/limb/rabin-tables.h
+/build
+/liblimb.a
+/liblimb.so
 /mkrabintables
 /skalibs
diff --git a/meta/bins/mkrabintables b/meta/bins/mkrabintables
deleted file mode 100644
index f5311b7..0000000
--- a/meta/bins/mkrabintables
+++ /dev/null
@@ -1,14 +0,0 @@
-obj/tools/mkrabintables.o
-obj/msb64.o
-obj/buffer_putescall.o
-obj/buffer_putesc.o
-obj/buffer_putescs.o
-obj/buffer_puthex.o
-obj/u64_fmt_generic.o
-obj/buffer_putmsg.o
-obj/obuffer_putmsg.o
-obj/obuffers_putmsg.o
-obj/extras_putmsg.o
-obj/err_putmsg.o
-obj/err_putmsgdie.o
-skalibs
diff --git a/meta/libs/limb b/meta/libs/limb
deleted file mode 100644
index 5910f3c..0000000
--- a/meta/libs/limb
+++ /dev/null
@@ -1,117 +0,0 @@
-# unix-transactional.H
-obj/openc_createat.o
-obj/openc_exclat.o
-obj/open_createat.o
-obj/open_exclat.o
-# direntry.h
-obj/opendirat.o
-# djbunix.h
-obj/rm_rfat.o
-obj/rm_rf_in_tmpat.o
-obj/rm_rf_tmpat.o
-obj/rmstarat.o
-obj/rmstar_in_tmpat.o
-obj/rmstar_tmpat.o
-obj/salsat.o
-obj/sareadlink0.o
-obj/sareadlinkat.o
-obj/sareadlinkat0.o
-# samisc.h
-obj/sacoloff.o
-obj/saoff2ptr.o
-obj/sacolptr.o
-# bytestr.h
-obj/byte_get_match_full.o
-obj/byte_get_match.o
-obj/byte_str.o
-# buffer.h
-obj/buffer_putescall.o
-obj/buffer_putesc.o
-obj/buffer_putescs.o
-obj/buffer_putmsg.o
-obj/buffer_puthex.o
-# obuffer.h
-obj/obuffer_put.o
-obj/obuffer_putmsg.o
-obj/obuffers_putmsg.o
-# obuffers.h
-obj/obuffers_addextra.o
-obj/obuffers_remextra.o
-obj/obuffers_addlog.o
-obj/obuffers_adddbg.o
-obj/obuffers_remlog.o
-obj/obuffers_remdbg.o
-obj/extras_putmsg.o
-obj/out_putmsg.o
-obj/err_putmsg.o
-obj/dbg_putmsg.o
-obj/out_putmsgdie.o
-obj/err_putmsgdie.o
-# parseopt.h
-obj/parseopt.o
-# loadopt.h
-obj/loadopt_handle_noconfig.o
-obj/loadopt.o
-# find msb
-obj/msb64.o
-# {,un}pack u64
-obj/uint64_pack_trim.o
-obj/uint64_unpack_trim.o
-# u64
-obj/u64_fmt_generic.o
-obj/u640_fmt_generic.o
-# siovec.h
-obj/siovec_gather0.o
-obj/siovec_memcmp.o
-obj/siovec_off.o
-obj/siovec_seek_bytechr.o
-obj/siovec_seek_bytein.o
-obj/siovec_seek_gather.o
-obj/siovec_seek_gather0.o
-# data-encoding (integers or blobs)
-obj/saencdata.o
-# content-based chunking
-obj/nextsplit_ae.o
-obj/nextsplit_buz.o
-obj/nextsplit_rabin.o
-# hlookup hash
-obj/hlookup.o
-obj/hlookup32.o
-obj/hlookup64.o
-# hmap
-obj/hmap/lookup.o
-obj/hmap/grow.o
-obj/hmap/hmap_init.o
-obj/hmap/hmap_set.o
-obj/hmap/hmap_get.o
-obj/hmap/hmap_free.o
-# SHA3
-obj/sha3/byte_order.o
-obj/sha3/rhash_sha3_process_block.o
-obj/sha3/sha3_init.o
-obj/sha3/sha3_224_init.o
-obj/sha3/sha3_256_init.o
-obj/sha3/sha3_384_init.o
-obj/sha3/sha3_512_init.o
-obj/sha3/sha3_update.o
-obj/sha3/sha3_final.o
-# BLAKE3
-obj/blake3/blake3_impl.o
-obj/blake3/blake3_dispatch.o
-obj/blake3/blake3_portable.o
-$$(BLAKE3_OPTIMIZ)
-# hasher.h
-obj/hasher_hash.o
-# hashers
-obj/hasher_blake3.o
-obj/hasher_sha1.o
-obj/hasher_sha256.o
-obj/hasher_sha512.o
-obj/hasher_sha3_224.o
-obj/hasher_sha3_256.o
-obj/hasher_sha3_384.o
-obj/hasher_sha3_512.o
-# hmac.h
-obj/hmac.o
-# skalibs dependency
-skalibs
diff --git a/meta/options/blake3asm/desc b/meta/options/blake3asm/desc
new file mode 100644
index 0000000..e546620
--- /dev/null
+++ b/meta/options/blake3asm/desc
@@ -0,0 +1 @@
+ASM x64 optimizations for BLAKE3
diff --git a/meta/options/blake3asm/isdefault b/meta/options/blake3asm/isdefault
new file mode 100755
index 0000000..ced8bac
--- /dev/null
+++ b/meta/options/blake3asm/isdefault
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+cmdexists()
+{
+    type "$1" > /dev/null 2>&1
+}
+
+trycmd()
+{
+    local name="$1"
+    shift
+    test -z "$(eval echo \$$name)" && cmdexists "$1" && eval "$name=\"$*\""
+}
+
+trycmd CC "gcc"
+trycmd CC "clang"
+trycmd CC "cc"
+trycmd CC "false"
+
+case "$($CC -dumpmachine 2>/dev/null)" in
+    *x86_64*) exit 0;;
+esac
+exit 1
diff --git a/meta/options/blake3asm/objs b/meta/options/blake3asm/objs
new file mode 100644
index 0000000..1e4aa63
--- /dev/null
+++ b/meta/options/blake3asm/objs
@@ -0,0 +1,4 @@
+liblimb/blake3.h/blake3_avx2_x86-64_unix.o
+liblimb/blake3.h/blake3_avx512_x86-64_unix.o
+liblimb/blake3.h/blake3_sse2_x86-64_unix.o
+liblimb/blake3.h/blake3_sse41_x86-64_unix.o
diff --git a/meta/options/blake3noasm/desc b/meta/options/blake3noasm/desc
new file mode 100644
index 0000000..e69de29
diff --git a/meta/options/blake3noasm/isdefault b/meta/options/blake3noasm/isdefault
new file mode 100755
index 0000000..4b0fbe5
--- /dev/null
+++ b/meta/options/blake3noasm/isdefault
@@ -0,0 +1,5 @@
+#!/bin/sh
+if test -n "$WITH_OPT_blake3asm" && test "$WITH_OPT_blake3asm" -eq 1; then
+    exit 1
+fi
+exit 0
diff --git a/meta/options/blake3noasm/objs b/meta/options/blake3noasm/objs
new file mode 100644
index 0000000..23ea026
--- /dev/null
+++ b/meta/options/blake3noasm/objs
@@ -0,0 +1,4 @@
+liblimb/blake3.h/blake3_avx2.o
+liblimb/blake3.h/blake3_avx512.o
+liblimb/blake3.h/blake3_sse2.o
+liblimb/blake3.h/blake3_sse41.o
diff --git a/meta/options/optimize b/meta/options/optimize
new file mode 120000
index 0000000..8298f39
--- /dev/null
+++ b/meta/options/optimize
@@ -0,0 +1 @@
+../../comain/meta/options/optimize
\ No newline at end of file
diff --git a/meta/options/optimizeOff b/meta/options/optimizeOff
new file mode 120000
index 0000000..5756425
--- /dev/null
+++ b/meta/options/optimizeOff
@@ -0,0 +1 @@
+../../comain/meta/options/optimizeOff
\ No newline at end of file
diff --git a/meta/options/warnings b/meta/options/warnings
new file mode 120000
index 0000000..12db22d
--- /dev/null
+++ b/meta/options/warnings
@@ -0,0 +1 @@
+../../comain/meta/options/warnings
\ No newline at end of file
diff --git a/project.mk b/project.mk
index 7ed309a..c9b92c7 100644
--- a/project.mk
+++ b/project.mk
@@ -1,27 +1,14 @@
 LIBS = limb
 
-TOOLS = mkrabintables
+build/liblimb/nextsplit.h/nextsplit_rabin.o \
+	build/liblimb/nextsplit.h/nextsplit_rabin.lo: src/liblimb/include/limb/rabin-tables.h
 
-CLEAN += include/limb/rabin-tables.h
+build/liblimb/nextsplit.h/nextsplit_rabin.o: | build/liblimb/nextsplit.h/nextsplit_rabin.lo
 
-obj/nextsplit_rabin.o obj/nextsplit_rabin.lo: include/limb/rabin-tables.h
-
-include/limb/rabin-tables.h: mkrabintables
+src/liblimb/include/limb/rabin-tables.h: mkrabintables
 	$(_GEN) ./mkrabintables > $@
 
-ifeq ($(BITS),64)
-BLAKE3_OPTIMIZ := obj/blake3/blake3_avx2_x86-64_unix.o \
-				  obj/blake3/blake3_avx512_x86-64_unix.o \
-				  obj/blake3/blake3_sse2_x86-64_unix.o \
-				  obj/blake3/blake3_sse41_x86-64_unix.o
-BLAKE3_OPTIMIZ_so := $(BLAKE3_OPTIMIZ)
-else
-BLAKE3_OPTIMIZ := obj/blake3/blake3_avx2.o obj/blake3/blake3_avx512.o \
-				  obj/blake3/blake3_sse2.o obj/blake3/blake3_sse41.o
-BLAKE3_OPTIMIZ_so := $(BLAKE3_OPTIMIZ:.o=.lo)
-
-CFLAGS_blake3/blake3_avx2 = -mavx2
-CFLAGS_blake3/blake3_avx512 = -mavx512f -mavx512vl -mavx512bw
-CFLAGS_blake3/blake3_sse2 = -msse2
-CFLAGS_blake3/blake3_sse41 = -msse4.1
-endif
+CFLAGS_liblimb/blake3.h/blake3_avx2 = -mavx2
+CFLAGS_liblimb/blake3.h/blake3_avx512 = -mavx512f -mavx512vl -mavx512bw
+CFLAGS_liblimb/blake3.h/blake3_sse2 = -msse2
+CFLAGS_liblimb/blake3.h/blake3_sse41 = -msse4.1
diff --git a/doc/blake3.h.0.md b/src/doc/blake3.h.0.md
similarity index 100%
rename from doc/blake3.h.0.md
rename to src/doc/blake3.h.0.md
diff --git a/doc/blake3_init.3.md b/src/doc/blake3.h/blake3_init.3.md
similarity index 100%
rename from doc/blake3_init.3.md
rename to src/doc/blake3.h/blake3_init.3.md
diff --git a/doc/buffer.h.0.md b/src/doc/buffer.h.0.md
similarity index 100%
rename from doc/buffer.h.0.md
rename to src/doc/buffer.h.0.md
diff --git a/doc/buffer_putescall.3.md b/src/doc/buffer.h/buffer_putescall.3.md
similarity index 100%
rename from doc/buffer_putescall.3.md
rename to src/doc/buffer.h/buffer_putescall.3.md
diff --git a/doc/buffer_puthex.3.md b/src/doc/buffer.h/buffer_puthex.3.md
similarity index 100%
rename from doc/buffer_puthex.3.md
rename to src/doc/buffer.h/buffer_puthex.3.md
diff --git a/doc/buffer_putmsg.3.md b/src/doc/buffer.h/buffer_putmsg.3.md
similarity index 100%
rename from doc/buffer_putmsg.3.md
rename to src/doc/buffer.h/buffer_putmsg.3.md
diff --git a/doc/bytestr.h.0.md b/src/doc/bytestr.h.0.md
similarity index 100%
rename from doc/bytestr.h.0.md
rename to src/doc/bytestr.h.0.md
diff --git a/doc/byte_get_match_full.3.md b/src/doc/bytestr.h/byte_get_match_full.3.md
similarity index 100%
rename from doc/byte_get_match_full.3.md
rename to src/doc/bytestr.h/byte_get_match_full.3.md
diff --git a/doc/byte_str.3.md b/src/doc/bytestr.h/byte_str.3.md
similarity index 100%
rename from doc/byte_str.3.md
rename to src/doc/bytestr.h/byte_str.3.md
diff --git a/doc/direntry.h.0.md b/src/doc/direntry.h.0.md
similarity index 100%
rename from doc/direntry.h.0.md
rename to src/doc/direntry.h.0.md
diff --git a/doc/opendirat.3.md b/src/doc/direntry.h/opendirat.3.md
similarity index 100%
rename from doc/opendirat.3.md
rename to src/doc/direntry.h/opendirat.3.md
diff --git a/doc/djbunix.h.0.md b/src/doc/djbunix.h.0.md
similarity index 100%
rename from doc/djbunix.h.0.md
rename to src/doc/djbunix.h.0.md
diff --git a/doc/rm_rfat.3.md b/src/doc/djbunix.h/rm_rfat.3.md
similarity index 100%
rename from doc/rm_rfat.3.md
rename to src/doc/djbunix.h/rm_rfat.3.md
diff --git a/doc/salsat.3.md b/src/doc/djbunix.h/salsat.3.md
similarity index 100%
rename from doc/salsat.3.md
rename to src/doc/djbunix.h/salsat.3.md
diff --git a/doc/sareadlinkat.3.md b/src/doc/djbunix.h/sareadlinkat.3.md
similarity index 100%
rename from doc/sareadlinkat.3.md
rename to src/doc/djbunix.h/sareadlinkat.3.md
diff --git a/doc/exitcode.h.0.md b/src/doc/exitcode.h.0.md
similarity index 100%
rename from doc/exitcode.h.0.md
rename to src/doc/exitcode.h.0.md
diff --git a/doc/gccattributes.h.0.md b/src/doc/gccattributes.h.0.md
similarity index 100%
rename from doc/gccattributes.h.0.md
rename to src/doc/gccattributes.h.0.md
diff --git a/doc/hasher.h.0.md b/src/doc/hasher.h.0.md
similarity index 100%
rename from doc/hasher.h.0.md
rename to src/doc/hasher.h.0.md
diff --git a/doc/hasher_hash.3.md b/src/doc/hasher.h/hasher_hash.3.md
similarity index 100%
rename from doc/hasher_hash.3.md
rename to src/doc/hasher.h/hasher_hash.3.md
diff --git a/doc/hasher_blake3.h.0.md b/src/doc/hasher_blake3.h.0.md
similarity index 100%
rename from doc/hasher_blake3.h.0.md
rename to src/doc/hasher_blake3.h.0.md
diff --git a/doc/hasher_sha1.h.0.md b/src/doc/hasher_sha1.h.0.md
similarity index 100%
rename from doc/hasher_sha1.h.0.md
rename to src/doc/hasher_sha1.h.0.md
diff --git a/doc/hasher_sha256.h.0.md b/src/doc/hasher_sha256.h.0.md
similarity index 100%
rename from doc/hasher_sha256.h.0.md
rename to src/doc/hasher_sha256.h.0.md
diff --git a/doc/hasher_sha3_224.h.0.md b/src/doc/hasher_sha3_224.h.0.md
similarity index 100%
rename from doc/hasher_sha3_224.h.0.md
rename to src/doc/hasher_sha3_224.h.0.md
diff --git a/doc/hasher_sha3_256.h.0.md b/src/doc/hasher_sha3_256.h.0.md
similarity index 100%
rename from doc/hasher_sha3_256.h.0.md
rename to src/doc/hasher_sha3_256.h.0.md
diff --git a/doc/hasher_sha3_384.h.0.md b/src/doc/hasher_sha3_384.h.0.md
similarity index 100%
rename from doc/hasher_sha3_384.h.0.md
rename to src/doc/hasher_sha3_384.h.0.md
diff --git a/doc/hasher_sha3_512.h.0.md b/src/doc/hasher_sha3_512.h.0.md
similarity index 100%
rename from doc/hasher_sha3_512.h.0.md
rename to src/doc/hasher_sha3_512.h.0.md
diff --git a/doc/hasher_sha512.h.0.md b/src/doc/hasher_sha512.h.0.md
similarity index 100%
rename from doc/hasher_sha512.h.0.md
rename to src/doc/hasher_sha512.h.0.md
diff --git a/doc/hlookup.h.0.md b/src/doc/hlookup.h.0.md
similarity index 100%
rename from doc/hlookup.h.0.md
rename to src/doc/hlookup.h.0.md
diff --git a/doc/hlookup.3.md b/src/doc/hlookup.h/hlookup.3.md
similarity index 100%
rename from doc/hlookup.3.md
rename to src/doc/hlookup.h/hlookup.3.md
diff --git a/doc/hmac.h.0.md b/src/doc/hmac.h.0.md
similarity index 100%
rename from doc/hmac.h.0.md
rename to src/doc/hmac.h.0.md
diff --git a/doc/hmac.3.md b/src/doc/hmac.h/hmac.3.md
similarity index 100%
rename from doc/hmac.3.md
rename to src/doc/hmac.h/hmac.3.md
diff --git a/doc/hmap.h.0.md b/src/doc/hmap.h.0.md
similarity index 100%
rename from doc/hmap.h.0.md
rename to src/doc/hmap.h.0.md
diff --git a/doc/hmap_init.3.md b/src/doc/hmap.h/hmap_init.3.md
similarity index 100%
rename from doc/hmap_init.3.md
rename to src/doc/hmap.h/hmap_init.3.md
diff --git a/doc/int.h.0.md b/src/doc/int.h.0.md
similarity index 100%
rename from doc/int.h.0.md
rename to src/doc/int.h.0.md
diff --git a/doc/loadopt.h.0.md b/src/doc/loadopt.h.0.md
similarity index 100%
rename from doc/loadopt.h.0.md
rename to src/doc/loadopt.h.0.md
diff --git a/doc/loadopt.3.md b/src/doc/loadopt.h/loadopt.3.md
similarity index 100%
rename from doc/loadopt.3.md
rename to src/doc/loadopt.h/loadopt.3.md
diff --git a/doc/nextsplit.h.0.md b/src/doc/nextsplit.h.0.md
similarity index 100%
rename from doc/nextsplit.h.0.md
rename to src/doc/nextsplit.h.0.md
diff --git a/doc/nextsplit_ae.3.md b/src/doc/nextsplit.h/nextsplit_ae.3.md
similarity index 100%
rename from doc/nextsplit_ae.3.md
rename to src/doc/nextsplit.h/nextsplit_ae.3.md
diff --git a/doc/obuffer.h.0.md b/src/doc/obuffer.h.0.md
similarity index 100%
rename from doc/obuffer.h.0.md
rename to src/doc/obuffer.h.0.md
diff --git a/doc/obuffer_put.3.md b/src/doc/obuffer.h/obuffer_put.3.md
similarity index 100%
rename from doc/obuffer_put.3.md
rename to src/doc/obuffer.h/obuffer_put.3.md
diff --git a/doc/obuffer_putmsg.3.md b/src/doc/obuffer.h/obuffer_putmsg.3.md
similarity index 100%
rename from doc/obuffer_putmsg.3.md
rename to src/doc/obuffer.h/obuffer_putmsg.3.md
diff --git a/doc/obuffers.h.0.md b/src/doc/obuffers.h.0.md
similarity index 100%
rename from doc/obuffers.h.0.md
rename to src/doc/obuffers.h.0.md
diff --git a/doc/obuffers_addextra.3.md b/src/doc/obuffers.h/obuffers_addextra.3.md
similarity index 100%
rename from doc/obuffers_addextra.3.md
rename to src/doc/obuffers.h/obuffers_addextra.3.md
diff --git a/doc/obuffers_addlog.3.md b/src/doc/obuffers.h/obuffers_addlog.3.md
similarity index 100%
rename from doc/obuffers_addlog.3.md
rename to src/doc/obuffers.h/obuffers_addlog.3.md
diff --git a/doc/out_putmsg.3.md b/src/doc/obuffers.h/out_putmsg.3.md
similarity index 100%
rename from doc/out_putmsg.3.md
rename to src/doc/obuffers.h/out_putmsg.3.md
diff --git a/doc/output.h.0.md b/src/doc/output.h.0.md
similarity index 100%
rename from doc/output.h.0.md
rename to src/doc/output.h.0.md
diff --git a/doc/die.3.md b/src/doc/output.h/die.3.md
similarity index 100%
rename from doc/die.3.md
rename to src/doc/output.h/die.3.md
diff --git a/doc/out.3.md b/src/doc/output.h/out.3.md
similarity index 100%
rename from doc/out.3.md
rename to src/doc/output.h/out.3.md
diff --git a/doc/ret.3.md b/src/doc/output.h/ret.3.md
similarity index 100%
rename from doc/ret.3.md
rename to src/doc/output.h/ret.3.md
diff --git a/doc/warn.3.md b/src/doc/output.h/warn.3.md
similarity index 100%
rename from doc/warn.3.md
rename to src/doc/output.h/warn.3.md
diff --git a/doc/parseopt.h.0.md b/src/doc/parseopt.h.0.md
similarity index 100%
rename from doc/parseopt.h.0.md
rename to src/doc/parseopt.h.0.md
diff --git a/doc/parseopt.3.md b/src/doc/parseopt.h/parseopt.3.md
similarity index 100%
rename from doc/parseopt.3.md
rename to src/doc/parseopt.h/parseopt.3.md
diff --git a/doc/saencdata.h.0.md b/src/doc/saencdata.h.0.md
similarity index 100%
rename from doc/saencdata.h.0.md
rename to src/doc/saencdata.h.0.md
diff --git a/doc/saencdata.3.md b/src/doc/saencdata.h/saencdata.3.md
similarity index 100%
rename from doc/saencdata.3.md
rename to src/doc/saencdata.h/saencdata.3.md
diff --git a/doc/samisc.h.0.md b/src/doc/samisc.h.0.md
similarity index 100%
rename from doc/samisc.h.0.md
rename to src/doc/samisc.h.0.md
diff --git a/doc/sacoloff.3.md b/src/doc/samisc.h/sacoloff.3.md
similarity index 100%
rename from doc/sacoloff.3.md
rename to src/doc/samisc.h/sacoloff.3.md
diff --git a/doc/sacolptr.3.md b/src/doc/samisc.h/sacolptr.3.md
similarity index 100%
rename from doc/sacolptr.3.md
rename to src/doc/samisc.h/sacolptr.3.md
diff --git a/doc/saoff2ptr.3.md b/src/doc/samisc.h/saoff2ptr.3.md
similarity index 100%
rename from doc/saoff2ptr.3.md
rename to src/doc/samisc.h/saoff2ptr.3.md
diff --git a/doc/sha3.h.0.md b/src/doc/sha3.h.0.md
similarity index 100%
rename from doc/sha3.h.0.md
rename to src/doc/sha3.h.0.md
diff --git a/doc/sha3_224_init.3.md b/src/doc/sha3.h/sha3_224_init.3.md
similarity index 100%
rename from doc/sha3_224_init.3.md
rename to src/doc/sha3.h/sha3_224_init.3.md
diff --git a/doc/siovec.h.0.md b/src/doc/siovec.h.0.md
similarity index 100%
rename from doc/siovec.h.0.md
rename to src/doc/siovec.h.0.md
diff --git a/doc/siovec_gather0.3.md b/src/doc/siovec.h/siovec_gather0.3.md
similarity index 100%
rename from doc/siovec_gather0.3.md
rename to src/doc/siovec.h/siovec_gather0.3.md
diff --git a/doc/siovec_memcmp.3.md b/src/doc/siovec.h/siovec_memcmp.3.md
similarity index 100%
rename from doc/siovec_memcmp.3.md
rename to src/doc/siovec.h/siovec_memcmp.3.md
diff --git a/doc/siovec_off.3.md b/src/doc/siovec.h/siovec_off.3.md
similarity index 100%
rename from doc/siovec_off.3.md
rename to src/doc/siovec.h/siovec_off.3.md
diff --git a/doc/siovec_seek_bytechr.3.md b/src/doc/siovec.h/siovec_seek_bytechr.3.md
similarity index 100%
rename from doc/siovec_seek_bytechr.3.md
rename to src/doc/siovec.h/siovec_seek_bytechr.3.md
diff --git a/doc/siovec_seek_bytein.3.md b/src/doc/siovec.h/siovec_seek_bytein.3.md
similarity index 100%
rename from doc/siovec_seek_bytein.3.md
rename to src/doc/siovec.h/siovec_seek_bytein.3.md
diff --git a/doc/siovec_seek_gather.3.md b/src/doc/siovec.h/siovec_seek_gather.3.md
similarity index 100%
rename from doc/siovec_seek_gather.3.md
rename to src/doc/siovec.h/siovec_seek_gather.3.md
diff --git a/doc/u16.h.0.md b/src/doc/u16.h.0.md
similarity index 100%
rename from doc/u16.h.0.md
rename to src/doc/u16.h.0.md
diff --git a/doc/u16_fmt.3.md b/src/doc/u16.h/u16_fmt.3.md
similarity index 100%
rename from doc/u16_fmt.3.md
rename to src/doc/u16.h/u16_fmt.3.md
diff --git a/doc/u16_le.3.md b/src/doc/u16.h/u16_le.3.md
similarity index 100%
rename from doc/u16_le.3.md
rename to src/doc/u16.h/u16_le.3.md
diff --git a/doc/u16_pack.3.md b/src/doc/u16.h/u16_pack.3.md
similarity index 100%
rename from doc/u16_pack.3.md
rename to src/doc/u16.h/u16_pack.3.md
diff --git a/doc/u16_scan.3.md b/src/doc/u16.h/u16_scan.3.md
similarity index 100%
rename from doc/u16_scan.3.md
rename to src/doc/u16.h/u16_scan.3.md
diff --git a/doc/u32.h.0.md b/src/doc/u32.h.0.md
similarity index 100%
rename from doc/u32.h.0.md
rename to src/doc/u32.h.0.md
diff --git a/doc/u32_fmt.3.md b/src/doc/u32.h/u32_fmt.3.md
similarity index 100%
rename from doc/u32_fmt.3.md
rename to src/doc/u32.h/u32_fmt.3.md
diff --git a/doc/u32_le.3.md b/src/doc/u32.h/u32_le.3.md
similarity index 100%
rename from doc/u32_le.3.md
rename to src/doc/u32.h/u32_le.3.md
diff --git a/doc/u32_pack.3.md b/src/doc/u32.h/u32_pack.3.md
similarity index 100%
rename from doc/u32_pack.3.md
rename to src/doc/u32.h/u32_pack.3.md
diff --git a/doc/u32_scan.3.md b/src/doc/u32.h/u32_scan.3.md
similarity index 100%
rename from doc/u32_scan.3.md
rename to src/doc/u32.h/u32_scan.3.md
diff --git a/doc/u64.h.0.md b/src/doc/u64.h.0.md
similarity index 100%
rename from doc/u64.h.0.md
rename to src/doc/u64.h.0.md
diff --git a/doc/u64_fmt.3.md b/src/doc/u64.h/u64_fmt.3.md
similarity index 100%
rename from doc/u64_fmt.3.md
rename to src/doc/u64.h/u64_fmt.3.md
diff --git a/doc/u64_fmt_generic.3.md b/src/doc/u64.h/u64_fmt_generic.3.md
similarity index 100%
rename from doc/u64_fmt_generic.3.md
rename to src/doc/u64.h/u64_fmt_generic.3.md
diff --git a/doc/u64_le.3.md b/src/doc/u64.h/u64_le.3.md
similarity index 100%
rename from doc/u64_le.3.md
rename to src/doc/u64.h/u64_le.3.md
diff --git a/doc/u64_pack.3.md b/src/doc/u64.h/u64_pack.3.md
similarity index 100%
rename from doc/u64_pack.3.md
rename to src/doc/u64.h/u64_pack.3.md
diff --git a/doc/u64_scan.3.md b/src/doc/u64.h/u64_scan.3.md
similarity index 100%
rename from doc/u64_scan.3.md
rename to src/doc/u64.h/u64_scan.3.md
diff --git a/doc/uint64.h.0.md b/src/doc/uint64.h.0.md
similarity index 100%
rename from doc/uint64.h.0.md
rename to src/doc/uint64.h.0.md
diff --git a/doc/msb64.3.md b/src/doc/uint64.h/msb64.3.md
similarity index 100%
rename from doc/msb64.3.md
rename to src/doc/uint64.h/msb64.3.md
diff --git a/doc/uint64_pack_trim.3.md b/src/doc/uint64.h/uint64_pack_trim.3.md
similarity index 100%
rename from doc/uint64_pack_trim.3.md
rename to src/doc/uint64.h/uint64_pack_trim.3.md
diff --git a/doc/unix-transactional.h.0.md b/src/doc/unix-transactional.h.0.md
similarity index 100%
rename from doc/unix-transactional.h.0.md
rename to src/doc/unix-transactional.h.0.md
diff --git a/doc/open_createat.3.md b/src/doc/unix-transactional.h/open_createat.3.md
similarity index 100%
rename from doc/open_createat.3.md
rename to src/doc/unix-transactional.h/open_createat.3.md
diff --git a/doc/open_exclat.3.md b/src/doc/unix-transactional.h/open_exclat.3.md
similarity index 100%
rename from doc/open_exclat.3.md
rename to src/doc/unix-transactional.h/open_exclat.3.md
diff --git a/include/blake3.h b/src/include/blake3.h
similarity index 99%
rename from include/blake3.h
rename to src/include/blake3.h
index 696984a..aabb8c6 100644
--- a/include/blake3.h
+++ b/src/include/blake3.h
@@ -7,6 +7,7 @@
 #ifndef LIMB_BLAKE3_BLAKE3_H
 #define LIMB_BLAKE3_BLAKE3_H
 
+#include <string.h>
 #include "limb/blake3.h"
 #include "limb/gccattributes.h"
 #include "limb/uint64.h"
diff --git a/include/err.h b/src/include/err.h
similarity index 100%
rename from include/err.h
rename to src/include/err.h
diff --git a/include/hmap.h b/src/include/hmap.h
similarity index 100%
rename from include/hmap.h
rename to src/include/hmap.h
diff --git a/include/loadopt.h b/src/include/loadopt.h
similarity index 100%
rename from include/loadopt.h
rename to src/include/loadopt.h
diff --git a/include/sha3/byte_order.h b/src/include/sha3/byte_order.h
similarity index 100%
rename from include/sha3/byte_order.h
rename to src/include/sha3/byte_order.h
diff --git a/include/sha3/sha3.h b/src/include/sha3/sha3.h
similarity index 100%
rename from include/sha3/sha3.h
rename to src/include/sha3/sha3.h
diff --git a/src/liblimb/+skalibs b/src/liblimb/+skalibs
new file mode 100644
index 0000000..e69de29
diff --git a/src/blake3/blake3_avx2.c b/src/liblimb/blake3.h/blake3_avx2.c
similarity index 100%
rename from src/blake3/blake3_avx2.c
rename to src/liblimb/blake3.h/blake3_avx2.c
diff --git a/src/blake3/blake3_avx2_x86-64_unix.S b/src/liblimb/blake3.h/blake3_avx2_x86-64_unix.S
similarity index 100%
rename from src/blake3/blake3_avx2_x86-64_unix.S
rename to src/liblimb/blake3.h/blake3_avx2_x86-64_unix.S
diff --git a/src/blake3/blake3_avx512.c b/src/liblimb/blake3.h/blake3_avx512.c
similarity index 100%
rename from src/blake3/blake3_avx512.c
rename to src/liblimb/blake3.h/blake3_avx512.c
diff --git a/src/blake3/blake3_avx512_x86-64_unix.S b/src/liblimb/blake3.h/blake3_avx512_x86-64_unix.S
similarity index 100%
rename from src/blake3/blake3_avx512_x86-64_unix.S
rename to src/liblimb/blake3.h/blake3_avx512_x86-64_unix.S
diff --git a/src/blake3/blake3_dispatch.c b/src/liblimb/blake3.h/blake3_dispatch.c
similarity index 100%
rename from src/blake3/blake3_dispatch.c
rename to src/liblimb/blake3.h/blake3_dispatch.c
diff --git a/src/blake3/blake3_impl.c b/src/liblimb/blake3.h/blake3_impl.c
similarity index 100%
rename from src/blake3/blake3_impl.c
rename to src/liblimb/blake3.h/blake3_impl.c
diff --git a/src/blake3/blake3_portable.c b/src/liblimb/blake3.h/blake3_portable.c
similarity index 100%
rename from src/blake3/blake3_portable.c
rename to src/liblimb/blake3.h/blake3_portable.c
diff --git a/src/blake3/blake3_sse2.c b/src/liblimb/blake3.h/blake3_sse2.c
similarity index 100%
rename from src/blake3/blake3_sse2.c
rename to src/liblimb/blake3.h/blake3_sse2.c
diff --git a/src/blake3/blake3_sse2_x86-64_unix.S b/src/liblimb/blake3.h/blake3_sse2_x86-64_unix.S
similarity index 100%
rename from src/blake3/blake3_sse2_x86-64_unix.S
rename to src/liblimb/blake3.h/blake3_sse2_x86-64_unix.S
diff --git a/src/blake3/blake3_sse41.c b/src/liblimb/blake3.h/blake3_sse41.c
similarity index 100%
rename from src/blake3/blake3_sse41.c
rename to src/liblimb/blake3.h/blake3_sse41.c
diff --git a/src/blake3/blake3_sse41_x86-64_unix.S b/src/liblimb/blake3.h/blake3_sse41_x86-64_unix.S
similarity index 100%
rename from src/blake3/blake3_sse41_x86-64_unix.S
rename to src/liblimb/blake3.h/blake3_sse41_x86-64_unix.S
diff --git a/src/buffer_putesc.c b/src/liblimb/buffer.h/buffer_putesc.c
similarity index 100%
rename from src/buffer_putesc.c
rename to src/liblimb/buffer.h/buffer_putesc.c
diff --git a/src/buffer_putescall.c b/src/liblimb/buffer.h/buffer_putescall.c
similarity index 100%
rename from src/buffer_putescall.c
rename to src/liblimb/buffer.h/buffer_putescall.c
diff --git a/src/buffer_putescs.c b/src/liblimb/buffer.h/buffer_putescs.c
similarity index 100%
rename from src/buffer_putescs.c
rename to src/liblimb/buffer.h/buffer_putescs.c
diff --git a/src/buffer_puthex.c b/src/liblimb/buffer.h/buffer_puthex.c
similarity index 100%
rename from src/buffer_puthex.c
rename to src/liblimb/buffer.h/buffer_puthex.c
diff --git a/src/buffer_putmsg.c b/src/liblimb/buffer.h/buffer_putmsg.c
similarity index 100%
rename from src/buffer_putmsg.c
rename to src/liblimb/buffer.h/buffer_putmsg.c
diff --git a/src/byte_get_match.c b/src/liblimb/bytestr.h/byte_get_match.c
similarity index 100%
rename from src/byte_get_match.c
rename to src/liblimb/bytestr.h/byte_get_match.c
diff --git a/src/byte_get_match_full.c b/src/liblimb/bytestr.h/byte_get_match_full.c
similarity index 100%
rename from src/byte_get_match_full.c
rename to src/liblimb/bytestr.h/byte_get_match_full.c
diff --git a/src/byte_str.c b/src/liblimb/bytestr.h/byte_str.c
similarity index 100%
rename from src/byte_str.c
rename to src/liblimb/bytestr.h/byte_str.c
diff --git a/src/opendirat.c b/src/liblimb/direntry.h/opendirat.c
similarity index 100%
rename from src/opendirat.c
rename to src/liblimb/direntry.h/opendirat.c
diff --git a/src/rm_rf_in_tmpat.c b/src/liblimb/djbunix.h/rm_rf_in_tmpat.c
similarity index 100%
rename from src/rm_rf_in_tmpat.c
rename to src/liblimb/djbunix.h/rm_rf_in_tmpat.c
diff --git a/src/rm_rf_tmpat.c b/src/liblimb/djbunix.h/rm_rf_tmpat.c
similarity index 100%
rename from src/rm_rf_tmpat.c
rename to src/liblimb/djbunix.h/rm_rf_tmpat.c
diff --git a/src/rm_rfat.c b/src/liblimb/djbunix.h/rm_rfat.c
similarity index 100%
rename from src/rm_rfat.c
rename to src/liblimb/djbunix.h/rm_rfat.c
diff --git a/src/rmstar_in_tmpat.c b/src/liblimb/djbunix.h/rmstar_in_tmpat.c
similarity index 100%
rename from src/rmstar_in_tmpat.c
rename to src/liblimb/djbunix.h/rmstar_in_tmpat.c
diff --git a/src/rmstar_tmpat.c b/src/liblimb/djbunix.h/rmstar_tmpat.c
similarity index 100%
rename from src/rmstar_tmpat.c
rename to src/liblimb/djbunix.h/rmstar_tmpat.c
diff --git a/src/rmstarat.c b/src/liblimb/djbunix.h/rmstarat.c
similarity index 100%
rename from src/rmstarat.c
rename to src/liblimb/djbunix.h/rmstarat.c
diff --git a/src/salsat.c b/src/liblimb/djbunix.h/salsat.c
similarity index 100%
rename from src/salsat.c
rename to src/liblimb/djbunix.h/salsat.c
diff --git a/src/sareadlink0.c b/src/liblimb/djbunix.h/sareadlink0.c
similarity index 100%
rename from src/sareadlink0.c
rename to src/liblimb/djbunix.h/sareadlink0.c
diff --git a/src/sareadlinkat.c b/src/liblimb/djbunix.h/sareadlinkat.c
similarity index 100%
rename from src/sareadlinkat.c
rename to src/liblimb/djbunix.h/sareadlinkat.c
diff --git a/src/sareadlinkat0.c b/src/liblimb/djbunix.h/sareadlinkat0.c
similarity index 100%
rename from src/sareadlinkat0.c
rename to src/liblimb/djbunix.h/sareadlinkat0.c
diff --git a/src/hasher_hash.c b/src/liblimb/hasher.h/hasher_hash.c
similarity index 100%
rename from src/hasher_hash.c
rename to src/liblimb/hasher.h/hasher_hash.c
diff --git a/src/hasher_blake3.c b/src/liblimb/hasher_blake3.h/hasher_blake3.c
similarity index 100%
rename from src/hasher_blake3.c
rename to src/liblimb/hasher_blake3.h/hasher_blake3.c
diff --git a/src/hasher_sha1.c b/src/liblimb/hasher_sha1.h/hasher_sha1.c
similarity index 100%
rename from src/hasher_sha1.c
rename to src/liblimb/hasher_sha1.h/hasher_sha1.c
diff --git a/src/hasher_sha256.c b/src/liblimb/hasher_sha256.h/hasher_sha256.c
similarity index 100%
rename from src/hasher_sha256.c
rename to src/liblimb/hasher_sha256.h/hasher_sha256.c
diff --git a/src/hasher_sha3_224.c b/src/liblimb/hasher_sha3_224.h/hasher_sha3_224.c
similarity index 100%
rename from src/hasher_sha3_224.c
rename to src/liblimb/hasher_sha3_224.h/hasher_sha3_224.c
diff --git a/src/hasher_sha3_256.c b/src/liblimb/hasher_sha3_256.h/hasher_sha3_256.c
similarity index 100%
rename from src/hasher_sha3_256.c
rename to src/liblimb/hasher_sha3_256.h/hasher_sha3_256.c
diff --git a/src/hasher_sha3_384.c b/src/liblimb/hasher_sha3_384.h/hasher_sha3_384.c
similarity index 100%
rename from src/hasher_sha3_384.c
rename to src/liblimb/hasher_sha3_384.h/hasher_sha3_384.c
diff --git a/src/hasher_sha3_512.c b/src/liblimb/hasher_sha3_512.h/hasher_sha3_512.c
similarity index 100%
rename from src/hasher_sha3_512.c
rename to src/liblimb/hasher_sha3_512.h/hasher_sha3_512.c
diff --git a/src/hasher_sha512.c b/src/liblimb/hasher_sha512.h/hasher_sha512.c
similarity index 100%
rename from src/hasher_sha512.c
rename to src/liblimb/hasher_sha512.h/hasher_sha512.c
diff --git a/src/hlookup.c b/src/liblimb/hlookup.h/hlookup.c
similarity index 100%
rename from src/hlookup.c
rename to src/liblimb/hlookup.h/hlookup.c
diff --git a/src/hlookup32.c b/src/liblimb/hlookup.h/hlookup32.c
similarity index 100%
rename from src/hlookup32.c
rename to src/liblimb/hlookup.h/hlookup32.c
diff --git a/src/hlookup64.c b/src/liblimb/hlookup.h/hlookup64.c
similarity index 100%
rename from src/hlookup64.c
rename to src/liblimb/hlookup.h/hlookup64.c
diff --git a/src/hmac.c b/src/liblimb/hmac.h/hmac.c
similarity index 100%
rename from src/hmac.c
rename to src/liblimb/hmac.h/hmac.c
diff --git a/src/hmap/grow.c b/src/liblimb/hmap.h/grow.c
similarity index 100%
rename from src/hmap/grow.c
rename to src/liblimb/hmap.h/grow.c
diff --git a/src/hmap/hmap_free.c b/src/liblimb/hmap.h/hmap_free.c
similarity index 100%
rename from src/hmap/hmap_free.c
rename to src/liblimb/hmap.h/hmap_free.c
diff --git a/src/hmap/hmap_get.c b/src/liblimb/hmap.h/hmap_get.c
similarity index 100%
rename from src/hmap/hmap_get.c
rename to src/liblimb/hmap.h/hmap_get.c
diff --git a/src/hmap/hmap_init.c b/src/liblimb/hmap.h/hmap_init.c
similarity index 100%
rename from src/hmap/hmap_init.c
rename to src/liblimb/hmap.h/hmap_init.c
diff --git a/src/hmap/hmap_set.c b/src/liblimb/hmap.h/hmap_set.c
similarity index 100%
rename from src/hmap/hmap_set.c
rename to src/liblimb/hmap.h/hmap_set.c
diff --git a/src/hmap/lookup.c b/src/liblimb/hmap.h/lookup.c
similarity index 100%
rename from src/hmap/lookup.c
rename to src/liblimb/hmap.h/lookup.c
diff --git a/include/limb/blake3.h b/src/liblimb/include/limb/blake3.h
similarity index 100%
rename from include/limb/blake3.h
rename to src/liblimb/include/limb/blake3.h
diff --git a/include/limb/buffer.h b/src/liblimb/include/limb/buffer.h
similarity index 100%
rename from include/limb/buffer.h
rename to src/liblimb/include/limb/buffer.h
diff --git a/include/limb/bytestr.h b/src/liblimb/include/limb/bytestr.h
similarity index 100%
rename from include/limb/bytestr.h
rename to src/liblimb/include/limb/bytestr.h
diff --git a/include/limb/direntry.h b/src/liblimb/include/limb/direntry.h
similarity index 100%
rename from include/limb/direntry.h
rename to src/liblimb/include/limb/direntry.h
diff --git a/include/limb/djbunix.h b/src/liblimb/include/limb/djbunix.h
similarity index 100%
rename from include/limb/djbunix.h
rename to src/liblimb/include/limb/djbunix.h
diff --git a/include/limb/exitcode.h b/src/liblimb/include/limb/exitcode.h
similarity index 100%
rename from include/limb/exitcode.h
rename to src/liblimb/include/limb/exitcode.h
diff --git a/include/limb/gccattributes.h b/src/liblimb/include/limb/gccattributes.h
similarity index 100%
rename from include/limb/gccattributes.h
rename to src/liblimb/include/limb/gccattributes.h
diff --git a/include/limb/hasher.h b/src/liblimb/include/limb/hasher.h
similarity index 100%
rename from include/limb/hasher.h
rename to src/liblimb/include/limb/hasher.h
diff --git a/include/limb/hasher_blake3.h b/src/liblimb/include/limb/hasher_blake3.h
similarity index 100%
rename from include/limb/hasher_blake3.h
rename to src/liblimb/include/limb/hasher_blake3.h
diff --git a/include/limb/hasher_sha1.h b/src/liblimb/include/limb/hasher_sha1.h
similarity index 100%
rename from include/limb/hasher_sha1.h
rename to src/liblimb/include/limb/hasher_sha1.h
diff --git a/include/limb/hasher_sha256.h b/src/liblimb/include/limb/hasher_sha256.h
similarity index 100%
rename from include/limb/hasher_sha256.h
rename to src/liblimb/include/limb/hasher_sha256.h
diff --git a/include/limb/hasher_sha3_224.h b/src/liblimb/include/limb/hasher_sha3_224.h
similarity index 100%
rename from include/limb/hasher_sha3_224.h
rename to src/liblimb/include/limb/hasher_sha3_224.h
diff --git a/include/limb/hasher_sha3_256.h b/src/liblimb/include/limb/hasher_sha3_256.h
similarity index 100%
rename from include/limb/hasher_sha3_256.h
rename to src/liblimb/include/limb/hasher_sha3_256.h
diff --git a/include/limb/hasher_sha3_384.h b/src/liblimb/include/limb/hasher_sha3_384.h
similarity index 100%
rename from include/limb/hasher_sha3_384.h
rename to src/liblimb/include/limb/hasher_sha3_384.h
diff --git a/include/limb/hasher_sha3_512.h b/src/liblimb/include/limb/hasher_sha3_512.h
similarity index 100%
rename from include/limb/hasher_sha3_512.h
rename to src/liblimb/include/limb/hasher_sha3_512.h
diff --git a/include/limb/hasher_sha512.h b/src/liblimb/include/limb/hasher_sha512.h
similarity index 100%
rename from include/limb/hasher_sha512.h
rename to src/liblimb/include/limb/hasher_sha512.h
diff --git a/include/limb/hlookup.h b/src/liblimb/include/limb/hlookup.h
similarity index 100%
rename from include/limb/hlookup.h
rename to src/liblimb/include/limb/hlookup.h
diff --git a/include/limb/hmac.h b/src/liblimb/include/limb/hmac.h
similarity index 100%
rename from include/limb/hmac.h
rename to src/liblimb/include/limb/hmac.h
diff --git a/include/limb/hmap.h b/src/liblimb/include/limb/hmap.h
similarity index 100%
rename from include/limb/hmap.h
rename to src/liblimb/include/limb/hmap.h
diff --git a/include/limb/int.h b/src/liblimb/include/limb/int.h
similarity index 100%
rename from include/limb/int.h
rename to src/liblimb/include/limb/int.h
diff --git a/include/limb/loadopt.h b/src/liblimb/include/limb/loadopt.h
similarity index 100%
rename from include/limb/loadopt.h
rename to src/liblimb/include/limb/loadopt.h
diff --git a/include/limb/nextsplit.h b/src/liblimb/include/limb/nextsplit.h
similarity index 100%
rename from include/limb/nextsplit.h
rename to src/liblimb/include/limb/nextsplit.h
diff --git a/include/limb/obuffer.h b/src/liblimb/include/limb/obuffer.h
similarity index 100%
rename from include/limb/obuffer.h
rename to src/liblimb/include/limb/obuffer.h
diff --git a/include/limb/obuffers.h b/src/liblimb/include/limb/obuffers.h
similarity index 100%
rename from include/limb/obuffers.h
rename to src/liblimb/include/limb/obuffers.h
diff --git a/include/limb/output.h b/src/liblimb/include/limb/output.h
similarity index 100%
rename from include/limb/output.h
rename to src/liblimb/include/limb/output.h
diff --git a/include/limb/parseopt.h b/src/liblimb/include/limb/parseopt.h
similarity index 100%
rename from include/limb/parseopt.h
rename to src/liblimb/include/limb/parseopt.h
diff --git a/include/limb/saencdata.h b/src/liblimb/include/limb/saencdata.h
similarity index 100%
rename from include/limb/saencdata.h
rename to src/liblimb/include/limb/saencdata.h
diff --git a/include/limb/samisc.h b/src/liblimb/include/limb/samisc.h
similarity index 100%
rename from include/limb/samisc.h
rename to src/liblimb/include/limb/samisc.h
diff --git a/include/limb/sha3.h b/src/liblimb/include/limb/sha3.h
similarity index 100%
rename from include/limb/sha3.h
rename to src/liblimb/include/limb/sha3.h
diff --git a/include/limb/siovec.h b/src/liblimb/include/limb/siovec.h
similarity index 100%
rename from include/limb/siovec.h
rename to src/liblimb/include/limb/siovec.h
diff --git a/include/limb/u16.h b/src/liblimb/include/limb/u16.h
similarity index 100%
rename from include/limb/u16.h
rename to src/liblimb/include/limb/u16.h
diff --git a/include/limb/u32.h b/src/liblimb/include/limb/u32.h
similarity index 100%
rename from include/limb/u32.h
rename to src/liblimb/include/limb/u32.h
diff --git a/include/limb/u64.h b/src/liblimb/include/limb/u64.h
similarity index 100%
rename from include/limb/u64.h
rename to src/liblimb/include/limb/u64.h
diff --git a/include/limb/uint64.h b/src/liblimb/include/limb/uint64.h
similarity index 100%
rename from include/limb/uint64.h
rename to src/liblimb/include/limb/uint64.h
diff --git a/include/limb/unix-transactional.h b/src/liblimb/include/limb/unix-transactional.h
similarity index 100%
rename from include/limb/unix-transactional.h
rename to src/liblimb/include/limb/unix-transactional.h
diff --git a/src/loadopt.c b/src/liblimb/loadopt.h/loadopt.c
similarity index 100%
rename from src/loadopt.c
rename to src/liblimb/loadopt.h/loadopt.c
diff --git a/src/loadopt_handle_noconfig.c b/src/liblimb/loadopt.h/loadopt_handle_noconfig.c
similarity index 100%
rename from src/loadopt_handle_noconfig.c
rename to src/liblimb/loadopt.h/loadopt_handle_noconfig.c
diff --git a/src/nextsplit_ae.c b/src/liblimb/nextsplit.h/nextsplit_ae.c
similarity index 100%
rename from src/nextsplit_ae.c
rename to src/liblimb/nextsplit.h/nextsplit_ae.c
diff --git a/src/nextsplit_buz.c b/src/liblimb/nextsplit.h/nextsplit_buz.c
similarity index 100%
rename from src/nextsplit_buz.c
rename to src/liblimb/nextsplit.h/nextsplit_buz.c
diff --git a/src/nextsplit_rabin.c b/src/liblimb/nextsplit.h/nextsplit_rabin.c
similarity index 100%
rename from src/nextsplit_rabin.c
rename to src/liblimb/nextsplit.h/nextsplit_rabin.c
diff --git a/src/obuffer_put.c b/src/liblimb/obuffer.h/obuffer_put.c
similarity index 100%
rename from src/obuffer_put.c
rename to src/liblimb/obuffer.h/obuffer_put.c
diff --git a/src/obuffer_putmsg.c b/src/liblimb/obuffer.h/obuffer_putmsg.c
similarity index 100%
rename from src/obuffer_putmsg.c
rename to src/liblimb/obuffer.h/obuffer_putmsg.c
diff --git a/src/obuffers_putmsg.c b/src/liblimb/obuffer.h/obuffers_putmsg.c
similarity index 100%
rename from src/obuffers_putmsg.c
rename to src/liblimb/obuffer.h/obuffers_putmsg.c
diff --git a/src/dbg_putmsg.c b/src/liblimb/obuffers.h/dbg_putmsg.c
similarity index 100%
rename from src/dbg_putmsg.c
rename to src/liblimb/obuffers.h/dbg_putmsg.c
diff --git a/src/err_putmsg.c b/src/liblimb/obuffers.h/err_putmsg.c
similarity index 100%
rename from src/err_putmsg.c
rename to src/liblimb/obuffers.h/err_putmsg.c
diff --git a/src/err_putmsgdie.c b/src/liblimb/obuffers.h/err_putmsgdie.c
similarity index 100%
rename from src/err_putmsgdie.c
rename to src/liblimb/obuffers.h/err_putmsgdie.c
diff --git a/src/extras_putmsg.c b/src/liblimb/obuffers.h/extras_putmsg.c
similarity index 100%
rename from src/extras_putmsg.c
rename to src/liblimb/obuffers.h/extras_putmsg.c
diff --git a/src/obuffers_adddbg.c b/src/liblimb/obuffers.h/obuffers_adddbg.c
similarity index 100%
rename from src/obuffers_adddbg.c
rename to src/liblimb/obuffers.h/obuffers_adddbg.c
diff --git a/src/obuffers_addextra.c b/src/liblimb/obuffers.h/obuffers_addextra.c
similarity index 100%
rename from src/obuffers_addextra.c
rename to src/liblimb/obuffers.h/obuffers_addextra.c
diff --git a/src/obuffers_addlog.c b/src/liblimb/obuffers.h/obuffers_addlog.c
similarity index 100%
rename from src/obuffers_addlog.c
rename to src/liblimb/obuffers.h/obuffers_addlog.c
diff --git a/src/obuffers_remdbg.c b/src/liblimb/obuffers.h/obuffers_remdbg.c
similarity index 100%
rename from src/obuffers_remdbg.c
rename to src/liblimb/obuffers.h/obuffers_remdbg.c
diff --git a/src/obuffers_remextra.c b/src/liblimb/obuffers.h/obuffers_remextra.c
similarity index 100%
rename from src/obuffers_remextra.c
rename to src/liblimb/obuffers.h/obuffers_remextra.c
diff --git a/src/obuffers_remlog.c b/src/liblimb/obuffers.h/obuffers_remlog.c
similarity index 100%
rename from src/obuffers_remlog.c
rename to src/liblimb/obuffers.h/obuffers_remlog.c
diff --git a/src/out_putmsg.c b/src/liblimb/obuffers.h/out_putmsg.c
similarity index 100%
rename from src/out_putmsg.c
rename to src/liblimb/obuffers.h/out_putmsg.c
diff --git a/src/out_putmsgdie.c b/src/liblimb/obuffers.h/out_putmsgdie.c
similarity index 100%
rename from src/out_putmsgdie.c
rename to src/liblimb/obuffers.h/out_putmsgdie.c
diff --git a/src/parseopt.c b/src/liblimb/parseopt.h/parseopt.c
similarity index 100%
rename from src/parseopt.c
rename to src/liblimb/parseopt.h/parseopt.c
diff --git a/src/saencdata.c b/src/liblimb/saencdata.h/saencdata.c
similarity index 100%
rename from src/saencdata.c
rename to src/liblimb/saencdata.h/saencdata.c
diff --git a/src/sacoloff.c b/src/liblimb/samisc.h/sacoloff.c
similarity index 100%
rename from src/sacoloff.c
rename to src/liblimb/samisc.h/sacoloff.c
diff --git a/src/sacolptr.c b/src/liblimb/samisc.h/sacolptr.c
similarity index 100%
rename from src/sacolptr.c
rename to src/liblimb/samisc.h/sacolptr.c
diff --git a/src/saoff2ptr.c b/src/liblimb/samisc.h/saoff2ptr.c
similarity index 100%
rename from src/saoff2ptr.c
rename to src/liblimb/samisc.h/saoff2ptr.c
diff --git a/src/sha3/byte_order.c b/src/liblimb/sha3.h/byte_order.c
similarity index 100%
rename from src/sha3/byte_order.c
rename to src/liblimb/sha3.h/byte_order.c
diff --git a/src/sha3/rhash_sha3_process_block.c b/src/liblimb/sha3.h/rhash_sha3_process_block.c
similarity index 100%
rename from src/sha3/rhash_sha3_process_block.c
rename to src/liblimb/sha3.h/rhash_sha3_process_block.c
diff --git a/src/sha3/sha3_224_init.c b/src/liblimb/sha3.h/sha3_224_init.c
similarity index 100%
rename from src/sha3/sha3_224_init.c
rename to src/liblimb/sha3.h/sha3_224_init.c
diff --git a/src/sha3/sha3_256_init.c b/src/liblimb/sha3.h/sha3_256_init.c
similarity index 100%
rename from src/sha3/sha3_256_init.c
rename to src/liblimb/sha3.h/sha3_256_init.c
diff --git a/src/sha3/sha3_384_init.c b/src/liblimb/sha3.h/sha3_384_init.c
similarity index 100%
rename from src/sha3/sha3_384_init.c
rename to src/liblimb/sha3.h/sha3_384_init.c
diff --git a/src/sha3/sha3_512_init.c b/src/liblimb/sha3.h/sha3_512_init.c
similarity index 100%
rename from src/sha3/sha3_512_init.c
rename to src/liblimb/sha3.h/sha3_512_init.c
diff --git a/src/sha3/sha3_final.c b/src/liblimb/sha3.h/sha3_final.c
similarity index 100%
rename from src/sha3/sha3_final.c
rename to src/liblimb/sha3.h/sha3_final.c
diff --git a/src/sha3/sha3_init.c b/src/liblimb/sha3.h/sha3_init.c
similarity index 100%
rename from src/sha3/sha3_init.c
rename to src/liblimb/sha3.h/sha3_init.c
diff --git a/src/sha3/sha3_update.c b/src/liblimb/sha3.h/sha3_update.c
similarity index 100%
rename from src/sha3/sha3_update.c
rename to src/liblimb/sha3.h/sha3_update.c
diff --git a/src/siovec_gather0.c b/src/liblimb/siovec.h/siovec_gather0.c
similarity index 100%
rename from src/siovec_gather0.c
rename to src/liblimb/siovec.h/siovec_gather0.c
diff --git a/src/siovec_memcmp.c b/src/liblimb/siovec.h/siovec_memcmp.c
similarity index 100%
rename from src/siovec_memcmp.c
rename to src/liblimb/siovec.h/siovec_memcmp.c
diff --git a/src/siovec_off.c b/src/liblimb/siovec.h/siovec_off.c
similarity index 100%
rename from src/siovec_off.c
rename to src/liblimb/siovec.h/siovec_off.c
diff --git a/src/siovec_seek_bytechr.c b/src/liblimb/siovec.h/siovec_seek_bytechr.c
similarity index 100%
rename from src/siovec_seek_bytechr.c
rename to src/liblimb/siovec.h/siovec_seek_bytechr.c
diff --git a/src/siovec_seek_bytein.c b/src/liblimb/siovec.h/siovec_seek_bytein.c
similarity index 100%
rename from src/siovec_seek_bytein.c
rename to src/liblimb/siovec.h/siovec_seek_bytein.c
diff --git a/src/siovec_seek_gather.c b/src/liblimb/siovec.h/siovec_seek_gather.c
similarity index 100%
rename from src/siovec_seek_gather.c
rename to src/liblimb/siovec.h/siovec_seek_gather.c
diff --git a/src/siovec_seek_gather0.c b/src/liblimb/siovec.h/siovec_seek_gather0.c
similarity index 100%
rename from src/siovec_seek_gather0.c
rename to src/liblimb/siovec.h/siovec_seek_gather0.c
diff --git a/src/u640_fmt_generic.c b/src/liblimb/u640_fmt_generic.c
similarity index 100%
rename from src/u640_fmt_generic.c
rename to src/liblimb/u640_fmt_generic.c
diff --git a/src/u64_fmt_generic.c b/src/liblimb/u64_fmt_generic.c
similarity index 100%
rename from src/u64_fmt_generic.c
rename to src/liblimb/u64_fmt_generic.c
diff --git a/src/msb64.c b/src/liblimb/uint64.h/msb64.c
similarity index 100%
rename from src/msb64.c
rename to src/liblimb/uint64.h/msb64.c
diff --git a/src/uint64_pack_trim.c b/src/liblimb/uint64.h/uint64_pack_trim.c
similarity index 100%
rename from src/uint64_pack_trim.c
rename to src/liblimb/uint64.h/uint64_pack_trim.c
diff --git a/src/uint64_unpack_trim.c b/src/liblimb/uint64.h/uint64_unpack_trim.c
similarity index 100%
rename from src/uint64_unpack_trim.c
rename to src/liblimb/uint64.h/uint64_unpack_trim.c
diff --git a/src/open_createat.c b/src/liblimb/unix-transactional.h/open_createat.c
similarity index 100%
rename from src/open_createat.c
rename to src/liblimb/unix-transactional.h/open_createat.c
diff --git a/src/open_exclat.c b/src/liblimb/unix-transactional.h/open_exclat.c
similarity index 100%
rename from src/open_exclat.c
rename to src/liblimb/unix-transactional.h/open_exclat.c
diff --git a/src/openc_createat.c b/src/liblimb/unix-transactional.h/openc_createat.c
similarity index 100%
rename from src/openc_createat.c
rename to src/liblimb/unix-transactional.h/openc_createat.c
diff --git a/src/openc_exclat.c b/src/liblimb/unix-transactional.h/openc_exclat.c
similarity index 100%
rename from src/openc_exclat.c
rename to src/liblimb/unix-transactional.h/openc_exclat.c
diff --git a/src/mkrabintables/+skalibs b/src/mkrabintables/+skalibs
new file mode 100644
index 0000000..e69de29
diff --git a/src/mkrabintables/buffer_putesc.o b/src/mkrabintables/buffer_putesc.o
new file mode 120000
index 0000000..5f548a2
--- /dev/null
+++ b/src/mkrabintables/buffer_putesc.o
@@ -0,0 +1 @@
+liblimb/buffer.h/buffer_putesc.o
\ No newline at end of file
diff --git a/src/mkrabintables/buffer_putescall.o b/src/mkrabintables/buffer_putescall.o
new file mode 120000
index 0000000..f322d61
--- /dev/null
+++ b/src/mkrabintables/buffer_putescall.o
@@ -0,0 +1 @@
+liblimb/buffer.h/buffer_putescall.o
\ No newline at end of file
diff --git a/src/mkrabintables/buffer_putescs.o b/src/mkrabintables/buffer_putescs.o
new file mode 120000
index 0000000..ef8a5fd
--- /dev/null
+++ b/src/mkrabintables/buffer_putescs.o
@@ -0,0 +1 @@
+liblimb/buffer.h/buffer_putescs.o
\ No newline at end of file
diff --git a/src/mkrabintables/buffer_puthex.o b/src/mkrabintables/buffer_puthex.o
new file mode 120000
index 0000000..f4f9891
--- /dev/null
+++ b/src/mkrabintables/buffer_puthex.o
@@ -0,0 +1 @@
+liblimb/buffer.h/buffer_puthex.o
\ No newline at end of file
diff --git a/src/mkrabintables/buffer_putmsg.o b/src/mkrabintables/buffer_putmsg.o
new file mode 120000
index 0000000..6ee12a4
--- /dev/null
+++ b/src/mkrabintables/buffer_putmsg.o
@@ -0,0 +1 @@
+liblimb/buffer.h/buffer_putmsg.o
\ No newline at end of file
diff --git a/src/mkrabintables/err_putmsg.o b/src/mkrabintables/err_putmsg.o
new file mode 120000
index 0000000..f93752d
--- /dev/null
+++ b/src/mkrabintables/err_putmsg.o
@@ -0,0 +1 @@
+liblimb/obuffers.h/err_putmsg.o
\ No newline at end of file
diff --git a/src/mkrabintables/err_putmsgdie.o b/src/mkrabintables/err_putmsgdie.o
new file mode 120000
index 0000000..2b17e24
--- /dev/null
+++ b/src/mkrabintables/err_putmsgdie.o
@@ -0,0 +1 @@
+liblimb/obuffers.h/err_putmsgdie.o
\ No newline at end of file
diff --git a/src/mkrabintables/extras_putmsg.o b/src/mkrabintables/extras_putmsg.o
new file mode 120000
index 0000000..f76b7c9
--- /dev/null
+++ b/src/mkrabintables/extras_putmsg.o
@@ -0,0 +1 @@
+liblimb/obuffers.h/extras_putmsg.o
\ No newline at end of file
diff --git a/src/tools/mkrabintables.c b/src/mkrabintables/mkrabintables.c
similarity index 100%
rename from src/tools/mkrabintables.c
rename to src/mkrabintables/mkrabintables.c
diff --git a/src/mkrabintables/msb64.o b/src/mkrabintables/msb64.o
new file mode 120000
index 0000000..933269a
--- /dev/null
+++ b/src/mkrabintables/msb64.o
@@ -0,0 +1 @@
+liblimb/uint64.h/msb64.o
\ No newline at end of file
diff --git a/src/mkrabintables/obuffer_putmsg.o b/src/mkrabintables/obuffer_putmsg.o
new file mode 120000
index 0000000..1ccf299
--- /dev/null
+++ b/src/mkrabintables/obuffer_putmsg.o
@@ -0,0 +1 @@
+liblimb/obuffer.h/obuffer_putmsg.o
\ No newline at end of file
diff --git a/src/mkrabintables/obuffers_putmsg.o b/src/mkrabintables/obuffers_putmsg.o
new file mode 120000
index 0000000..e2f5e77
--- /dev/null
+++ b/src/mkrabintables/obuffers_putmsg.o
@@ -0,0 +1 @@
+liblimb/obuffer.h/obuffers_putmsg.o
\ No newline at end of file
diff --git a/src/mkrabintables/u64_fmt_generic.o b/src/mkrabintables/u64_fmt_generic.o
new file mode 120000
index 0000000..cf2a63c
--- /dev/null
+++ b/src/mkrabintables/u64_fmt_generic.o
@@ -0,0 +1 @@
+liblimb/u64_fmt_generic.o
\ No newline at end of file