hare

[hare] The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

stdlib.mk (193788B)


      1 # This file is generated by the gen-stdlib script, do not edit it by hand
      2 
      3 rtscript = $(STDLIB)/rt/hare.sc
      4 # rt (+linux)
      5 stdlib_rt_linux_srcs = \
      6 	$(STDLIB)/rt/+linux/abort.ha \
      7 	$(STDLIB)/rt/+linux/env.ha \
      8 	$(STDLIB)/rt/+linux/errno.ha \
      9 	$(STDLIB)/rt/+linux/types.ha \
     10 	$(STDLIB)/rt/+linux/segmalloc.ha \
     11 	$(STDLIB)/rt/+linux/platformstart.ha \
     12 	$(STDLIB)/rt/+linux/prctl.ha \
     13 	$(STDLIB)/rt/+linux/+$(ARCH).ha \
     14 	$(STDLIB)/rt/+linux/syscallno+$(ARCH).ha \
     15 	$(STDLIB)/rt/+linux/syscalls.ha \
     16 	$(STDLIB)/rt/+linux/signal.ha \
     17 	$(STDLIB)/rt/+linux/stat.ha \
     18 	$(STDLIB)/rt/+linux/socket.ha \
     19 	$(STDLIB)/rt/+$(ARCH)/jmp.ha \
     20 	$(STDLIB)/rt/+$(ARCH)/backtrace.ha \
     21 	$(STDLIB)/rt/fenv_defs.ha \
     22 	$(STDLIB)/rt/+$(ARCH)/cpuid.ha \
     23 	$(STDLIB)/rt/ensure.ha \
     24 	$(STDLIB)/rt/jmp.ha \
     25 	$(STDLIB)/rt/malloc.ha \
     26 	$(STDLIB)/rt/memcpy.ha \
     27 	$(STDLIB)/rt/memmove.ha \
     28 	$(STDLIB)/rt/memset.ha \
     29 	$(STDLIB)/rt/strcmp.ha \
     30 	$(STDLIB)/rt/abort.ha \
     31 	$(STDLIB)/rt/start.ha
     32 
     33 # rt (+freebsd)
     34 stdlib_rt_freebsd_srcs = \
     35 	$(STDLIB)/rt/+freebsd/abort.ha \
     36 	$(STDLIB)/rt/+freebsd/env.ha \
     37 	$(STDLIB)/rt/+freebsd/errno.ha \
     38 	$(STDLIB)/rt/+freebsd/platformstart.ha \
     39 	$(STDLIB)/rt/+freebsd/segmalloc.ha \
     40 	$(STDLIB)/rt/+freebsd/signal.ha \
     41 	$(STDLIB)/rt/+freebsd/socket.ha \
     42 	$(STDLIB)/rt/+freebsd/syscallno.ha \
     43 	$(STDLIB)/rt/+freebsd/syscalls.ha \
     44 	$(STDLIB)/rt/+freebsd/types.ha \
     45 	$(STDLIB)/rt/+$(ARCH)/jmp.ha \
     46 	$(STDLIB)/rt/+$(ARCH)/backtrace.ha \
     47 	$(STDLIB)/rt/fenv_defs.ha \
     48 	$(STDLIB)/rt/+$(ARCH)/cpuid.ha \
     49 	$(STDLIB)/rt/ensure.ha \
     50 	$(STDLIB)/rt/jmp.ha \
     51 	$(STDLIB)/rt/malloc.ha \
     52 	$(STDLIB)/rt/memcpy.ha \
     53 	$(STDLIB)/rt/memmove.ha \
     54 	$(STDLIB)/rt/memset.ha \
     55 	$(STDLIB)/rt/strcmp.ha \
     56 	$(STDLIB)/rt/abort.ha \
     57 	$(STDLIB)/rt/start.ha
     58 
     59 $(HARECACHE)/rt/rt-linux.ssa: $(stdlib_rt_linux_srcs) $(stdlib_rt)
     60 	@printf 'HAREC \t$@\n'
     61 	@mkdir -p $(HARECACHE)/rt
     62 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nrt \
     63 		-t$(HARECACHE)/rt/rt.td $(stdlib_rt_linux_srcs)
     64 
     65 $(HARECACHE)/rt/rt-freebsd.ssa: $(stdlib_rt_freebsd_srcs) $(stdlib_rt)
     66 	@printf 'HAREC \t$@\n'
     67 	@mkdir -p $(HARECACHE)/rt
     68 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nrt \
     69 		-t$(HARECACHE)/rt/rt.td $(stdlib_rt_freebsd_srcs)
     70 
     71 $(HARECACHE)/rt/start.o: $(STDLIB)/rt/+$(PLATFORM)/start+$(ARCH)-libc.s
     72 	@printf 'AS \t%s\n' "$@"
     73 	@mkdir -p $(HARECACHE)/rt
     74 	@$(AS) -o $@ $(STDLIB)/rt/+$(PLATFORM)/start+$(ARCH)-libc.s
     75 
     76 stdlib_asm = $(HARECACHE)/rt/syscall.o \
     77 	$(HARECACHE)/rt/setjmp.o \
     78 	$(HARECACHE)/rt/longjmp.o \
     79 	$(HARECACHE)/rt/restore.o \
     80 	$(HARECACHE)/rt/getfp.o \
     81 	$(HARECACHE)/rt/fenv.o \
     82 	$(HARECACHE)/rt/start.o \
     83 	$(HARECACHE)/rt/cpuid_native.o
     84 
     85 $(HARECACHE)/rt/syscall.o: $(STDLIB)/rt/+$(PLATFORM)/syscall+$(ARCH).s
     86 	@printf 'AS \t%s\n' "$@"
     87 	@mkdir -p $(HARECACHE)/rt
     88 	@$(AS) -o $@ $(STDLIB)/rt/+$(PLATFORM)/syscall+$(ARCH).s
     89 
     90 $(HARECACHE)/rt/setjmp.o: $(STDLIB)/rt/+$(ARCH)/setjmp.s
     91 	@printf 'AS \t%s\n' "$@"
     92 	@mkdir -p $(HARECACHE)/rt
     93 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/setjmp.s
     94 
     95 $(HARECACHE)/rt/longjmp.o: $(STDLIB)/rt/+$(ARCH)/longjmp.s
     96 	@printf 'AS \t%s\n' "$@"
     97 	@mkdir -p $(HARECACHE)/rt
     98 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/longjmp.s
     99 
    100 $(HARECACHE)/rt/restore.o: $(STDLIB)/rt/+$(ARCH)/restore.s
    101 	@printf 'AS \t%s\n' "$@"
    102 	@mkdir -p $(HARECACHE)/rt
    103 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/restore.s
    104 
    105 $(HARECACHE)/rt/fenv.o: $(STDLIB)/rt/+$(ARCH)/fenv.s
    106 	@printf 'AS \t%s\n' "$@"
    107 	@mkdir -p $(HARECACHE)/rt
    108 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/fenv.s
    109 
    110 $(HARECACHE)/rt/getfp.o: $(STDLIB)/rt/+$(ARCH)/getfp.s
    111 	@printf 'AS \t%s\n' "$@"
    112 	@mkdir -p $(HARECACHE)/rt
    113 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/getfp.s
    114 
    115 $(HARECACHE)/rt/cpuid_native.o: $(STDLIB)/rt/+$(ARCH)/cpuid_native.s
    116 	@printf 'AS \t%s\n' "$@"
    117 	@mkdir -p $(HARECACHE)/rt
    118 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/cpuid_native.s
    119 
    120 $(HARECACHE)/rt/rt-linux.a: $(HARECACHE)/rt/rt-linux.o $(stdlib_asm)
    121 	@printf 'AS \t%s\n' "$@"
    122 	@$(AR) -csr $@ $(HARECACHE)/rt/rt-linux.o $(stdlib_asm)
    123 
    124 $(HARECACHE)/rt/rt-freebsd.a: $(HARECACHE)/rt/rt-freebsd.o $(stdlib_asm)
    125 	@printf 'AS \t%s\n' "$@"
    126 	@$(AR) -csr $@ $(HARECACHE)/rt/rt-freebsd.o $(stdlib_asm)
    127 
    128 stdlib_rt = $(HARECACHE)/rt/rt-$(PLATFORM).a
    129 stdlib_deps_linux += $(stdlib_rt)
    130 stdlib_deps_freebsd += $(stdlib_rt)
    131 stdlib_deps_any += $(stdlib_rt)
    132 
    133 # gen_lib ascii (any)
    134 stdlib_ascii_any = $(HARECACHE)/ascii/ascii-any.o
    135 stdlib_deps_any += $(stdlib_ascii_any)
    136 stdlib_ascii_linux = $(stdlib_ascii_any)
    137 stdlib_ascii_freebsd = $(stdlib_ascii_any)
    138 
    139 # gen_lib bufio (any)
    140 stdlib_bufio_any = $(HARECACHE)/bufio/bufio-any.o
    141 stdlib_deps_any += $(stdlib_bufio_any)
    142 stdlib_bufio_linux = $(stdlib_bufio_any)
    143 stdlib_bufio_freebsd = $(stdlib_bufio_any)
    144 
    145 # gen_lib bytes (any)
    146 stdlib_bytes_any = $(HARECACHE)/bytes/bytes-any.o
    147 stdlib_deps_any += $(stdlib_bytes_any)
    148 stdlib_bytes_linux = $(stdlib_bytes_any)
    149 stdlib_bytes_freebsd = $(stdlib_bytes_any)
    150 
    151 # gen_lib crypto (any)
    152 stdlib_crypto_any = $(HARECACHE)/crypto/crypto-any.o
    153 stdlib_deps_any += $(stdlib_crypto_any)
    154 stdlib_crypto_linux = $(stdlib_crypto_any)
    155 stdlib_crypto_freebsd = $(stdlib_crypto_any)
    156 
    157 # gen_lib crypto::aes (any)
    158 stdlib_crypto_aes_any = $(HARECACHE)/crypto/aes/crypto_aes-any.o
    159 stdlib_deps_any += $(stdlib_crypto_aes_any)
    160 stdlib_crypto_aes_linux = $(stdlib_crypto_aes_any)
    161 stdlib_crypto_aes_freebsd = $(stdlib_crypto_aes_any)
    162 
    163 # gen_lib crypto::aes::xts (any)
    164 stdlib_crypto_aes_xts_any = $(HARECACHE)/crypto/aes/xts/crypto_aes_xts-any.o
    165 stdlib_deps_any += $(stdlib_crypto_aes_xts_any)
    166 stdlib_crypto_aes_xts_linux = $(stdlib_crypto_aes_xts_any)
    167 stdlib_crypto_aes_xts_freebsd = $(stdlib_crypto_aes_xts_any)
    168 
    169 # gen_lib crypto::argon2 (any)
    170 stdlib_crypto_argon2_any = $(HARECACHE)/crypto/argon2/crypto_argon2-any.o
    171 stdlib_deps_any += $(stdlib_crypto_argon2_any)
    172 stdlib_crypto_argon2_linux = $(stdlib_crypto_argon2_any)
    173 stdlib_crypto_argon2_freebsd = $(stdlib_crypto_argon2_any)
    174 
    175 # gen_lib crypto::bcrypt (any)
    176 stdlib_crypto_bcrypt_any = $(HARECACHE)/crypto/bcrypt/crypto_bcrypt-any.o
    177 stdlib_deps_any += $(stdlib_crypto_bcrypt_any)
    178 stdlib_crypto_bcrypt_linux = $(stdlib_crypto_bcrypt_any)
    179 stdlib_crypto_bcrypt_freebsd = $(stdlib_crypto_bcrypt_any)
    180 
    181 # gen_lib crypto::blake2b (any)
    182 stdlib_crypto_blake2b_any = $(HARECACHE)/crypto/blake2b/crypto_blake2b-any.o
    183 stdlib_deps_any += $(stdlib_crypto_blake2b_any)
    184 stdlib_crypto_blake2b_linux = $(stdlib_crypto_blake2b_any)
    185 stdlib_crypto_blake2b_freebsd = $(stdlib_crypto_blake2b_any)
    186 
    187 # gen_lib crypto::blowfish (any)
    188 stdlib_crypto_blowfish_any = $(HARECACHE)/crypto/blowfish/crypto_blowfish-any.o
    189 stdlib_deps_any += $(stdlib_crypto_blowfish_any)
    190 stdlib_crypto_blowfish_linux = $(stdlib_crypto_blowfish_any)
    191 stdlib_crypto_blowfish_freebsd = $(stdlib_crypto_blowfish_any)
    192 
    193 # gen_lib crypto::chacha (any)
    194 stdlib_crypto_chacha_any = $(HARECACHE)/crypto/chacha/crypto_chacha-any.o
    195 stdlib_deps_any += $(stdlib_crypto_chacha_any)
    196 stdlib_crypto_chacha_linux = $(stdlib_crypto_chacha_any)
    197 stdlib_crypto_chacha_freebsd = $(stdlib_crypto_chacha_any)
    198 
    199 # gen_lib crypto::cipher (any)
    200 stdlib_crypto_cipher_any = $(HARECACHE)/crypto/cipher/crypto_cipher-any.o
    201 stdlib_deps_any += $(stdlib_crypto_cipher_any)
    202 stdlib_crypto_cipher_linux = $(stdlib_crypto_cipher_any)
    203 stdlib_crypto_cipher_freebsd = $(stdlib_crypto_cipher_any)
    204 
    205 # gen_lib crypto::hkdf (any)
    206 stdlib_crypto_hkdf_any = $(HARECACHE)/crypto/hkdf/crypto_hkdf-any.o
    207 stdlib_deps_any += $(stdlib_crypto_hkdf_any)
    208 stdlib_crypto_hkdf_linux = $(stdlib_crypto_hkdf_any)
    209 stdlib_crypto_hkdf_freebsd = $(stdlib_crypto_hkdf_any)
    210 
    211 # gen_lib crypto::hmac (any)
    212 stdlib_crypto_hmac_any = $(HARECACHE)/crypto/hmac/crypto_hmac-any.o
    213 stdlib_deps_any += $(stdlib_crypto_hmac_any)
    214 stdlib_crypto_hmac_linux = $(stdlib_crypto_hmac_any)
    215 stdlib_crypto_hmac_freebsd = $(stdlib_crypto_hmac_any)
    216 
    217 # gen_lib crypto::mac (any)
    218 stdlib_crypto_mac_any = $(HARECACHE)/crypto/mac/crypto_mac-any.o
    219 stdlib_deps_any += $(stdlib_crypto_mac_any)
    220 stdlib_crypto_mac_linux = $(stdlib_crypto_mac_any)
    221 stdlib_crypto_mac_freebsd = $(stdlib_crypto_mac_any)
    222 
    223 # gen_lib crypto::math (any)
    224 stdlib_crypto_math_any = $(HARECACHE)/crypto/math/crypto_math-any.o
    225 stdlib_deps_any += $(stdlib_crypto_math_any)
    226 stdlib_crypto_math_linux = $(stdlib_crypto_math_any)
    227 stdlib_crypto_math_freebsd = $(stdlib_crypto_math_any)
    228 
    229 # gen_lib crypto::random (linux)
    230 stdlib_crypto_random_linux = $(HARECACHE)/crypto/random/crypto_random-linux.o
    231 stdlib_deps_linux += $(stdlib_crypto_random_linux)
    232 
    233 # gen_lib crypto::random (freebsd)
    234 stdlib_crypto_random_freebsd = $(HARECACHE)/crypto/random/crypto_random-freebsd.o
    235 stdlib_deps_freebsd += $(stdlib_crypto_random_freebsd)
    236 
    237 # gen_lib crypto::poly1305 (any)
    238 stdlib_crypto_poly1305_any = $(HARECACHE)/crypto/poly1305/crypto_poly1305-any.o
    239 stdlib_deps_any += $(stdlib_crypto_poly1305_any)
    240 stdlib_crypto_poly1305_linux = $(stdlib_crypto_poly1305_any)
    241 stdlib_crypto_poly1305_freebsd = $(stdlib_crypto_poly1305_any)
    242 
    243 # gen_lib crypto::salsa (any)
    244 stdlib_crypto_salsa_any = $(HARECACHE)/crypto/salsa/crypto_salsa-any.o
    245 stdlib_deps_any += $(stdlib_crypto_salsa_any)
    246 stdlib_crypto_salsa_linux = $(stdlib_crypto_salsa_any)
    247 stdlib_crypto_salsa_freebsd = $(stdlib_crypto_salsa_any)
    248 
    249 # gen_lib crypto::sha1 (any)
    250 stdlib_crypto_sha1_any = $(HARECACHE)/crypto/sha1/crypto_sha1-any.o
    251 stdlib_deps_any += $(stdlib_crypto_sha1_any)
    252 stdlib_crypto_sha1_linux = $(stdlib_crypto_sha1_any)
    253 stdlib_crypto_sha1_freebsd = $(stdlib_crypto_sha1_any)
    254 
    255 # gen_lib crypto::sha256 (any)
    256 stdlib_crypto_sha256_any = $(HARECACHE)/crypto/sha256/crypto_sha256-any.o
    257 stdlib_deps_any += $(stdlib_crypto_sha256_any)
    258 stdlib_crypto_sha256_linux = $(stdlib_crypto_sha256_any)
    259 stdlib_crypto_sha256_freebsd = $(stdlib_crypto_sha256_any)
    260 
    261 # gen_lib crypto::sha512 (any)
    262 stdlib_crypto_sha512_any = $(HARECACHE)/crypto/sha512/crypto_sha512-any.o
    263 stdlib_deps_any += $(stdlib_crypto_sha512_any)
    264 stdlib_crypto_sha512_linux = $(stdlib_crypto_sha512_any)
    265 stdlib_crypto_sha512_freebsd = $(stdlib_crypto_sha512_any)
    266 
    267 # gen_lib crypto::curve25519 (any)
    268 stdlib_crypto_curve25519_any = $(HARECACHE)/crypto/curve25519/crypto_curve25519-any.o
    269 stdlib_deps_any += $(stdlib_crypto_curve25519_any)
    270 stdlib_crypto_curve25519_linux = $(stdlib_crypto_curve25519_any)
    271 stdlib_crypto_curve25519_freebsd = $(stdlib_crypto_curve25519_any)
    272 
    273 # gen_lib crypto::ed25519 (any)
    274 stdlib_crypto_ed25519_any = $(HARECACHE)/crypto/ed25519/crypto_ed25519-any.o
    275 stdlib_deps_any += $(stdlib_crypto_ed25519_any)
    276 stdlib_crypto_ed25519_linux = $(stdlib_crypto_ed25519_any)
    277 stdlib_crypto_ed25519_freebsd = $(stdlib_crypto_ed25519_any)
    278 
    279 # gen_lib crypto::x25519 (any)
    280 stdlib_crypto_x25519_any = $(HARECACHE)/crypto/x25519/crypto_x25519-any.o
    281 stdlib_deps_any += $(stdlib_crypto_x25519_any)
    282 stdlib_crypto_x25519_linux = $(stdlib_crypto_x25519_any)
    283 stdlib_crypto_x25519_freebsd = $(stdlib_crypto_x25519_any)
    284 
    285 # gen_lib datetime (linux)
    286 stdlib_datetime_linux = $(HARECACHE)/datetime/datetime-linux.o
    287 stdlib_deps_linux += $(stdlib_datetime_linux)
    288 
    289 # gen_lib datetime (freebsd)
    290 stdlib_datetime_freebsd = $(HARECACHE)/datetime/datetime-freebsd.o
    291 stdlib_deps_freebsd += $(stdlib_datetime_freebsd)
    292 
    293 # gen_lib dirs (any)
    294 stdlib_dirs_any = $(HARECACHE)/dirs/dirs-any.o
    295 stdlib_deps_any += $(stdlib_dirs_any)
    296 stdlib_dirs_linux = $(stdlib_dirs_any)
    297 stdlib_dirs_freebsd = $(stdlib_dirs_any)
    298 
    299 # gen_lib encoding::base64 (any)
    300 stdlib_encoding_base64_any = $(HARECACHE)/encoding/base64/encoding_base64-any.o
    301 stdlib_deps_any += $(stdlib_encoding_base64_any)
    302 stdlib_encoding_base64_linux = $(stdlib_encoding_base64_any)
    303 stdlib_encoding_base64_freebsd = $(stdlib_encoding_base64_any)
    304 
    305 # gen_lib encoding::base32 (any)
    306 stdlib_encoding_base32_any = $(HARECACHE)/encoding/base32/encoding_base32-any.o
    307 stdlib_deps_any += $(stdlib_encoding_base32_any)
    308 stdlib_encoding_base32_linux = $(stdlib_encoding_base32_any)
    309 stdlib_encoding_base32_freebsd = $(stdlib_encoding_base32_any)
    310 
    311 # gen_lib encoding::hex (any)
    312 stdlib_encoding_hex_any = $(HARECACHE)/encoding/hex/encoding_hex-any.o
    313 stdlib_deps_any += $(stdlib_encoding_hex_any)
    314 stdlib_encoding_hex_linux = $(stdlib_encoding_hex_any)
    315 stdlib_encoding_hex_freebsd = $(stdlib_encoding_hex_any)
    316 
    317 # gen_lib encoding::json (any)
    318 stdlib_encoding_json_any = $(HARECACHE)/encoding/json/encoding_json-any.o
    319 stdlib_deps_any += $(stdlib_encoding_json_any)
    320 stdlib_encoding_json_linux = $(stdlib_encoding_json_any)
    321 stdlib_encoding_json_freebsd = $(stdlib_encoding_json_any)
    322 
    323 # gen_lib encoding::pem (any)
    324 stdlib_encoding_pem_any = $(HARECACHE)/encoding/pem/encoding_pem-any.o
    325 stdlib_deps_any += $(stdlib_encoding_pem_any)
    326 stdlib_encoding_pem_linux = $(stdlib_encoding_pem_any)
    327 stdlib_encoding_pem_freebsd = $(stdlib_encoding_pem_any)
    328 
    329 # gen_lib encoding::utf8 (any)
    330 stdlib_encoding_utf8_any = $(HARECACHE)/encoding/utf8/encoding_utf8-any.o
    331 stdlib_deps_any += $(stdlib_encoding_utf8_any)
    332 stdlib_encoding_utf8_linux = $(stdlib_encoding_utf8_any)
    333 stdlib_encoding_utf8_freebsd = $(stdlib_encoding_utf8_any)
    334 
    335 # gen_lib endian (any)
    336 stdlib_endian_any = $(HARECACHE)/endian/endian-any.o
    337 stdlib_deps_any += $(stdlib_endian_any)
    338 stdlib_endian_linux = $(stdlib_endian_any)
    339 stdlib_endian_freebsd = $(stdlib_endian_any)
    340 
    341 # gen_lib errors (any)
    342 stdlib_errors_any = $(HARECACHE)/errors/errors-any.o
    343 stdlib_deps_any += $(stdlib_errors_any)
    344 stdlib_errors_linux = $(stdlib_errors_any)
    345 stdlib_errors_freebsd = $(stdlib_errors_any)
    346 
    347 # gen_lib fmt (any)
    348 stdlib_fmt_any = $(HARECACHE)/fmt/fmt-any.o
    349 stdlib_deps_any += $(stdlib_fmt_any)
    350 stdlib_fmt_linux = $(stdlib_fmt_any)
    351 stdlib_fmt_freebsd = $(stdlib_fmt_any)
    352 
    353 # gen_lib fnmatch (any)
    354 stdlib_fnmatch_any = $(HARECACHE)/fnmatch/fnmatch-any.o
    355 stdlib_deps_any += $(stdlib_fnmatch_any)
    356 stdlib_fnmatch_linux = $(stdlib_fnmatch_any)
    357 stdlib_fnmatch_freebsd = $(stdlib_fnmatch_any)
    358 
    359 # gen_lib format::elf (any)
    360 stdlib_format_elf_any = $(HARECACHE)/format/elf/format_elf-any.o
    361 stdlib_deps_any += $(stdlib_format_elf_any)
    362 stdlib_format_elf_linux = $(stdlib_format_elf_any)
    363 stdlib_format_elf_freebsd = $(stdlib_format_elf_any)
    364 
    365 # gen_lib format::ini (any)
    366 stdlib_format_ini_any = $(HARECACHE)/format/ini/format_ini-any.o
    367 stdlib_deps_any += $(stdlib_format_ini_any)
    368 stdlib_format_ini_linux = $(stdlib_format_ini_any)
    369 stdlib_format_ini_freebsd = $(stdlib_format_ini_any)
    370 
    371 # gen_lib format::tar (any)
    372 stdlib_format_tar_any = $(HARECACHE)/format/tar/format_tar-any.o
    373 stdlib_deps_any += $(stdlib_format_tar_any)
    374 stdlib_format_tar_linux = $(stdlib_format_tar_any)
    375 stdlib_format_tar_freebsd = $(stdlib_format_tar_any)
    376 
    377 # gen_lib fs (any)
    378 stdlib_fs_any = $(HARECACHE)/fs/fs-any.o
    379 stdlib_deps_any += $(stdlib_fs_any)
    380 stdlib_fs_linux = $(stdlib_fs_any)
    381 stdlib_fs_freebsd = $(stdlib_fs_any)
    382 
    383 # gen_lib getopt (any)
    384 stdlib_getopt_any = $(HARECACHE)/getopt/getopt-any.o
    385 stdlib_deps_any += $(stdlib_getopt_any)
    386 stdlib_getopt_linux = $(stdlib_getopt_any)
    387 stdlib_getopt_freebsd = $(stdlib_getopt_any)
    388 
    389 # gen_lib glob (any)
    390 stdlib_glob_any = $(HARECACHE)/glob/glob-any.o
    391 stdlib_deps_any += $(stdlib_glob_any)
    392 stdlib_glob_linux = $(stdlib_glob_any)
    393 stdlib_glob_freebsd = $(stdlib_glob_any)
    394 
    395 # gen_lib hare::ast (any)
    396 stdlib_hare_ast_any = $(HARECACHE)/hare/ast/hare_ast-any.o
    397 stdlib_deps_any += $(stdlib_hare_ast_any)
    398 stdlib_hare_ast_linux = $(stdlib_hare_ast_any)
    399 stdlib_hare_ast_freebsd = $(stdlib_hare_ast_any)
    400 
    401 # gen_lib hare::lex (any)
    402 stdlib_hare_lex_any = $(HARECACHE)/hare/lex/hare_lex-any.o
    403 stdlib_deps_any += $(stdlib_hare_lex_any)
    404 stdlib_hare_lex_linux = $(stdlib_hare_lex_any)
    405 stdlib_hare_lex_freebsd = $(stdlib_hare_lex_any)
    406 
    407 # gen_lib hare::module (any)
    408 stdlib_hare_module_any = $(HARECACHE)/hare/module/hare_module-any.o
    409 stdlib_deps_any += $(stdlib_hare_module_any)
    410 stdlib_hare_module_linux = $(stdlib_hare_module_any)
    411 stdlib_hare_module_freebsd = $(stdlib_hare_module_any)
    412 
    413 # gen_lib hare::parse (any)
    414 stdlib_hare_parse_any = $(HARECACHE)/hare/parse/hare_parse-any.o
    415 stdlib_deps_any += $(stdlib_hare_parse_any)
    416 stdlib_hare_parse_linux = $(stdlib_hare_parse_any)
    417 stdlib_hare_parse_freebsd = $(stdlib_hare_parse_any)
    418 
    419 # gen_lib hare::types (any)
    420 stdlib_hare_types_any = $(HARECACHE)/hare/types/hare_types-any.o
    421 stdlib_deps_any += $(stdlib_hare_types_any)
    422 stdlib_hare_types_linux = $(stdlib_hare_types_any)
    423 stdlib_hare_types_freebsd = $(stdlib_hare_types_any)
    424 
    425 # gen_lib hare::unit (any)
    426 stdlib_hare_unit_any = $(HARECACHE)/hare/unit/hare_unit-any.o
    427 stdlib_deps_any += $(stdlib_hare_unit_any)
    428 stdlib_hare_unit_linux = $(stdlib_hare_unit_any)
    429 stdlib_hare_unit_freebsd = $(stdlib_hare_unit_any)
    430 
    431 # gen_lib hare::unparse (any)
    432 stdlib_hare_unparse_any = $(HARECACHE)/hare/unparse/hare_unparse-any.o
    433 stdlib_deps_any += $(stdlib_hare_unparse_any)
    434 stdlib_hare_unparse_linux = $(stdlib_hare_unparse_any)
    435 stdlib_hare_unparse_freebsd = $(stdlib_hare_unparse_any)
    436 
    437 # gen_lib hash (any)
    438 stdlib_hash_any = $(HARECACHE)/hash/hash-any.o
    439 stdlib_deps_any += $(stdlib_hash_any)
    440 stdlib_hash_linux = $(stdlib_hash_any)
    441 stdlib_hash_freebsd = $(stdlib_hash_any)
    442 
    443 # gen_lib hash::adler32 (any)
    444 stdlib_hash_adler32_any = $(HARECACHE)/hash/adler32/hash_adler32-any.o
    445 stdlib_deps_any += $(stdlib_hash_adler32_any)
    446 stdlib_hash_adler32_linux = $(stdlib_hash_adler32_any)
    447 stdlib_hash_adler32_freebsd = $(stdlib_hash_adler32_any)
    448 
    449 # gen_lib hash::crc16 (any)
    450 stdlib_hash_crc16_any = $(HARECACHE)/hash/crc16/hash_crc16-any.o
    451 stdlib_deps_any += $(stdlib_hash_crc16_any)
    452 stdlib_hash_crc16_linux = $(stdlib_hash_crc16_any)
    453 stdlib_hash_crc16_freebsd = $(stdlib_hash_crc16_any)
    454 
    455 # gen_lib hash::crc32 (any)
    456 stdlib_hash_crc32_any = $(HARECACHE)/hash/crc32/hash_crc32-any.o
    457 stdlib_deps_any += $(stdlib_hash_crc32_any)
    458 stdlib_hash_crc32_linux = $(stdlib_hash_crc32_any)
    459 stdlib_hash_crc32_freebsd = $(stdlib_hash_crc32_any)
    460 
    461 # gen_lib hash::crc64 (any)
    462 stdlib_hash_crc64_any = $(HARECACHE)/hash/crc64/hash_crc64-any.o
    463 stdlib_deps_any += $(stdlib_hash_crc64_any)
    464 stdlib_hash_crc64_linux = $(stdlib_hash_crc64_any)
    465 stdlib_hash_crc64_freebsd = $(stdlib_hash_crc64_any)
    466 
    467 # gen_lib hash::fnv (any)
    468 stdlib_hash_fnv_any = $(HARECACHE)/hash/fnv/hash_fnv-any.o
    469 stdlib_deps_any += $(stdlib_hash_fnv_any)
    470 stdlib_hash_fnv_linux = $(stdlib_hash_fnv_any)
    471 stdlib_hash_fnv_freebsd = $(stdlib_hash_fnv_any)
    472 
    473 # gen_lib hash::siphash (any)
    474 stdlib_hash_siphash_any = $(HARECACHE)/hash/siphash/hash_siphash-any.o
    475 stdlib_deps_any += $(stdlib_hash_siphash_any)
    476 stdlib_hash_siphash_linux = $(stdlib_hash_siphash_any)
    477 stdlib_hash_siphash_freebsd = $(stdlib_hash_siphash_any)
    478 
    479 # gen_lib io (linux)
    480 stdlib_io_linux = $(HARECACHE)/io/io-linux.o
    481 stdlib_deps_linux += $(stdlib_io_linux)
    482 
    483 # gen_lib io (freebsd)
    484 stdlib_io_freebsd = $(HARECACHE)/io/io-freebsd.o
    485 stdlib_deps_freebsd += $(stdlib_io_freebsd)
    486 
    487 # gen_lib linux (linux)
    488 stdlib_linux_linux = $(HARECACHE)/linux/linux-linux.o
    489 stdlib_deps_linux += $(stdlib_linux_linux)
    490 
    491 # gen_lib linux::keyctl (linux)
    492 stdlib_linux_keyctl_linux = $(HARECACHE)/linux/keyctl/linux_keyctl-linux.o
    493 stdlib_deps_linux += $(stdlib_linux_keyctl_linux)
    494 
    495 # gen_lib linux::timerfd (linux)
    496 stdlib_linux_timerfd_linux = $(HARECACHE)/linux/timerfd/linux_timerfd-linux.o
    497 stdlib_deps_linux += $(stdlib_linux_timerfd_linux)
    498 
    499 # gen_lib linux::vdso (linux)
    500 stdlib_linux_vdso_linux = $(HARECACHE)/linux/vdso/linux_vdso-linux.o
    501 stdlib_deps_linux += $(stdlib_linux_vdso_linux)
    502 
    503 # gen_lib log (linux)
    504 stdlib_log_linux = $(HARECACHE)/log/log-linux.o
    505 stdlib_deps_linux += $(stdlib_log_linux)
    506 
    507 # gen_lib log (freebsd)
    508 stdlib_log_freebsd = $(HARECACHE)/log/log-freebsd.o
    509 stdlib_deps_freebsd += $(stdlib_log_freebsd)
    510 
    511 # gen_lib math (any)
    512 stdlib_math_any = $(HARECACHE)/math/math-any.o
    513 stdlib_deps_any += $(stdlib_math_any)
    514 stdlib_math_linux = $(stdlib_math_any)
    515 stdlib_math_freebsd = $(stdlib_math_any)
    516 
    517 # gen_lib math::complex (any)
    518 stdlib_math_complex_any = $(HARECACHE)/math/complex/math_complex-any.o
    519 stdlib_deps_any += $(stdlib_math_complex_any)
    520 stdlib_math_complex_linux = $(stdlib_math_complex_any)
    521 stdlib_math_complex_freebsd = $(stdlib_math_complex_any)
    522 
    523 # gen_lib math::random (any)
    524 stdlib_math_random_any = $(HARECACHE)/math/random/math_random-any.o
    525 stdlib_deps_any += $(stdlib_math_random_any)
    526 stdlib_math_random_linux = $(stdlib_math_random_any)
    527 stdlib_math_random_freebsd = $(stdlib_math_random_any)
    528 
    529 # gen_lib net (linux)
    530 stdlib_net_linux = $(HARECACHE)/net/net-linux.o
    531 stdlib_deps_linux += $(stdlib_net_linux)
    532 
    533 # gen_lib net (freebsd)
    534 stdlib_net_freebsd = $(HARECACHE)/net/net-freebsd.o
    535 stdlib_deps_freebsd += $(stdlib_net_freebsd)
    536 
    537 # gen_lib net::dial (any)
    538 stdlib_net_dial_any = $(HARECACHE)/net/dial/net_dial-any.o
    539 stdlib_deps_any += $(stdlib_net_dial_any)
    540 stdlib_net_dial_linux = $(stdlib_net_dial_any)
    541 stdlib_net_dial_freebsd = $(stdlib_net_dial_any)
    542 
    543 # gen_lib net::dns (any)
    544 stdlib_net_dns_any = $(HARECACHE)/net/dns/net_dns-any.o
    545 stdlib_deps_any += $(stdlib_net_dns_any)
    546 stdlib_net_dns_linux = $(stdlib_net_dns_any)
    547 stdlib_net_dns_freebsd = $(stdlib_net_dns_any)
    548 
    549 # gen_lib net::ip (linux)
    550 stdlib_net_ip_linux = $(HARECACHE)/net/ip/net_ip-linux.o
    551 stdlib_deps_linux += $(stdlib_net_ip_linux)
    552 
    553 # gen_lib net::ip (freebsd)
    554 stdlib_net_ip_freebsd = $(HARECACHE)/net/ip/net_ip-freebsd.o
    555 stdlib_deps_freebsd += $(stdlib_net_ip_freebsd)
    556 
    557 # gen_lib net::tcp (linux)
    558 stdlib_net_tcp_linux = $(HARECACHE)/net/tcp/net_tcp-linux.o
    559 stdlib_deps_linux += $(stdlib_net_tcp_linux)
    560 
    561 # gen_lib net::tcp (freebsd)
    562 stdlib_net_tcp_freebsd = $(HARECACHE)/net/tcp/net_tcp-freebsd.o
    563 stdlib_deps_freebsd += $(stdlib_net_tcp_freebsd)
    564 
    565 # gen_lib net::udp (linux)
    566 stdlib_net_udp_linux = $(HARECACHE)/net/udp/net_udp-linux.o
    567 stdlib_deps_linux += $(stdlib_net_udp_linux)
    568 
    569 # gen_lib net::udp (freebsd)
    570 stdlib_net_udp_freebsd = $(HARECACHE)/net/udp/net_udp-freebsd.o
    571 stdlib_deps_freebsd += $(stdlib_net_udp_freebsd)
    572 
    573 # gen_lib net::unix (linux)
    574 stdlib_net_unix_linux = $(HARECACHE)/net/unix/net_unix-linux.o
    575 stdlib_deps_linux += $(stdlib_net_unix_linux)
    576 
    577 # gen_lib net::unix (freebsd)
    578 stdlib_net_unix_freebsd = $(HARECACHE)/net/unix/net_unix-freebsd.o
    579 stdlib_deps_freebsd += $(stdlib_net_unix_freebsd)
    580 
    581 # gen_lib net::uri (any)
    582 stdlib_net_uri_any = $(HARECACHE)/net/uri/net_uri-any.o
    583 stdlib_deps_any += $(stdlib_net_uri_any)
    584 stdlib_net_uri_linux = $(stdlib_net_uri_any)
    585 stdlib_net_uri_freebsd = $(stdlib_net_uri_any)
    586 
    587 # gen_lib os (linux)
    588 stdlib_os_linux = $(HARECACHE)/os/os-linux.o
    589 stdlib_deps_linux += $(stdlib_os_linux)
    590 
    591 # gen_lib os (freebsd)
    592 stdlib_os_freebsd = $(HARECACHE)/os/os-freebsd.o
    593 stdlib_deps_freebsd += $(stdlib_os_freebsd)
    594 
    595 # gen_lib os::exec (linux)
    596 stdlib_os_exec_linux = $(HARECACHE)/os/exec/os_exec-linux.o
    597 stdlib_deps_linux += $(stdlib_os_exec_linux)
    598 
    599 # gen_lib os::exec (freebsd)
    600 stdlib_os_exec_freebsd = $(HARECACHE)/os/exec/os_exec-freebsd.o
    601 stdlib_deps_freebsd += $(stdlib_os_exec_freebsd)
    602 
    603 # gen_lib path (any)
    604 stdlib_path_any = $(HARECACHE)/path/path-any.o
    605 stdlib_deps_any += $(stdlib_path_any)
    606 stdlib_path_linux = $(stdlib_path_any)
    607 stdlib_path_freebsd = $(stdlib_path_any)
    608 
    609 # gen_lib regex (any)
    610 stdlib_regex_any = $(HARECACHE)/regex/regex-any.o
    611 stdlib_deps_any += $(stdlib_regex_any)
    612 stdlib_regex_linux = $(stdlib_regex_any)
    613 stdlib_regex_freebsd = $(stdlib_regex_any)
    614 
    615 # gen_lib shlex (any)
    616 stdlib_shlex_any = $(HARECACHE)/shlex/shlex-any.o
    617 stdlib_deps_any += $(stdlib_shlex_any)
    618 stdlib_shlex_linux = $(stdlib_shlex_any)
    619 stdlib_shlex_freebsd = $(stdlib_shlex_any)
    620 
    621 # gen_lib slices (any)
    622 stdlib_slices_any = $(HARECACHE)/slices/slices-any.o
    623 stdlib_deps_any += $(stdlib_slices_any)
    624 stdlib_slices_linux = $(stdlib_slices_any)
    625 stdlib_slices_freebsd = $(stdlib_slices_any)
    626 
    627 # gen_lib sort (any)
    628 stdlib_sort_any = $(HARECACHE)/sort/sort-any.o
    629 stdlib_deps_any += $(stdlib_sort_any)
    630 stdlib_sort_linux = $(stdlib_sort_any)
    631 stdlib_sort_freebsd = $(stdlib_sort_any)
    632 
    633 # gen_lib strconv (any)
    634 stdlib_strconv_any = $(HARECACHE)/strconv/strconv-any.o
    635 stdlib_deps_any += $(stdlib_strconv_any)
    636 stdlib_strconv_linux = $(stdlib_strconv_any)
    637 stdlib_strconv_freebsd = $(stdlib_strconv_any)
    638 
    639 # gen_lib strings (any)
    640 stdlib_strings_any = $(HARECACHE)/strings/strings-any.o
    641 stdlib_deps_any += $(stdlib_strings_any)
    642 stdlib_strings_linux = $(stdlib_strings_any)
    643 stdlib_strings_freebsd = $(stdlib_strings_any)
    644 
    645 # gen_lib strings::template (any)
    646 stdlib_strings_template_any = $(HARECACHE)/strings/template/strings_template-any.o
    647 stdlib_deps_any += $(stdlib_strings_template_any)
    648 stdlib_strings_template_linux = $(stdlib_strings_template_any)
    649 stdlib_strings_template_freebsd = $(stdlib_strings_template_any)
    650 
    651 # gen_lib strio (any)
    652 stdlib_strio_any = $(HARECACHE)/strio/strio-any.o
    653 stdlib_deps_any += $(stdlib_strio_any)
    654 stdlib_strio_linux = $(stdlib_strio_any)
    655 stdlib_strio_freebsd = $(stdlib_strio_any)
    656 
    657 # gen_lib temp (linux)
    658 stdlib_temp_linux = $(HARECACHE)/temp/temp-linux.o
    659 stdlib_deps_linux += $(stdlib_temp_linux)
    660 
    661 # gen_lib temp (freebsd)
    662 stdlib_temp_freebsd = $(HARECACHE)/temp/temp-freebsd.o
    663 stdlib_deps_freebsd += $(stdlib_temp_freebsd)
    664 
    665 # gen_lib time (linux)
    666 stdlib_time_linux = $(HARECACHE)/time/time-linux.o
    667 stdlib_deps_linux += $(stdlib_time_linux)
    668 
    669 # gen_lib time (freebsd)
    670 stdlib_time_freebsd = $(HARECACHE)/time/time-freebsd.o
    671 stdlib_deps_freebsd += $(stdlib_time_freebsd)
    672 
    673 # gen_lib time::chrono (linux)
    674 stdlib_time_chrono_linux = $(HARECACHE)/time/chrono/time_chrono-linux.o
    675 stdlib_deps_linux += $(stdlib_time_chrono_linux)
    676 
    677 # gen_lib time::chrono (freebsd)
    678 stdlib_time_chrono_freebsd = $(HARECACHE)/time/chrono/time_chrono-freebsd.o
    679 stdlib_deps_freebsd += $(stdlib_time_chrono_freebsd)
    680 
    681 # gen_lib types (any)
    682 stdlib_types_any = $(HARECACHE)/types/types-any.o
    683 stdlib_deps_any += $(stdlib_types_any)
    684 stdlib_types_linux = $(stdlib_types_any)
    685 stdlib_types_freebsd = $(stdlib_types_any)
    686 
    687 # gen_lib unix (linux)
    688 stdlib_unix_linux = $(HARECACHE)/unix/unix-linux.o
    689 stdlib_deps_linux += $(stdlib_unix_linux)
    690 
    691 # gen_lib unix (freebsd)
    692 stdlib_unix_freebsd = $(HARECACHE)/unix/unix-freebsd.o
    693 stdlib_deps_freebsd += $(stdlib_unix_freebsd)
    694 
    695 # gen_lib unix::hosts (linux)
    696 stdlib_unix_hosts_linux = $(HARECACHE)/unix/hosts/unix_hosts-linux.o
    697 stdlib_deps_linux += $(stdlib_unix_hosts_linux)
    698 
    699 # gen_lib unix::hosts (freebsd)
    700 stdlib_unix_hosts_freebsd = $(HARECACHE)/unix/hosts/unix_hosts-freebsd.o
    701 stdlib_deps_freebsd += $(stdlib_unix_hosts_freebsd)
    702 
    703 # gen_lib unix::passwd (any)
    704 stdlib_unix_passwd_any = $(HARECACHE)/unix/passwd/unix_passwd-any.o
    705 stdlib_deps_any += $(stdlib_unix_passwd_any)
    706 stdlib_unix_passwd_linux = $(stdlib_unix_passwd_any)
    707 stdlib_unix_passwd_freebsd = $(stdlib_unix_passwd_any)
    708 
    709 # gen_lib unix::poll (linux)
    710 stdlib_unix_poll_linux = $(HARECACHE)/unix/poll/unix_poll-linux.o
    711 stdlib_deps_linux += $(stdlib_unix_poll_linux)
    712 
    713 # gen_lib unix::poll (freebsd)
    714 stdlib_unix_poll_freebsd = $(HARECACHE)/unix/poll/unix_poll-freebsd.o
    715 stdlib_deps_freebsd += $(stdlib_unix_poll_freebsd)
    716 
    717 # gen_lib unix::resolvconf (linux)
    718 stdlib_unix_resolvconf_linux = $(HARECACHE)/unix/resolvconf/unix_resolvconf-linux.o
    719 stdlib_deps_linux += $(stdlib_unix_resolvconf_linux)
    720 
    721 # gen_lib unix::resolvconf (freebsd)
    722 stdlib_unix_resolvconf_freebsd = $(HARECACHE)/unix/resolvconf/unix_resolvconf-freebsd.o
    723 stdlib_deps_freebsd += $(stdlib_unix_resolvconf_freebsd)
    724 
    725 # gen_lib unix::signal (linux)
    726 stdlib_unix_signal_linux = $(HARECACHE)/unix/signal/unix_signal-linux.o
    727 stdlib_deps_linux += $(stdlib_unix_signal_linux)
    728 
    729 # gen_lib unix::tty (linux)
    730 stdlib_unix_tty_linux = $(HARECACHE)/unix/tty/unix_tty-linux.o
    731 stdlib_deps_linux += $(stdlib_unix_tty_linux)
    732 
    733 # gen_lib unix::tty (freebsd)
    734 stdlib_unix_tty_freebsd = $(HARECACHE)/unix/tty/unix_tty-freebsd.o
    735 stdlib_deps_freebsd += $(stdlib_unix_tty_freebsd)
    736 
    737 # gen_lib uuid (any)
    738 stdlib_uuid_any = $(HARECACHE)/uuid/uuid-any.o
    739 stdlib_deps_any += $(stdlib_uuid_any)
    740 stdlib_uuid_linux = $(stdlib_uuid_any)
    741 stdlib_uuid_freebsd = $(stdlib_uuid_any)
    742 
    743 # ascii (+any)
    744 stdlib_ascii_any_srcs = \
    745 	$(STDLIB)/ascii/ctype.ha \
    746 	$(STDLIB)/ascii/strcmp.ha \
    747 	$(STDLIB)/ascii/valid.ha
    748 
    749 $(HARECACHE)/ascii/ascii-any.ssa: $(stdlib_ascii_any_srcs) $(stdlib_rt) $(stdlib_strings_$(PLATFORM))
    750 	@printf 'HAREC \t$@\n'
    751 	@mkdir -p $(HARECACHE)/ascii
    752 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nascii \
    753 		-t$(HARECACHE)/ascii/ascii.td $(stdlib_ascii_any_srcs)
    754 
    755 # bufio (+any)
    756 stdlib_bufio_any_srcs = \
    757 	$(STDLIB)/bufio/buffered.ha \
    758 	$(STDLIB)/bufio/memstream.ha \
    759 	$(STDLIB)/bufio/scanner.ha
    760 
    761 $(HARECACHE)/bufio/bufio-any.ssa: $(stdlib_bufio_any_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_types_$(PLATFORM))
    762 	@printf 'HAREC \t$@\n'
    763 	@mkdir -p $(HARECACHE)/bufio
    764 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nbufio \
    765 		-t$(HARECACHE)/bufio/bufio.td $(stdlib_bufio_any_srcs)
    766 
    767 # bytes (+any)
    768 stdlib_bytes_any_srcs = \
    769 	$(STDLIB)/bytes/contains.ha \
    770 	$(STDLIB)/bytes/equal.ha \
    771 	$(STDLIB)/bytes/index.ha \
    772 	$(STDLIB)/bytes/reverse.ha \
    773 	$(STDLIB)/bytes/tokenize.ha \
    774 	$(STDLIB)/bytes/trim.ha \
    775 	$(STDLIB)/bytes/two_way.ha \
    776 	$(STDLIB)/bytes/zero.ha
    777 
    778 $(HARECACHE)/bytes/bytes-any.ssa: $(stdlib_bytes_any_srcs) $(stdlib_rt) $(stdlib_types_$(PLATFORM))
    779 	@printf 'HAREC \t$@\n'
    780 	@mkdir -p $(HARECACHE)/bytes
    781 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nbytes \
    782 		-t$(HARECACHE)/bytes/bytes.td $(stdlib_bytes_any_srcs)
    783 
    784 # crypto (+any)
    785 stdlib_crypto_any_srcs = \
    786 	$(STDLIB)/crypto/authenc.ha \
    787 	$(STDLIB)/crypto/keyderiv.ha
    788 
    789 $(HARECACHE)/crypto/crypto-any.ssa: $(stdlib_crypto_any_srcs) $(stdlib_rt) $(stdlib_bufio_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_argon2_$(PLATFORM)) $(stdlib_crypto_chacha_$(PLATFORM)) $(stdlib_crypto_cihper_$(PLATFORM)) $(stdlib_crypto_poly1305_$(PLATFORM)) $(stdlib_crypto_mac_$(PLATFORM)) $(stdlib_crypto_math_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
    790 	@printf 'HAREC \t$@\n'
    791 	@mkdir -p $(HARECACHE)/crypto
    792 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto \
    793 		-t$(HARECACHE)/crypto/crypto.td $(stdlib_crypto_any_srcs)
    794 
    795 # crypto::aes (+any)
    796 stdlib_crypto_aes_any_srcs = \
    797 	$(STDLIB)/crypto/aes/aes_ct64.ha
    798 
    799 $(HARECACHE)/crypto/aes/crypto_aes-any.ssa: $(stdlib_crypto_aes_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_cipher_$(PLATFORM)) $(stdlib_crypto_math_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_rt_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
    800 	@printf 'HAREC \t$@\n'
    801 	@mkdir -p $(HARECACHE)/crypto/aes
    802 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::aes \
    803 		-t$(HARECACHE)/crypto/aes/crypto_aes.td $(stdlib_crypto_aes_any_srcs)
    804 
    805 # crypto::aes::xts (+any)
    806 stdlib_crypto_aes_xts_any_srcs = \
    807 	$(STDLIB)/crypto/aes/xts/xts.ha
    808 
    809 $(HARECACHE)/crypto/aes/xts/crypto_aes_xts-any.ssa: $(stdlib_crypto_aes_xts_any_srcs) $(stdlib_rt) $(stdlib_crypto_aes_$(PLATFORM)) $(stdlib_crypto_cipher_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM))
    810 	@printf 'HAREC \t$@\n'
    811 	@mkdir -p $(HARECACHE)/crypto/aes/xts
    812 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::aes::xts \
    813 		-t$(HARECACHE)/crypto/aes/xts/crypto_aes_xts.td $(stdlib_crypto_aes_xts_any_srcs)
    814 
    815 # crypto::argon2 (+any)
    816 stdlib_crypto_argon2_any_srcs = \
    817 	$(STDLIB)/crypto/argon2/argon2.ha
    818 
    819 $(HARECACHE)/crypto/argon2/crypto_argon2-any.ssa: $(stdlib_crypto_argon2_any_srcs) $(stdlib_rt) $(stdlib_bufio_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_blake2b_$(PLATFORM)) $(stdlib_crypto_math_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_rt_$(PLATFORM)) $(stdlib_types_$(PLATFORM))
    820 	@printf 'HAREC \t$@\n'
    821 	@mkdir -p $(HARECACHE)/crypto/argon2
    822 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::argon2 \
    823 		-t$(HARECACHE)/crypto/argon2/crypto_argon2.td $(stdlib_crypto_argon2_any_srcs)
    824 
    825 # crypto::bcrypt (+any)
    826 stdlib_crypto_bcrypt_any_srcs = \
    827 	$(STDLIB)/crypto/bcrypt/bcrypt.ha \
    828 	$(STDLIB)/crypto/bcrypt/base64.ha
    829 
    830 $(HARECACHE)/crypto/bcrypt/crypto_bcrypt-any.ssa: $(stdlib_crypto_bcrypt_any_srcs) $(stdlib_rt) $(stdlib_crypto_blowfish_$(PLATFORM)) $(stdlib_encoding_base64_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_crypto_$(PLATFORM)) $(stdlib_crypto_random_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_crypto_cipher_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM))
    831 	@printf 'HAREC \t$@\n'
    832 	@mkdir -p $(HARECACHE)/crypto/bcrypt
    833 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::bcrypt \
    834 		-t$(HARECACHE)/crypto/bcrypt/crypto_bcrypt.td $(stdlib_crypto_bcrypt_any_srcs)
    835 
    836 # crypto::blake2b (+any)
    837 stdlib_crypto_blake2b_any_srcs = \
    838 	$(STDLIB)/crypto/blake2b/blake2b.ha
    839 
    840 $(HARECACHE)/crypto/blake2b/crypto_blake2b-any.ssa: $(stdlib_crypto_blake2b_any_srcs) $(stdlib_rt) $(stdlib_encoding_hex_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_crypto_math_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM))
    841 	@printf 'HAREC \t$@\n'
    842 	@mkdir -p $(HARECACHE)/crypto/blake2b
    843 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::blake2b \
    844 		-t$(HARECACHE)/crypto/blake2b/crypto_blake2b.td $(stdlib_crypto_blake2b_any_srcs)
    845 
    846 # crypto::blowfish (+any)
    847 stdlib_crypto_blowfish_any_srcs = \
    848 	$(STDLIB)/crypto/blowfish/blowfish.ha \
    849 	$(STDLIB)/crypto/blowfish/const.ha
    850 
    851 $(HARECACHE)/crypto/blowfish/crypto_blowfish-any.ssa: $(stdlib_crypto_blowfish_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_cipher_$(PLATFORM)) $(stdlib_endian_$(PLATFORM))
    852 	@printf 'HAREC \t$@\n'
    853 	@mkdir -p $(HARECACHE)/crypto/blowfish
    854 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::blowfish \
    855 		-t$(HARECACHE)/crypto/blowfish/crypto_blowfish.td $(stdlib_crypto_blowfish_any_srcs)
    856 
    857 # crypto::chacha (+any)
    858 stdlib_crypto_chacha_any_srcs = \
    859 	$(STDLIB)/crypto/chacha/chacha20.ha
    860 
    861 $(HARECACHE)/crypto/chacha/crypto_chacha-any.ssa: $(stdlib_crypto_chacha_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_cipher_$(PLATFORM)) $(stdlib_crypto_math_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
    862 	@printf 'HAREC \t$@\n'
    863 	@mkdir -p $(HARECACHE)/crypto/chacha
    864 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::chacha \
    865 		-t$(HARECACHE)/crypto/chacha/crypto_chacha.td $(stdlib_crypto_chacha_any_srcs)
    866 
    867 # crypto::cipher (+any)
    868 stdlib_crypto_cipher_any_srcs = \
    869 	$(STDLIB)/crypto/cipher/cipher.ha \
    870 	$(STDLIB)/crypto/cipher/block.ha \
    871 	$(STDLIB)/crypto/cipher/cbc.ha \
    872 	$(STDLIB)/crypto/cipher/ctr.ha \
    873 	$(STDLIB)/crypto/cipher/stream.ha \
    874 	$(STDLIB)/crypto/cipher/gcm.ha \
    875 	$(STDLIB)/crypto/cipher/ghash.ha
    876 
    877 $(HARECACHE)/crypto/cipher/crypto_cipher-any.ssa: $(stdlib_crypto_cipher_any_srcs) $(stdlib_rt) $(stdlib_crypto_math_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_types_$(PLATFORM))
    878 	@printf 'HAREC \t$@\n'
    879 	@mkdir -p $(HARECACHE)/crypto/cipher
    880 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::cipher \
    881 		-t$(HARECACHE)/crypto/cipher/crypto_cipher.td $(stdlib_crypto_cipher_any_srcs)
    882 
    883 # crypto::hkdf (+any)
    884 stdlib_crypto_hkdf_any_srcs = \
    885 	$(STDLIB)/crypto/hkdf/hkdf.ha
    886 
    887 $(HARECACHE)/crypto/hkdf/crypto_hkdf-any.ssa: $(stdlib_crypto_hkdf_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_hmac_$(PLATFORM)) $(stdlib_crypto_mac_$(PLATFORM)) $(stdlib_hash_$(PLATFORM))
    888 	@printf 'HAREC \t$@\n'
    889 	@mkdir -p $(HARECACHE)/crypto/hkdf
    890 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::hkdf \
    891 		-t$(HARECACHE)/crypto/hkdf/crypto_hkdf.td $(stdlib_crypto_hkdf_any_srcs)
    892 
    893 # crypto::hmac (+any)
    894 stdlib_crypto_hmac_any_srcs = \
    895 	$(STDLIB)/crypto/hmac/hmac.ha \
    896 	$(STDLIB)/crypto/hmac/sha1.ha \
    897 	$(STDLIB)/crypto/hmac/sha256.ha
    898 
    899 $(HARECACHE)/crypto/hmac/crypto_hmac-any.ssa: $(stdlib_crypto_hmac_any_srcs) $(stdlib_rt) $(stdlib_crypto_mac_$(PLATFORM)) $(stdlib_crypto_sha1_$(PLATFORM)) $(stdlib_crypto_sha256_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM))
    900 	@printf 'HAREC \t$@\n'
    901 	@mkdir -p $(HARECACHE)/crypto/hmac
    902 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::hmac \
    903 		-t$(HARECACHE)/crypto/hmac/crypto_hmac.td $(stdlib_crypto_hmac_any_srcs)
    904 
    905 # crypto::mac (+any)
    906 stdlib_crypto_mac_any_srcs = \
    907 	$(STDLIB)/crypto/mac/mac.ha
    908 
    909 $(HARECACHE)/crypto/mac/crypto_mac-any.ssa: $(stdlib_crypto_mac_any_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM))
    910 	@printf 'HAREC \t$@\n'
    911 	@mkdir -p $(HARECACHE)/crypto/mac
    912 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::mac \
    913 		-t$(HARECACHE)/crypto/mac/crypto_mac.td $(stdlib_crypto_mac_any_srcs)
    914 
    915 # crypto::math (+any)
    916 stdlib_crypto_math_any_srcs = \
    917 	$(STDLIB)/crypto/math/arithm.ha \
    918 	$(STDLIB)/crypto/math/bits.ha
    919 
    920 $(HARECACHE)/crypto/math/crypto_math-any.ssa: $(stdlib_crypto_math_any_srcs) $(stdlib_rt)
    921 	@printf 'HAREC \t$@\n'
    922 	@mkdir -p $(HARECACHE)/crypto/math
    923 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::math \
    924 		-t$(HARECACHE)/crypto/math/crypto_math.td $(stdlib_crypto_math_any_srcs)
    925 
    926 # crypto::random (+linux)
    927 stdlib_crypto_random_linux_srcs = \
    928 	$(STDLIB)/crypto/random/+linux.ha \
    929 	$(STDLIB)/crypto/random/random.ha
    930 
    931 $(HARECACHE)/crypto/random/crypto_random-linux.ssa: $(stdlib_crypto_random_linux_srcs) $(stdlib_rt) $(stdlib_rt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_errors_$(PLATFORM))
    932 	@printf 'HAREC \t$@\n'
    933 	@mkdir -p $(HARECACHE)/crypto/random
    934 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::random \
    935 		-t$(HARECACHE)/crypto/random/crypto_random.td $(stdlib_crypto_random_linux_srcs)
    936 
    937 # crypto::random (+freebsd)
    938 stdlib_crypto_random_freebsd_srcs = \
    939 	$(STDLIB)/crypto/random/+freebsd.ha \
    940 	$(STDLIB)/crypto/random/random.ha
    941 
    942 $(HARECACHE)/crypto/random/crypto_random-freebsd.ssa: $(stdlib_crypto_random_freebsd_srcs) $(stdlib_rt) $(stdlib_rt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_errors_$(PLATFORM))
    943 	@printf 'HAREC \t$@\n'
    944 	@mkdir -p $(HARECACHE)/crypto/random
    945 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::random \
    946 		-t$(HARECACHE)/crypto/random/crypto_random.td $(stdlib_crypto_random_freebsd_srcs)
    947 
    948 # crypto::poly1305 (+any)
    949 stdlib_crypto_poly1305_any_srcs = \
    950 	$(STDLIB)/crypto/poly1305/poly1305.ha
    951 
    952 $(HARECACHE)/crypto/poly1305/crypto_poly1305-any.ssa: $(stdlib_crypto_poly1305_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_mac_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_encoding_hex_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
    953 	@printf 'HAREC \t$@\n'
    954 	@mkdir -p $(HARECACHE)/crypto/poly1305
    955 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::poly1305 \
    956 		-t$(HARECACHE)/crypto/poly1305/crypto_poly1305.td $(stdlib_crypto_poly1305_any_srcs)
    957 
    958 # crypto::salsa (+any)
    959 stdlib_crypto_salsa_any_srcs = \
    960 	$(STDLIB)/crypto/salsa/salsa20.ha
    961 
    962 $(HARECACHE)/crypto/salsa/crypto_salsa-any.ssa: $(stdlib_crypto_salsa_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_cipher_$(PLATFORM)) $(stdlib_crypto_math_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
    963 	@printf 'HAREC \t$@\n'
    964 	@mkdir -p $(HARECACHE)/crypto/salsa
    965 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::salsa \
    966 		-t$(HARECACHE)/crypto/salsa/crypto_salsa.td $(stdlib_crypto_salsa_any_srcs)
    967 
    968 # crypto::sha1 (+any)
    969 stdlib_crypto_sha1_any_srcs = \
    970 	$(STDLIB)/crypto/sha1/sha1.ha
    971 
    972 $(HARECACHE)/crypto/sha1/crypto_sha1-any.ssa: $(stdlib_crypto_sha1_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_endian_$(PLATFORM))
    973 	@printf 'HAREC \t$@\n'
    974 	@mkdir -p $(HARECACHE)/crypto/sha1
    975 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::sha1 \
    976 		-t$(HARECACHE)/crypto/sha1/crypto_sha1.td $(stdlib_crypto_sha1_any_srcs)
    977 
    978 # crypto::sha256 (+any)
    979 stdlib_crypto_sha256_any_srcs = \
    980 	$(STDLIB)/crypto/sha256/sha256.ha
    981 
    982 $(HARECACHE)/crypto/sha256/crypto_sha256-any.ssa: $(stdlib_crypto_sha256_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_endian_$(PLATFORM))
    983 	@printf 'HAREC \t$@\n'
    984 	@mkdir -p $(HARECACHE)/crypto/sha256
    985 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::sha256 \
    986 		-t$(HARECACHE)/crypto/sha256/crypto_sha256.td $(stdlib_crypto_sha256_any_srcs)
    987 
    988 # crypto::sha512 (+any)
    989 stdlib_crypto_sha512_any_srcs = \
    990 	$(STDLIB)/crypto/sha512/sha512.ha
    991 
    992 $(HARECACHE)/crypto/sha512/crypto_sha512-any.ssa: $(stdlib_crypto_sha512_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_endian_$(PLATFORM))
    993 	@printf 'HAREC \t$@\n'
    994 	@mkdir -p $(HARECACHE)/crypto/sha512
    995 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::sha512 \
    996 		-t$(HARECACHE)/crypto/sha512/crypto_sha512.td $(stdlib_crypto_sha512_any_srcs)
    997 
    998 # crypto::curve25519 (+any)
    999 stdlib_crypto_curve25519_any_srcs = \
   1000 	$(STDLIB)/crypto/curve25519/curve25519.ha
   1001 
   1002 $(HARECACHE)/crypto/curve25519/crypto_curve25519-any.ssa: $(stdlib_crypto_curve25519_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM))
   1003 	@printf 'HAREC \t$@\n'
   1004 	@mkdir -p $(HARECACHE)/crypto/curve25519
   1005 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::curve25519 \
   1006 		-t$(HARECACHE)/crypto/curve25519/crypto_curve25519.td $(stdlib_crypto_curve25519_any_srcs)
   1007 
   1008 # crypto::ed25519 (+any)
   1009 stdlib_crypto_ed25519_any_srcs = \
   1010 	$(STDLIB)/crypto/ed25519/ed25519.ha \
   1011 	$(STDLIB)/crypto/ed25519/edwards25519.ha
   1012 
   1013 $(HARECACHE)/crypto/ed25519/crypto_ed25519-any.ssa: $(stdlib_crypto_ed25519_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_crypto_sha512_$(PLATFORM)) $(stdlib_hash_$(PLATFORM))
   1014 	@printf 'HAREC \t$@\n'
   1015 	@mkdir -p $(HARECACHE)/crypto/ed25519
   1016 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::ed25519 \
   1017 		-t$(HARECACHE)/crypto/ed25519/crypto_ed25519.td $(stdlib_crypto_ed25519_any_srcs)
   1018 
   1019 # crypto::x25519 (+any)
   1020 stdlib_crypto_x25519_any_srcs = \
   1021 	$(STDLIB)/crypto/x25519/x25519.ha
   1022 
   1023 $(HARECACHE)/crypto/x25519/crypto_x25519-any.ssa: $(stdlib_crypto_x25519_any_srcs) $(stdlib_rt) $(stdlib_crypto_curve25519_$(PLATFORM))
   1024 	@printf 'HAREC \t$@\n'
   1025 	@mkdir -p $(HARECACHE)/crypto/x25519
   1026 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::x25519 \
   1027 		-t$(HARECACHE)/crypto/x25519/crypto_x25519.td $(stdlib_crypto_x25519_any_srcs)
   1028 
   1029 # datetime (+linux)
   1030 stdlib_datetime_linux_srcs = \
   1031 	$(STDLIB)/datetime/arithmetic.ha \
   1032 	$(STDLIB)/datetime/chronology.ha \
   1033 	$(STDLIB)/datetime/date.ha \
   1034 	$(STDLIB)/datetime/datetime.ha \
   1035 	$(STDLIB)/datetime/format.ha \
   1036 	$(STDLIB)/datetime/parse.ha \
   1037 	$(STDLIB)/datetime/time.ha \
   1038 	$(STDLIB)/datetime/timezone.ha
   1039 
   1040 $(HARECACHE)/datetime/datetime-linux.ssa: $(stdlib_datetime_linux_srcs) $(stdlib_rt) $(stdlib_errors_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_time_chrono_$(PLATFORM))
   1041 	@printf 'HAREC \t$@\n'
   1042 	@mkdir -p $(HARECACHE)/datetime
   1043 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ndatetime \
   1044 		-t$(HARECACHE)/datetime/datetime.td $(stdlib_datetime_linux_srcs)
   1045 
   1046 # datetime (+freebsd)
   1047 stdlib_datetime_freebsd_srcs = \
   1048 	$(STDLIB)/datetime/arithmetic.ha \
   1049 	$(STDLIB)/datetime/chronology.ha \
   1050 	$(STDLIB)/datetime/date.ha \
   1051 	$(STDLIB)/datetime/datetime.ha \
   1052 	$(STDLIB)/datetime/format.ha \
   1053 	$(STDLIB)/datetime/parse.ha \
   1054 	$(STDLIB)/datetime/time.ha \
   1055 	$(STDLIB)/datetime/timezone.ha
   1056 
   1057 $(HARECACHE)/datetime/datetime-freebsd.ssa: $(stdlib_datetime_freebsd_srcs) $(stdlib_rt) $(stdlib_errors_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_time_chrono_$(PLATFORM))
   1058 	@printf 'HAREC \t$@\n'
   1059 	@mkdir -p $(HARECACHE)/datetime
   1060 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ndatetime \
   1061 		-t$(HARECACHE)/datetime/datetime.td $(stdlib_datetime_freebsd_srcs)
   1062 
   1063 # dirs (+any)
   1064 stdlib_dirs_any_srcs = \
   1065 	$(STDLIB)/dirs/xdg.ha
   1066 
   1067 $(HARECACHE)/dirs/dirs-any.ssa: $(stdlib_dirs_any_srcs) $(stdlib_rt) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_path_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_unix_$(PLATFORM))
   1068 	@printf 'HAREC \t$@\n'
   1069 	@mkdir -p $(HARECACHE)/dirs
   1070 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ndirs \
   1071 		-t$(HARECACHE)/dirs/dirs.td $(stdlib_dirs_any_srcs)
   1072 
   1073 # encoding::base64 (+any)
   1074 stdlib_encoding_base64_any_srcs = \
   1075 	$(STDLIB)/encoding/base64/base64.ha
   1076 
   1077 $(HARECACHE)/encoding/base64/encoding_base64-any.ssa: $(stdlib_encoding_base64_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1078 	@printf 'HAREC \t$@\n'
   1079 	@mkdir -p $(HARECACHE)/encoding/base64
   1080 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::base64 \
   1081 		-t$(HARECACHE)/encoding/base64/encoding_base64.td $(stdlib_encoding_base64_any_srcs)
   1082 
   1083 # encoding::base32 (+any)
   1084 stdlib_encoding_base32_any_srcs = \
   1085 	$(STDLIB)/encoding/base32/base32.ha
   1086 
   1087 $(HARECACHE)/encoding/base32/encoding_base32-any.ssa: $(stdlib_encoding_base32_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_os_$(PLATFORM))
   1088 	@printf 'HAREC \t$@\n'
   1089 	@mkdir -p $(HARECACHE)/encoding/base32
   1090 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::base32 \
   1091 		-t$(HARECACHE)/encoding/base32/encoding_base32.td $(stdlib_encoding_base32_any_srcs)
   1092 
   1093 # encoding::hex (+any)
   1094 stdlib_encoding_hex_any_srcs = \
   1095 	$(STDLIB)/encoding/hex/hex.ha
   1096 
   1097 $(HARECACHE)/encoding/hex/encoding_hex-any.ssa: $(stdlib_encoding_hex_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1098 	@printf 'HAREC \t$@\n'
   1099 	@mkdir -p $(HARECACHE)/encoding/hex
   1100 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::hex \
   1101 		-t$(HARECACHE)/encoding/hex/encoding_hex.td $(stdlib_encoding_hex_any_srcs)
   1102 
   1103 # encoding::json (+any)
   1104 stdlib_encoding_json_any_srcs = \
   1105 	$(STDLIB)/encoding/json/types.ha \
   1106 	$(STDLIB)/encoding/json/lex.ha \
   1107 	$(STDLIB)/encoding/json/load.ha \
   1108 	$(STDLIB)/encoding/json/dump.ha \
   1109 	$(STDLIB)/encoding/json/value.ha
   1110 
   1111 $(HARECACHE)/encoding/json/encoding_json-any.ssa: $(stdlib_encoding_json_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_hash_fnv_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_types_$(PLATFORM))
   1112 	@printf 'HAREC \t$@\n'
   1113 	@mkdir -p $(HARECACHE)/encoding/json
   1114 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::json \
   1115 		-t$(HARECACHE)/encoding/json/encoding_json.td $(stdlib_encoding_json_any_srcs)
   1116 
   1117 # encoding::pem (+any)
   1118 stdlib_encoding_pem_any_srcs = \
   1119 	$(STDLIB)/encoding/pem/pem.ha
   1120 
   1121 $(HARECACHE)/encoding/pem/encoding_pem-any.ssa: $(stdlib_encoding_pem_any_srcs) $(stdlib_rt) $(stdlib_strings_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_encoding_base64_$(PLATFORM)) $(stdlib_ascii_$(PLATFORM)) $(stdlib_os_$(PLATFORM))
   1122 	@printf 'HAREC \t$@\n'
   1123 	@mkdir -p $(HARECACHE)/encoding/pem
   1124 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::pem \
   1125 		-t$(HARECACHE)/encoding/pem/encoding_pem.td $(stdlib_encoding_pem_any_srcs)
   1126 
   1127 # encoding::utf8 (+any)
   1128 stdlib_encoding_utf8_any_srcs = \
   1129 	$(STDLIB)/encoding/utf8/decode.ha \
   1130 	$(STDLIB)/encoding/utf8/encode.ha \
   1131 	$(STDLIB)/encoding/utf8/rune.ha
   1132 
   1133 $(HARECACHE)/encoding/utf8/encoding_utf8-any.ssa: $(stdlib_encoding_utf8_any_srcs) $(stdlib_rt) $(stdlib_types_$(PLATFORM))
   1134 	@printf 'HAREC \t$@\n'
   1135 	@mkdir -p $(HARECACHE)/encoding/utf8
   1136 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::utf8 \
   1137 		-t$(HARECACHE)/encoding/utf8/encoding_utf8.td $(stdlib_encoding_utf8_any_srcs)
   1138 
   1139 # endian (+any)
   1140 stdlib_endian_any_srcs = \
   1141 	$(STDLIB)/endian/big.ha \
   1142 	$(STDLIB)/endian/network.ha \
   1143 	$(STDLIB)/endian/little.ha \
   1144 	$(STDLIB)/endian/endian.ha \
   1145 	$(STDLIB)/endian/host+$(ARCH).ha
   1146 
   1147 $(HARECACHE)/endian/endian-any.ssa: $(stdlib_endian_any_srcs) $(stdlib_rt)
   1148 	@printf 'HAREC \t$@\n'
   1149 	@mkdir -p $(HARECACHE)/endian
   1150 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nendian \
   1151 		-t$(HARECACHE)/endian/endian.td $(stdlib_endian_any_srcs)
   1152 
   1153 # errors (+any)
   1154 stdlib_errors_any_srcs = \
   1155 	$(STDLIB)/errors/common.ha \
   1156 	$(STDLIB)/errors/opaque.ha \
   1157 	$(STDLIB)/errors/string.ha \
   1158 	$(STDLIB)/errors/rt.ha
   1159 
   1160 $(HARECACHE)/errors/errors-any.ssa: $(stdlib_errors_any_srcs) $(stdlib_rt)
   1161 	@printf 'HAREC \t$@\n'
   1162 	@mkdir -p $(HARECACHE)/errors
   1163 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nerrors \
   1164 		-t$(HARECACHE)/errors/errors.td $(stdlib_errors_any_srcs)
   1165 
   1166 # fmt (+any)
   1167 stdlib_fmt_any_srcs = \
   1168 	$(STDLIB)/fmt/fmt.ha
   1169 
   1170 $(HARECACHE)/fmt/fmt-any.ssa: $(stdlib_fmt_any_srcs) $(stdlib_rt) $(stdlib_bufio_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_types_$(PLATFORM))
   1171 	@printf 'HAREC \t$@\n'
   1172 	@mkdir -p $(HARECACHE)/fmt
   1173 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nfmt \
   1174 		-t$(HARECACHE)/fmt/fmt.td $(stdlib_fmt_any_srcs)
   1175 
   1176 # fnmatch (+any)
   1177 stdlib_fnmatch_any_srcs = \
   1178 	$(STDLIB)/fnmatch/fnmatch.ha
   1179 
   1180 $(HARECACHE)/fnmatch/fnmatch-any.ssa: $(stdlib_fnmatch_any_srcs) $(stdlib_rt) $(stdlib_strings_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_sort_$(PLATFORM)) $(stdlib_ascii_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM))
   1181 	@printf 'HAREC \t$@\n'
   1182 	@mkdir -p $(HARECACHE)/fnmatch
   1183 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nfnmatch \
   1184 		-t$(HARECACHE)/fnmatch/fnmatch.td $(stdlib_fnmatch_any_srcs)
   1185 
   1186 # format::elf (+any)
   1187 stdlib_format_elf_any_srcs = \
   1188 	$(STDLIB)/format/elf/+$(ARCH).ha \
   1189 	$(STDLIB)/format/elf/+$(PLATFORM).ha \
   1190 	$(STDLIB)/format/elf/types.ha
   1191 
   1192 $(HARECACHE)/format/elf/format_elf-any.ssa: $(stdlib_format_elf_any_srcs) $(stdlib_rt)
   1193 	@printf 'HAREC \t$@\n'
   1194 	@mkdir -p $(HARECACHE)/format/elf
   1195 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nformat::elf \
   1196 		-t$(HARECACHE)/format/elf/format_elf.td $(stdlib_format_elf_any_srcs)
   1197 
   1198 # format::ini (+any)
   1199 stdlib_format_ini_any_srcs = \
   1200 	$(STDLIB)/format/ini/scan.ha \
   1201 	$(STDLIB)/format/ini/types.ha
   1202 
   1203 $(HARECACHE)/format/ini/format_ini-any.ssa: $(stdlib_format_ini_any_srcs) $(stdlib_rt) $(stdlib_bufio_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1204 	@printf 'HAREC \t$@\n'
   1205 	@mkdir -p $(HARECACHE)/format/ini
   1206 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nformat::ini \
   1207 		-t$(HARECACHE)/format/ini/format_ini.td $(stdlib_format_ini_any_srcs)
   1208 
   1209 # format::tar (+any)
   1210 stdlib_format_tar_any_srcs = \
   1211 	$(STDLIB)/format/tar/types.ha \
   1212 	$(STDLIB)/format/tar/reader.ha
   1213 
   1214 $(HARECACHE)/format/tar/format_tar-any.ssa: $(stdlib_format_tar_any_srcs) $(stdlib_rt) $(stdlib_bufio_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM))
   1215 	@printf 'HAREC \t$@\n'
   1216 	@mkdir -p $(HARECACHE)/format/tar
   1217 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nformat::tar \
   1218 		-t$(HARECACHE)/format/tar/format_tar.td $(stdlib_format_tar_any_srcs)
   1219 
   1220 # fs (+any)
   1221 stdlib_fs_any_srcs = \
   1222 	$(STDLIB)/fs/types.ha \
   1223 	$(STDLIB)/fs/fs.ha \
   1224 	$(STDLIB)/fs/util.ha
   1225 
   1226 $(HARECACHE)/fs/fs-any.ssa: $(stdlib_fs_any_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_path_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_errors_$(PLATFORM))
   1227 	@printf 'HAREC \t$@\n'
   1228 	@mkdir -p $(HARECACHE)/fs
   1229 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nfs \
   1230 		-t$(HARECACHE)/fs/fs.td $(stdlib_fs_any_srcs)
   1231 
   1232 # getopt (+any)
   1233 stdlib_getopt_any_srcs = \
   1234 	$(STDLIB)/getopt/getopts.ha
   1235 
   1236 $(HARECACHE)/getopt/getopt-any.ssa: $(stdlib_getopt_any_srcs) $(stdlib_rt) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1237 	@printf 'HAREC \t$@\n'
   1238 	@mkdir -p $(HARECACHE)/getopt
   1239 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ngetopt \
   1240 		-t$(HARECACHE)/getopt/getopt.td $(stdlib_getopt_any_srcs)
   1241 
   1242 # glob (+any)
   1243 stdlib_glob_any_srcs = \
   1244 	$(STDLIB)/glob/glob.ha
   1245 
   1246 $(HARECACHE)/glob/glob-any.ssa: $(stdlib_glob_any_srcs) $(stdlib_rt) $(stdlib_fnmatch_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_sort_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM))
   1247 	@printf 'HAREC \t$@\n'
   1248 	@mkdir -p $(HARECACHE)/glob
   1249 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nglob \
   1250 		-t$(HARECACHE)/glob/glob.td $(stdlib_glob_any_srcs)
   1251 
   1252 # hare::ast (+any)
   1253 stdlib_hare_ast_any_srcs = \
   1254 	$(STDLIB)/hare/ast/decl.ha \
   1255 	$(STDLIB)/hare/ast/expr.ha \
   1256 	$(STDLIB)/hare/ast/ident.ha \
   1257 	$(STDLIB)/hare/ast/import.ha \
   1258 	$(STDLIB)/hare/ast/type.ha \
   1259 	$(STDLIB)/hare/ast/unit.ha
   1260 
   1261 $(HARECACHE)/hare/ast/hare_ast-any.ssa: $(stdlib_hare_ast_any_srcs) $(stdlib_rt) $(stdlib_hare_lex_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1262 	@printf 'HAREC \t$@\n'
   1263 	@mkdir -p $(HARECACHE)/hare/ast
   1264 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::ast \
   1265 		-t$(HARECACHE)/hare/ast/hare_ast.td $(stdlib_hare_ast_any_srcs)
   1266 
   1267 # hare::lex (+any)
   1268 stdlib_hare_lex_any_srcs = \
   1269 	$(STDLIB)/hare/lex/token.ha \
   1270 	$(STDLIB)/hare/lex/lex.ha
   1271 
   1272 $(HARECACHE)/hare/lex/hare_lex-any.ssa: $(stdlib_hare_lex_any_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_sort_$(PLATFORM)) $(stdlib_strio_$(PLATFORM))
   1273 	@printf 'HAREC \t$@\n'
   1274 	@mkdir -p $(HARECACHE)/hare/lex
   1275 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::lex \
   1276 		-t$(HARECACHE)/hare/lex/hare_lex.td $(stdlib_hare_lex_any_srcs)
   1277 
   1278 # hare::module (+any)
   1279 stdlib_hare_module_any_srcs = \
   1280 	$(STDLIB)/hare/module/types.ha \
   1281 	$(STDLIB)/hare/module/context.ha \
   1282 	$(STDLIB)/hare/module/scan.ha \
   1283 	$(STDLIB)/hare/module/manifest.ha \
   1284 	$(STDLIB)/hare/module/walk.ha
   1285 
   1286 $(HARECACHE)/hare/module/hare_module-any.ssa: $(stdlib_hare_module_any_srcs) $(stdlib_rt) $(stdlib_hare_ast_$(PLATFORM)) $(stdlib_hare_lex_$(PLATFORM)) $(stdlib_hare_parse_$(PLATFORM)) $(stdlib_hare_unparse_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_crypto_sha256_$(PLATFORM)) $(stdlib_dirs_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_ascii_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_slices_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_encoding_hex_$(PLATFORM)) $(stdlib_sort_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_temp_$(PLATFORM))
   1287 	@printf 'HAREC \t$@\n'
   1288 	@mkdir -p $(HARECACHE)/hare/module
   1289 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::module \
   1290 		-t$(HARECACHE)/hare/module/hare_module.td $(stdlib_hare_module_any_srcs)
   1291 
   1292 # hare::parse (+any)
   1293 stdlib_hare_parse_any_srcs = \
   1294 	$(STDLIB)/hare/parse/decl.ha \
   1295 	$(STDLIB)/hare/parse/expr.ha \
   1296 	$(STDLIB)/hare/parse/ident.ha \
   1297 	$(STDLIB)/hare/parse/import.ha \
   1298 	$(STDLIB)/hare/parse/parse.ha \
   1299 	$(STDLIB)/hare/parse/type.ha \
   1300 	$(STDLIB)/hare/parse/unit.ha
   1301 
   1302 $(HARECACHE)/hare/parse/hare_parse-any.ssa: $(stdlib_hare_parse_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_hare_ast_$(PLATFORM)) $(stdlib_hare_lex_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_types_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_math_$(PLATFORM))
   1303 	@printf 'HAREC \t$@\n'
   1304 	@mkdir -p $(HARECACHE)/hare/parse
   1305 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::parse \
   1306 		-t$(HARECACHE)/hare/parse/hare_parse.td $(stdlib_hare_parse_any_srcs)
   1307 
   1308 # hare::types (+any)
   1309 stdlib_hare_types_any_srcs = \
   1310 	$(STDLIB)/hare/types/arch.ha \
   1311 	$(STDLIB)/hare/types/builtins.ha \
   1312 	$(STDLIB)/hare/types/class.ha \
   1313 	$(STDLIB)/hare/types/hash.ha \
   1314 	$(STDLIB)/hare/types/lookup.ha \
   1315 	$(STDLIB)/hare/types/store.ha \
   1316 	$(STDLIB)/hare/types/types.ha
   1317 
   1318 $(HARECACHE)/hare/types/hare_types-any.ssa: $(stdlib_hare_types_any_srcs) $(stdlib_rt) $(stdlib_hare_ast_$(PLATFORM)) $(stdlib_hare_parse_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_hash_fnv_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1319 	@printf 'HAREC \t$@\n'
   1320 	@mkdir -p $(HARECACHE)/hare/types
   1321 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::types \
   1322 		-t$(HARECACHE)/hare/types/hare_types.td $(stdlib_hare_types_any_srcs)
   1323 
   1324 # hare::unit (+any)
   1325 stdlib_hare_unit_any_srcs = \
   1326 	$(STDLIB)/hare/unit/check.ha \
   1327 	$(STDLIB)/hare/unit/context.ha \
   1328 	$(STDLIB)/hare/unit/errors.ha \
   1329 	$(STDLIB)/hare/unit/expr.ha \
   1330 	$(STDLIB)/hare/unit/process.ha \
   1331 	$(STDLIB)/hare/unit/scan.ha \
   1332 	$(STDLIB)/hare/unit/scope.ha \
   1333 	$(STDLIB)/hare/unit/unit.ha
   1334 
   1335 $(HARECACHE)/hare/unit/hare_unit-any.ssa: $(stdlib_hare_unit_any_srcs) $(stdlib_rt) $(stdlib_hare_ast_$(PLATFORM)) $(stdlib_hare_types_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_hash_fnv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_hare_lex_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_hare_parse_$(PLATFORM))
   1336 	@printf 'HAREC \t$@\n'
   1337 	@mkdir -p $(HARECACHE)/hare/unit
   1338 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::unit \
   1339 		-t$(HARECACHE)/hare/unit/hare_unit.td $(stdlib_hare_unit_any_srcs)
   1340 
   1341 # hare::unparse (+any)
   1342 stdlib_hare_unparse_any_srcs = \
   1343 	$(STDLIB)/hare/unparse/expr.ha \
   1344 	$(STDLIB)/hare/unparse/decl.ha \
   1345 	$(STDLIB)/hare/unparse/ident.ha \
   1346 	$(STDLIB)/hare/unparse/import.ha \
   1347 	$(STDLIB)/hare/unparse/type.ha \
   1348 	$(STDLIB)/hare/unparse/unit.ha \
   1349 	$(STDLIB)/hare/unparse/util.ha
   1350 
   1351 $(HARECACHE)/hare/unparse/hare_unparse-any.ssa: $(stdlib_hare_unparse_any_srcs) $(stdlib_rt) $(stdlib_fmt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_hare_ast_$(PLATFORM))
   1352 	@printf 'HAREC \t$@\n'
   1353 	@mkdir -p $(HARECACHE)/hare/unparse
   1354 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::unparse \
   1355 		-t$(HARECACHE)/hare/unparse/hare_unparse.td $(stdlib_hare_unparse_any_srcs)
   1356 
   1357 # hash (+any)
   1358 stdlib_hash_any_srcs = \
   1359 	$(STDLIB)/hash/hash.ha
   1360 
   1361 $(HARECACHE)/hash/hash-any.ssa: $(stdlib_hash_any_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM))
   1362 	@printf 'HAREC \t$@\n'
   1363 	@mkdir -p $(HARECACHE)/hash
   1364 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash \
   1365 		-t$(HARECACHE)/hash/hash.td $(stdlib_hash_any_srcs)
   1366 
   1367 # hash::adler32 (+any)
   1368 stdlib_hash_adler32_any_srcs = \
   1369 	$(STDLIB)/hash/adler32/adler32.ha
   1370 
   1371 $(HARECACHE)/hash/adler32/hash_adler32-any.ssa: $(stdlib_hash_adler32_any_srcs) $(stdlib_rt) $(stdlib_endian_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1372 	@printf 'HAREC \t$@\n'
   1373 	@mkdir -p $(HARECACHE)/hash/adler32
   1374 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::adler32 \
   1375 		-t$(HARECACHE)/hash/adler32/hash_adler32.td $(stdlib_hash_adler32_any_srcs)
   1376 
   1377 # hash::crc16 (+any)
   1378 stdlib_hash_crc16_any_srcs = \
   1379 	$(STDLIB)/hash/crc16/crc16.ha
   1380 
   1381 $(HARECACHE)/hash/crc16/hash_crc16-any.ssa: $(stdlib_hash_crc16_any_srcs) $(stdlib_rt) $(stdlib_endian_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1382 	@printf 'HAREC \t$@\n'
   1383 	@mkdir -p $(HARECACHE)/hash/crc16
   1384 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::crc16 \
   1385 		-t$(HARECACHE)/hash/crc16/hash_crc16.td $(stdlib_hash_crc16_any_srcs)
   1386 
   1387 # hash::crc32 (+any)
   1388 stdlib_hash_crc32_any_srcs = \
   1389 	$(STDLIB)/hash/crc32/crc32.ha
   1390 
   1391 $(HARECACHE)/hash/crc32/hash_crc32-any.ssa: $(stdlib_hash_crc32_any_srcs) $(stdlib_rt) $(stdlib_endian_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1392 	@printf 'HAREC \t$@\n'
   1393 	@mkdir -p $(HARECACHE)/hash/crc32
   1394 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::crc32 \
   1395 		-t$(HARECACHE)/hash/crc32/hash_crc32.td $(stdlib_hash_crc32_any_srcs)
   1396 
   1397 # hash::crc64 (+any)
   1398 stdlib_hash_crc64_any_srcs = \
   1399 	$(STDLIB)/hash/crc64/crc64.ha
   1400 
   1401 $(HARECACHE)/hash/crc64/hash_crc64-any.ssa: $(stdlib_hash_crc64_any_srcs) $(stdlib_rt) $(stdlib_endian_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1402 	@printf 'HAREC \t$@\n'
   1403 	@mkdir -p $(HARECACHE)/hash/crc64
   1404 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::crc64 \
   1405 		-t$(HARECACHE)/hash/crc64/hash_crc64.td $(stdlib_hash_crc64_any_srcs)
   1406 
   1407 # hash::fnv (+any)
   1408 stdlib_hash_fnv_any_srcs = \
   1409 	$(STDLIB)/hash/fnv/+$(ARCH).ha \
   1410 	$(STDLIB)/hash/fnv/fnv.ha
   1411 
   1412 $(HARECACHE)/hash/fnv/hash_fnv-any.ssa: $(stdlib_hash_fnv_any_srcs) $(stdlib_rt) $(stdlib_endian_$(PLATFORM)) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1413 	@printf 'HAREC \t$@\n'
   1414 	@mkdir -p $(HARECACHE)/hash/fnv
   1415 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::fnv \
   1416 		-t$(HARECACHE)/hash/fnv/hash_fnv.td $(stdlib_hash_fnv_any_srcs)
   1417 
   1418 # hash::siphash (+any)
   1419 stdlib_hash_siphash_any_srcs = \
   1420 	$(STDLIB)/hash/siphash/siphash.ha
   1421 
   1422 $(HARECACHE)/hash/siphash/hash_siphash-any.ssa: $(stdlib_hash_siphash_any_srcs) $(stdlib_rt) $(stdlib_hash_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_endian_$(PLATFORM))
   1423 	@printf 'HAREC \t$@\n'
   1424 	@mkdir -p $(HARECACHE)/hash/siphash
   1425 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::siphash \
   1426 		-t$(HARECACHE)/hash/siphash/hash_siphash.td $(stdlib_hash_siphash_any_srcs)
   1427 
   1428 # io (+linux)
   1429 stdlib_io_linux_srcs = \
   1430 	$(STDLIB)/io/arch+$(ARCH).ha \
   1431 	$(STDLIB)/io/+linux/file.ha \
   1432 	$(STDLIB)/io/+linux/mmap.ha \
   1433 	$(STDLIB)/io/+linux/vector.ha \
   1434 	$(STDLIB)/io/copy.ha \
   1435 	$(STDLIB)/io/drain.ha \
   1436 	$(STDLIB)/io/empty.ha \
   1437 	$(STDLIB)/io/handle.ha \
   1438 	$(STDLIB)/io/limit.ha \
   1439 	$(STDLIB)/io/stream.ha \
   1440 	$(STDLIB)/io/tee.ha \
   1441 	$(STDLIB)/io/types.ha \
   1442 	$(STDLIB)/io/util.ha \
   1443 	$(STDLIB)/io/zero.ha
   1444 
   1445 # io (+freebsd)
   1446 stdlib_io_freebsd_srcs = \
   1447 	$(STDLIB)/io/arch+$(ARCH).ha \
   1448 	$(STDLIB)/io/+freebsd/file.ha \
   1449 	$(STDLIB)/io/+freebsd/mmap.ha \
   1450 	$(STDLIB)/io/+freebsd/vector.ha \
   1451 	$(STDLIB)/io/copy.ha \
   1452 	$(STDLIB)/io/drain.ha \
   1453 	$(STDLIB)/io/empty.ha \
   1454 	$(STDLIB)/io/handle.ha \
   1455 	$(STDLIB)/io/limit.ha \
   1456 	$(STDLIB)/io/stream.ha \
   1457 	$(STDLIB)/io/tee.ha \
   1458 	$(STDLIB)/io/types.ha \
   1459 	$(STDLIB)/io/util.ha \
   1460 	$(STDLIB)/io/zero.ha
   1461 
   1462 $(HARECACHE)/io/io-linux.ssa: $(stdlib_io_linux_srcs) $(stdlib_rt) $(stdlib_strings_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM))
   1463 	@printf 'HAREC \t$@\n'
   1464 	@mkdir -p $(HARECACHE)/io
   1465 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nio \
   1466 		-t$(HARECACHE)/io/io.td $(stdlib_io_linux_srcs)
   1467 
   1468 $(HARECACHE)/io/io-freebsd.ssa: $(stdlib_io_freebsd_srcs) $(stdlib_rt) $(stdlib_strings_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM))
   1469 	@printf 'HAREC \t$@\n'
   1470 	@mkdir -p $(HARECACHE)/io
   1471 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nio \
   1472 		-t$(HARECACHE)/io/io.td $(stdlib_io_freebsd_srcs)
   1473 
   1474 # linux (+linux)
   1475 stdlib_linux_linux_srcs = \
   1476 	$(STDLIB)/linux/start.ha \
   1477 	$(STDLIB)/linux/env.ha
   1478 
   1479 $(HARECACHE)/linux/linux-linux.ssa: $(stdlib_linux_linux_srcs) $(stdlib_rt) $(stdlib_format_elf_$(PLATFORM))
   1480 	@printf 'HAREC \t$@\n'
   1481 	@mkdir -p $(HARECACHE)/linux
   1482 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlinux \
   1483 		-t$(HARECACHE)/linux/linux.td $(stdlib_linux_linux_srcs)
   1484 
   1485 # linux::keyctl (+linux)
   1486 stdlib_linux_keyctl_linux_srcs = \
   1487 	$(STDLIB)/linux/keyctl/keyctl.ha \
   1488 	$(STDLIB)/linux/keyctl/types.ha
   1489 
   1490 $(HARECACHE)/linux/keyctl/linux_keyctl-linux.ssa: $(stdlib_linux_keyctl_linux_srcs) $(stdlib_rt) $(stdlib_rt_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM))
   1491 	@printf 'HAREC \t$@\n'
   1492 	@mkdir -p $(HARECACHE)/linux/keyctl
   1493 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlinux::keyctl \
   1494 		-t$(HARECACHE)/linux/keyctl/linux_keyctl.td $(stdlib_linux_keyctl_linux_srcs)
   1495 
   1496 # linux::timerfd (+linux)
   1497 stdlib_linux_timerfd_linux_srcs = \
   1498 	$(STDLIB)/linux/timerfd/timerfd.ha
   1499 
   1500 $(HARECACHE)/linux/timerfd/linux_timerfd-linux.ssa: $(stdlib_linux_timerfd_linux_srcs) $(stdlib_rt) $(stdlib_errors_$(PLATFORM)) $(stdlib_rt_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_endian_$(PLATFORM))
   1501 	@printf 'HAREC \t$@\n'
   1502 	@mkdir -p $(HARECACHE)/linux/timerfd
   1503 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlinux::timerfd \
   1504 		-t$(HARECACHE)/linux/timerfd/linux_timerfd.td $(stdlib_linux_timerfd_linux_srcs)
   1505 
   1506 # linux::vdso (+linux)
   1507 stdlib_linux_vdso_linux_srcs = \
   1508 	$(STDLIB)/linux/vdso/vdso.ha
   1509 
   1510 $(HARECACHE)/linux/vdso/linux_vdso-linux.ssa: $(stdlib_linux_vdso_linux_srcs) $(stdlib_rt) $(stdlib_linux_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_format_elf_$(PLATFORM))
   1511 	@printf 'HAREC \t$@\n'
   1512 	@mkdir -p $(HARECACHE)/linux/vdso
   1513 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlinux::vdso \
   1514 		-t$(HARECACHE)/linux/vdso/linux_vdso.td $(stdlib_linux_vdso_linux_srcs)
   1515 
   1516 # log (+linux)
   1517 stdlib_log_linux_srcs = \
   1518 	$(STDLIB)/log/logger.ha \
   1519 	$(STDLIB)/log/global.ha \
   1520 	$(STDLIB)/log/funcs.ha
   1521 
   1522 $(HARECACHE)/log/log-linux.ssa: $(stdlib_log_linux_srcs) $(stdlib_rt) $(stdlib_datetime_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM))
   1523 	@printf 'HAREC \t$@\n'
   1524 	@mkdir -p $(HARECACHE)/log
   1525 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlog \
   1526 		-t$(HARECACHE)/log/log.td $(stdlib_log_linux_srcs)
   1527 
   1528 # log (+freebsd)
   1529 stdlib_log_freebsd_srcs = \
   1530 	$(STDLIB)/log/logger.ha \
   1531 	$(STDLIB)/log/global.ha \
   1532 	$(STDLIB)/log/funcs.ha
   1533 
   1534 $(HARECACHE)/log/log-freebsd.ssa: $(stdlib_log_freebsd_srcs) $(stdlib_rt) $(stdlib_datetime_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM))
   1535 	@printf 'HAREC \t$@\n'
   1536 	@mkdir -p $(HARECACHE)/log
   1537 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlog \
   1538 		-t$(HARECACHE)/log/log.td $(stdlib_log_freebsd_srcs)
   1539 
   1540 # math (+any)
   1541 stdlib_math_any_srcs = \
   1542 	$(STDLIB)/math/math.ha \
   1543 	$(STDLIB)/math/fenv_func.ha \
   1544 	$(STDLIB)/math/fenv+$(ARCH).ha \
   1545 	$(STDLIB)/math/floats.ha \
   1546 	$(STDLIB)/math/ints.ha \
   1547 	$(STDLIB)/math/uints.ha \
   1548 	$(STDLIB)/math/trig.ha
   1549 
   1550 $(HARECACHE)/math/math-any.ssa: $(stdlib_math_any_srcs) $(stdlib_rt) $(stdlib_types_$(PLATFORM))
   1551 	@printf 'HAREC \t$@\n'
   1552 	@mkdir -p $(HARECACHE)/math
   1553 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nmath \
   1554 		-t$(HARECACHE)/math/math.td $(stdlib_math_any_srcs)
   1555 
   1556 # math::complex (+any)
   1557 stdlib_math_complex_any_srcs = \
   1558 	$(STDLIB)/math/complex/complex.ha
   1559 
   1560 $(HARECACHE)/math/complex/math_complex-any.ssa: $(stdlib_math_complex_any_srcs) $(stdlib_rt) $(stdlib_math_$(PLATFORM))
   1561 	@printf 'HAREC \t$@\n'
   1562 	@mkdir -p $(HARECACHE)/math/complex
   1563 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nmath::complex \
   1564 		-t$(HARECACHE)/math/complex/math_complex.td $(stdlib_math_complex_any_srcs)
   1565 
   1566 # math::random (+any)
   1567 stdlib_math_random_any_srcs = \
   1568 	$(STDLIB)/math/random/random.ha
   1569 
   1570 $(HARECACHE)/math/random/math_random-any.ssa: $(stdlib_math_random_any_srcs) $(stdlib_rt)
   1571 	@printf 'HAREC \t$@\n'
   1572 	@mkdir -p $(HARECACHE)/math/random
   1573 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nmath::random \
   1574 		-t$(HARECACHE)/math/random/math_random.td $(stdlib_math_random_any_srcs)
   1575 
   1576 # net (+linux)
   1577 stdlib_net_linux_srcs = \
   1578 	$(STDLIB)/net/+linux.ha \
   1579 	$(STDLIB)/net/errors.ha \
   1580 	$(STDLIB)/net/msg.ha
   1581 
   1582 $(HARECACHE)/net/net-linux.ssa: $(stdlib_net_linux_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_rt_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM))
   1583 	@printf 'HAREC \t$@\n'
   1584 	@mkdir -p $(HARECACHE)/net
   1585 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet \
   1586 		-t$(HARECACHE)/net/net.td $(stdlib_net_linux_srcs)
   1587 
   1588 # net (+freebsd)
   1589 stdlib_net_freebsd_srcs = \
   1590 	$(STDLIB)/net/+freebsd.ha \
   1591 	$(STDLIB)/net/errors.ha \
   1592 	$(STDLIB)/net/msg.ha
   1593 
   1594 $(HARECACHE)/net/net-freebsd.ssa: $(stdlib_net_freebsd_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_rt_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM))
   1595 	@printf 'HAREC \t$@\n'
   1596 	@mkdir -p $(HARECACHE)/net
   1597 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet \
   1598 		-t$(HARECACHE)/net/net.td $(stdlib_net_freebsd_srcs)
   1599 
   1600 # net::dial (+any)
   1601 stdlib_net_dial_any_srcs = \
   1602 	$(STDLIB)/net/dial/registry.ha \
   1603 	$(STDLIB)/net/dial/dial.ha \
   1604 	$(STDLIB)/net/dial/ip.ha \
   1605 	$(STDLIB)/net/dial/resolve.ha
   1606 
   1607 $(HARECACHE)/net/dial/net_dial-any.ssa: $(stdlib_net_dial_any_srcs) $(stdlib_rt) $(stdlib_net_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_net_tcp_$(PLATFORM)) $(stdlib_net_udp_$(PLATFORM)) $(stdlib_net_dns_$(PLATFORM)) $(stdlib_crypto_random_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_unix_hosts_$(PLATFORM))
   1608 	@printf 'HAREC \t$@\n'
   1609 	@mkdir -p $(HARECACHE)/net/dial
   1610 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::dial \
   1611 		-t$(HARECACHE)/net/dial/net_dial.td $(stdlib_net_dial_any_srcs)
   1612 
   1613 # net::dns (+any)
   1614 stdlib_net_dns_any_srcs = \
   1615 	$(STDLIB)/net/dns/decode.ha \
   1616 	$(STDLIB)/net/dns/error.ha \
   1617 	$(STDLIB)/net/dns/encode.ha \
   1618 	$(STDLIB)/net/dns/query.ha \
   1619 	$(STDLIB)/net/dns/types.ha
   1620 
   1621 $(HARECACHE)/net/dns/net_dns-any.ssa: $(stdlib_net_dns_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_net_$(PLATFORM)) $(stdlib_net_udp_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_unix_resolvconf_$(PLATFORM)) $(stdlib_unix_poll_$(PLATFORM)) $(stdlib_rt_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_errors_$(PLATFORM))
   1622 	@printf 'HAREC \t$@\n'
   1623 	@mkdir -p $(HARECACHE)/net/dns
   1624 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::dns \
   1625 		-t$(HARECACHE)/net/dns/net_dns.td $(stdlib_net_dns_any_srcs)
   1626 
   1627 # net::ip (+linux)
   1628 stdlib_net_ip_linux_srcs = \
   1629 	$(STDLIB)/net/ip/+linux.ha \
   1630 	$(STDLIB)/net/ip/ip.ha
   1631 
   1632 # net::ip (+freebsd)
   1633 stdlib_net_ip_freebsd_srcs = \
   1634 	$(STDLIB)/net/ip/+freebsd.ha \
   1635 	$(STDLIB)/net/ip/ip.ha
   1636 
   1637 $(HARECACHE)/net/ip/net_ip-linux.ssa: $(stdlib_net_ip_linux_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM))
   1638 	@printf 'HAREC \t$@\n'
   1639 	@mkdir -p $(HARECACHE)/net/ip
   1640 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::ip \
   1641 		-t$(HARECACHE)/net/ip/net_ip.td $(stdlib_net_ip_linux_srcs)
   1642 
   1643 $(HARECACHE)/net/ip/net_ip-freebsd.ssa: $(stdlib_net_ip_freebsd_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM))
   1644 	@printf 'HAREC \t$@\n'
   1645 	@mkdir -p $(HARECACHE)/net/ip
   1646 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::ip \
   1647 		-t$(HARECACHE)/net/ip/net_ip.td $(stdlib_net_ip_freebsd_srcs)
   1648 
   1649 # net::tcp (+linux)
   1650 stdlib_net_tcp_linux_srcs = \
   1651 	$(STDLIB)/net/tcp/+linux.ha \
   1652 	$(STDLIB)/net/tcp/listener.ha \
   1653 	$(STDLIB)/net/tcp/options.ha
   1654 
   1655 $(HARECACHE)/net/tcp/net_tcp-linux.ssa: $(stdlib_net_tcp_linux_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_net_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_rt_$(PLATFORM))
   1656 	@printf 'HAREC \t$@\n'
   1657 	@mkdir -p $(HARECACHE)/net/tcp
   1658 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::tcp \
   1659 		-t$(HARECACHE)/net/tcp/net_tcp.td $(stdlib_net_tcp_linux_srcs)
   1660 
   1661 # net::tcp (+freebsd)
   1662 stdlib_net_tcp_freebsd_srcs = \
   1663 	$(STDLIB)/net/tcp/+freebsd.ha \
   1664 	$(STDLIB)/net/tcp/listener.ha \
   1665 	$(STDLIB)/net/tcp/options.ha
   1666 
   1667 $(HARECACHE)/net/tcp/net_tcp-freebsd.ssa: $(stdlib_net_tcp_freebsd_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_net_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_rt_$(PLATFORM))
   1668 	@printf 'HAREC \t$@\n'
   1669 	@mkdir -p $(HARECACHE)/net/tcp
   1670 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::tcp \
   1671 		-t$(HARECACHE)/net/tcp/net_tcp.td $(stdlib_net_tcp_freebsd_srcs)
   1672 
   1673 # net::udp (+linux)
   1674 stdlib_net_udp_linux_srcs = \
   1675 	$(STDLIB)/net/udp/+linux.ha \
   1676 	$(STDLIB)/net/udp/options.ha
   1677 
   1678 $(HARECACHE)/net/udp/net_udp-linux.ssa: $(stdlib_net_udp_linux_srcs) $(stdlib_rt) $(stdlib_net_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_rt_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
   1679 	@printf 'HAREC \t$@\n'
   1680 	@mkdir -p $(HARECACHE)/net/udp
   1681 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::udp \
   1682 		-t$(HARECACHE)/net/udp/net_udp.td $(stdlib_net_udp_linux_srcs)
   1683 
   1684 # net::udp (+freebsd)
   1685 stdlib_net_udp_freebsd_srcs = \
   1686 	$(STDLIB)/net/udp/+freebsd.ha \
   1687 	$(STDLIB)/net/udp/options.ha
   1688 
   1689 $(HARECACHE)/net/udp/net_udp-freebsd.ssa: $(stdlib_net_udp_freebsd_srcs) $(stdlib_rt) $(stdlib_net_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_rt_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
   1690 	@printf 'HAREC \t$@\n'
   1691 	@mkdir -p $(HARECACHE)/net/udp
   1692 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::udp \
   1693 		-t$(HARECACHE)/net/udp/net_udp.td $(stdlib_net_udp_freebsd_srcs)
   1694 
   1695 # net::unix (+linux)
   1696 stdlib_net_unix_linux_srcs = \
   1697 	$(STDLIB)/net/unix/+linux.ha \
   1698 	$(STDLIB)/net/unix/addr.ha \
   1699 	$(STDLIB)/net/unix/cmsg.ha \
   1700 	$(STDLIB)/net/unix/dial.ha \
   1701 	$(STDLIB)/net/unix/listener.ha \
   1702 	$(STDLIB)/net/unix/options.ha \
   1703 	$(STDLIB)/net/unix/socketpair.ha
   1704 
   1705 $(HARECACHE)/net/unix/net_unix-linux.ssa: $(stdlib_net_unix_linux_srcs) $(stdlib_rt) $(stdlib_net_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_types_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_net_dial_$(PLATFORM))
   1706 	@printf 'HAREC \t$@\n'
   1707 	@mkdir -p $(HARECACHE)/net/unix
   1708 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::unix \
   1709 		-t$(HARECACHE)/net/unix/net_unix.td $(stdlib_net_unix_linux_srcs)
   1710 
   1711 # net::unix (+freebsd)
   1712 stdlib_net_unix_freebsd_srcs = \
   1713 	$(STDLIB)/net/unix/+freebsd.ha \
   1714 	$(STDLIB)/net/unix/addr.ha \
   1715 	$(STDLIB)/net/unix/cmsg.ha \
   1716 	$(STDLIB)/net/unix/dial.ha \
   1717 	$(STDLIB)/net/unix/listener.ha \
   1718 	$(STDLIB)/net/unix/options.ha \
   1719 	$(STDLIB)/net/unix/socketpair.ha
   1720 
   1721 $(HARECACHE)/net/unix/net_unix-freebsd.ssa: $(stdlib_net_unix_freebsd_srcs) $(stdlib_rt) $(stdlib_net_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_types_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_net_dial_$(PLATFORM))
   1722 	@printf 'HAREC \t$@\n'
   1723 	@mkdir -p $(HARECACHE)/net/unix
   1724 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::unix \
   1725 		-t$(HARECACHE)/net/unix/net_unix.td $(stdlib_net_unix_freebsd_srcs)
   1726 
   1727 # net::uri (+any)
   1728 stdlib_net_uri_any_srcs = \
   1729 	$(STDLIB)/net/uri/fmt.ha \
   1730 	$(STDLIB)/net/uri/parse.ha \
   1731 	$(STDLIB)/net/uri/query.ha \
   1732 	$(STDLIB)/net/uri/uri.ha
   1733 
   1734 $(HARECACHE)/net/uri/net_uri-any.ssa: $(stdlib_net_uri_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_ip_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM))
   1735 	@printf 'HAREC \t$@\n'
   1736 	@mkdir -p $(HARECACHE)/net/uri
   1737 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::uri \
   1738 		-t$(HARECACHE)/net/uri/net_uri.td $(stdlib_net_uri_any_srcs)
   1739 
   1740 # os (+linux)
   1741 stdlib_os_linux_srcs = \
   1742 	$(STDLIB)/os/+linux/dirfdfs.ha \
   1743 	$(STDLIB)/os/+linux/environ.ha \
   1744 	$(STDLIB)/os/+linux/exit.ha \
   1745 	$(STDLIB)/os/+linux/fs.ha \
   1746 	$(STDLIB)/os/+linux/memory.ha \
   1747 	$(STDLIB)/os/+linux/stdfd.ha \
   1748 	$(STDLIB)/os/fs.ha
   1749 
   1750 $(HARECACHE)/os/os-linux.ssa: $(stdlib_os_linux_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_types_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_errors_$(PLATFORM))
   1751 	@printf 'HAREC \t$@\n'
   1752 	@mkdir -p $(HARECACHE)/os
   1753 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nos \
   1754 		-t$(HARECACHE)/os/os.td $(stdlib_os_linux_srcs)
   1755 
   1756 # os (+freebsd)
   1757 stdlib_os_freebsd_srcs = \
   1758 	$(STDLIB)/os/+freebsd/environ.ha \
   1759 	$(STDLIB)/os/+freebsd/exit.ha \
   1760 	$(STDLIB)/os/+freebsd/dirfdfs.ha \
   1761 	$(STDLIB)/os/+freebsd/stdfd.ha \
   1762 	$(STDLIB)/os/+freebsd/fs.ha \
   1763 	$(STDLIB)/os/fs.ha
   1764 
   1765 $(HARECACHE)/os/os-freebsd.ssa: $(stdlib_os_freebsd_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_types_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_errors_$(PLATFORM))
   1766 	@printf 'HAREC \t$@\n'
   1767 	@mkdir -p $(HARECACHE)/os
   1768 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nos \
   1769 		-t$(HARECACHE)/os/os.td $(stdlib_os_freebsd_srcs)
   1770 
   1771 # os::exec (+linux)
   1772 stdlib_os_exec_linux_srcs = \
   1773 	$(STDLIB)/os/exec/exec+linux.ha \
   1774 	$(STDLIB)/os/exec/process+linux.ha \
   1775 	$(STDLIB)/os/exec/types.ha \
   1776 	$(STDLIB)/os/exec/cmd.ha
   1777 
   1778 $(HARECACHE)/os/exec/os_exec-linux.ssa: $(stdlib_os_exec_linux_srcs) $(stdlib_rt) $(stdlib_os_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_path_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_unix_$(PLATFORM))
   1779 	@printf 'HAREC \t$@\n'
   1780 	@mkdir -p $(HARECACHE)/os/exec
   1781 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nos::exec \
   1782 		-t$(HARECACHE)/os/exec/os_exec.td $(stdlib_os_exec_linux_srcs)
   1783 
   1784 # os::exec (+freebsd)
   1785 stdlib_os_exec_freebsd_srcs = \
   1786 	$(STDLIB)/os/exec/exec+freebsd.ha \
   1787 	$(STDLIB)/os/exec/process+freebsd.ha \
   1788 	$(STDLIB)/os/exec/types.ha \
   1789 	$(STDLIB)/os/exec/cmd.ha
   1790 
   1791 $(HARECACHE)/os/exec/os_exec-freebsd.ssa: $(stdlib_os_exec_freebsd_srcs) $(stdlib_rt) $(stdlib_os_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_path_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_unix_$(PLATFORM))
   1792 	@printf 'HAREC \t$@\n'
   1793 	@mkdir -p $(HARECACHE)/os/exec
   1794 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nos::exec \
   1795 		-t$(HARECACHE)/os/exec/os_exec.td $(stdlib_os_exec_freebsd_srcs)
   1796 
   1797 # path (+any)
   1798 stdlib_path_any_srcs = \
   1799 	$(STDLIB)/path/+$(PLATFORM).ha \
   1800 	$(STDLIB)/path/buffer.ha \
   1801 	$(STDLIB)/path/util.ha \
   1802 	$(STDLIB)/path/join.ha \
   1803 	$(STDLIB)/path/names.ha \
   1804 	$(STDLIB)/path/iter.ha
   1805 
   1806 $(HARECACHE)/path/path-any.ssa: $(stdlib_path_any_srcs) $(stdlib_rt) $(stdlib_strings_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
   1807 	@printf 'HAREC \t$@\n'
   1808 	@mkdir -p $(HARECACHE)/path
   1809 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Npath \
   1810 		-t$(HARECACHE)/path/path.td $(stdlib_path_any_srcs)
   1811 
   1812 # regex (+any)
   1813 stdlib_regex_any_srcs = \
   1814 	$(STDLIB)/regex/regex.ha
   1815 
   1816 $(HARECACHE)/regex/regex-any.ssa: $(stdlib_regex_any_srcs) $(stdlib_rt) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   1817 	@printf 'HAREC \t$@\n'
   1818 	@mkdir -p $(HARECACHE)/regex
   1819 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nregex \
   1820 		-t$(HARECACHE)/regex/regex.td $(stdlib_regex_any_srcs)
   1821 
   1822 # shlex (+any)
   1823 stdlib_shlex_any_srcs = \
   1824 	$(STDLIB)/shlex/escape.ha \
   1825 	$(STDLIB)/shlex/split.ha
   1826 
   1827 $(HARECACHE)/shlex/shlex-any.ssa: $(stdlib_shlex_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM))
   1828 	@printf 'HAREC \t$@\n'
   1829 	@mkdir -p $(HARECACHE)/shlex
   1830 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nshlex \
   1831 		-t$(HARECACHE)/shlex/shlex.td $(stdlib_shlex_any_srcs)
   1832 
   1833 # slices (+any)
   1834 stdlib_slices_any_srcs = \
   1835 	$(STDLIB)/slices/cap.ha \
   1836 	$(STDLIB)/slices/reverse.ha \
   1837 	$(STDLIB)/slices/trunc.ha \
   1838 	$(STDLIB)/slices/void.ha
   1839 
   1840 $(HARECACHE)/slices/slices-any.ssa: $(stdlib_slices_any_srcs) $(stdlib_rt) $(stdlib_types_$(PLATFORM))
   1841 	@printf 'HAREC \t$@\n'
   1842 	@mkdir -p $(HARECACHE)/slices
   1843 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nslices \
   1844 		-t$(HARECACHE)/slices/slices.td $(stdlib_slices_any_srcs)
   1845 
   1846 # sort (+any)
   1847 stdlib_sort_any_srcs = \
   1848 	$(STDLIB)/sort/bisect.ha \
   1849 	$(STDLIB)/sort/search.ha \
   1850 	$(STDLIB)/sort/sort.ha \
   1851 	$(STDLIB)/sort/types.ha
   1852 
   1853 $(HARECACHE)/sort/sort-any.ssa: $(stdlib_sort_any_srcs) $(stdlib_rt) $(stdlib_strings_$(PLATFORM))
   1854 	@printf 'HAREC \t$@\n'
   1855 	@mkdir -p $(HARECACHE)/sort
   1856 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nsort \
   1857 		-t$(HARECACHE)/sort/sort.td $(stdlib_sort_any_srcs)
   1858 
   1859 # strconv (+any)
   1860 stdlib_strconv_any_srcs = \
   1861 	$(STDLIB)/strconv/types.ha \
   1862 	$(STDLIB)/strconv/itos.ha \
   1863 	$(STDLIB)/strconv/utos.ha \
   1864 	$(STDLIB)/strconv/stou.ha \
   1865 	$(STDLIB)/strconv/stoi.ha \
   1866 	$(STDLIB)/strconv/numeric.ha \
   1867 	$(STDLIB)/strconv/ftos.ha \
   1868 	$(STDLIB)/strconv/stof.ha \
   1869 	$(STDLIB)/strconv/stof_data.ha
   1870 
   1871 $(HARECACHE)/strconv/strconv-any.ssa: $(stdlib_strconv_any_srcs) $(stdlib_rt) $(stdlib_types_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_ascii_$(PLATFORM)) $(stdlib_math_$(PLATFORM))
   1872 	@printf 'HAREC \t$@\n'
   1873 	@mkdir -p $(HARECACHE)/strconv
   1874 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nstrconv \
   1875 		-t$(HARECACHE)/strconv/strconv.td $(stdlib_strconv_any_srcs)
   1876 
   1877 # strings (+any)
   1878 stdlib_strings_any_srcs = \
   1879 	$(STDLIB)/strings/cap.ha \
   1880 	$(STDLIB)/strings/concat.ha \
   1881 	$(STDLIB)/strings/contains.ha \
   1882 	$(STDLIB)/strings/cstrings.ha \
   1883 	$(STDLIB)/strings/dup.ha \
   1884 	$(STDLIB)/strings/iter.ha \
   1885 	$(STDLIB)/strings/runes.ha \
   1886 	$(STDLIB)/strings/sub.ha \
   1887 	$(STDLIB)/strings/suffix.ha \
   1888 	$(STDLIB)/strings/tokenize.ha \
   1889 	$(STDLIB)/strings/utf8.ha \
   1890 	$(STDLIB)/strings/index.ha \
   1891 	$(STDLIB)/strings/trim.ha \
   1892 	$(STDLIB)/strings/compare.ha \
   1893 	$(STDLIB)/strings/pad.ha \
   1894 	$(STDLIB)/strings/replace.ha
   1895 
   1896 $(HARECACHE)/strings/strings-any.ssa: $(stdlib_strings_any_srcs) $(stdlib_rt) $(stdlib_bytes_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_types_$(PLATFORM))
   1897 	@printf 'HAREC \t$@\n'
   1898 	@mkdir -p $(HARECACHE)/strings
   1899 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nstrings \
   1900 		-t$(HARECACHE)/strings/strings.td $(stdlib_strings_any_srcs)
   1901 
   1902 # strings::template (+any)
   1903 stdlib_strings_template_any_srcs = \
   1904 	$(STDLIB)/strings/template/template.ha
   1905 
   1906 $(HARECACHE)/strings/template/strings_template-any.ssa: $(stdlib_strings_template_any_srcs) $(stdlib_rt) $(stdlib_ascii_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strio_$(PLATFORM))
   1907 	@printf 'HAREC \t$@\n'
   1908 	@mkdir -p $(HARECACHE)/strings/template
   1909 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nstrings::template \
   1910 		-t$(HARECACHE)/strings/template/strings_template.td $(stdlib_strings_template_any_srcs)
   1911 
   1912 # strio (+any)
   1913 stdlib_strio_any_srcs = \
   1914 	$(STDLIB)/strio/stream.ha \
   1915 	$(STDLIB)/strio/ops.ha
   1916 
   1917 $(HARECACHE)/strio/strio-any.ssa: $(stdlib_strio_any_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_slices_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_errors_$(PLATFORM))
   1918 	@printf 'HAREC \t$@\n'
   1919 	@mkdir -p $(HARECACHE)/strio
   1920 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nstrio \
   1921 		-t$(HARECACHE)/strio/strio.td $(stdlib_strio_any_srcs)
   1922 
   1923 # temp (+linux)
   1924 stdlib_temp_linux_srcs = \
   1925 	$(STDLIB)/temp/+linux.ha
   1926 
   1927 $(HARECACHE)/temp/temp-linux.ssa: $(stdlib_temp_linux_srcs) $(stdlib_rt) $(stdlib_crypto_random_$(PLATFORM)) $(stdlib_encoding_hex_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_path_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM))
   1928 	@printf 'HAREC \t$@\n'
   1929 	@mkdir -p $(HARECACHE)/temp
   1930 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntemp \
   1931 		-t$(HARECACHE)/temp/temp.td $(stdlib_temp_linux_srcs)
   1932 
   1933 # temp (+freebsd)
   1934 stdlib_temp_freebsd_srcs = \
   1935 	$(STDLIB)/temp/+freebsd.ha
   1936 
   1937 $(HARECACHE)/temp/temp-freebsd.ssa: $(stdlib_temp_freebsd_srcs) $(stdlib_rt) $(stdlib_crypto_random_$(PLATFORM)) $(stdlib_encoding_hex_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_path_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM))
   1938 	@printf 'HAREC \t$@\n'
   1939 	@mkdir -p $(HARECACHE)/temp
   1940 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntemp \
   1941 		-t$(HARECACHE)/temp/temp.td $(stdlib_temp_freebsd_srcs)
   1942 
   1943 # time (+linux)
   1944 stdlib_time_linux_srcs = \
   1945 	$(STDLIB)/time/+linux/functions.ha \
   1946 	$(STDLIB)/time/+linux/+$(ARCH).ha \
   1947 	$(STDLIB)/time/arithm.ha \
   1948 	$(STDLIB)/time/conv.ha \
   1949 	$(STDLIB)/time/types.ha
   1950 
   1951 $(HARECACHE)/time/time-linux.ssa: $(stdlib_time_linux_srcs) $(stdlib_rt) $(stdlib_linux_vdso_$(PLATFORM)) $(stdlib_math_$(PLATFORM))
   1952 	@printf 'HAREC \t$@\n'
   1953 	@mkdir -p $(HARECACHE)/time
   1954 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntime \
   1955 		-t$(HARECACHE)/time/time.td $(stdlib_time_linux_srcs)
   1956 
   1957 # time (+freebsd)
   1958 stdlib_time_freebsd_srcs = \
   1959 	$(STDLIB)/time/+freebsd/functions.ha \
   1960 	$(STDLIB)/time/arithm.ha \
   1961 	$(STDLIB)/time/conv.ha \
   1962 	$(STDLIB)/time/types.ha
   1963 
   1964 $(HARECACHE)/time/time-freebsd.ssa: $(stdlib_time_freebsd_srcs) $(stdlib_rt) $(stdlib_math_$(PLATFORM))
   1965 	@printf 'HAREC \t$@\n'
   1966 	@mkdir -p $(HARECACHE)/time
   1967 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntime \
   1968 		-t$(HARECACHE)/time/time.td $(stdlib_time_freebsd_srcs)
   1969 
   1970 # time::chrono (+linux)
   1971 stdlib_time_chrono_linux_srcs = \
   1972 	$(STDLIB)/time/chrono/+linux.ha \
   1973 	$(STDLIB)/time/chrono/chronology.ha \
   1974 	$(STDLIB)/time/chrono/leapsec.ha \
   1975 	$(STDLIB)/time/chrono/timescale.ha \
   1976 	$(STDLIB)/time/chrono/timezone.ha \
   1977 	$(STDLIB)/time/chrono/tzdb.ha
   1978 
   1979 $(HARECACHE)/time/chrono/time_chrono-linux.ssa: $(stdlib_time_chrono_linux_srcs) $(stdlib_rt) $(stdlib_bufio_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_path_$(PLATFORM))
   1980 	@printf 'HAREC \t$@\n'
   1981 	@mkdir -p $(HARECACHE)/time/chrono
   1982 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntime::chrono \
   1983 		-t$(HARECACHE)/time/chrono/time_chrono.td $(stdlib_time_chrono_linux_srcs)
   1984 
   1985 # time::chrono (+freebsd)
   1986 stdlib_time_chrono_freebsd_srcs = \
   1987 	$(STDLIB)/time/chrono/+freebsd.ha \
   1988 	$(STDLIB)/time/chrono/chronology.ha \
   1989 	$(STDLIB)/time/chrono/leapsec.ha \
   1990 	$(STDLIB)/time/chrono/timescale.ha \
   1991 	$(STDLIB)/time/chrono/timezone.ha \
   1992 	$(STDLIB)/time/chrono/tzdb.ha
   1993 
   1994 $(HARECACHE)/time/chrono/time_chrono-freebsd.ssa: $(stdlib_time_chrono_freebsd_srcs) $(stdlib_rt) $(stdlib_bufio_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_encoding_utf8_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_path_$(PLATFORM))
   1995 	@printf 'HAREC \t$@\n'
   1996 	@mkdir -p $(HARECACHE)/time/chrono
   1997 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntime::chrono \
   1998 		-t$(HARECACHE)/time/chrono/time_chrono.td $(stdlib_time_chrono_freebsd_srcs)
   1999 
   2000 # types (+any)
   2001 stdlib_types_any_srcs = \
   2002 	$(STDLIB)/types/limits.ha \
   2003 	$(STDLIB)/types/classes.ha \
   2004 	$(STDLIB)/types/arch+$(ARCH).ha
   2005 
   2006 $(HARECACHE)/types/types-any.ssa: $(stdlib_types_any_srcs) $(stdlib_rt)
   2007 	@printf 'HAREC \t$@\n'
   2008 	@mkdir -p $(HARECACHE)/types
   2009 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntypes \
   2010 		-t$(HARECACHE)/types/types.td $(stdlib_types_any_srcs)
   2011 
   2012 # unix (+linux)
   2013 stdlib_unix_linux_srcs = \
   2014 	$(STDLIB)/unix/+linux/nice.ha \
   2015 	$(STDLIB)/unix/+linux/pipe.ha \
   2016 	$(STDLIB)/unix/+linux/umask.ha \
   2017 	$(STDLIB)/unix/getuid.ha \
   2018 	$(STDLIB)/unix/setuid.ha
   2019 
   2020 $(HARECACHE)/unix/unix-linux.ssa: $(stdlib_unix_linux_srcs) $(stdlib_rt) $(stdlib_errors_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
   2021 	@printf 'HAREC \t$@\n'
   2022 	@mkdir -p $(HARECACHE)/unix
   2023 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix \
   2024 		-t$(HARECACHE)/unix/unix.td $(stdlib_unix_linux_srcs)
   2025 
   2026 # unix (+freebsd)
   2027 stdlib_unix_freebsd_srcs = \
   2028 	$(STDLIB)/unix/+freebsd/nice.ha \
   2029 	$(STDLIB)/unix/+freebsd/pipe.ha \
   2030 	$(STDLIB)/unix/+freebsd/umask.ha \
   2031 	$(STDLIB)/unix/getuid.ha \
   2032 	$(STDLIB)/unix/setuid.ha
   2033 
   2034 $(HARECACHE)/unix/unix-freebsd.ssa: $(stdlib_unix_freebsd_srcs) $(stdlib_rt) $(stdlib_errors_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
   2035 	@printf 'HAREC \t$@\n'
   2036 	@mkdir -p $(HARECACHE)/unix
   2037 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix \
   2038 		-t$(HARECACHE)/unix/unix.td $(stdlib_unix_freebsd_srcs)
   2039 
   2040 # unix::hosts (+linux)
   2041 stdlib_unix_hosts_linux_srcs = \
   2042 	$(STDLIB)/unix/hosts/+linux.ha \
   2043 	$(STDLIB)/unix/hosts/lookup.ha
   2044 
   2045 $(HARECACHE)/unix/hosts/unix_hosts-linux.ssa: $(stdlib_unix_hosts_linux_srcs) $(stdlib_rt) $(stdlib_os_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   2046 	@printf 'HAREC \t$@\n'
   2047 	@mkdir -p $(HARECACHE)/unix/hosts
   2048 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::hosts \
   2049 		-t$(HARECACHE)/unix/hosts/unix_hosts.td $(stdlib_unix_hosts_linux_srcs)
   2050 
   2051 # unix::hosts (+freebsd)
   2052 stdlib_unix_hosts_freebsd_srcs = \
   2053 	$(STDLIB)/unix/hosts/+freebsd.ha \
   2054 	$(STDLIB)/unix/hosts/lookup.ha
   2055 
   2056 $(HARECACHE)/unix/hosts/unix_hosts-freebsd.ssa: $(stdlib_unix_hosts_freebsd_srcs) $(stdlib_rt) $(stdlib_os_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   2057 	@printf 'HAREC \t$@\n'
   2058 	@mkdir -p $(HARECACHE)/unix/hosts
   2059 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::hosts \
   2060 		-t$(HARECACHE)/unix/hosts/unix_hosts.td $(stdlib_unix_hosts_freebsd_srcs)
   2061 
   2062 # unix::passwd (+any)
   2063 stdlib_unix_passwd_any_srcs = \
   2064 	$(STDLIB)/unix/passwd/group.ha \
   2065 	$(STDLIB)/unix/passwd/passwd.ha \
   2066 	$(STDLIB)/unix/passwd/types.ha
   2067 
   2068 $(HARECACHE)/unix/passwd/unix_passwd-any.ssa: $(stdlib_unix_passwd_any_srcs) $(stdlib_rt) $(stdlib_bufio_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   2069 	@printf 'HAREC \t$@\n'
   2070 	@mkdir -p $(HARECACHE)/unix/passwd
   2071 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::passwd \
   2072 		-t$(HARECACHE)/unix/passwd/unix_passwd.td $(stdlib_unix_passwd_any_srcs)
   2073 
   2074 # unix::poll (+linux)
   2075 stdlib_unix_poll_linux_srcs = \
   2076 	$(STDLIB)/unix/poll/+linux.ha
   2077 
   2078 $(HARECACHE)/unix/poll/unix_poll-linux.ssa: $(stdlib_unix_poll_linux_srcs) $(stdlib_rt) $(stdlib_rt_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
   2079 	@printf 'HAREC \t$@\n'
   2080 	@mkdir -p $(HARECACHE)/unix/poll
   2081 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::poll \
   2082 		-t$(HARECACHE)/unix/poll/unix_poll.td $(stdlib_unix_poll_linux_srcs)
   2083 
   2084 # unix::poll (+freebsd)
   2085 stdlib_unix_poll_freebsd_srcs = \
   2086 	$(STDLIB)/unix/poll/+freebsd.ha
   2087 
   2088 $(HARECACHE)/unix/poll/unix_poll-freebsd.ssa: $(stdlib_unix_poll_freebsd_srcs) $(stdlib_rt) $(stdlib_rt_$(PLATFORM)) $(stdlib_errors_$(PLATFORM)) $(stdlib_time_$(PLATFORM)) $(stdlib_io_$(PLATFORM))
   2089 	@printf 'HAREC \t$@\n'
   2090 	@mkdir -p $(HARECACHE)/unix/poll
   2091 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::poll \
   2092 		-t$(HARECACHE)/unix/poll/unix_poll.td $(stdlib_unix_poll_freebsd_srcs)
   2093 
   2094 # unix::resolvconf (+linux)
   2095 stdlib_unix_resolvconf_linux_srcs = \
   2096 	$(STDLIB)/unix/resolvconf/+linux.ha \
   2097 	$(STDLIB)/unix/resolvconf/load.ha
   2098 
   2099 $(HARECACHE)/unix/resolvconf/unix_resolvconf-linux.ssa: $(stdlib_unix_resolvconf_linux_srcs) $(stdlib_rt) $(stdlib_os_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   2100 	@printf 'HAREC \t$@\n'
   2101 	@mkdir -p $(HARECACHE)/unix/resolvconf
   2102 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::resolvconf \
   2103 		-t$(HARECACHE)/unix/resolvconf/unix_resolvconf.td $(stdlib_unix_resolvconf_linux_srcs)
   2104 
   2105 # unix::resolvconf (+freebsd)
   2106 stdlib_unix_resolvconf_freebsd_srcs = \
   2107 	$(STDLIB)/unix/resolvconf/+freebsd.ha \
   2108 	$(STDLIB)/unix/resolvconf/load.ha
   2109 
   2110 $(HARECACHE)/unix/resolvconf/unix_resolvconf-freebsd.ssa: $(stdlib_unix_resolvconf_freebsd_srcs) $(stdlib_rt) $(stdlib_os_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_net_ip_$(PLATFORM)) $(stdlib_strings_$(PLATFORM))
   2111 	@printf 'HAREC \t$@\n'
   2112 	@mkdir -p $(HARECACHE)/unix/resolvconf
   2113 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::resolvconf \
   2114 		-t$(HARECACHE)/unix/resolvconf/unix_resolvconf.td $(stdlib_unix_resolvconf_freebsd_srcs)
   2115 
   2116 # unix::signal (+linux)
   2117 stdlib_unix_signal_linux_srcs = \
   2118 	$(STDLIB)/unix/signal/types.ha \
   2119 	$(STDLIB)/unix/signal/+linux.ha
   2120 
   2121 $(HARECACHE)/unix/signal/unix_signal-linux.ssa: $(stdlib_unix_signal_linux_srcs) $(stdlib_rt) $(stdlib_io_$(PLATFORM)) $(stdlib_errors_$(PLATFORM))
   2122 	@printf 'HAREC \t$@\n'
   2123 	@mkdir -p $(HARECACHE)/unix/signal
   2124 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::signal \
   2125 		-t$(HARECACHE)/unix/signal/unix_signal.td $(stdlib_unix_signal_linux_srcs)
   2126 
   2127 # unix::tty (+linux)
   2128 stdlib_unix_tty_linux_srcs = \
   2129 	$(STDLIB)/unix/tty/types.ha \
   2130 	$(STDLIB)/unix/tty/+linux/isatty.ha \
   2131 	$(STDLIB)/unix/tty/+linux/open.ha \
   2132 	$(STDLIB)/unix/tty/+linux/termios.ha \
   2133 	$(STDLIB)/unix/tty/+linux/winsize.ha
   2134 
   2135 $(HARECACHE)/unix/tty/unix_tty-linux.ssa: $(stdlib_unix_tty_linux_srcs) $(stdlib_rt) $(stdlib_rt_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM))
   2136 	@printf 'HAREC \t$@\n'
   2137 	@mkdir -p $(HARECACHE)/unix/tty
   2138 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::tty \
   2139 		-t$(HARECACHE)/unix/tty/unix_tty.td $(stdlib_unix_tty_linux_srcs)
   2140 
   2141 # unix::tty (+freebsd)
   2142 stdlib_unix_tty_freebsd_srcs = \
   2143 	$(STDLIB)/unix/tty/types.ha \
   2144 	$(STDLIB)/unix/tty/+freebsd/isatty.ha \
   2145 	$(STDLIB)/unix/tty/+freebsd/open.ha \
   2146 	$(STDLIB)/unix/tty/+freebsd/winsize.ha
   2147 
   2148 $(HARECACHE)/unix/tty/unix_tty-freebsd.ssa: $(stdlib_unix_tty_freebsd_srcs) $(stdlib_rt) $(stdlib_rt_$(PLATFORM)) $(stdlib_fs_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_os_$(PLATFORM))
   2149 	@printf 'HAREC \t$@\n'
   2150 	@mkdir -p $(HARECACHE)/unix/tty
   2151 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::tty \
   2152 		-t$(HARECACHE)/unix/tty/unix_tty.td $(stdlib_unix_tty_freebsd_srcs)
   2153 
   2154 # uuid (+any)
   2155 stdlib_uuid_any_srcs = \
   2156 	$(STDLIB)/uuid/uuid.ha
   2157 
   2158 $(HARECACHE)/uuid/uuid-any.ssa: $(stdlib_uuid_any_srcs) $(stdlib_rt) $(stdlib_crypto_random_$(PLATFORM)) $(stdlib_strio_$(PLATFORM)) $(stdlib_fmt_$(PLATFORM)) $(stdlib_endian_$(PLATFORM)) $(stdlib_io_$(PLATFORM)) $(stdlib_bytes_$(PLATFORM)) $(stdlib_bufio_$(PLATFORM)) $(stdlib_strings_$(PLATFORM)) $(stdlib_strconv_$(PLATFORM))
   2159 	@printf 'HAREC \t$@\n'
   2160 	@mkdir -p $(HARECACHE)/uuid
   2161 	@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nuuid \
   2162 		-t$(HARECACHE)/uuid/uuid.td $(stdlib_uuid_any_srcs)
   2163 
   2164 # rt (+linux)
   2165 testlib_rt_linux_srcs = \
   2166 	$(STDLIB)/rt/+linux/abort.ha \
   2167 	$(STDLIB)/rt/+linux/env.ha \
   2168 	$(STDLIB)/rt/+linux/errno.ha \
   2169 	$(STDLIB)/rt/+linux/types.ha \
   2170 	$(STDLIB)/rt/+linux/segmalloc.ha \
   2171 	$(STDLIB)/rt/+linux/platformstart.ha \
   2172 	$(STDLIB)/rt/+linux/prctl.ha \
   2173 	$(STDLIB)/rt/+linux/+$(ARCH).ha \
   2174 	$(STDLIB)/rt/+linux/syscallno+$(ARCH).ha \
   2175 	$(STDLIB)/rt/+linux/syscalls.ha \
   2176 	$(STDLIB)/rt/+linux/signal.ha \
   2177 	$(STDLIB)/rt/+linux/stat.ha \
   2178 	$(STDLIB)/rt/+linux/socket.ha \
   2179 	$(STDLIB)/rt/+$(ARCH)/jmp.ha \
   2180 	$(STDLIB)/rt/+$(ARCH)/backtrace.ha \
   2181 	$(STDLIB)/rt/fenv_defs.ha \
   2182 	$(STDLIB)/rt/+$(ARCH)/cpuid.ha \
   2183 	$(STDLIB)/rt/ensure.ha \
   2184 	$(STDLIB)/rt/jmp.ha \
   2185 	$(STDLIB)/rt/malloc.ha \
   2186 	$(STDLIB)/rt/memcpy.ha \
   2187 	$(STDLIB)/rt/memmove.ha \
   2188 	$(STDLIB)/rt/memset.ha \
   2189 	$(STDLIB)/rt/strcmp.ha \
   2190 	$(STDLIB)/rt/start+test.ha \
   2191 	$(STDLIB)/rt/abort+test.ha \
   2192 	$(STDLIB)/rt/+test/+$(PLATFORM).ha \
   2193 	$(STDLIB)/rt/+test/cstring.ha \
   2194 	$(STDLIB)/rt/+test/run.ha \
   2195 	$(STDLIB)/rt/+test/ztos.ha
   2196 
   2197 # rt (+freebsd)
   2198 testlib_rt_freebsd_srcs = \
   2199 	$(STDLIB)/rt/+freebsd/abort.ha \
   2200 	$(STDLIB)/rt/+freebsd/env.ha \
   2201 	$(STDLIB)/rt/+freebsd/errno.ha \
   2202 	$(STDLIB)/rt/+freebsd/platformstart.ha \
   2203 	$(STDLIB)/rt/+freebsd/segmalloc.ha \
   2204 	$(STDLIB)/rt/+freebsd/signal.ha \
   2205 	$(STDLIB)/rt/+freebsd/socket.ha \
   2206 	$(STDLIB)/rt/+freebsd/syscallno.ha \
   2207 	$(STDLIB)/rt/+freebsd/syscalls.ha \
   2208 	$(STDLIB)/rt/+freebsd/types.ha \
   2209 	$(STDLIB)/rt/+$(ARCH)/jmp.ha \
   2210 	$(STDLIB)/rt/+$(ARCH)/backtrace.ha \
   2211 	$(STDLIB)/rt/fenv_defs.ha \
   2212 	$(STDLIB)/rt/+$(ARCH)/cpuid.ha \
   2213 	$(STDLIB)/rt/ensure.ha \
   2214 	$(STDLIB)/rt/jmp.ha \
   2215 	$(STDLIB)/rt/malloc.ha \
   2216 	$(STDLIB)/rt/memcpy.ha \
   2217 	$(STDLIB)/rt/memmove.ha \
   2218 	$(STDLIB)/rt/memset.ha \
   2219 	$(STDLIB)/rt/strcmp.ha \
   2220 	$(STDLIB)/rt/start+test.ha \
   2221 	$(STDLIB)/rt/abort+test.ha \
   2222 	$(STDLIB)/rt/+test/+$(PLATFORM).ha \
   2223 	$(STDLIB)/rt/+test/cstring.ha \
   2224 	$(STDLIB)/rt/+test/run.ha \
   2225 	$(STDLIB)/rt/+test/ztos.ha
   2226 
   2227 $(TESTCACHE)/rt/rt-linux.ssa: $(testlib_rt_linux_srcs) $(testlib_rt)
   2228 	@printf 'HAREC \t$@\n'
   2229 	@mkdir -p $(TESTCACHE)/rt
   2230 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nrt \
   2231 		-t$(TESTCACHE)/rt/rt.td $(testlib_rt_linux_srcs)
   2232 
   2233 $(TESTCACHE)/rt/rt-freebsd.ssa: $(testlib_rt_freebsd_srcs) $(testlib_rt)
   2234 	@printf 'HAREC \t$@\n'
   2235 	@mkdir -p $(TESTCACHE)/rt
   2236 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nrt \
   2237 		-t$(TESTCACHE)/rt/rt.td $(testlib_rt_freebsd_srcs)
   2238 
   2239 $(TESTCACHE)/rt/start.o: $(STDLIB)/rt/+$(PLATFORM)/start+$(ARCH)-libc.s
   2240 	@printf 'AS \t%s\n' "$@"
   2241 	@mkdir -p $(TESTCACHE)/rt
   2242 	@$(AS) -o $@ $(STDLIB)/rt/+$(PLATFORM)/start+$(ARCH)-libc.s
   2243 
   2244 testlib_asm = $(TESTCACHE)/rt/syscall.o \
   2245 	$(TESTCACHE)/rt/setjmp.o \
   2246 	$(TESTCACHE)/rt/longjmp.o \
   2247 	$(TESTCACHE)/rt/restore.o \
   2248 	$(TESTCACHE)/rt/getfp.o \
   2249 	$(TESTCACHE)/rt/fenv.o \
   2250 	$(TESTCACHE)/rt/start.o \
   2251 	$(TESTCACHE)/rt/cpuid_native.o
   2252 
   2253 $(TESTCACHE)/rt/syscall.o: $(STDLIB)/rt/+$(PLATFORM)/syscall+$(ARCH).s
   2254 	@printf 'AS \t%s\n' "$@"
   2255 	@mkdir -p $(TESTCACHE)/rt
   2256 	@$(AS) -o $@ $(STDLIB)/rt/+$(PLATFORM)/syscall+$(ARCH).s
   2257 
   2258 $(TESTCACHE)/rt/setjmp.o: $(STDLIB)/rt/+$(ARCH)/setjmp.s
   2259 	@printf 'AS \t%s\n' "$@"
   2260 	@mkdir -p $(TESTCACHE)/rt
   2261 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/setjmp.s
   2262 
   2263 $(TESTCACHE)/rt/longjmp.o: $(STDLIB)/rt/+$(ARCH)/longjmp.s
   2264 	@printf 'AS \t%s\n' "$@"
   2265 	@mkdir -p $(TESTCACHE)/rt
   2266 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/longjmp.s
   2267 
   2268 $(TESTCACHE)/rt/restore.o: $(STDLIB)/rt/+$(ARCH)/restore.s
   2269 	@printf 'AS \t%s\n' "$@"
   2270 	@mkdir -p $(TESTCACHE)/rt
   2271 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/restore.s
   2272 
   2273 $(TESTCACHE)/rt/fenv.o: $(STDLIB)/rt/+$(ARCH)/fenv.s
   2274 	@printf 'AS \t%s\n' "$@"
   2275 	@mkdir -p $(TESTCACHE)/rt
   2276 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/fenv.s
   2277 
   2278 $(TESTCACHE)/rt/getfp.o: $(STDLIB)/rt/+$(ARCH)/getfp.s
   2279 	@printf 'AS \t%s\n' "$@"
   2280 	@mkdir -p $(TESTCACHE)/rt
   2281 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/getfp.s
   2282 
   2283 $(TESTCACHE)/rt/cpuid_native.o: $(STDLIB)/rt/+$(ARCH)/cpuid_native.s
   2284 	@printf 'AS \t%s\n' "$@"
   2285 	@mkdir -p $(TESTCACHE)/rt
   2286 	@$(AS) -o $@ $(STDLIB)/rt/+$(ARCH)/cpuid_native.s
   2287 
   2288 $(TESTCACHE)/rt/rt-linux.a: $(TESTCACHE)/rt/rt-linux.o $(testlib_asm)
   2289 	@printf 'AS \t%s\n' "$@"
   2290 	@$(AR) -csr $@ $(TESTCACHE)/rt/rt-linux.o $(testlib_asm)
   2291 
   2292 $(TESTCACHE)/rt/rt-freebsd.a: $(TESTCACHE)/rt/rt-freebsd.o $(testlib_asm)
   2293 	@printf 'AS \t%s\n' "$@"
   2294 	@$(AR) -csr $@ $(TESTCACHE)/rt/rt-freebsd.o $(testlib_asm)
   2295 
   2296 testlib_rt = $(TESTCACHE)/rt/rt-$(PLATFORM).a
   2297 testlib_deps_linux += $(testlib_rt)
   2298 testlib_deps_freebsd += $(testlib_rt)
   2299 testlib_deps_any += $(testlib_rt)
   2300 
   2301 # gen_lib ascii (any)
   2302 testlib_ascii_any = $(TESTCACHE)/ascii/ascii-any.o
   2303 testlib_deps_any += $(testlib_ascii_any)
   2304 testlib_ascii_linux = $(testlib_ascii_any)
   2305 testlib_ascii_freebsd = $(testlib_ascii_any)
   2306 
   2307 # gen_lib bufio (any)
   2308 testlib_bufio_any = $(TESTCACHE)/bufio/bufio-any.o
   2309 testlib_deps_any += $(testlib_bufio_any)
   2310 testlib_bufio_linux = $(testlib_bufio_any)
   2311 testlib_bufio_freebsd = $(testlib_bufio_any)
   2312 
   2313 # gen_lib bytes (any)
   2314 testlib_bytes_any = $(TESTCACHE)/bytes/bytes-any.o
   2315 testlib_deps_any += $(testlib_bytes_any)
   2316 testlib_bytes_linux = $(testlib_bytes_any)
   2317 testlib_bytes_freebsd = $(testlib_bytes_any)
   2318 
   2319 # gen_lib crypto (any)
   2320 testlib_crypto_any = $(TESTCACHE)/crypto/crypto-any.o
   2321 testlib_deps_any += $(testlib_crypto_any)
   2322 testlib_crypto_linux = $(testlib_crypto_any)
   2323 testlib_crypto_freebsd = $(testlib_crypto_any)
   2324 
   2325 # gen_lib crypto::aes (any)
   2326 testlib_crypto_aes_any = $(TESTCACHE)/crypto/aes/crypto_aes-any.o
   2327 testlib_deps_any += $(testlib_crypto_aes_any)
   2328 testlib_crypto_aes_linux = $(testlib_crypto_aes_any)
   2329 testlib_crypto_aes_freebsd = $(testlib_crypto_aes_any)
   2330 
   2331 # gen_lib crypto::aes::xts (any)
   2332 testlib_crypto_aes_xts_any = $(TESTCACHE)/crypto/aes/xts/crypto_aes_xts-any.o
   2333 testlib_deps_any += $(testlib_crypto_aes_xts_any)
   2334 testlib_crypto_aes_xts_linux = $(testlib_crypto_aes_xts_any)
   2335 testlib_crypto_aes_xts_freebsd = $(testlib_crypto_aes_xts_any)
   2336 
   2337 # gen_lib crypto::argon2 (any)
   2338 testlib_crypto_argon2_any = $(TESTCACHE)/crypto/argon2/crypto_argon2-any.o
   2339 testlib_deps_any += $(testlib_crypto_argon2_any)
   2340 testlib_crypto_argon2_linux = $(testlib_crypto_argon2_any)
   2341 testlib_crypto_argon2_freebsd = $(testlib_crypto_argon2_any)
   2342 
   2343 # gen_lib crypto::bcrypt (any)
   2344 testlib_crypto_bcrypt_any = $(TESTCACHE)/crypto/bcrypt/crypto_bcrypt-any.o
   2345 testlib_deps_any += $(testlib_crypto_bcrypt_any)
   2346 testlib_crypto_bcrypt_linux = $(testlib_crypto_bcrypt_any)
   2347 testlib_crypto_bcrypt_freebsd = $(testlib_crypto_bcrypt_any)
   2348 
   2349 # gen_lib crypto::blake2b (any)
   2350 testlib_crypto_blake2b_any = $(TESTCACHE)/crypto/blake2b/crypto_blake2b-any.o
   2351 testlib_deps_any += $(testlib_crypto_blake2b_any)
   2352 testlib_crypto_blake2b_linux = $(testlib_crypto_blake2b_any)
   2353 testlib_crypto_blake2b_freebsd = $(testlib_crypto_blake2b_any)
   2354 
   2355 # gen_lib crypto::blowfish (any)
   2356 testlib_crypto_blowfish_any = $(TESTCACHE)/crypto/blowfish/crypto_blowfish-any.o
   2357 testlib_deps_any += $(testlib_crypto_blowfish_any)
   2358 testlib_crypto_blowfish_linux = $(testlib_crypto_blowfish_any)
   2359 testlib_crypto_blowfish_freebsd = $(testlib_crypto_blowfish_any)
   2360 
   2361 # gen_lib crypto::chacha (any)
   2362 testlib_crypto_chacha_any = $(TESTCACHE)/crypto/chacha/crypto_chacha-any.o
   2363 testlib_deps_any += $(testlib_crypto_chacha_any)
   2364 testlib_crypto_chacha_linux = $(testlib_crypto_chacha_any)
   2365 testlib_crypto_chacha_freebsd = $(testlib_crypto_chacha_any)
   2366 
   2367 # gen_lib crypto::cipher (any)
   2368 testlib_crypto_cipher_any = $(TESTCACHE)/crypto/cipher/crypto_cipher-any.o
   2369 testlib_deps_any += $(testlib_crypto_cipher_any)
   2370 testlib_crypto_cipher_linux = $(testlib_crypto_cipher_any)
   2371 testlib_crypto_cipher_freebsd = $(testlib_crypto_cipher_any)
   2372 
   2373 # gen_lib crypto::hkdf (any)
   2374 testlib_crypto_hkdf_any = $(TESTCACHE)/crypto/hkdf/crypto_hkdf-any.o
   2375 testlib_deps_any += $(testlib_crypto_hkdf_any)
   2376 testlib_crypto_hkdf_linux = $(testlib_crypto_hkdf_any)
   2377 testlib_crypto_hkdf_freebsd = $(testlib_crypto_hkdf_any)
   2378 
   2379 # gen_lib crypto::hmac (any)
   2380 testlib_crypto_hmac_any = $(TESTCACHE)/crypto/hmac/crypto_hmac-any.o
   2381 testlib_deps_any += $(testlib_crypto_hmac_any)
   2382 testlib_crypto_hmac_linux = $(testlib_crypto_hmac_any)
   2383 testlib_crypto_hmac_freebsd = $(testlib_crypto_hmac_any)
   2384 
   2385 # gen_lib crypto::mac (any)
   2386 testlib_crypto_mac_any = $(TESTCACHE)/crypto/mac/crypto_mac-any.o
   2387 testlib_deps_any += $(testlib_crypto_mac_any)
   2388 testlib_crypto_mac_linux = $(testlib_crypto_mac_any)
   2389 testlib_crypto_mac_freebsd = $(testlib_crypto_mac_any)
   2390 
   2391 # gen_lib crypto::math (any)
   2392 testlib_crypto_math_any = $(TESTCACHE)/crypto/math/crypto_math-any.o
   2393 testlib_deps_any += $(testlib_crypto_math_any)
   2394 testlib_crypto_math_linux = $(testlib_crypto_math_any)
   2395 testlib_crypto_math_freebsd = $(testlib_crypto_math_any)
   2396 
   2397 # gen_lib crypto::random (linux)
   2398 testlib_crypto_random_linux = $(TESTCACHE)/crypto/random/crypto_random-linux.o
   2399 testlib_deps_linux += $(testlib_crypto_random_linux)
   2400 
   2401 # gen_lib crypto::random (freebsd)
   2402 testlib_crypto_random_freebsd = $(TESTCACHE)/crypto/random/crypto_random-freebsd.o
   2403 testlib_deps_freebsd += $(testlib_crypto_random_freebsd)
   2404 
   2405 # gen_lib crypto::poly1305 (any)
   2406 testlib_crypto_poly1305_any = $(TESTCACHE)/crypto/poly1305/crypto_poly1305-any.o
   2407 testlib_deps_any += $(testlib_crypto_poly1305_any)
   2408 testlib_crypto_poly1305_linux = $(testlib_crypto_poly1305_any)
   2409 testlib_crypto_poly1305_freebsd = $(testlib_crypto_poly1305_any)
   2410 
   2411 # gen_lib crypto::salsa (any)
   2412 testlib_crypto_salsa_any = $(TESTCACHE)/crypto/salsa/crypto_salsa-any.o
   2413 testlib_deps_any += $(testlib_crypto_salsa_any)
   2414 testlib_crypto_salsa_linux = $(testlib_crypto_salsa_any)
   2415 testlib_crypto_salsa_freebsd = $(testlib_crypto_salsa_any)
   2416 
   2417 # gen_lib crypto::sha1 (any)
   2418 testlib_crypto_sha1_any = $(TESTCACHE)/crypto/sha1/crypto_sha1-any.o
   2419 testlib_deps_any += $(testlib_crypto_sha1_any)
   2420 testlib_crypto_sha1_linux = $(testlib_crypto_sha1_any)
   2421 testlib_crypto_sha1_freebsd = $(testlib_crypto_sha1_any)
   2422 
   2423 # gen_lib crypto::sha256 (any)
   2424 testlib_crypto_sha256_any = $(TESTCACHE)/crypto/sha256/crypto_sha256-any.o
   2425 testlib_deps_any += $(testlib_crypto_sha256_any)
   2426 testlib_crypto_sha256_linux = $(testlib_crypto_sha256_any)
   2427 testlib_crypto_sha256_freebsd = $(testlib_crypto_sha256_any)
   2428 
   2429 # gen_lib crypto::sha512 (any)
   2430 testlib_crypto_sha512_any = $(TESTCACHE)/crypto/sha512/crypto_sha512-any.o
   2431 testlib_deps_any += $(testlib_crypto_sha512_any)
   2432 testlib_crypto_sha512_linux = $(testlib_crypto_sha512_any)
   2433 testlib_crypto_sha512_freebsd = $(testlib_crypto_sha512_any)
   2434 
   2435 # gen_lib crypto::curve25519 (any)
   2436 testlib_crypto_curve25519_any = $(TESTCACHE)/crypto/curve25519/crypto_curve25519-any.o
   2437 testlib_deps_any += $(testlib_crypto_curve25519_any)
   2438 testlib_crypto_curve25519_linux = $(testlib_crypto_curve25519_any)
   2439 testlib_crypto_curve25519_freebsd = $(testlib_crypto_curve25519_any)
   2440 
   2441 # gen_lib crypto::ed25519 (any)
   2442 testlib_crypto_ed25519_any = $(TESTCACHE)/crypto/ed25519/crypto_ed25519-any.o
   2443 testlib_deps_any += $(testlib_crypto_ed25519_any)
   2444 testlib_crypto_ed25519_linux = $(testlib_crypto_ed25519_any)
   2445 testlib_crypto_ed25519_freebsd = $(testlib_crypto_ed25519_any)
   2446 
   2447 # gen_lib crypto::x25519 (any)
   2448 testlib_crypto_x25519_any = $(TESTCACHE)/crypto/x25519/crypto_x25519-any.o
   2449 testlib_deps_any += $(testlib_crypto_x25519_any)
   2450 testlib_crypto_x25519_linux = $(testlib_crypto_x25519_any)
   2451 testlib_crypto_x25519_freebsd = $(testlib_crypto_x25519_any)
   2452 
   2453 # gen_lib datetime (linux)
   2454 testlib_datetime_linux = $(TESTCACHE)/datetime/datetime-linux.o
   2455 testlib_deps_linux += $(testlib_datetime_linux)
   2456 
   2457 # gen_lib datetime (freebsd)
   2458 testlib_datetime_freebsd = $(TESTCACHE)/datetime/datetime-freebsd.o
   2459 testlib_deps_freebsd += $(testlib_datetime_freebsd)
   2460 
   2461 # gen_lib dirs (any)
   2462 testlib_dirs_any = $(TESTCACHE)/dirs/dirs-any.o
   2463 testlib_deps_any += $(testlib_dirs_any)
   2464 testlib_dirs_linux = $(testlib_dirs_any)
   2465 testlib_dirs_freebsd = $(testlib_dirs_any)
   2466 
   2467 # gen_lib encoding::base64 (any)
   2468 testlib_encoding_base64_any = $(TESTCACHE)/encoding/base64/encoding_base64-any.o
   2469 testlib_deps_any += $(testlib_encoding_base64_any)
   2470 testlib_encoding_base64_linux = $(testlib_encoding_base64_any)
   2471 testlib_encoding_base64_freebsd = $(testlib_encoding_base64_any)
   2472 
   2473 # gen_lib encoding::base32 (any)
   2474 testlib_encoding_base32_any = $(TESTCACHE)/encoding/base32/encoding_base32-any.o
   2475 testlib_deps_any += $(testlib_encoding_base32_any)
   2476 testlib_encoding_base32_linux = $(testlib_encoding_base32_any)
   2477 testlib_encoding_base32_freebsd = $(testlib_encoding_base32_any)
   2478 
   2479 # gen_lib encoding::hex (any)
   2480 testlib_encoding_hex_any = $(TESTCACHE)/encoding/hex/encoding_hex-any.o
   2481 testlib_deps_any += $(testlib_encoding_hex_any)
   2482 testlib_encoding_hex_linux = $(testlib_encoding_hex_any)
   2483 testlib_encoding_hex_freebsd = $(testlib_encoding_hex_any)
   2484 
   2485 # gen_lib encoding::json (any)
   2486 testlib_encoding_json_any = $(TESTCACHE)/encoding/json/encoding_json-any.o
   2487 testlib_deps_any += $(testlib_encoding_json_any)
   2488 testlib_encoding_json_linux = $(testlib_encoding_json_any)
   2489 testlib_encoding_json_freebsd = $(testlib_encoding_json_any)
   2490 
   2491 # gen_lib encoding::pem (any)
   2492 testlib_encoding_pem_any = $(TESTCACHE)/encoding/pem/encoding_pem-any.o
   2493 testlib_deps_any += $(testlib_encoding_pem_any)
   2494 testlib_encoding_pem_linux = $(testlib_encoding_pem_any)
   2495 testlib_encoding_pem_freebsd = $(testlib_encoding_pem_any)
   2496 
   2497 # gen_lib encoding::utf8 (any)
   2498 testlib_encoding_utf8_any = $(TESTCACHE)/encoding/utf8/encoding_utf8-any.o
   2499 testlib_deps_any += $(testlib_encoding_utf8_any)
   2500 testlib_encoding_utf8_linux = $(testlib_encoding_utf8_any)
   2501 testlib_encoding_utf8_freebsd = $(testlib_encoding_utf8_any)
   2502 
   2503 # gen_lib endian (any)
   2504 testlib_endian_any = $(TESTCACHE)/endian/endian-any.o
   2505 testlib_deps_any += $(testlib_endian_any)
   2506 testlib_endian_linux = $(testlib_endian_any)
   2507 testlib_endian_freebsd = $(testlib_endian_any)
   2508 
   2509 # gen_lib errors (any)
   2510 testlib_errors_any = $(TESTCACHE)/errors/errors-any.o
   2511 testlib_deps_any += $(testlib_errors_any)
   2512 testlib_errors_linux = $(testlib_errors_any)
   2513 testlib_errors_freebsd = $(testlib_errors_any)
   2514 
   2515 # gen_lib fmt (any)
   2516 testlib_fmt_any = $(TESTCACHE)/fmt/fmt-any.o
   2517 testlib_deps_any += $(testlib_fmt_any)
   2518 testlib_fmt_linux = $(testlib_fmt_any)
   2519 testlib_fmt_freebsd = $(testlib_fmt_any)
   2520 
   2521 # gen_lib fnmatch (any)
   2522 testlib_fnmatch_any = $(TESTCACHE)/fnmatch/fnmatch-any.o
   2523 testlib_deps_any += $(testlib_fnmatch_any)
   2524 testlib_fnmatch_linux = $(testlib_fnmatch_any)
   2525 testlib_fnmatch_freebsd = $(testlib_fnmatch_any)
   2526 
   2527 # gen_lib format::elf (any)
   2528 testlib_format_elf_any = $(TESTCACHE)/format/elf/format_elf-any.o
   2529 testlib_deps_any += $(testlib_format_elf_any)
   2530 testlib_format_elf_linux = $(testlib_format_elf_any)
   2531 testlib_format_elf_freebsd = $(testlib_format_elf_any)
   2532 
   2533 # gen_lib format::ini (any)
   2534 testlib_format_ini_any = $(TESTCACHE)/format/ini/format_ini-any.o
   2535 testlib_deps_any += $(testlib_format_ini_any)
   2536 testlib_format_ini_linux = $(testlib_format_ini_any)
   2537 testlib_format_ini_freebsd = $(testlib_format_ini_any)
   2538 
   2539 # gen_lib format::tar (any)
   2540 testlib_format_tar_any = $(TESTCACHE)/format/tar/format_tar-any.o
   2541 testlib_deps_any += $(testlib_format_tar_any)
   2542 testlib_format_tar_linux = $(testlib_format_tar_any)
   2543 testlib_format_tar_freebsd = $(testlib_format_tar_any)
   2544 
   2545 # gen_lib fs (any)
   2546 testlib_fs_any = $(TESTCACHE)/fs/fs-any.o
   2547 testlib_deps_any += $(testlib_fs_any)
   2548 testlib_fs_linux = $(testlib_fs_any)
   2549 testlib_fs_freebsd = $(testlib_fs_any)
   2550 
   2551 # gen_lib getopt (any)
   2552 testlib_getopt_any = $(TESTCACHE)/getopt/getopt-any.o
   2553 testlib_deps_any += $(testlib_getopt_any)
   2554 testlib_getopt_linux = $(testlib_getopt_any)
   2555 testlib_getopt_freebsd = $(testlib_getopt_any)
   2556 
   2557 # gen_lib glob (any)
   2558 testlib_glob_any = $(TESTCACHE)/glob/glob-any.o
   2559 testlib_deps_any += $(testlib_glob_any)
   2560 testlib_glob_linux = $(testlib_glob_any)
   2561 testlib_glob_freebsd = $(testlib_glob_any)
   2562 
   2563 # gen_lib hare::ast (any)
   2564 testlib_hare_ast_any = $(TESTCACHE)/hare/ast/hare_ast-any.o
   2565 testlib_deps_any += $(testlib_hare_ast_any)
   2566 testlib_hare_ast_linux = $(testlib_hare_ast_any)
   2567 testlib_hare_ast_freebsd = $(testlib_hare_ast_any)
   2568 
   2569 # gen_lib hare::lex (any)
   2570 testlib_hare_lex_any = $(TESTCACHE)/hare/lex/hare_lex-any.o
   2571 testlib_deps_any += $(testlib_hare_lex_any)
   2572 testlib_hare_lex_linux = $(testlib_hare_lex_any)
   2573 testlib_hare_lex_freebsd = $(testlib_hare_lex_any)
   2574 
   2575 # gen_lib hare::module (any)
   2576 testlib_hare_module_any = $(TESTCACHE)/hare/module/hare_module-any.o
   2577 testlib_deps_any += $(testlib_hare_module_any)
   2578 testlib_hare_module_linux = $(testlib_hare_module_any)
   2579 testlib_hare_module_freebsd = $(testlib_hare_module_any)
   2580 
   2581 # gen_lib hare::parse (any)
   2582 testlib_hare_parse_any = $(TESTCACHE)/hare/parse/hare_parse-any.o
   2583 testlib_deps_any += $(testlib_hare_parse_any)
   2584 testlib_hare_parse_linux = $(testlib_hare_parse_any)
   2585 testlib_hare_parse_freebsd = $(testlib_hare_parse_any)
   2586 
   2587 # gen_lib hare::types (any)
   2588 testlib_hare_types_any = $(TESTCACHE)/hare/types/hare_types-any.o
   2589 testlib_deps_any += $(testlib_hare_types_any)
   2590 testlib_hare_types_linux = $(testlib_hare_types_any)
   2591 testlib_hare_types_freebsd = $(testlib_hare_types_any)
   2592 
   2593 # gen_lib hare::unit (any)
   2594 testlib_hare_unit_any = $(TESTCACHE)/hare/unit/hare_unit-any.o
   2595 testlib_deps_any += $(testlib_hare_unit_any)
   2596 testlib_hare_unit_linux = $(testlib_hare_unit_any)
   2597 testlib_hare_unit_freebsd = $(testlib_hare_unit_any)
   2598 
   2599 # gen_lib hare::unparse (any)
   2600 testlib_hare_unparse_any = $(TESTCACHE)/hare/unparse/hare_unparse-any.o
   2601 testlib_deps_any += $(testlib_hare_unparse_any)
   2602 testlib_hare_unparse_linux = $(testlib_hare_unparse_any)
   2603 testlib_hare_unparse_freebsd = $(testlib_hare_unparse_any)
   2604 
   2605 # gen_lib hash (any)
   2606 testlib_hash_any = $(TESTCACHE)/hash/hash-any.o
   2607 testlib_deps_any += $(testlib_hash_any)
   2608 testlib_hash_linux = $(testlib_hash_any)
   2609 testlib_hash_freebsd = $(testlib_hash_any)
   2610 
   2611 # gen_lib hash::adler32 (any)
   2612 testlib_hash_adler32_any = $(TESTCACHE)/hash/adler32/hash_adler32-any.o
   2613 testlib_deps_any += $(testlib_hash_adler32_any)
   2614 testlib_hash_adler32_linux = $(testlib_hash_adler32_any)
   2615 testlib_hash_adler32_freebsd = $(testlib_hash_adler32_any)
   2616 
   2617 # gen_lib hash::crc16 (any)
   2618 testlib_hash_crc16_any = $(TESTCACHE)/hash/crc16/hash_crc16-any.o
   2619 testlib_deps_any += $(testlib_hash_crc16_any)
   2620 testlib_hash_crc16_linux = $(testlib_hash_crc16_any)
   2621 testlib_hash_crc16_freebsd = $(testlib_hash_crc16_any)
   2622 
   2623 # gen_lib hash::crc32 (any)
   2624 testlib_hash_crc32_any = $(TESTCACHE)/hash/crc32/hash_crc32-any.o
   2625 testlib_deps_any += $(testlib_hash_crc32_any)
   2626 testlib_hash_crc32_linux = $(testlib_hash_crc32_any)
   2627 testlib_hash_crc32_freebsd = $(testlib_hash_crc32_any)
   2628 
   2629 # gen_lib hash::crc64 (any)
   2630 testlib_hash_crc64_any = $(TESTCACHE)/hash/crc64/hash_crc64-any.o
   2631 testlib_deps_any += $(testlib_hash_crc64_any)
   2632 testlib_hash_crc64_linux = $(testlib_hash_crc64_any)
   2633 testlib_hash_crc64_freebsd = $(testlib_hash_crc64_any)
   2634 
   2635 # gen_lib hash::fnv (any)
   2636 testlib_hash_fnv_any = $(TESTCACHE)/hash/fnv/hash_fnv-any.o
   2637 testlib_deps_any += $(testlib_hash_fnv_any)
   2638 testlib_hash_fnv_linux = $(testlib_hash_fnv_any)
   2639 testlib_hash_fnv_freebsd = $(testlib_hash_fnv_any)
   2640 
   2641 # gen_lib hash::siphash (any)
   2642 testlib_hash_siphash_any = $(TESTCACHE)/hash/siphash/hash_siphash-any.o
   2643 testlib_deps_any += $(testlib_hash_siphash_any)
   2644 testlib_hash_siphash_linux = $(testlib_hash_siphash_any)
   2645 testlib_hash_siphash_freebsd = $(testlib_hash_siphash_any)
   2646 
   2647 # gen_lib io (linux)
   2648 testlib_io_linux = $(TESTCACHE)/io/io-linux.o
   2649 testlib_deps_linux += $(testlib_io_linux)
   2650 
   2651 # gen_lib io (freebsd)
   2652 testlib_io_freebsd = $(TESTCACHE)/io/io-freebsd.o
   2653 testlib_deps_freebsd += $(testlib_io_freebsd)
   2654 
   2655 # gen_lib linux (linux)
   2656 testlib_linux_linux = $(TESTCACHE)/linux/linux-linux.o
   2657 testlib_deps_linux += $(testlib_linux_linux)
   2658 
   2659 # gen_lib linux::keyctl (linux)
   2660 testlib_linux_keyctl_linux = $(TESTCACHE)/linux/keyctl/linux_keyctl-linux.o
   2661 testlib_deps_linux += $(testlib_linux_keyctl_linux)
   2662 
   2663 # gen_lib linux::timerfd (linux)
   2664 testlib_linux_timerfd_linux = $(TESTCACHE)/linux/timerfd/linux_timerfd-linux.o
   2665 testlib_deps_linux += $(testlib_linux_timerfd_linux)
   2666 
   2667 # gen_lib linux::vdso (linux)
   2668 testlib_linux_vdso_linux = $(TESTCACHE)/linux/vdso/linux_vdso-linux.o
   2669 testlib_deps_linux += $(testlib_linux_vdso_linux)
   2670 
   2671 # gen_lib log (linux)
   2672 testlib_log_linux = $(TESTCACHE)/log/log-linux.o
   2673 testlib_deps_linux += $(testlib_log_linux)
   2674 
   2675 # gen_lib log (freebsd)
   2676 testlib_log_freebsd = $(TESTCACHE)/log/log-freebsd.o
   2677 testlib_deps_freebsd += $(testlib_log_freebsd)
   2678 
   2679 # gen_lib math (any)
   2680 testlib_math_any = $(TESTCACHE)/math/math-any.o
   2681 testlib_deps_any += $(testlib_math_any)
   2682 testlib_math_linux = $(testlib_math_any)
   2683 testlib_math_freebsd = $(testlib_math_any)
   2684 
   2685 # gen_lib math::complex (any)
   2686 testlib_math_complex_any = $(TESTCACHE)/math/complex/math_complex-any.o
   2687 testlib_deps_any += $(testlib_math_complex_any)
   2688 testlib_math_complex_linux = $(testlib_math_complex_any)
   2689 testlib_math_complex_freebsd = $(testlib_math_complex_any)
   2690 
   2691 # gen_lib math::random (any)
   2692 testlib_math_random_any = $(TESTCACHE)/math/random/math_random-any.o
   2693 testlib_deps_any += $(testlib_math_random_any)
   2694 testlib_math_random_linux = $(testlib_math_random_any)
   2695 testlib_math_random_freebsd = $(testlib_math_random_any)
   2696 
   2697 # gen_lib net (linux)
   2698 testlib_net_linux = $(TESTCACHE)/net/net-linux.o
   2699 testlib_deps_linux += $(testlib_net_linux)
   2700 
   2701 # gen_lib net (freebsd)
   2702 testlib_net_freebsd = $(TESTCACHE)/net/net-freebsd.o
   2703 testlib_deps_freebsd += $(testlib_net_freebsd)
   2704 
   2705 # gen_lib net::dial (any)
   2706 testlib_net_dial_any = $(TESTCACHE)/net/dial/net_dial-any.o
   2707 testlib_deps_any += $(testlib_net_dial_any)
   2708 testlib_net_dial_linux = $(testlib_net_dial_any)
   2709 testlib_net_dial_freebsd = $(testlib_net_dial_any)
   2710 
   2711 # gen_lib net::dns (any)
   2712 testlib_net_dns_any = $(TESTCACHE)/net/dns/net_dns-any.o
   2713 testlib_deps_any += $(testlib_net_dns_any)
   2714 testlib_net_dns_linux = $(testlib_net_dns_any)
   2715 testlib_net_dns_freebsd = $(testlib_net_dns_any)
   2716 
   2717 # gen_lib net::ip (linux)
   2718 testlib_net_ip_linux = $(TESTCACHE)/net/ip/net_ip-linux.o
   2719 testlib_deps_linux += $(testlib_net_ip_linux)
   2720 
   2721 # gen_lib net::ip (freebsd)
   2722 testlib_net_ip_freebsd = $(TESTCACHE)/net/ip/net_ip-freebsd.o
   2723 testlib_deps_freebsd += $(testlib_net_ip_freebsd)
   2724 
   2725 # gen_lib net::tcp (linux)
   2726 testlib_net_tcp_linux = $(TESTCACHE)/net/tcp/net_tcp-linux.o
   2727 testlib_deps_linux += $(testlib_net_tcp_linux)
   2728 
   2729 # gen_lib net::tcp (freebsd)
   2730 testlib_net_tcp_freebsd = $(TESTCACHE)/net/tcp/net_tcp-freebsd.o
   2731 testlib_deps_freebsd += $(testlib_net_tcp_freebsd)
   2732 
   2733 # gen_lib net::udp (linux)
   2734 testlib_net_udp_linux = $(TESTCACHE)/net/udp/net_udp-linux.o
   2735 testlib_deps_linux += $(testlib_net_udp_linux)
   2736 
   2737 # gen_lib net::udp (freebsd)
   2738 testlib_net_udp_freebsd = $(TESTCACHE)/net/udp/net_udp-freebsd.o
   2739 testlib_deps_freebsd += $(testlib_net_udp_freebsd)
   2740 
   2741 # gen_lib net::unix (linux)
   2742 testlib_net_unix_linux = $(TESTCACHE)/net/unix/net_unix-linux.o
   2743 testlib_deps_linux += $(testlib_net_unix_linux)
   2744 
   2745 # gen_lib net::unix (freebsd)
   2746 testlib_net_unix_freebsd = $(TESTCACHE)/net/unix/net_unix-freebsd.o
   2747 testlib_deps_freebsd += $(testlib_net_unix_freebsd)
   2748 
   2749 # gen_lib net::uri (any)
   2750 testlib_net_uri_any = $(TESTCACHE)/net/uri/net_uri-any.o
   2751 testlib_deps_any += $(testlib_net_uri_any)
   2752 testlib_net_uri_linux = $(testlib_net_uri_any)
   2753 testlib_net_uri_freebsd = $(testlib_net_uri_any)
   2754 
   2755 # gen_lib os (linux)
   2756 testlib_os_linux = $(TESTCACHE)/os/os-linux.o
   2757 testlib_deps_linux += $(testlib_os_linux)
   2758 
   2759 # gen_lib os (freebsd)
   2760 testlib_os_freebsd = $(TESTCACHE)/os/os-freebsd.o
   2761 testlib_deps_freebsd += $(testlib_os_freebsd)
   2762 
   2763 # gen_lib os::exec (linux)
   2764 testlib_os_exec_linux = $(TESTCACHE)/os/exec/os_exec-linux.o
   2765 testlib_deps_linux += $(testlib_os_exec_linux)
   2766 
   2767 # gen_lib os::exec (freebsd)
   2768 testlib_os_exec_freebsd = $(TESTCACHE)/os/exec/os_exec-freebsd.o
   2769 testlib_deps_freebsd += $(testlib_os_exec_freebsd)
   2770 
   2771 # gen_lib path (any)
   2772 testlib_path_any = $(TESTCACHE)/path/path-any.o
   2773 testlib_deps_any += $(testlib_path_any)
   2774 testlib_path_linux = $(testlib_path_any)
   2775 testlib_path_freebsd = $(testlib_path_any)
   2776 
   2777 # gen_lib regex (any)
   2778 testlib_regex_any = $(TESTCACHE)/regex/regex-any.o
   2779 testlib_deps_any += $(testlib_regex_any)
   2780 testlib_regex_linux = $(testlib_regex_any)
   2781 testlib_regex_freebsd = $(testlib_regex_any)
   2782 
   2783 # gen_lib shlex (any)
   2784 testlib_shlex_any = $(TESTCACHE)/shlex/shlex-any.o
   2785 testlib_deps_any += $(testlib_shlex_any)
   2786 testlib_shlex_linux = $(testlib_shlex_any)
   2787 testlib_shlex_freebsd = $(testlib_shlex_any)
   2788 
   2789 # gen_lib slices (any)
   2790 testlib_slices_any = $(TESTCACHE)/slices/slices-any.o
   2791 testlib_deps_any += $(testlib_slices_any)
   2792 testlib_slices_linux = $(testlib_slices_any)
   2793 testlib_slices_freebsd = $(testlib_slices_any)
   2794 
   2795 # gen_lib sort (any)
   2796 testlib_sort_any = $(TESTCACHE)/sort/sort-any.o
   2797 testlib_deps_any += $(testlib_sort_any)
   2798 testlib_sort_linux = $(testlib_sort_any)
   2799 testlib_sort_freebsd = $(testlib_sort_any)
   2800 
   2801 # gen_lib strconv (any)
   2802 testlib_strconv_any = $(TESTCACHE)/strconv/strconv-any.o
   2803 testlib_deps_any += $(testlib_strconv_any)
   2804 testlib_strconv_linux = $(testlib_strconv_any)
   2805 testlib_strconv_freebsd = $(testlib_strconv_any)
   2806 
   2807 # gen_lib strings (any)
   2808 testlib_strings_any = $(TESTCACHE)/strings/strings-any.o
   2809 testlib_deps_any += $(testlib_strings_any)
   2810 testlib_strings_linux = $(testlib_strings_any)
   2811 testlib_strings_freebsd = $(testlib_strings_any)
   2812 
   2813 # gen_lib strings::template (any)
   2814 testlib_strings_template_any = $(TESTCACHE)/strings/template/strings_template-any.o
   2815 testlib_deps_any += $(testlib_strings_template_any)
   2816 testlib_strings_template_linux = $(testlib_strings_template_any)
   2817 testlib_strings_template_freebsd = $(testlib_strings_template_any)
   2818 
   2819 # gen_lib strio (any)
   2820 testlib_strio_any = $(TESTCACHE)/strio/strio-any.o
   2821 testlib_deps_any += $(testlib_strio_any)
   2822 testlib_strio_linux = $(testlib_strio_any)
   2823 testlib_strio_freebsd = $(testlib_strio_any)
   2824 
   2825 # gen_lib temp (linux)
   2826 testlib_temp_linux = $(TESTCACHE)/temp/temp-linux.o
   2827 testlib_deps_linux += $(testlib_temp_linux)
   2828 
   2829 # gen_lib temp (freebsd)
   2830 testlib_temp_freebsd = $(TESTCACHE)/temp/temp-freebsd.o
   2831 testlib_deps_freebsd += $(testlib_temp_freebsd)
   2832 
   2833 # gen_lib time (linux)
   2834 testlib_time_linux = $(TESTCACHE)/time/time-linux.o
   2835 testlib_deps_linux += $(testlib_time_linux)
   2836 
   2837 # gen_lib time (freebsd)
   2838 testlib_time_freebsd = $(TESTCACHE)/time/time-freebsd.o
   2839 testlib_deps_freebsd += $(testlib_time_freebsd)
   2840 
   2841 # gen_lib time::chrono (linux)
   2842 testlib_time_chrono_linux = $(TESTCACHE)/time/chrono/time_chrono-linux.o
   2843 testlib_deps_linux += $(testlib_time_chrono_linux)
   2844 
   2845 # gen_lib time::chrono (freebsd)
   2846 testlib_time_chrono_freebsd = $(TESTCACHE)/time/chrono/time_chrono-freebsd.o
   2847 testlib_deps_freebsd += $(testlib_time_chrono_freebsd)
   2848 
   2849 # gen_lib types (any)
   2850 testlib_types_any = $(TESTCACHE)/types/types-any.o
   2851 testlib_deps_any += $(testlib_types_any)
   2852 testlib_types_linux = $(testlib_types_any)
   2853 testlib_types_freebsd = $(testlib_types_any)
   2854 
   2855 # gen_lib unix (linux)
   2856 testlib_unix_linux = $(TESTCACHE)/unix/unix-linux.o
   2857 testlib_deps_linux += $(testlib_unix_linux)
   2858 
   2859 # gen_lib unix (freebsd)
   2860 testlib_unix_freebsd = $(TESTCACHE)/unix/unix-freebsd.o
   2861 testlib_deps_freebsd += $(testlib_unix_freebsd)
   2862 
   2863 # gen_lib unix::hosts (linux)
   2864 testlib_unix_hosts_linux = $(TESTCACHE)/unix/hosts/unix_hosts-linux.o
   2865 testlib_deps_linux += $(testlib_unix_hosts_linux)
   2866 
   2867 # gen_lib unix::hosts (freebsd)
   2868 testlib_unix_hosts_freebsd = $(TESTCACHE)/unix/hosts/unix_hosts-freebsd.o
   2869 testlib_deps_freebsd += $(testlib_unix_hosts_freebsd)
   2870 
   2871 # gen_lib unix::passwd (any)
   2872 testlib_unix_passwd_any = $(TESTCACHE)/unix/passwd/unix_passwd-any.o
   2873 testlib_deps_any += $(testlib_unix_passwd_any)
   2874 testlib_unix_passwd_linux = $(testlib_unix_passwd_any)
   2875 testlib_unix_passwd_freebsd = $(testlib_unix_passwd_any)
   2876 
   2877 # gen_lib unix::poll (linux)
   2878 testlib_unix_poll_linux = $(TESTCACHE)/unix/poll/unix_poll-linux.o
   2879 testlib_deps_linux += $(testlib_unix_poll_linux)
   2880 
   2881 # gen_lib unix::poll (freebsd)
   2882 testlib_unix_poll_freebsd = $(TESTCACHE)/unix/poll/unix_poll-freebsd.o
   2883 testlib_deps_freebsd += $(testlib_unix_poll_freebsd)
   2884 
   2885 # gen_lib unix::resolvconf (linux)
   2886 testlib_unix_resolvconf_linux = $(TESTCACHE)/unix/resolvconf/unix_resolvconf-linux.o
   2887 testlib_deps_linux += $(testlib_unix_resolvconf_linux)
   2888 
   2889 # gen_lib unix::resolvconf (freebsd)
   2890 testlib_unix_resolvconf_freebsd = $(TESTCACHE)/unix/resolvconf/unix_resolvconf-freebsd.o
   2891 testlib_deps_freebsd += $(testlib_unix_resolvconf_freebsd)
   2892 
   2893 # gen_lib unix::signal (linux)
   2894 testlib_unix_signal_linux = $(TESTCACHE)/unix/signal/unix_signal-linux.o
   2895 testlib_deps_linux += $(testlib_unix_signal_linux)
   2896 
   2897 # gen_lib unix::tty (linux)
   2898 testlib_unix_tty_linux = $(TESTCACHE)/unix/tty/unix_tty-linux.o
   2899 testlib_deps_linux += $(testlib_unix_tty_linux)
   2900 
   2901 # gen_lib unix::tty (freebsd)
   2902 testlib_unix_tty_freebsd = $(TESTCACHE)/unix/tty/unix_tty-freebsd.o
   2903 testlib_deps_freebsd += $(testlib_unix_tty_freebsd)
   2904 
   2905 # gen_lib uuid (any)
   2906 testlib_uuid_any = $(TESTCACHE)/uuid/uuid-any.o
   2907 testlib_deps_any += $(testlib_uuid_any)
   2908 testlib_uuid_linux = $(testlib_uuid_any)
   2909 testlib_uuid_freebsd = $(testlib_uuid_any)
   2910 
   2911 # ascii (+any)
   2912 testlib_ascii_any_srcs = \
   2913 	$(STDLIB)/ascii/ctype.ha \
   2914 	$(STDLIB)/ascii/strcmp.ha \
   2915 	$(STDLIB)/ascii/valid.ha
   2916 
   2917 $(TESTCACHE)/ascii/ascii-any.ssa: $(testlib_ascii_any_srcs) $(testlib_rt) $(testlib_strings_$(PLATFORM))
   2918 	@printf 'HAREC \t$@\n'
   2919 	@mkdir -p $(TESTCACHE)/ascii
   2920 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nascii \
   2921 		-t$(TESTCACHE)/ascii/ascii.td $(testlib_ascii_any_srcs)
   2922 
   2923 # bufio (+any)
   2924 testlib_bufio_any_srcs = \
   2925 	$(STDLIB)/bufio/buffered.ha \
   2926 	$(STDLIB)/bufio/memstream.ha \
   2927 	$(STDLIB)/bufio/scanner.ha
   2928 
   2929 $(TESTCACHE)/bufio/bufio-any.ssa: $(testlib_bufio_any_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_types_$(PLATFORM))
   2930 	@printf 'HAREC \t$@\n'
   2931 	@mkdir -p $(TESTCACHE)/bufio
   2932 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nbufio \
   2933 		-t$(TESTCACHE)/bufio/bufio.td $(testlib_bufio_any_srcs)
   2934 
   2935 # bytes (+any)
   2936 testlib_bytes_any_srcs = \
   2937 	$(STDLIB)/bytes/contains.ha \
   2938 	$(STDLIB)/bytes/equal.ha \
   2939 	$(STDLIB)/bytes/index.ha \
   2940 	$(STDLIB)/bytes/reverse.ha \
   2941 	$(STDLIB)/bytes/tokenize.ha \
   2942 	$(STDLIB)/bytes/trim.ha \
   2943 	$(STDLIB)/bytes/two_way.ha \
   2944 	$(STDLIB)/bytes/zero.ha
   2945 
   2946 $(TESTCACHE)/bytes/bytes-any.ssa: $(testlib_bytes_any_srcs) $(testlib_rt) $(testlib_types_$(PLATFORM))
   2947 	@printf 'HAREC \t$@\n'
   2948 	@mkdir -p $(TESTCACHE)/bytes
   2949 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nbytes \
   2950 		-t$(TESTCACHE)/bytes/bytes.td $(testlib_bytes_any_srcs)
   2951 
   2952 # crypto (+any)
   2953 testlib_crypto_any_srcs = \
   2954 	$(STDLIB)/crypto/authenc.ha \
   2955 	$(STDLIB)/crypto/keyderiv.ha \
   2956 	$(STDLIB)/crypto/+test/authenc.ha
   2957 
   2958 $(TESTCACHE)/crypto/crypto-any.ssa: $(testlib_crypto_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_crypto_argon2_$(PLATFORM)) $(testlib_crypto_chacha_$(PLATFORM)) $(testlib_crypto_cihper_$(PLATFORM)) $(testlib_crypto_poly1305_$(PLATFORM)) $(testlib_crypto_mac_$(PLATFORM)) $(testlib_crypto_math_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   2959 	@printf 'HAREC \t$@\n'
   2960 	@mkdir -p $(TESTCACHE)/crypto
   2961 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto \
   2962 		-t$(TESTCACHE)/crypto/crypto.td $(testlib_crypto_any_srcs)
   2963 
   2964 # crypto::aes (+any)
   2965 testlib_crypto_aes_any_srcs = \
   2966 	$(STDLIB)/crypto/aes/aes_ct64.ha \
   2967 	$(STDLIB)/crypto/aes/ct64+test.ha \
   2968 	$(STDLIB)/crypto/aes/cbc+test.ha \
   2969 	$(STDLIB)/crypto/aes/ctr+test.ha \
   2970 	$(STDLIB)/crypto/aes/+test/gcm.ha
   2971 
   2972 $(TESTCACHE)/crypto/aes/crypto_aes-any.ssa: $(testlib_crypto_aes_any_srcs) $(testlib_rt) $(testlib_bufio_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_cipher_$(PLATFORM)) $(testlib_crypto_math_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_rt_$(PLATFORM))
   2973 	@printf 'HAREC \t$@\n'
   2974 	@mkdir -p $(TESTCACHE)/crypto/aes
   2975 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::aes \
   2976 		-t$(TESTCACHE)/crypto/aes/crypto_aes.td $(testlib_crypto_aes_any_srcs)
   2977 
   2978 # crypto::aes::xts (+any)
   2979 testlib_crypto_aes_xts_any_srcs = \
   2980 	$(STDLIB)/crypto/aes/xts/xts.ha \
   2981 	$(STDLIB)/crypto/aes/xts/+test.ha
   2982 
   2983 $(TESTCACHE)/crypto/aes/xts/crypto_aes_xts-any.ssa: $(testlib_crypto_aes_xts_any_srcs) $(testlib_rt) $(testlib_crypto_aes_$(PLATFORM)) $(testlib_crypto_cipher_$(PLATFORM)) $(testlib_bytes_$(PLATFORM))
   2984 	@printf 'HAREC \t$@\n'
   2985 	@mkdir -p $(TESTCACHE)/crypto/aes/xts
   2986 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::aes::xts \
   2987 		-t$(TESTCACHE)/crypto/aes/xts/crypto_aes_xts.td $(testlib_crypto_aes_xts_any_srcs)
   2988 
   2989 # crypto::argon2 (+any)
   2990 testlib_crypto_argon2_any_srcs = \
   2991 	$(STDLIB)/crypto/argon2/argon2.ha \
   2992 	$(STDLIB)/crypto/argon2/+test.ha
   2993 
   2994 $(TESTCACHE)/crypto/argon2/crypto_argon2-any.ssa: $(testlib_crypto_argon2_any_srcs) $(testlib_rt) $(testlib_bufio_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_blake2b_$(PLATFORM)) $(testlib_crypto_math_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_rt_$(PLATFORM)) $(testlib_types_$(PLATFORM))
   2995 	@printf 'HAREC \t$@\n'
   2996 	@mkdir -p $(TESTCACHE)/crypto/argon2
   2997 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::argon2 \
   2998 		-t$(TESTCACHE)/crypto/argon2/crypto_argon2.td $(testlib_crypto_argon2_any_srcs)
   2999 
   3000 # crypto::bcrypt (+any)
   3001 testlib_crypto_bcrypt_any_srcs = \
   3002 	$(STDLIB)/crypto/bcrypt/bcrypt.ha \
   3003 	$(STDLIB)/crypto/bcrypt/base64.ha \
   3004 	$(STDLIB)/crypto/bcrypt/+test.ha
   3005 
   3006 $(TESTCACHE)/crypto/bcrypt/crypto_bcrypt-any.ssa: $(testlib_crypto_bcrypt_any_srcs) $(testlib_rt) $(testlib_crypto_blowfish_$(PLATFORM)) $(testlib_encoding_base64_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_crypto_$(PLATFORM)) $(testlib_crypto_random_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_crypto_cipher_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_strconv_$(PLATFORM))
   3007 	@printf 'HAREC \t$@\n'
   3008 	@mkdir -p $(TESTCACHE)/crypto/bcrypt
   3009 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::bcrypt \
   3010 		-t$(TESTCACHE)/crypto/bcrypt/crypto_bcrypt.td $(testlib_crypto_bcrypt_any_srcs)
   3011 
   3012 # crypto::blake2b (+any)
   3013 testlib_crypto_blake2b_any_srcs = \
   3014 	$(STDLIB)/crypto/blake2b/blake2b.ha \
   3015 	$(STDLIB)/crypto/blake2b/+test.ha \
   3016 	$(STDLIB)/crypto/blake2b/vectors+test.ha
   3017 
   3018 $(TESTCACHE)/crypto/blake2b/crypto_blake2b-any.ssa: $(testlib_crypto_blake2b_any_srcs) $(testlib_rt) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_crypto_math_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_bytes_$(PLATFORM))
   3019 	@printf 'HAREC \t$@\n'
   3020 	@mkdir -p $(TESTCACHE)/crypto/blake2b
   3021 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::blake2b \
   3022 		-t$(TESTCACHE)/crypto/blake2b/crypto_blake2b.td $(testlib_crypto_blake2b_any_srcs)
   3023 
   3024 # crypto::blowfish (+any)
   3025 testlib_crypto_blowfish_any_srcs = \
   3026 	$(STDLIB)/crypto/blowfish/blowfish.ha \
   3027 	$(STDLIB)/crypto/blowfish/const.ha \
   3028 	$(STDLIB)/crypto/blowfish/+test.ha
   3029 
   3030 $(TESTCACHE)/crypto/blowfish/crypto_blowfish-any.ssa: $(testlib_crypto_blowfish_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_cipher_$(PLATFORM)) $(testlib_endian_$(PLATFORM))
   3031 	@printf 'HAREC \t$@\n'
   3032 	@mkdir -p $(TESTCACHE)/crypto/blowfish
   3033 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::blowfish \
   3034 		-t$(TESTCACHE)/crypto/blowfish/crypto_blowfish.td $(testlib_crypto_blowfish_any_srcs)
   3035 
   3036 # crypto::chacha (+any)
   3037 testlib_crypto_chacha_any_srcs = \
   3038 	$(STDLIB)/crypto/chacha/chacha20.ha \
   3039 	$(STDLIB)/crypto/chacha/+test.ha
   3040 
   3041 $(TESTCACHE)/crypto/chacha/crypto_chacha-any.ssa: $(testlib_crypto_chacha_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_cipher_$(PLATFORM)) $(testlib_crypto_math_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   3042 	@printf 'HAREC \t$@\n'
   3043 	@mkdir -p $(TESTCACHE)/crypto/chacha
   3044 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::chacha \
   3045 		-t$(TESTCACHE)/crypto/chacha/crypto_chacha.td $(testlib_crypto_chacha_any_srcs)
   3046 
   3047 # crypto::cipher (+any)
   3048 testlib_crypto_cipher_any_srcs = \
   3049 	$(STDLIB)/crypto/cipher/cipher.ha \
   3050 	$(STDLIB)/crypto/cipher/block.ha \
   3051 	$(STDLIB)/crypto/cipher/cbc.ha \
   3052 	$(STDLIB)/crypto/cipher/ctr.ha \
   3053 	$(STDLIB)/crypto/cipher/stream.ha \
   3054 	$(STDLIB)/crypto/cipher/gcm.ha \
   3055 	$(STDLIB)/crypto/cipher/ghash.ha
   3056 
   3057 $(TESTCACHE)/crypto/cipher/crypto_cipher-any.ssa: $(testlib_crypto_cipher_any_srcs) $(testlib_rt) $(testlib_crypto_math_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_types_$(PLATFORM))
   3058 	@printf 'HAREC \t$@\n'
   3059 	@mkdir -p $(TESTCACHE)/crypto/cipher
   3060 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::cipher \
   3061 		-t$(TESTCACHE)/crypto/cipher/crypto_cipher.td $(testlib_crypto_cipher_any_srcs)
   3062 
   3063 # crypto::hkdf (+any)
   3064 testlib_crypto_hkdf_any_srcs = \
   3065 	$(STDLIB)/crypto/hkdf/hkdf.ha \
   3066 	$(STDLIB)/crypto/hkdf/+test.ha
   3067 
   3068 $(TESTCACHE)/crypto/hkdf/crypto_hkdf-any.ssa: $(testlib_crypto_hkdf_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_hmac_$(PLATFORM)) $(testlib_crypto_mac_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_crypto_sha1_$(PLATFORM)) $(testlib_crypto_sha256_$(PLATFORM))
   3069 	@printf 'HAREC \t$@\n'
   3070 	@mkdir -p $(TESTCACHE)/crypto/hkdf
   3071 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::hkdf \
   3072 		-t$(TESTCACHE)/crypto/hkdf/crypto_hkdf.td $(testlib_crypto_hkdf_any_srcs)
   3073 
   3074 # crypto::hmac (+any)
   3075 testlib_crypto_hmac_any_srcs = \
   3076 	$(STDLIB)/crypto/hmac/hmac.ha \
   3077 	$(STDLIB)/crypto/hmac/sha1.ha \
   3078 	$(STDLIB)/crypto/hmac/sha256.ha \
   3079 	$(STDLIB)/crypto/hmac/+test.ha
   3080 
   3081 $(TESTCACHE)/crypto/hmac/crypto_hmac-any.ssa: $(testlib_crypto_hmac_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_mac_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_crypto_sha1_$(PLATFORM)) $(testlib_crypto_sha256_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3082 	@printf 'HAREC \t$@\n'
   3083 	@mkdir -p $(TESTCACHE)/crypto/hmac
   3084 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::hmac \
   3085 		-t$(TESTCACHE)/crypto/hmac/crypto_hmac.td $(testlib_crypto_hmac_any_srcs)
   3086 
   3087 # crypto::mac (+any)
   3088 testlib_crypto_mac_any_srcs = \
   3089 	$(STDLIB)/crypto/mac/mac.ha
   3090 
   3091 $(TESTCACHE)/crypto/mac/crypto_mac-any.ssa: $(testlib_crypto_mac_any_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM))
   3092 	@printf 'HAREC \t$@\n'
   3093 	@mkdir -p $(TESTCACHE)/crypto/mac
   3094 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::mac \
   3095 		-t$(TESTCACHE)/crypto/mac/crypto_mac.td $(testlib_crypto_mac_any_srcs)
   3096 
   3097 # crypto::math (+any)
   3098 testlib_crypto_math_any_srcs = \
   3099 	$(STDLIB)/crypto/math/arithm.ha \
   3100 	$(STDLIB)/crypto/math/bits.ha
   3101 
   3102 $(TESTCACHE)/crypto/math/crypto_math-any.ssa: $(testlib_crypto_math_any_srcs) $(testlib_rt)
   3103 	@printf 'HAREC \t$@\n'
   3104 	@mkdir -p $(TESTCACHE)/crypto/math
   3105 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::math \
   3106 		-t$(TESTCACHE)/crypto/math/crypto_math.td $(testlib_crypto_math_any_srcs)
   3107 
   3108 # crypto::random (+linux)
   3109 testlib_crypto_random_linux_srcs = \
   3110 	$(STDLIB)/crypto/random/+linux.ha \
   3111 	$(STDLIB)/crypto/random/random.ha
   3112 
   3113 $(TESTCACHE)/crypto/random/crypto_random-linux.ssa: $(testlib_crypto_random_linux_srcs) $(testlib_rt) $(testlib_rt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_errors_$(PLATFORM))
   3114 	@printf 'HAREC \t$@\n'
   3115 	@mkdir -p $(TESTCACHE)/crypto/random
   3116 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::random \
   3117 		-t$(TESTCACHE)/crypto/random/crypto_random.td $(testlib_crypto_random_linux_srcs)
   3118 
   3119 # crypto::random (+freebsd)
   3120 testlib_crypto_random_freebsd_srcs = \
   3121 	$(STDLIB)/crypto/random/+freebsd.ha \
   3122 	$(STDLIB)/crypto/random/random.ha
   3123 
   3124 $(TESTCACHE)/crypto/random/crypto_random-freebsd.ssa: $(testlib_crypto_random_freebsd_srcs) $(testlib_rt) $(testlib_rt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_errors_$(PLATFORM))
   3125 	@printf 'HAREC \t$@\n'
   3126 	@mkdir -p $(TESTCACHE)/crypto/random
   3127 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::random \
   3128 		-t$(TESTCACHE)/crypto/random/crypto_random.td $(testlib_crypto_random_freebsd_srcs)
   3129 
   3130 # crypto::poly1305 (+any)
   3131 testlib_crypto_poly1305_any_srcs = \
   3132 	$(STDLIB)/crypto/poly1305/poly1305.ha \
   3133 	$(STDLIB)/crypto/poly1305/+test.ha
   3134 
   3135 $(TESTCACHE)/crypto/poly1305/crypto_poly1305-any.ssa: $(testlib_crypto_poly1305_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_mac_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   3136 	@printf 'HAREC \t$@\n'
   3137 	@mkdir -p $(TESTCACHE)/crypto/poly1305
   3138 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::poly1305 \
   3139 		-t$(TESTCACHE)/crypto/poly1305/crypto_poly1305.td $(testlib_crypto_poly1305_any_srcs)
   3140 
   3141 # crypto::salsa (+any)
   3142 testlib_crypto_salsa_any_srcs = \
   3143 	$(STDLIB)/crypto/salsa/salsa20.ha \
   3144 	$(STDLIB)/crypto/salsa/+test.ha
   3145 
   3146 $(TESTCACHE)/crypto/salsa/crypto_salsa-any.ssa: $(testlib_crypto_salsa_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_crypto_cipher_$(PLATFORM)) $(testlib_crypto_math_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_types_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   3147 	@printf 'HAREC \t$@\n'
   3148 	@mkdir -p $(TESTCACHE)/crypto/salsa
   3149 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::salsa \
   3150 		-t$(TESTCACHE)/crypto/salsa/crypto_salsa.td $(testlib_crypto_salsa_any_srcs)
   3151 
   3152 # crypto::sha1 (+any)
   3153 testlib_crypto_sha1_any_srcs = \
   3154 	$(STDLIB)/crypto/sha1/sha1.ha \
   3155 	$(STDLIB)/crypto/sha1/+test.ha
   3156 
   3157 $(TESTCACHE)/crypto/sha1/crypto_sha1-any.ssa: $(testlib_crypto_sha1_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM))
   3158 	@printf 'HAREC \t$@\n'
   3159 	@mkdir -p $(TESTCACHE)/crypto/sha1
   3160 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::sha1 \
   3161 		-t$(TESTCACHE)/crypto/sha1/crypto_sha1.td $(testlib_crypto_sha1_any_srcs)
   3162 
   3163 # crypto::sha256 (+any)
   3164 testlib_crypto_sha256_any_srcs = \
   3165 	$(STDLIB)/crypto/sha256/sha256.ha \
   3166 	$(STDLIB)/crypto/sha256/+test.ha
   3167 
   3168 $(TESTCACHE)/crypto/sha256/crypto_sha256-any.ssa: $(testlib_crypto_sha256_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM))
   3169 	@printf 'HAREC \t$@\n'
   3170 	@mkdir -p $(TESTCACHE)/crypto/sha256
   3171 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::sha256 \
   3172 		-t$(TESTCACHE)/crypto/sha256/crypto_sha256.td $(testlib_crypto_sha256_any_srcs)
   3173 
   3174 # crypto::sha512 (+any)
   3175 testlib_crypto_sha512_any_srcs = \
   3176 	$(STDLIB)/crypto/sha512/sha512.ha \
   3177 	$(STDLIB)/crypto/sha512/+test.ha
   3178 
   3179 $(TESTCACHE)/crypto/sha512/crypto_sha512-any.ssa: $(testlib_crypto_sha512_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM))
   3180 	@printf 'HAREC \t$@\n'
   3181 	@mkdir -p $(TESTCACHE)/crypto/sha512
   3182 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::sha512 \
   3183 		-t$(TESTCACHE)/crypto/sha512/crypto_sha512.td $(testlib_crypto_sha512_any_srcs)
   3184 
   3185 # crypto::curve25519 (+any)
   3186 testlib_crypto_curve25519_any_srcs = \
   3187 	$(STDLIB)/crypto/curve25519/curve25519.ha \
   3188 	$(STDLIB)/crypto/curve25519/+test.ha
   3189 
   3190 $(TESTCACHE)/crypto/curve25519/crypto_curve25519-any.ssa: $(testlib_crypto_curve25519_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_crypto_random_$(PLATFORM))
   3191 	@printf 'HAREC \t$@\n'
   3192 	@mkdir -p $(TESTCACHE)/crypto/curve25519
   3193 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::curve25519 \
   3194 		-t$(TESTCACHE)/crypto/curve25519/crypto_curve25519.td $(testlib_crypto_curve25519_any_srcs)
   3195 
   3196 # crypto::ed25519 (+any)
   3197 testlib_crypto_ed25519_any_srcs = \
   3198 	$(STDLIB)/crypto/ed25519/ed25519.ha \
   3199 	$(STDLIB)/crypto/ed25519/edwards25519.ha \
   3200 	$(STDLIB)/crypto/ed25519/+test.ha
   3201 
   3202 $(TESTCACHE)/crypto/ed25519/crypto_ed25519-any.ssa: $(testlib_crypto_ed25519_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_sha512_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3203 	@printf 'HAREC \t$@\n'
   3204 	@mkdir -p $(TESTCACHE)/crypto/ed25519
   3205 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::ed25519 \
   3206 		-t$(TESTCACHE)/crypto/ed25519/crypto_ed25519.td $(testlib_crypto_ed25519_any_srcs)
   3207 
   3208 # crypto::x25519 (+any)
   3209 testlib_crypto_x25519_any_srcs = \
   3210 	$(STDLIB)/crypto/x25519/x25519.ha \
   3211 	$(STDLIB)/crypto/x25519/+test.ha
   3212 
   3213 $(TESTCACHE)/crypto/x25519/crypto_x25519-any.ssa: $(testlib_crypto_x25519_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_crypto_curve25519_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_crypto_random_$(PLATFORM))
   3214 	@printf 'HAREC \t$@\n'
   3215 	@mkdir -p $(TESTCACHE)/crypto/x25519
   3216 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::x25519 \
   3217 		-t$(TESTCACHE)/crypto/x25519/crypto_x25519.td $(testlib_crypto_x25519_any_srcs)
   3218 
   3219 # datetime (+linux)
   3220 testlib_datetime_linux_srcs = \
   3221 	$(STDLIB)/datetime/arithmetic.ha \
   3222 	$(STDLIB)/datetime/chronology.ha \
   3223 	$(STDLIB)/datetime/date.ha \
   3224 	$(STDLIB)/datetime/datetime.ha \
   3225 	$(STDLIB)/datetime/format.ha \
   3226 	$(STDLIB)/datetime/parse.ha \
   3227 	$(STDLIB)/datetime/time.ha \
   3228 	$(STDLIB)/datetime/timezone.ha
   3229 
   3230 $(TESTCACHE)/datetime/datetime-linux.ssa: $(testlib_datetime_linux_srcs) $(testlib_rt) $(testlib_errors_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_time_chrono_$(PLATFORM))
   3231 	@printf 'HAREC \t$@\n'
   3232 	@mkdir -p $(TESTCACHE)/datetime
   3233 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ndatetime \
   3234 		-t$(TESTCACHE)/datetime/datetime.td $(testlib_datetime_linux_srcs)
   3235 
   3236 # datetime (+freebsd)
   3237 testlib_datetime_freebsd_srcs = \
   3238 	$(STDLIB)/datetime/arithmetic.ha \
   3239 	$(STDLIB)/datetime/chronology.ha \
   3240 	$(STDLIB)/datetime/date.ha \
   3241 	$(STDLIB)/datetime/datetime.ha \
   3242 	$(STDLIB)/datetime/format.ha \
   3243 	$(STDLIB)/datetime/parse.ha \
   3244 	$(STDLIB)/datetime/time.ha \
   3245 	$(STDLIB)/datetime/timezone.ha
   3246 
   3247 $(TESTCACHE)/datetime/datetime-freebsd.ssa: $(testlib_datetime_freebsd_srcs) $(testlib_rt) $(testlib_errors_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_time_chrono_$(PLATFORM))
   3248 	@printf 'HAREC \t$@\n'
   3249 	@mkdir -p $(TESTCACHE)/datetime
   3250 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ndatetime \
   3251 		-t$(TESTCACHE)/datetime/datetime.td $(testlib_datetime_freebsd_srcs)
   3252 
   3253 # dirs (+any)
   3254 testlib_dirs_any_srcs = \
   3255 	$(STDLIB)/dirs/xdg.ha
   3256 
   3257 $(TESTCACHE)/dirs/dirs-any.ssa: $(testlib_dirs_any_srcs) $(testlib_rt) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_path_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_unix_$(PLATFORM))
   3258 	@printf 'HAREC \t$@\n'
   3259 	@mkdir -p $(TESTCACHE)/dirs
   3260 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ndirs \
   3261 		-t$(TESTCACHE)/dirs/dirs.td $(testlib_dirs_any_srcs)
   3262 
   3263 # encoding::base64 (+any)
   3264 testlib_encoding_base64_any_srcs = \
   3265 	$(STDLIB)/encoding/base64/base64.ha
   3266 
   3267 $(TESTCACHE)/encoding/base64/encoding_base64-any.ssa: $(testlib_encoding_base64_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3268 	@printf 'HAREC \t$@\n'
   3269 	@mkdir -p $(TESTCACHE)/encoding/base64
   3270 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::base64 \
   3271 		-t$(TESTCACHE)/encoding/base64/encoding_base64.td $(testlib_encoding_base64_any_srcs)
   3272 
   3273 # encoding::base32 (+any)
   3274 testlib_encoding_base32_any_srcs = \
   3275 	$(STDLIB)/encoding/base32/base32.ha
   3276 
   3277 $(TESTCACHE)/encoding/base32/encoding_base32-any.ssa: $(testlib_encoding_base32_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_os_$(PLATFORM))
   3278 	@printf 'HAREC \t$@\n'
   3279 	@mkdir -p $(TESTCACHE)/encoding/base32
   3280 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::base32 \
   3281 		-t$(TESTCACHE)/encoding/base32/encoding_base32.td $(testlib_encoding_base32_any_srcs)
   3282 
   3283 # encoding::hex (+any)
   3284 testlib_encoding_hex_any_srcs = \
   3285 	$(STDLIB)/encoding/hex/hex.ha
   3286 
   3287 $(TESTCACHE)/encoding/hex/encoding_hex-any.ssa: $(testlib_encoding_hex_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3288 	@printf 'HAREC \t$@\n'
   3289 	@mkdir -p $(TESTCACHE)/encoding/hex
   3290 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::hex \
   3291 		-t$(TESTCACHE)/encoding/hex/encoding_hex.td $(testlib_encoding_hex_any_srcs)
   3292 
   3293 # encoding::json (+any)
   3294 testlib_encoding_json_any_srcs = \
   3295 	$(STDLIB)/encoding/json/types.ha \
   3296 	$(STDLIB)/encoding/json/lex.ha \
   3297 	$(STDLIB)/encoding/json/load.ha \
   3298 	$(STDLIB)/encoding/json/dump.ha \
   3299 	$(STDLIB)/encoding/json/value.ha \
   3300 	$(STDLIB)/encoding/json/+test/lexer.ha \
   3301 	$(STDLIB)/encoding/json/+test/load.ha \
   3302 	$(STDLIB)/encoding/json/+test/value.ha
   3303 
   3304 $(TESTCACHE)/encoding/json/encoding_json-any.ssa: $(testlib_encoding_json_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_hash_fnv_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_types_$(PLATFORM))
   3305 	@printf 'HAREC \t$@\n'
   3306 	@mkdir -p $(TESTCACHE)/encoding/json
   3307 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::json \
   3308 		-t$(TESTCACHE)/encoding/json/encoding_json.td $(testlib_encoding_json_any_srcs)
   3309 
   3310 # encoding::pem (+any)
   3311 testlib_encoding_pem_any_srcs = \
   3312 	$(STDLIB)/encoding/pem/pem.ha \
   3313 	$(STDLIB)/encoding/pem/+test.ha
   3314 
   3315 $(TESTCACHE)/encoding/pem/encoding_pem-any.ssa: $(testlib_encoding_pem_any_srcs) $(testlib_rt) $(testlib_strings_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_encoding_base64_$(PLATFORM)) $(testlib_ascii_$(PLATFORM)) $(testlib_os_$(PLATFORM))
   3316 	@printf 'HAREC \t$@\n'
   3317 	@mkdir -p $(TESTCACHE)/encoding/pem
   3318 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::pem \
   3319 		-t$(TESTCACHE)/encoding/pem/encoding_pem.td $(testlib_encoding_pem_any_srcs)
   3320 
   3321 # encoding::utf8 (+any)
   3322 testlib_encoding_utf8_any_srcs = \
   3323 	$(STDLIB)/encoding/utf8/decode.ha \
   3324 	$(STDLIB)/encoding/utf8/encode.ha \
   3325 	$(STDLIB)/encoding/utf8/rune.ha
   3326 
   3327 $(TESTCACHE)/encoding/utf8/encoding_utf8-any.ssa: $(testlib_encoding_utf8_any_srcs) $(testlib_rt) $(testlib_types_$(PLATFORM))
   3328 	@printf 'HAREC \t$@\n'
   3329 	@mkdir -p $(TESTCACHE)/encoding/utf8
   3330 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::utf8 \
   3331 		-t$(TESTCACHE)/encoding/utf8/encoding_utf8.td $(testlib_encoding_utf8_any_srcs)
   3332 
   3333 # endian (+any)
   3334 testlib_endian_any_srcs = \
   3335 	$(STDLIB)/endian/big.ha \
   3336 	$(STDLIB)/endian/network.ha \
   3337 	$(STDLIB)/endian/little.ha \
   3338 	$(STDLIB)/endian/endian.ha \
   3339 	$(STDLIB)/endian/host+$(ARCH).ha
   3340 
   3341 $(TESTCACHE)/endian/endian-any.ssa: $(testlib_endian_any_srcs) $(testlib_rt)
   3342 	@printf 'HAREC \t$@\n'
   3343 	@mkdir -p $(TESTCACHE)/endian
   3344 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nendian \
   3345 		-t$(TESTCACHE)/endian/endian.td $(testlib_endian_any_srcs)
   3346 
   3347 # errors (+any)
   3348 testlib_errors_any_srcs = \
   3349 	$(STDLIB)/errors/common.ha \
   3350 	$(STDLIB)/errors/opaque.ha \
   3351 	$(STDLIB)/errors/string.ha \
   3352 	$(STDLIB)/errors/rt.ha
   3353 
   3354 $(TESTCACHE)/errors/errors-any.ssa: $(testlib_errors_any_srcs) $(testlib_rt)
   3355 	@printf 'HAREC \t$@\n'
   3356 	@mkdir -p $(TESTCACHE)/errors
   3357 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nerrors \
   3358 		-t$(TESTCACHE)/errors/errors.td $(testlib_errors_any_srcs)
   3359 
   3360 # fmt (+any)
   3361 testlib_fmt_any_srcs = \
   3362 	$(STDLIB)/fmt/fmt.ha
   3363 
   3364 $(TESTCACHE)/fmt/fmt-any.ssa: $(testlib_fmt_any_srcs) $(testlib_rt) $(testlib_bufio_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_types_$(PLATFORM))
   3365 	@printf 'HAREC \t$@\n'
   3366 	@mkdir -p $(TESTCACHE)/fmt
   3367 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nfmt \
   3368 		-t$(TESTCACHE)/fmt/fmt.td $(testlib_fmt_any_srcs)
   3369 
   3370 # fnmatch (+any)
   3371 testlib_fnmatch_any_srcs = \
   3372 	$(STDLIB)/fnmatch/fnmatch.ha \
   3373 	$(STDLIB)/fnmatch/+test.ha
   3374 
   3375 $(TESTCACHE)/fnmatch/fnmatch-any.ssa: $(testlib_fnmatch_any_srcs) $(testlib_rt) $(testlib_strings_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_sort_$(PLATFORM)) $(testlib_ascii_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_fmt_$(PLATFORM))
   3376 	@printf 'HAREC \t$@\n'
   3377 	@mkdir -p $(TESTCACHE)/fnmatch
   3378 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nfnmatch \
   3379 		-t$(TESTCACHE)/fnmatch/fnmatch.td $(testlib_fnmatch_any_srcs)
   3380 
   3381 # format::elf (+any)
   3382 testlib_format_elf_any_srcs = \
   3383 	$(STDLIB)/format/elf/+$(ARCH).ha \
   3384 	$(STDLIB)/format/elf/+$(PLATFORM).ha \
   3385 	$(STDLIB)/format/elf/types.ha
   3386 
   3387 $(TESTCACHE)/format/elf/format_elf-any.ssa: $(testlib_format_elf_any_srcs) $(testlib_rt)
   3388 	@printf 'HAREC \t$@\n'
   3389 	@mkdir -p $(TESTCACHE)/format/elf
   3390 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nformat::elf \
   3391 		-t$(TESTCACHE)/format/elf/format_elf.td $(testlib_format_elf_any_srcs)
   3392 
   3393 # format::ini (+any)
   3394 testlib_format_ini_any_srcs = \
   3395 	$(STDLIB)/format/ini/scan.ha \
   3396 	$(STDLIB)/format/ini/types.ha \
   3397 	$(STDLIB)/format/ini/+test.ha
   3398 
   3399 $(TESTCACHE)/format/ini/format_ini-any.ssa: $(testlib_format_ini_any_srcs) $(testlib_rt) $(testlib_bufio_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3400 	@printf 'HAREC \t$@\n'
   3401 	@mkdir -p $(TESTCACHE)/format/ini
   3402 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nformat::ini \
   3403 		-t$(TESTCACHE)/format/ini/format_ini.td $(testlib_format_ini_any_srcs)
   3404 
   3405 # format::tar (+any)
   3406 testlib_format_tar_any_srcs = \
   3407 	$(STDLIB)/format/tar/types.ha \
   3408 	$(STDLIB)/format/tar/reader.ha
   3409 
   3410 $(TESTCACHE)/format/tar/format_tar-any.ssa: $(testlib_format_tar_any_srcs) $(testlib_rt) $(testlib_bufio_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM))
   3411 	@printf 'HAREC \t$@\n'
   3412 	@mkdir -p $(TESTCACHE)/format/tar
   3413 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nformat::tar \
   3414 		-t$(TESTCACHE)/format/tar/format_tar.td $(testlib_format_tar_any_srcs)
   3415 
   3416 # fs (+any)
   3417 testlib_fs_any_srcs = \
   3418 	$(STDLIB)/fs/types.ha \
   3419 	$(STDLIB)/fs/fs.ha \
   3420 	$(STDLIB)/fs/util.ha
   3421 
   3422 $(TESTCACHE)/fs/fs-any.ssa: $(testlib_fs_any_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_path_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_errors_$(PLATFORM))
   3423 	@printf 'HAREC \t$@\n'
   3424 	@mkdir -p $(TESTCACHE)/fs
   3425 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nfs \
   3426 		-t$(TESTCACHE)/fs/fs.td $(testlib_fs_any_srcs)
   3427 
   3428 # getopt (+any)
   3429 testlib_getopt_any_srcs = \
   3430 	$(STDLIB)/getopt/getopts.ha
   3431 
   3432 $(TESTCACHE)/getopt/getopt-any.ssa: $(testlib_getopt_any_srcs) $(testlib_rt) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3433 	@printf 'HAREC \t$@\n'
   3434 	@mkdir -p $(TESTCACHE)/getopt
   3435 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ngetopt \
   3436 		-t$(TESTCACHE)/getopt/getopt.td $(testlib_getopt_any_srcs)
   3437 
   3438 # glob (+any)
   3439 testlib_glob_any_srcs = \
   3440 	$(STDLIB)/glob/glob.ha \
   3441 	$(STDLIB)/glob/+test.ha
   3442 
   3443 $(TESTCACHE)/glob/glob-any.ssa: $(testlib_glob_any_srcs) $(testlib_rt) $(testlib_fnmatch_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_sort_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM))
   3444 	@printf 'HAREC \t$@\n'
   3445 	@mkdir -p $(TESTCACHE)/glob
   3446 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nglob \
   3447 		-t$(TESTCACHE)/glob/glob.td $(testlib_glob_any_srcs)
   3448 
   3449 # hare::ast (+any)
   3450 testlib_hare_ast_any_srcs = \
   3451 	$(STDLIB)/hare/ast/decl.ha \
   3452 	$(STDLIB)/hare/ast/expr.ha \
   3453 	$(STDLIB)/hare/ast/ident.ha \
   3454 	$(STDLIB)/hare/ast/import.ha \
   3455 	$(STDLIB)/hare/ast/type.ha \
   3456 	$(STDLIB)/hare/ast/unit.ha
   3457 
   3458 $(TESTCACHE)/hare/ast/hare_ast-any.ssa: $(testlib_hare_ast_any_srcs) $(testlib_rt) $(testlib_hare_lex_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3459 	@printf 'HAREC \t$@\n'
   3460 	@mkdir -p $(TESTCACHE)/hare/ast
   3461 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::ast \
   3462 		-t$(TESTCACHE)/hare/ast/hare_ast.td $(testlib_hare_ast_any_srcs)
   3463 
   3464 # hare::lex (+any)
   3465 testlib_hare_lex_any_srcs = \
   3466 	$(STDLIB)/hare/lex/token.ha \
   3467 	$(STDLIB)/hare/lex/lex.ha \
   3468 	$(STDLIB)/hare/lex/+test.ha
   3469 
   3470 $(TESTCACHE)/hare/lex/hare_lex-any.ssa: $(testlib_hare_lex_any_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_sort_$(PLATFORM)) $(testlib_strio_$(PLATFORM))
   3471 	@printf 'HAREC \t$@\n'
   3472 	@mkdir -p $(TESTCACHE)/hare/lex
   3473 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::lex \
   3474 		-t$(TESTCACHE)/hare/lex/hare_lex.td $(testlib_hare_lex_any_srcs)
   3475 
   3476 # hare::module (+any)
   3477 testlib_hare_module_any_srcs = \
   3478 	$(STDLIB)/hare/module/types.ha \
   3479 	$(STDLIB)/hare/module/context.ha \
   3480 	$(STDLIB)/hare/module/scan.ha \
   3481 	$(STDLIB)/hare/module/manifest.ha \
   3482 	$(STDLIB)/hare/module/walk.ha
   3483 
   3484 $(TESTCACHE)/hare/module/hare_module-any.ssa: $(testlib_hare_module_any_srcs) $(testlib_rt) $(testlib_hare_ast_$(PLATFORM)) $(testlib_hare_lex_$(PLATFORM)) $(testlib_hare_parse_$(PLATFORM)) $(testlib_hare_unparse_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_crypto_sha256_$(PLATFORM)) $(testlib_dirs_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_ascii_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_slices_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_sort_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_temp_$(PLATFORM))
   3485 	@printf 'HAREC \t$@\n'
   3486 	@mkdir -p $(TESTCACHE)/hare/module
   3487 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::module \
   3488 		-t$(TESTCACHE)/hare/module/hare_module.td $(testlib_hare_module_any_srcs)
   3489 
   3490 # hare::parse (+any)
   3491 testlib_hare_parse_any_srcs = \
   3492 	$(STDLIB)/hare/parse/decl.ha \
   3493 	$(STDLIB)/hare/parse/expr.ha \
   3494 	$(STDLIB)/hare/parse/ident.ha \
   3495 	$(STDLIB)/hare/parse/import.ha \
   3496 	$(STDLIB)/hare/parse/parse.ha \
   3497 	$(STDLIB)/hare/parse/type.ha \
   3498 	$(STDLIB)/hare/parse/unit.ha \
   3499 	$(STDLIB)/hare/parse/+test/expr.ha \
   3500 	$(STDLIB)/hare/parse/+test/ident.ha \
   3501 	$(STDLIB)/hare/parse/+test/loc.ha \
   3502 	$(STDLIB)/hare/parse/+test/roundtrip.ha \
   3503 	$(STDLIB)/hare/parse/+test/types.ha \
   3504 	$(STDLIB)/hare/parse/+test/unit.ha
   3505 
   3506 $(TESTCACHE)/hare/parse/hare_parse-any.ssa: $(testlib_hare_parse_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_hare_ast_$(PLATFORM)) $(testlib_hare_lex_$(PLATFORM)) $(testlib_hare_unparse_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_math_$(PLATFORM))
   3507 	@printf 'HAREC \t$@\n'
   3508 	@mkdir -p $(TESTCACHE)/hare/parse
   3509 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::parse \
   3510 		-t$(TESTCACHE)/hare/parse/hare_parse.td $(testlib_hare_parse_any_srcs)
   3511 
   3512 # hare::types (+any)
   3513 testlib_hare_types_any_srcs = \
   3514 	$(STDLIB)/hare/types/arch.ha \
   3515 	$(STDLIB)/hare/types/builtins.ha \
   3516 	$(STDLIB)/hare/types/class.ha \
   3517 	$(STDLIB)/hare/types/hash.ha \
   3518 	$(STDLIB)/hare/types/lookup.ha \
   3519 	$(STDLIB)/hare/types/store.ha \
   3520 	$(STDLIB)/hare/types/types.ha \
   3521 	$(STDLIB)/hare/types/+test.ha
   3522 
   3523 $(TESTCACHE)/hare/types/hare_types-any.ssa: $(testlib_hare_types_any_srcs) $(testlib_rt) $(testlib_hare_ast_$(PLATFORM)) $(testlib_hare_parse_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_hash_fnv_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3524 	@printf 'HAREC \t$@\n'
   3525 	@mkdir -p $(TESTCACHE)/hare/types
   3526 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::types \
   3527 		-t$(TESTCACHE)/hare/types/hare_types.td $(testlib_hare_types_any_srcs)
   3528 
   3529 # hare::unit (+any)
   3530 testlib_hare_unit_any_srcs = \
   3531 	$(STDLIB)/hare/unit/check.ha \
   3532 	$(STDLIB)/hare/unit/context.ha \
   3533 	$(STDLIB)/hare/unit/errors.ha \
   3534 	$(STDLIB)/hare/unit/expr.ha \
   3535 	$(STDLIB)/hare/unit/process.ha \
   3536 	$(STDLIB)/hare/unit/scan.ha \
   3537 	$(STDLIB)/hare/unit/scope.ha \
   3538 	$(STDLIB)/hare/unit/unit.ha \
   3539 	$(STDLIB)/hare/unit/+test.ha
   3540 
   3541 $(TESTCACHE)/hare/unit/hare_unit-any.ssa: $(testlib_hare_unit_any_srcs) $(testlib_rt) $(testlib_hare_ast_$(PLATFORM)) $(testlib_hare_types_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_hash_fnv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_hare_lex_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_hare_parse_$(PLATFORM))
   3542 	@printf 'HAREC \t$@\n'
   3543 	@mkdir -p $(TESTCACHE)/hare/unit
   3544 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::unit \
   3545 		-t$(TESTCACHE)/hare/unit/hare_unit.td $(testlib_hare_unit_any_srcs)
   3546 
   3547 # hare::unparse (+any)
   3548 testlib_hare_unparse_any_srcs = \
   3549 	$(STDLIB)/hare/unparse/expr.ha \
   3550 	$(STDLIB)/hare/unparse/decl.ha \
   3551 	$(STDLIB)/hare/unparse/ident.ha \
   3552 	$(STDLIB)/hare/unparse/import.ha \
   3553 	$(STDLIB)/hare/unparse/type.ha \
   3554 	$(STDLIB)/hare/unparse/unit.ha \
   3555 	$(STDLIB)/hare/unparse/util.ha
   3556 
   3557 $(TESTCACHE)/hare/unparse/hare_unparse-any.ssa: $(testlib_hare_unparse_any_srcs) $(testlib_rt) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_hare_ast_$(PLATFORM))
   3558 	@printf 'HAREC \t$@\n'
   3559 	@mkdir -p $(TESTCACHE)/hare/unparse
   3560 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::unparse \
   3561 		-t$(TESTCACHE)/hare/unparse/hare_unparse.td $(testlib_hare_unparse_any_srcs)
   3562 
   3563 # hash (+any)
   3564 testlib_hash_any_srcs = \
   3565 	$(STDLIB)/hash/hash.ha
   3566 
   3567 $(TESTCACHE)/hash/hash-any.ssa: $(testlib_hash_any_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_fmt_$(PLATFORM))
   3568 	@printf 'HAREC \t$@\n'
   3569 	@mkdir -p $(TESTCACHE)/hash
   3570 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash \
   3571 		-t$(TESTCACHE)/hash/hash.td $(testlib_hash_any_srcs)
   3572 
   3573 # hash::adler32 (+any)
   3574 testlib_hash_adler32_any_srcs = \
   3575 	$(STDLIB)/hash/adler32/adler32.ha
   3576 
   3577 $(TESTCACHE)/hash/adler32/hash_adler32-any.ssa: $(testlib_hash_adler32_any_srcs) $(testlib_rt) $(testlib_endian_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3578 	@printf 'HAREC \t$@\n'
   3579 	@mkdir -p $(TESTCACHE)/hash/adler32
   3580 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::adler32 \
   3581 		-t$(TESTCACHE)/hash/adler32/hash_adler32.td $(testlib_hash_adler32_any_srcs)
   3582 
   3583 # hash::crc16 (+any)
   3584 testlib_hash_crc16_any_srcs = \
   3585 	$(STDLIB)/hash/crc16/crc16.ha
   3586 
   3587 $(TESTCACHE)/hash/crc16/hash_crc16-any.ssa: $(testlib_hash_crc16_any_srcs) $(testlib_rt) $(testlib_endian_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3588 	@printf 'HAREC \t$@\n'
   3589 	@mkdir -p $(TESTCACHE)/hash/crc16
   3590 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::crc16 \
   3591 		-t$(TESTCACHE)/hash/crc16/hash_crc16.td $(testlib_hash_crc16_any_srcs)
   3592 
   3593 # hash::crc32 (+any)
   3594 testlib_hash_crc32_any_srcs = \
   3595 	$(STDLIB)/hash/crc32/crc32.ha
   3596 
   3597 $(TESTCACHE)/hash/crc32/hash_crc32-any.ssa: $(testlib_hash_crc32_any_srcs) $(testlib_rt) $(testlib_endian_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3598 	@printf 'HAREC \t$@\n'
   3599 	@mkdir -p $(TESTCACHE)/hash/crc32
   3600 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::crc32 \
   3601 		-t$(TESTCACHE)/hash/crc32/hash_crc32.td $(testlib_hash_crc32_any_srcs)
   3602 
   3603 # hash::crc64 (+any)
   3604 testlib_hash_crc64_any_srcs = \
   3605 	$(STDLIB)/hash/crc64/crc64.ha
   3606 
   3607 $(TESTCACHE)/hash/crc64/hash_crc64-any.ssa: $(testlib_hash_crc64_any_srcs) $(testlib_rt) $(testlib_endian_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3608 	@printf 'HAREC \t$@\n'
   3609 	@mkdir -p $(TESTCACHE)/hash/crc64
   3610 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::crc64 \
   3611 		-t$(TESTCACHE)/hash/crc64/hash_crc64.td $(testlib_hash_crc64_any_srcs)
   3612 
   3613 # hash::fnv (+any)
   3614 testlib_hash_fnv_any_srcs = \
   3615 	$(STDLIB)/hash/fnv/+$(ARCH).ha \
   3616 	$(STDLIB)/hash/fnv/fnv.ha
   3617 
   3618 $(TESTCACHE)/hash/fnv/hash_fnv-any.ssa: $(testlib_hash_fnv_any_srcs) $(testlib_rt) $(testlib_endian_$(PLATFORM)) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3619 	@printf 'HAREC \t$@\n'
   3620 	@mkdir -p $(TESTCACHE)/hash/fnv
   3621 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::fnv \
   3622 		-t$(TESTCACHE)/hash/fnv/hash_fnv.td $(testlib_hash_fnv_any_srcs)
   3623 
   3624 # hash::siphash (+any)
   3625 testlib_hash_siphash_any_srcs = \
   3626 	$(STDLIB)/hash/siphash/siphash.ha \
   3627 	$(STDLIB)/hash/siphash/+test.ha
   3628 
   3629 $(TESTCACHE)/hash/siphash/hash_siphash-any.ssa: $(testlib_hash_siphash_any_srcs) $(testlib_rt) $(testlib_hash_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   3630 	@printf 'HAREC \t$@\n'
   3631 	@mkdir -p $(TESTCACHE)/hash/siphash
   3632 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::siphash \
   3633 		-t$(TESTCACHE)/hash/siphash/hash_siphash.td $(testlib_hash_siphash_any_srcs)
   3634 
   3635 # io (+linux)
   3636 testlib_io_linux_srcs = \
   3637 	$(STDLIB)/io/arch+$(ARCH).ha \
   3638 	$(STDLIB)/io/+linux/file.ha \
   3639 	$(STDLIB)/io/+linux/mmap.ha \
   3640 	$(STDLIB)/io/+linux/vector.ha \
   3641 	$(STDLIB)/io/copy.ha \
   3642 	$(STDLIB)/io/drain.ha \
   3643 	$(STDLIB)/io/empty.ha \
   3644 	$(STDLIB)/io/handle.ha \
   3645 	$(STDLIB)/io/limit.ha \
   3646 	$(STDLIB)/io/stream.ha \
   3647 	$(STDLIB)/io/tee.ha \
   3648 	$(STDLIB)/io/types.ha \
   3649 	$(STDLIB)/io/util.ha \
   3650 	$(STDLIB)/io/zero.ha \
   3651 	$(STDLIB)/io/+test/limit.ha \
   3652 	$(STDLIB)/io/+test/stream.ha
   3653 
   3654 # io (+freebsd)
   3655 testlib_io_freebsd_srcs = \
   3656 	$(STDLIB)/io/arch+$(ARCH).ha \
   3657 	$(STDLIB)/io/+freebsd/file.ha \
   3658 	$(STDLIB)/io/+freebsd/mmap.ha \
   3659 	$(STDLIB)/io/+freebsd/vector.ha \
   3660 	$(STDLIB)/io/copy.ha \
   3661 	$(STDLIB)/io/drain.ha \
   3662 	$(STDLIB)/io/empty.ha \
   3663 	$(STDLIB)/io/handle.ha \
   3664 	$(STDLIB)/io/limit.ha \
   3665 	$(STDLIB)/io/stream.ha \
   3666 	$(STDLIB)/io/tee.ha \
   3667 	$(STDLIB)/io/types.ha \
   3668 	$(STDLIB)/io/util.ha \
   3669 	$(STDLIB)/io/zero.ha \
   3670 	$(STDLIB)/io/+test/limit.ha \
   3671 	$(STDLIB)/io/+test/stream.ha
   3672 
   3673 $(TESTCACHE)/io/io-linux.ssa: $(testlib_io_linux_srcs) $(testlib_rt) $(testlib_strings_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_bytes_$(PLATFORM))
   3674 	@printf 'HAREC \t$@\n'
   3675 	@mkdir -p $(TESTCACHE)/io
   3676 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nio \
   3677 		-t$(TESTCACHE)/io/io.td $(testlib_io_linux_srcs)
   3678 
   3679 $(TESTCACHE)/io/io-freebsd.ssa: $(testlib_io_freebsd_srcs) $(testlib_rt) $(testlib_strings_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_bytes_$(PLATFORM))
   3680 	@printf 'HAREC \t$@\n'
   3681 	@mkdir -p $(TESTCACHE)/io
   3682 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nio \
   3683 		-t$(TESTCACHE)/io/io.td $(testlib_io_freebsd_srcs)
   3684 
   3685 # linux (+linux)
   3686 testlib_linux_linux_srcs = \
   3687 	$(STDLIB)/linux/start.ha \
   3688 	$(STDLIB)/linux/env.ha
   3689 
   3690 $(TESTCACHE)/linux/linux-linux.ssa: $(testlib_linux_linux_srcs) $(testlib_rt) $(testlib_format_elf_$(PLATFORM))
   3691 	@printf 'HAREC \t$@\n'
   3692 	@mkdir -p $(TESTCACHE)/linux
   3693 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlinux \
   3694 		-t$(TESTCACHE)/linux/linux.td $(testlib_linux_linux_srcs)
   3695 
   3696 # linux::keyctl (+linux)
   3697 testlib_linux_keyctl_linux_srcs = \
   3698 	$(STDLIB)/linux/keyctl/keyctl.ha \
   3699 	$(STDLIB)/linux/keyctl/types.ha
   3700 
   3701 $(TESTCACHE)/linux/keyctl/linux_keyctl-linux.ssa: $(testlib_linux_keyctl_linux_srcs) $(testlib_rt) $(testlib_rt_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_bytes_$(PLATFORM))
   3702 	@printf 'HAREC \t$@\n'
   3703 	@mkdir -p $(TESTCACHE)/linux/keyctl
   3704 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlinux::keyctl \
   3705 		-t$(TESTCACHE)/linux/keyctl/linux_keyctl.td $(testlib_linux_keyctl_linux_srcs)
   3706 
   3707 # linux::timerfd (+linux)
   3708 testlib_linux_timerfd_linux_srcs = \
   3709 	$(STDLIB)/linux/timerfd/timerfd.ha
   3710 
   3711 $(TESTCACHE)/linux/timerfd/linux_timerfd-linux.ssa: $(testlib_linux_timerfd_linux_srcs) $(testlib_rt) $(testlib_errors_$(PLATFORM)) $(testlib_rt_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_endian_$(PLATFORM))
   3712 	@printf 'HAREC \t$@\n'
   3713 	@mkdir -p $(TESTCACHE)/linux/timerfd
   3714 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlinux::timerfd \
   3715 		-t$(TESTCACHE)/linux/timerfd/linux_timerfd.td $(testlib_linux_timerfd_linux_srcs)
   3716 
   3717 # linux::vdso (+linux)
   3718 testlib_linux_vdso_linux_srcs = \
   3719 	$(STDLIB)/linux/vdso/vdso.ha
   3720 
   3721 $(TESTCACHE)/linux/vdso/linux_vdso-linux.ssa: $(testlib_linux_vdso_linux_srcs) $(testlib_rt) $(testlib_linux_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_format_elf_$(PLATFORM))
   3722 	@printf 'HAREC \t$@\n'
   3723 	@mkdir -p $(TESTCACHE)/linux/vdso
   3724 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlinux::vdso \
   3725 		-t$(TESTCACHE)/linux/vdso/linux_vdso.td $(testlib_linux_vdso_linux_srcs)
   3726 
   3727 # log (+linux)
   3728 testlib_log_linux_srcs = \
   3729 	$(STDLIB)/log/logger.ha \
   3730 	$(STDLIB)/log/global.ha \
   3731 	$(STDLIB)/log/funcs.ha
   3732 
   3733 $(TESTCACHE)/log/log-linux.ssa: $(testlib_log_linux_srcs) $(testlib_rt) $(testlib_datetime_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM))
   3734 	@printf 'HAREC \t$@\n'
   3735 	@mkdir -p $(TESTCACHE)/log
   3736 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlog \
   3737 		-t$(TESTCACHE)/log/log.td $(testlib_log_linux_srcs)
   3738 
   3739 # log (+freebsd)
   3740 testlib_log_freebsd_srcs = \
   3741 	$(STDLIB)/log/logger.ha \
   3742 	$(STDLIB)/log/global.ha \
   3743 	$(STDLIB)/log/funcs.ha
   3744 
   3745 $(TESTCACHE)/log/log-freebsd.ssa: $(testlib_log_freebsd_srcs) $(testlib_rt) $(testlib_datetime_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM))
   3746 	@printf 'HAREC \t$@\n'
   3747 	@mkdir -p $(TESTCACHE)/log
   3748 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlog \
   3749 		-t$(TESTCACHE)/log/log.td $(testlib_log_freebsd_srcs)
   3750 
   3751 # math (+any)
   3752 testlib_math_any_srcs = \
   3753 	$(STDLIB)/math/math.ha \
   3754 	$(STDLIB)/math/fenv_func.ha \
   3755 	$(STDLIB)/math/fenv+$(ARCH).ha \
   3756 	$(STDLIB)/math/floats.ha \
   3757 	$(STDLIB)/math/ints.ha \
   3758 	$(STDLIB)/math/uints.ha \
   3759 	$(STDLIB)/math/trig.ha \
   3760 	$(STDLIB)/math/data+test.ha
   3761 
   3762 $(TESTCACHE)/math/math-any.ssa: $(testlib_math_any_srcs) $(testlib_rt) $(testlib_types_$(PLATFORM))
   3763 	@printf 'HAREC \t$@\n'
   3764 	@mkdir -p $(TESTCACHE)/math
   3765 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nmath \
   3766 		-t$(TESTCACHE)/math/math.td $(testlib_math_any_srcs)
   3767 
   3768 # math::complex (+any)
   3769 testlib_math_complex_any_srcs = \
   3770 	$(STDLIB)/math/complex/complex.ha \
   3771 	$(STDLIB)/math/complex/+test.ha
   3772 
   3773 $(TESTCACHE)/math/complex/math_complex-any.ssa: $(testlib_math_complex_any_srcs) $(testlib_rt) $(testlib_math_$(PLATFORM))
   3774 	@printf 'HAREC \t$@\n'
   3775 	@mkdir -p $(TESTCACHE)/math/complex
   3776 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nmath::complex \
   3777 		-t$(TESTCACHE)/math/complex/math_complex.td $(testlib_math_complex_any_srcs)
   3778 
   3779 # math::random (+any)
   3780 testlib_math_random_any_srcs = \
   3781 	$(STDLIB)/math/random/random.ha
   3782 
   3783 $(TESTCACHE)/math/random/math_random-any.ssa: $(testlib_math_random_any_srcs) $(testlib_rt)
   3784 	@printf 'HAREC \t$@\n'
   3785 	@mkdir -p $(TESTCACHE)/math/random
   3786 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nmath::random \
   3787 		-t$(TESTCACHE)/math/random/math_random.td $(testlib_math_random_any_srcs)
   3788 
   3789 # net (+linux)
   3790 testlib_net_linux_srcs = \
   3791 	$(STDLIB)/net/+linux.ha \
   3792 	$(STDLIB)/net/errors.ha \
   3793 	$(STDLIB)/net/msg.ha
   3794 
   3795 $(TESTCACHE)/net/net-linux.ssa: $(testlib_net_linux_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_rt_$(PLATFORM)) $(testlib_fmt_$(PLATFORM))
   3796 	@printf 'HAREC \t$@\n'
   3797 	@mkdir -p $(TESTCACHE)/net
   3798 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet \
   3799 		-t$(TESTCACHE)/net/net.td $(testlib_net_linux_srcs)
   3800 
   3801 # net (+freebsd)
   3802 testlib_net_freebsd_srcs = \
   3803 	$(STDLIB)/net/+freebsd.ha \
   3804 	$(STDLIB)/net/errors.ha \
   3805 	$(STDLIB)/net/msg.ha
   3806 
   3807 $(TESTCACHE)/net/net-freebsd.ssa: $(testlib_net_freebsd_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_rt_$(PLATFORM)) $(testlib_fmt_$(PLATFORM))
   3808 	@printf 'HAREC \t$@\n'
   3809 	@mkdir -p $(TESTCACHE)/net
   3810 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet \
   3811 		-t$(TESTCACHE)/net/net.td $(testlib_net_freebsd_srcs)
   3812 
   3813 # net::dial (+any)
   3814 testlib_net_dial_any_srcs = \
   3815 	$(STDLIB)/net/dial/registry.ha \
   3816 	$(STDLIB)/net/dial/dial.ha \
   3817 	$(STDLIB)/net/dial/ip.ha \
   3818 	$(STDLIB)/net/dial/resolve.ha
   3819 
   3820 $(TESTCACHE)/net/dial/net_dial-any.ssa: $(testlib_net_dial_any_srcs) $(testlib_rt) $(testlib_net_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_net_tcp_$(PLATFORM)) $(testlib_net_udp_$(PLATFORM)) $(testlib_net_dns_$(PLATFORM)) $(testlib_crypto_random_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_unix_hosts_$(PLATFORM))
   3821 	@printf 'HAREC \t$@\n'
   3822 	@mkdir -p $(TESTCACHE)/net/dial
   3823 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::dial \
   3824 		-t$(TESTCACHE)/net/dial/net_dial.td $(testlib_net_dial_any_srcs)
   3825 
   3826 # net::dns (+any)
   3827 testlib_net_dns_any_srcs = \
   3828 	$(STDLIB)/net/dns/decode.ha \
   3829 	$(STDLIB)/net/dns/error.ha \
   3830 	$(STDLIB)/net/dns/encode.ha \
   3831 	$(STDLIB)/net/dns/query.ha \
   3832 	$(STDLIB)/net/dns/types.ha
   3833 
   3834 $(TESTCACHE)/net/dns/net_dns-any.ssa: $(testlib_net_dns_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_net_$(PLATFORM)) $(testlib_net_udp_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_unix_resolvconf_$(PLATFORM)) $(testlib_unix_poll_$(PLATFORM)) $(testlib_rt_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_errors_$(PLATFORM))
   3835 	@printf 'HAREC \t$@\n'
   3836 	@mkdir -p $(TESTCACHE)/net/dns
   3837 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::dns \
   3838 		-t$(TESTCACHE)/net/dns/net_dns.td $(testlib_net_dns_any_srcs)
   3839 
   3840 # net::ip (+linux)
   3841 testlib_net_ip_linux_srcs = \
   3842 	$(STDLIB)/net/ip/+linux.ha \
   3843 	$(STDLIB)/net/ip/ip.ha \
   3844 	$(STDLIB)/net/ip/+test.ha
   3845 
   3846 # net::ip (+freebsd)
   3847 testlib_net_ip_freebsd_srcs = \
   3848 	$(STDLIB)/net/ip/+freebsd.ha \
   3849 	$(STDLIB)/net/ip/ip.ha \
   3850 	$(STDLIB)/net/ip/+test.ha
   3851 
   3852 $(TESTCACHE)/net/ip/net_ip-linux.ssa: $(testlib_net_ip_linux_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_fmt_$(PLATFORM))
   3853 	@printf 'HAREC \t$@\n'
   3854 	@mkdir -p $(TESTCACHE)/net/ip
   3855 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::ip \
   3856 		-t$(TESTCACHE)/net/ip/net_ip.td $(testlib_net_ip_linux_srcs)
   3857 
   3858 $(TESTCACHE)/net/ip/net_ip-freebsd.ssa: $(testlib_net_ip_freebsd_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_fmt_$(PLATFORM))
   3859 	@printf 'HAREC \t$@\n'
   3860 	@mkdir -p $(TESTCACHE)/net/ip
   3861 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::ip \
   3862 		-t$(TESTCACHE)/net/ip/net_ip.td $(testlib_net_ip_freebsd_srcs)
   3863 
   3864 # net::tcp (+linux)
   3865 testlib_net_tcp_linux_srcs = \
   3866 	$(STDLIB)/net/tcp/+linux.ha \
   3867 	$(STDLIB)/net/tcp/listener.ha \
   3868 	$(STDLIB)/net/tcp/options.ha
   3869 
   3870 $(TESTCACHE)/net/tcp/net_tcp-linux.ssa: $(testlib_net_tcp_linux_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_net_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_rt_$(PLATFORM))
   3871 	@printf 'HAREC \t$@\n'
   3872 	@mkdir -p $(TESTCACHE)/net/tcp
   3873 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::tcp \
   3874 		-t$(TESTCACHE)/net/tcp/net_tcp.td $(testlib_net_tcp_linux_srcs)
   3875 
   3876 # net::tcp (+freebsd)
   3877 testlib_net_tcp_freebsd_srcs = \
   3878 	$(STDLIB)/net/tcp/+freebsd.ha \
   3879 	$(STDLIB)/net/tcp/listener.ha \
   3880 	$(STDLIB)/net/tcp/options.ha
   3881 
   3882 $(TESTCACHE)/net/tcp/net_tcp-freebsd.ssa: $(testlib_net_tcp_freebsd_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_net_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_rt_$(PLATFORM))
   3883 	@printf 'HAREC \t$@\n'
   3884 	@mkdir -p $(TESTCACHE)/net/tcp
   3885 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::tcp \
   3886 		-t$(TESTCACHE)/net/tcp/net_tcp.td $(testlib_net_tcp_freebsd_srcs)
   3887 
   3888 # net::udp (+linux)
   3889 testlib_net_udp_linux_srcs = \
   3890 	$(STDLIB)/net/udp/+linux.ha \
   3891 	$(STDLIB)/net/udp/options.ha
   3892 
   3893 $(TESTCACHE)/net/udp/net_udp-linux.ssa: $(testlib_net_udp_linux_srcs) $(testlib_rt) $(testlib_net_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_rt_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   3894 	@printf 'HAREC \t$@\n'
   3895 	@mkdir -p $(TESTCACHE)/net/udp
   3896 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::udp \
   3897 		-t$(TESTCACHE)/net/udp/net_udp.td $(testlib_net_udp_linux_srcs)
   3898 
   3899 # net::udp (+freebsd)
   3900 testlib_net_udp_freebsd_srcs = \
   3901 	$(STDLIB)/net/udp/+freebsd.ha \
   3902 	$(STDLIB)/net/udp/options.ha
   3903 
   3904 $(TESTCACHE)/net/udp/net_udp-freebsd.ssa: $(testlib_net_udp_freebsd_srcs) $(testlib_rt) $(testlib_net_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_rt_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   3905 	@printf 'HAREC \t$@\n'
   3906 	@mkdir -p $(TESTCACHE)/net/udp
   3907 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::udp \
   3908 		-t$(TESTCACHE)/net/udp/net_udp.td $(testlib_net_udp_freebsd_srcs)
   3909 
   3910 # net::unix (+linux)
   3911 testlib_net_unix_linux_srcs = \
   3912 	$(STDLIB)/net/unix/+linux.ha \
   3913 	$(STDLIB)/net/unix/addr.ha \
   3914 	$(STDLIB)/net/unix/cmsg.ha \
   3915 	$(STDLIB)/net/unix/dial.ha \
   3916 	$(STDLIB)/net/unix/listener.ha \
   3917 	$(STDLIB)/net/unix/options.ha \
   3918 	$(STDLIB)/net/unix/socketpair.ha
   3919 
   3920 $(TESTCACHE)/net/unix/net_unix-linux.ssa: $(testlib_net_unix_linux_srcs) $(testlib_rt) $(testlib_net_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_types_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_net_dial_$(PLATFORM))
   3921 	@printf 'HAREC \t$@\n'
   3922 	@mkdir -p $(TESTCACHE)/net/unix
   3923 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::unix \
   3924 		-t$(TESTCACHE)/net/unix/net_unix.td $(testlib_net_unix_linux_srcs)
   3925 
   3926 # net::unix (+freebsd)
   3927 testlib_net_unix_freebsd_srcs = \
   3928 	$(STDLIB)/net/unix/+freebsd.ha \
   3929 	$(STDLIB)/net/unix/addr.ha \
   3930 	$(STDLIB)/net/unix/cmsg.ha \
   3931 	$(STDLIB)/net/unix/dial.ha \
   3932 	$(STDLIB)/net/unix/listener.ha \
   3933 	$(STDLIB)/net/unix/options.ha \
   3934 	$(STDLIB)/net/unix/socketpair.ha
   3935 
   3936 $(TESTCACHE)/net/unix/net_unix-freebsd.ssa: $(testlib_net_unix_freebsd_srcs) $(testlib_rt) $(testlib_net_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_types_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_net_dial_$(PLATFORM))
   3937 	@printf 'HAREC \t$@\n'
   3938 	@mkdir -p $(TESTCACHE)/net/unix
   3939 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::unix \
   3940 		-t$(TESTCACHE)/net/unix/net_unix.td $(testlib_net_unix_freebsd_srcs)
   3941 
   3942 # net::uri (+any)
   3943 testlib_net_uri_any_srcs = \
   3944 	$(STDLIB)/net/uri/fmt.ha \
   3945 	$(STDLIB)/net/uri/parse.ha \
   3946 	$(STDLIB)/net/uri/query.ha \
   3947 	$(STDLIB)/net/uri/uri.ha \
   3948 	$(STDLIB)/net/uri/+test.ha
   3949 
   3950 $(TESTCACHE)/net/uri/net_uri-any.ssa: $(testlib_net_uri_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_ip_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM))
   3951 	@printf 'HAREC \t$@\n'
   3952 	@mkdir -p $(TESTCACHE)/net/uri
   3953 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::uri \
   3954 		-t$(TESTCACHE)/net/uri/net_uri.td $(testlib_net_uri_any_srcs)
   3955 
   3956 # os (+linux)
   3957 testlib_os_linux_srcs = \
   3958 	$(STDLIB)/os/+linux/dirfdfs.ha \
   3959 	$(STDLIB)/os/+linux/environ.ha \
   3960 	$(STDLIB)/os/+linux/exit.ha \
   3961 	$(STDLIB)/os/+linux/fs.ha \
   3962 	$(STDLIB)/os/+linux/memory.ha \
   3963 	$(STDLIB)/os/+linux/stdfd.ha \
   3964 	$(STDLIB)/os/fs.ha
   3965 
   3966 $(TESTCACHE)/os/os-linux.ssa: $(testlib_os_linux_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_types_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_errors_$(PLATFORM))
   3967 	@printf 'HAREC \t$@\n'
   3968 	@mkdir -p $(TESTCACHE)/os
   3969 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nos \
   3970 		-t$(TESTCACHE)/os/os.td $(testlib_os_linux_srcs)
   3971 
   3972 # os (+freebsd)
   3973 testlib_os_freebsd_srcs = \
   3974 	$(STDLIB)/os/+freebsd/environ.ha \
   3975 	$(STDLIB)/os/+freebsd/exit.ha \
   3976 	$(STDLIB)/os/+freebsd/dirfdfs.ha \
   3977 	$(STDLIB)/os/+freebsd/stdfd.ha \
   3978 	$(STDLIB)/os/+freebsd/fs.ha \
   3979 	$(STDLIB)/os/fs.ha
   3980 
   3981 $(TESTCACHE)/os/os-freebsd.ssa: $(testlib_os_freebsd_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_types_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_errors_$(PLATFORM))
   3982 	@printf 'HAREC \t$@\n'
   3983 	@mkdir -p $(TESTCACHE)/os
   3984 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nos \
   3985 		-t$(TESTCACHE)/os/os.td $(testlib_os_freebsd_srcs)
   3986 
   3987 # os::exec (+linux)
   3988 testlib_os_exec_linux_srcs = \
   3989 	$(STDLIB)/os/exec/exec+linux.ha \
   3990 	$(STDLIB)/os/exec/process+linux.ha \
   3991 	$(STDLIB)/os/exec/types.ha \
   3992 	$(STDLIB)/os/exec/cmd.ha
   3993 
   3994 $(TESTCACHE)/os/exec/os_exec-linux.ssa: $(testlib_os_exec_linux_srcs) $(testlib_rt) $(testlib_os_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_path_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_unix_$(PLATFORM))
   3995 	@printf 'HAREC \t$@\n'
   3996 	@mkdir -p $(TESTCACHE)/os/exec
   3997 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nos::exec \
   3998 		-t$(TESTCACHE)/os/exec/os_exec.td $(testlib_os_exec_linux_srcs)
   3999 
   4000 # os::exec (+freebsd)
   4001 testlib_os_exec_freebsd_srcs = \
   4002 	$(STDLIB)/os/exec/exec+freebsd.ha \
   4003 	$(STDLIB)/os/exec/process+freebsd.ha \
   4004 	$(STDLIB)/os/exec/types.ha \
   4005 	$(STDLIB)/os/exec/cmd.ha
   4006 
   4007 $(TESTCACHE)/os/exec/os_exec-freebsd.ssa: $(testlib_os_exec_freebsd_srcs) $(testlib_rt) $(testlib_os_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_path_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_unix_$(PLATFORM))
   4008 	@printf 'HAREC \t$@\n'
   4009 	@mkdir -p $(TESTCACHE)/os/exec
   4010 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nos::exec \
   4011 		-t$(TESTCACHE)/os/exec/os_exec.td $(testlib_os_exec_freebsd_srcs)
   4012 
   4013 # path (+any)
   4014 testlib_path_any_srcs = \
   4015 	$(STDLIB)/path/+$(PLATFORM).ha \
   4016 	$(STDLIB)/path/buffer.ha \
   4017 	$(STDLIB)/path/util.ha \
   4018 	$(STDLIB)/path/join.ha \
   4019 	$(STDLIB)/path/names.ha \
   4020 	$(STDLIB)/path/iter.ha
   4021 
   4022 $(TESTCACHE)/path/path-any.ssa: $(testlib_path_any_srcs) $(testlib_rt) $(testlib_strings_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   4023 	@printf 'HAREC \t$@\n'
   4024 	@mkdir -p $(TESTCACHE)/path
   4025 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Npath \
   4026 		-t$(TESTCACHE)/path/path.td $(testlib_path_any_srcs)
   4027 
   4028 # regex (+any)
   4029 testlib_regex_any_srcs = \
   4030 	$(STDLIB)/regex/regex.ha \
   4031 	$(STDLIB)/regex/+test.ha
   4032 
   4033 $(TESTCACHE)/regex/regex-any.ssa: $(testlib_regex_any_srcs) $(testlib_rt) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM))
   4034 	@printf 'HAREC \t$@\n'
   4035 	@mkdir -p $(TESTCACHE)/regex
   4036 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nregex \
   4037 		-t$(TESTCACHE)/regex/regex.td $(testlib_regex_any_srcs)
   4038 
   4039 # shlex (+any)
   4040 testlib_shlex_any_srcs = \
   4041 	$(STDLIB)/shlex/escape.ha \
   4042 	$(STDLIB)/shlex/split.ha \
   4043 	$(STDLIB)/shlex/+test.ha
   4044 
   4045 $(TESTCACHE)/shlex/shlex-any.ssa: $(testlib_shlex_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM))
   4046 	@printf 'HAREC \t$@\n'
   4047 	@mkdir -p $(TESTCACHE)/shlex
   4048 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nshlex \
   4049 		-t$(TESTCACHE)/shlex/shlex.td $(testlib_shlex_any_srcs)
   4050 
   4051 # slices (+any)
   4052 testlib_slices_any_srcs = \
   4053 	$(STDLIB)/slices/cap.ha \
   4054 	$(STDLIB)/slices/reverse.ha \
   4055 	$(STDLIB)/slices/trunc.ha \
   4056 	$(STDLIB)/slices/void.ha
   4057 
   4058 $(TESTCACHE)/slices/slices-any.ssa: $(testlib_slices_any_srcs) $(testlib_rt) $(testlib_types_$(PLATFORM))
   4059 	@printf 'HAREC \t$@\n'
   4060 	@mkdir -p $(TESTCACHE)/slices
   4061 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nslices \
   4062 		-t$(TESTCACHE)/slices/slices.td $(testlib_slices_any_srcs)
   4063 
   4064 # sort (+any)
   4065 testlib_sort_any_srcs = \
   4066 	$(STDLIB)/sort/bisect.ha \
   4067 	$(STDLIB)/sort/search.ha \
   4068 	$(STDLIB)/sort/sort.ha \
   4069 	$(STDLIB)/sort/types.ha \
   4070 	$(STDLIB)/sort/+test.ha
   4071 
   4072 $(TESTCACHE)/sort/sort-any.ssa: $(testlib_sort_any_srcs) $(testlib_rt) $(testlib_strings_$(PLATFORM))
   4073 	@printf 'HAREC \t$@\n'
   4074 	@mkdir -p $(TESTCACHE)/sort
   4075 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nsort \
   4076 		-t$(TESTCACHE)/sort/sort.td $(testlib_sort_any_srcs)
   4077 
   4078 # strconv (+any)
   4079 testlib_strconv_any_srcs = \
   4080 	$(STDLIB)/strconv/types.ha \
   4081 	$(STDLIB)/strconv/itos.ha \
   4082 	$(STDLIB)/strconv/utos.ha \
   4083 	$(STDLIB)/strconv/stou.ha \
   4084 	$(STDLIB)/strconv/stoi.ha \
   4085 	$(STDLIB)/strconv/numeric.ha \
   4086 	$(STDLIB)/strconv/ftos.ha \
   4087 	$(STDLIB)/strconv/stof.ha \
   4088 	$(STDLIB)/strconv/stof_data.ha \
   4089 	$(STDLIB)/strconv/+test/stou.ha \
   4090 	$(STDLIB)/strconv/+test/stoi.ha
   4091 
   4092 $(TESTCACHE)/strconv/strconv-any.ssa: $(testlib_strconv_any_srcs) $(testlib_rt) $(testlib_types_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_ascii_$(PLATFORM)) $(testlib_math_$(PLATFORM))
   4093 	@printf 'HAREC \t$@\n'
   4094 	@mkdir -p $(TESTCACHE)/strconv
   4095 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nstrconv \
   4096 		-t$(TESTCACHE)/strconv/strconv.td $(testlib_strconv_any_srcs)
   4097 
   4098 # strings (+any)
   4099 testlib_strings_any_srcs = \
   4100 	$(STDLIB)/strings/cap.ha \
   4101 	$(STDLIB)/strings/concat.ha \
   4102 	$(STDLIB)/strings/contains.ha \
   4103 	$(STDLIB)/strings/cstrings.ha \
   4104 	$(STDLIB)/strings/dup.ha \
   4105 	$(STDLIB)/strings/iter.ha \
   4106 	$(STDLIB)/strings/runes.ha \
   4107 	$(STDLIB)/strings/sub.ha \
   4108 	$(STDLIB)/strings/suffix.ha \
   4109 	$(STDLIB)/strings/tokenize.ha \
   4110 	$(STDLIB)/strings/utf8.ha \
   4111 	$(STDLIB)/strings/index.ha \
   4112 	$(STDLIB)/strings/trim.ha \
   4113 	$(STDLIB)/strings/compare.ha \
   4114 	$(STDLIB)/strings/pad.ha \
   4115 	$(STDLIB)/strings/replace.ha
   4116 
   4117 $(TESTCACHE)/strings/strings-any.ssa: $(testlib_strings_any_srcs) $(testlib_rt) $(testlib_bytes_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_types_$(PLATFORM))
   4118 	@printf 'HAREC \t$@\n'
   4119 	@mkdir -p $(TESTCACHE)/strings
   4120 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nstrings \
   4121 		-t$(TESTCACHE)/strings/strings.td $(testlib_strings_any_srcs)
   4122 
   4123 # strings::template (+any)
   4124 testlib_strings_template_any_srcs = \
   4125 	$(STDLIB)/strings/template/template.ha
   4126 
   4127 $(TESTCACHE)/strings/template/strings_template-any.ssa: $(testlib_strings_template_any_srcs) $(testlib_rt) $(testlib_ascii_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strio_$(PLATFORM))
   4128 	@printf 'HAREC \t$@\n'
   4129 	@mkdir -p $(TESTCACHE)/strings/template
   4130 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nstrings::template \
   4131 		-t$(TESTCACHE)/strings/template/strings_template.td $(testlib_strings_template_any_srcs)
   4132 
   4133 # strio (+any)
   4134 testlib_strio_any_srcs = \
   4135 	$(STDLIB)/strio/stream.ha \
   4136 	$(STDLIB)/strio/ops.ha
   4137 
   4138 $(TESTCACHE)/strio/strio-any.ssa: $(testlib_strio_any_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_slices_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_errors_$(PLATFORM))
   4139 	@printf 'HAREC \t$@\n'
   4140 	@mkdir -p $(TESTCACHE)/strio
   4141 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nstrio \
   4142 		-t$(TESTCACHE)/strio/strio.td $(testlib_strio_any_srcs)
   4143 
   4144 # temp (+linux)
   4145 testlib_temp_linux_srcs = \
   4146 	$(STDLIB)/temp/+linux.ha
   4147 
   4148 $(TESTCACHE)/temp/temp-linux.ssa: $(testlib_temp_linux_srcs) $(testlib_rt) $(testlib_crypto_random_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_path_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_fmt_$(PLATFORM))
   4149 	@printf 'HAREC \t$@\n'
   4150 	@mkdir -p $(TESTCACHE)/temp
   4151 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntemp \
   4152 		-t$(TESTCACHE)/temp/temp.td $(testlib_temp_linux_srcs)
   4153 
   4154 # temp (+freebsd)
   4155 testlib_temp_freebsd_srcs = \
   4156 	$(STDLIB)/temp/+freebsd.ha
   4157 
   4158 $(TESTCACHE)/temp/temp-freebsd.ssa: $(testlib_temp_freebsd_srcs) $(testlib_rt) $(testlib_crypto_random_$(PLATFORM)) $(testlib_encoding_hex_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_path_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_fmt_$(PLATFORM))
   4159 	@printf 'HAREC \t$@\n'
   4160 	@mkdir -p $(TESTCACHE)/temp
   4161 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntemp \
   4162 		-t$(TESTCACHE)/temp/temp.td $(testlib_temp_freebsd_srcs)
   4163 
   4164 # time (+linux)
   4165 testlib_time_linux_srcs = \
   4166 	$(STDLIB)/time/+linux/functions.ha \
   4167 	$(STDLIB)/time/+linux/+$(ARCH).ha \
   4168 	$(STDLIB)/time/arithm.ha \
   4169 	$(STDLIB)/time/conv.ha \
   4170 	$(STDLIB)/time/types.ha
   4171 
   4172 $(TESTCACHE)/time/time-linux.ssa: $(testlib_time_linux_srcs) $(testlib_rt) $(testlib_linux_vdso_$(PLATFORM)) $(testlib_math_$(PLATFORM))
   4173 	@printf 'HAREC \t$@\n'
   4174 	@mkdir -p $(TESTCACHE)/time
   4175 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntime \
   4176 		-t$(TESTCACHE)/time/time.td $(testlib_time_linux_srcs)
   4177 
   4178 # time (+freebsd)
   4179 testlib_time_freebsd_srcs = \
   4180 	$(STDLIB)/time/+freebsd/functions.ha \
   4181 	$(STDLIB)/time/arithm.ha \
   4182 	$(STDLIB)/time/conv.ha \
   4183 	$(STDLIB)/time/types.ha
   4184 
   4185 $(TESTCACHE)/time/time-freebsd.ssa: $(testlib_time_freebsd_srcs) $(testlib_rt) $(testlib_math_$(PLATFORM))
   4186 	@printf 'HAREC \t$@\n'
   4187 	@mkdir -p $(TESTCACHE)/time
   4188 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntime \
   4189 		-t$(TESTCACHE)/time/time.td $(testlib_time_freebsd_srcs)
   4190 
   4191 # time::chrono (+linux)
   4192 testlib_time_chrono_linux_srcs = \
   4193 	$(STDLIB)/time/chrono/+linux.ha \
   4194 	$(STDLIB)/time/chrono/chronology.ha \
   4195 	$(STDLIB)/time/chrono/leapsec.ha \
   4196 	$(STDLIB)/time/chrono/timescale.ha \
   4197 	$(STDLIB)/time/chrono/timezone.ha \
   4198 	$(STDLIB)/time/chrono/tzdb.ha
   4199 
   4200 $(TESTCACHE)/time/chrono/time_chrono-linux.ssa: $(testlib_time_chrono_linux_srcs) $(testlib_rt) $(testlib_bufio_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_path_$(PLATFORM))
   4201 	@printf 'HAREC \t$@\n'
   4202 	@mkdir -p $(TESTCACHE)/time/chrono
   4203 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntime::chrono \
   4204 		-t$(TESTCACHE)/time/chrono/time_chrono.td $(testlib_time_chrono_linux_srcs)
   4205 
   4206 # time::chrono (+freebsd)
   4207 testlib_time_chrono_freebsd_srcs = \
   4208 	$(STDLIB)/time/chrono/+freebsd.ha \
   4209 	$(STDLIB)/time/chrono/chronology.ha \
   4210 	$(STDLIB)/time/chrono/leapsec.ha \
   4211 	$(STDLIB)/time/chrono/timescale.ha \
   4212 	$(STDLIB)/time/chrono/timezone.ha \
   4213 	$(STDLIB)/time/chrono/tzdb.ha
   4214 
   4215 $(TESTCACHE)/time/chrono/time_chrono-freebsd.ssa: $(testlib_time_chrono_freebsd_srcs) $(testlib_rt) $(testlib_bufio_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_encoding_utf8_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_path_$(PLATFORM))
   4216 	@printf 'HAREC \t$@\n'
   4217 	@mkdir -p $(TESTCACHE)/time/chrono
   4218 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntime::chrono \
   4219 		-t$(TESTCACHE)/time/chrono/time_chrono.td $(testlib_time_chrono_freebsd_srcs)
   4220 
   4221 # types (+any)
   4222 testlib_types_any_srcs = \
   4223 	$(STDLIB)/types/limits.ha \
   4224 	$(STDLIB)/types/classes.ha \
   4225 	$(STDLIB)/types/arch+$(ARCH).ha
   4226 
   4227 $(TESTCACHE)/types/types-any.ssa: $(testlib_types_any_srcs) $(testlib_rt)
   4228 	@printf 'HAREC \t$@\n'
   4229 	@mkdir -p $(TESTCACHE)/types
   4230 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntypes \
   4231 		-t$(TESTCACHE)/types/types.td $(testlib_types_any_srcs)
   4232 
   4233 # unix (+linux)
   4234 testlib_unix_linux_srcs = \
   4235 	$(STDLIB)/unix/+linux/nice.ha \
   4236 	$(STDLIB)/unix/+linux/pipe.ha \
   4237 	$(STDLIB)/unix/+linux/umask.ha \
   4238 	$(STDLIB)/unix/getuid.ha \
   4239 	$(STDLIB)/unix/setuid.ha
   4240 
   4241 $(TESTCACHE)/unix/unix-linux.ssa: $(testlib_unix_linux_srcs) $(testlib_rt) $(testlib_errors_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   4242 	@printf 'HAREC \t$@\n'
   4243 	@mkdir -p $(TESTCACHE)/unix
   4244 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix \
   4245 		-t$(TESTCACHE)/unix/unix.td $(testlib_unix_linux_srcs)
   4246 
   4247 # unix (+freebsd)
   4248 testlib_unix_freebsd_srcs = \
   4249 	$(STDLIB)/unix/+freebsd/nice.ha \
   4250 	$(STDLIB)/unix/+freebsd/pipe.ha \
   4251 	$(STDLIB)/unix/+freebsd/umask.ha \
   4252 	$(STDLIB)/unix/getuid.ha \
   4253 	$(STDLIB)/unix/setuid.ha
   4254 
   4255 $(TESTCACHE)/unix/unix-freebsd.ssa: $(testlib_unix_freebsd_srcs) $(testlib_rt) $(testlib_errors_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   4256 	@printf 'HAREC \t$@\n'
   4257 	@mkdir -p $(TESTCACHE)/unix
   4258 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix \
   4259 		-t$(TESTCACHE)/unix/unix.td $(testlib_unix_freebsd_srcs)
   4260 
   4261 # unix::hosts (+linux)
   4262 testlib_unix_hosts_linux_srcs = \
   4263 	$(STDLIB)/unix/hosts/+linux.ha \
   4264 	$(STDLIB)/unix/hosts/lookup.ha
   4265 
   4266 $(TESTCACHE)/unix/hosts/unix_hosts-linux.ssa: $(testlib_unix_hosts_linux_srcs) $(testlib_rt) $(testlib_os_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   4267 	@printf 'HAREC \t$@\n'
   4268 	@mkdir -p $(TESTCACHE)/unix/hosts
   4269 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::hosts \
   4270 		-t$(TESTCACHE)/unix/hosts/unix_hosts.td $(testlib_unix_hosts_linux_srcs)
   4271 
   4272 # unix::hosts (+freebsd)
   4273 testlib_unix_hosts_freebsd_srcs = \
   4274 	$(STDLIB)/unix/hosts/+freebsd.ha \
   4275 	$(STDLIB)/unix/hosts/lookup.ha
   4276 
   4277 $(TESTCACHE)/unix/hosts/unix_hosts-freebsd.ssa: $(testlib_unix_hosts_freebsd_srcs) $(testlib_rt) $(testlib_os_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   4278 	@printf 'HAREC \t$@\n'
   4279 	@mkdir -p $(TESTCACHE)/unix/hosts
   4280 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::hosts \
   4281 		-t$(TESTCACHE)/unix/hosts/unix_hosts.td $(testlib_unix_hosts_freebsd_srcs)
   4282 
   4283 # unix::passwd (+any)
   4284 testlib_unix_passwd_any_srcs = \
   4285 	$(STDLIB)/unix/passwd/group.ha \
   4286 	$(STDLIB)/unix/passwd/passwd.ha \
   4287 	$(STDLIB)/unix/passwd/types.ha
   4288 
   4289 $(TESTCACHE)/unix/passwd/unix_passwd-any.ssa: $(testlib_unix_passwd_any_srcs) $(testlib_rt) $(testlib_bufio_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM)) $(testlib_strconv_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   4290 	@printf 'HAREC \t$@\n'
   4291 	@mkdir -p $(TESTCACHE)/unix/passwd
   4292 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::passwd \
   4293 		-t$(TESTCACHE)/unix/passwd/unix_passwd.td $(testlib_unix_passwd_any_srcs)
   4294 
   4295 # unix::poll (+linux)
   4296 testlib_unix_poll_linux_srcs = \
   4297 	$(STDLIB)/unix/poll/+linux.ha
   4298 
   4299 $(TESTCACHE)/unix/poll/unix_poll-linux.ssa: $(testlib_unix_poll_linux_srcs) $(testlib_rt) $(testlib_rt_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   4300 	@printf 'HAREC \t$@\n'
   4301 	@mkdir -p $(TESTCACHE)/unix/poll
   4302 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::poll \
   4303 		-t$(TESTCACHE)/unix/poll/unix_poll.td $(testlib_unix_poll_linux_srcs)
   4304 
   4305 # unix::poll (+freebsd)
   4306 testlib_unix_poll_freebsd_srcs = \
   4307 	$(STDLIB)/unix/poll/+freebsd.ha
   4308 
   4309 $(TESTCACHE)/unix/poll/unix_poll-freebsd.ssa: $(testlib_unix_poll_freebsd_srcs) $(testlib_rt) $(testlib_rt_$(PLATFORM)) $(testlib_errors_$(PLATFORM)) $(testlib_time_$(PLATFORM)) $(testlib_io_$(PLATFORM))
   4310 	@printf 'HAREC \t$@\n'
   4311 	@mkdir -p $(TESTCACHE)/unix/poll
   4312 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::poll \
   4313 		-t$(TESTCACHE)/unix/poll/unix_poll.td $(testlib_unix_poll_freebsd_srcs)
   4314 
   4315 # unix::resolvconf (+linux)
   4316 testlib_unix_resolvconf_linux_srcs = \
   4317 	$(STDLIB)/unix/resolvconf/+linux.ha \
   4318 	$(STDLIB)/unix/resolvconf/load.ha
   4319 
   4320 $(TESTCACHE)/unix/resolvconf/unix_resolvconf-linux.ssa: $(testlib_unix_resolvconf_linux_srcs) $(testlib_rt) $(testlib_os_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   4321 	@printf 'HAREC \t$@\n'
   4322 	@mkdir -p $(TESTCACHE)/unix/resolvconf
   4323 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::resolvconf \
   4324 		-t$(TESTCACHE)/unix/resolvconf/unix_resolvconf.td $(testlib_unix_resolvconf_linux_srcs)
   4325 
   4326 # unix::resolvconf (+freebsd)
   4327 testlib_unix_resolvconf_freebsd_srcs = \
   4328 	$(STDLIB)/unix/resolvconf/+freebsd.ha \
   4329 	$(STDLIB)/unix/resolvconf/load.ha
   4330 
   4331 $(TESTCACHE)/unix/resolvconf/unix_resolvconf-freebsd.ssa: $(testlib_unix_resolvconf_freebsd_srcs) $(testlib_rt) $(testlib_os_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_net_ip_$(PLATFORM)) $(testlib_strings_$(PLATFORM))
   4332 	@printf 'HAREC \t$@\n'
   4333 	@mkdir -p $(TESTCACHE)/unix/resolvconf
   4334 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::resolvconf \
   4335 		-t$(TESTCACHE)/unix/resolvconf/unix_resolvconf.td $(testlib_unix_resolvconf_freebsd_srcs)
   4336 
   4337 # unix::signal (+linux)
   4338 testlib_unix_signal_linux_srcs = \
   4339 	$(STDLIB)/unix/signal/types.ha \
   4340 	$(STDLIB)/unix/signal/+linux.ha
   4341 
   4342 $(TESTCACHE)/unix/signal/unix_signal-linux.ssa: $(testlib_unix_signal_linux_srcs) $(testlib_rt) $(testlib_io_$(PLATFORM)) $(testlib_errors_$(PLATFORM))
   4343 	@printf 'HAREC \t$@\n'
   4344 	@mkdir -p $(TESTCACHE)/unix/signal
   4345 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::signal \
   4346 		-t$(TESTCACHE)/unix/signal/unix_signal.td $(testlib_unix_signal_linux_srcs)
   4347 
   4348 # unix::tty (+linux)
   4349 testlib_unix_tty_linux_srcs = \
   4350 	$(STDLIB)/unix/tty/types.ha \
   4351 	$(STDLIB)/unix/tty/+linux/isatty.ha \
   4352 	$(STDLIB)/unix/tty/+linux/open.ha \
   4353 	$(STDLIB)/unix/tty/+linux/termios.ha \
   4354 	$(STDLIB)/unix/tty/+linux/winsize.ha
   4355 
   4356 $(TESTCACHE)/unix/tty/unix_tty-linux.ssa: $(testlib_unix_tty_linux_srcs) $(testlib_rt) $(testlib_rt_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM))
   4357 	@printf 'HAREC \t$@\n'
   4358 	@mkdir -p $(TESTCACHE)/unix/tty
   4359 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::tty \
   4360 		-t$(TESTCACHE)/unix/tty/unix_tty.td $(testlib_unix_tty_linux_srcs)
   4361 
   4362 # unix::tty (+freebsd)
   4363 testlib_unix_tty_freebsd_srcs = \
   4364 	$(STDLIB)/unix/tty/types.ha \
   4365 	$(STDLIB)/unix/tty/+freebsd/isatty.ha \
   4366 	$(STDLIB)/unix/tty/+freebsd/open.ha \
   4367 	$(STDLIB)/unix/tty/+freebsd/winsize.ha
   4368 
   4369 $(TESTCACHE)/unix/tty/unix_tty-freebsd.ssa: $(testlib_unix_tty_freebsd_srcs) $(testlib_rt) $(testlib_rt_$(PLATFORM)) $(testlib_fs_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_os_$(PLATFORM))
   4370 	@printf 'HAREC \t$@\n'
   4371 	@mkdir -p $(TESTCACHE)/unix/tty
   4372 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::tty \
   4373 		-t$(TESTCACHE)/unix/tty/unix_tty.td $(testlib_unix_tty_freebsd_srcs)
   4374 
   4375 # uuid (+any)
   4376 testlib_uuid_any_srcs = \
   4377 	$(STDLIB)/uuid/uuid.ha
   4378 
   4379 $(TESTCACHE)/uuid/uuid-any.ssa: $(testlib_uuid_any_srcs) $(testlib_rt) $(testlib_crypto_random_$(PLATFORM)) $(testlib_strio_$(PLATFORM)) $(testlib_fmt_$(PLATFORM)) $(testlib_endian_$(PLATFORM)) $(testlib_io_$(PLATFORM)) $(testlib_bytes_$(PLATFORM)) $(testlib_bufio_$(PLATFORM)) $(testlib_strings_$(PLATFORM)) $(testlib_strconv_$(PLATFORM))
   4380 	@printf 'HAREC \t$@\n'
   4381 	@mkdir -p $(TESTCACHE)/uuid
   4382 	@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nuuid \
   4383 		-t$(TESTCACHE)/uuid/uuid.td $(testlib_uuid_any_srcs)
   4384