commit 52d70815e4105c68a4518d62436d1ff4d8f53894
parent 96b0ea6d68cfe8251c2992285349d84341770fa8
Author: Drew DeVault <sir@cmpwn.com>
Date: Sun, 24 Oct 2021 13:00:47 +0200
stdlib.mk: add platform-specific module versions
This allows us to specify the set of supported platforms for each
module, and generate different versions of the module for different
platforms, possibly using different lists of source files.
Signed-off-by: Drew DeVault <sir@cmpwn.com>
Diffstat:
M | scripts/gen-stdlib | | | 242 | +++++++++++++++++++++++++++++++++++++++++++------------------------------------ |
M | scripts/gen-stdlib.sh | | | 65 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- |
M | stdlib.mk | | | 1930 | +++++++++++++++++++++++++++++++++++++++---------------------------------------- |
3 files changed, 1146 insertions(+), 1091 deletions(-)
diff --git a/scripts/gen-stdlib b/scripts/gen-stdlib
@@ -15,20 +15,20 @@ srcdir="$(dirname "$0")"
eval ". $srcdir/gen-stdlib.sh"
gensrcs_rt() {
- gen_srcs rt \
- '+$(PLATFORM)/abort.ha' \
- '+$(PLATFORM)/env.ha' \
- '+$(PLATFORM)/errno.ha' \
- '+$(PLATFORM)/types.ha' \
- '+$(PLATFORM)/segmalloc.ha' \
- '+$(PLATFORM)/platformstart.ha' \
- '+$(PLATFORM)/prctl.ha' \
- '+$(PLATFORM)/+$(ARCH).ha' \
- '+$(PLATFORM)/syscallno+$(ARCH).ha' \
- '+$(PLATFORM)/syscalls.ha' \
- '+$(PLATFORM)/signal.ha' \
- '+$(PLATFORM)/stat.ha' \
- '+$(PLATFORM)/socket.ha' \
+ gen_srcs -plinux rt \
+ '+linux/abort.ha' \
+ '+linux/env.ha' \
+ '+linux/errno.ha' \
+ '+linux/types.ha' \
+ '+linux/segmalloc.ha' \
+ '+linux/platformstart.ha' \
+ '+linux/prctl.ha' \
+ '+linux/+$(ARCH).ha' \
+ '+linux/syscallno+$(ARCH).ha' \
+ '+linux/syscalls.ha' \
+ '+linux/signal.ha' \
+ '+linux/stat.ha' \
+ '+linux/socket.ha' \
'+$(ARCH)/jmp.ha' \
'+$(ARCH)/backtrace.ha' \
'types_arch+$(ARCH).ha' \
@@ -60,7 +60,7 @@ rt() {
+test/run.ha \
+test/ztos.ha
fi
- gen_ssa rt
+ gen_ssa -plinux rt
cat <<EOF
\$($cache)/rt/start.o: \$(STDLIB)/rt/+\$(PLATFORM)/start+\$(ARCH).s
@printf 'AS \t\$@\n'
@@ -99,11 +99,11 @@ ${stdlib}_asm=\$($cache)/rt/syscall.o \\
@mkdir -p \$($cache)/rt
@\$(AS) -o \$@ \$<
-\$($cache)/rt/rt.a: \$($cache)/rt/rt.o \$(${stdlib}_asm)
+\$($cache)/rt/rt-linux.a: \$($cache)/rt/rt-linux.o \$(${stdlib}_asm)
@printf 'AR\t\$@\n'
- @\$(AR) -csr \$@ \$($cache)/rt/rt.o \$(${stdlib}_asm)
+ @\$(AR) -csr \$@ \$($cache)/rt/rt-linux.o \$(${stdlib}_asm)
-${stdlib}_rt=\$($cache)/rt/rt.a
+${stdlib}_rt=\$($cache)/rt/rt-\$(PLATFORM).a
hare_${stdlib}_deps+=\$(${stdlib}_rt)
EOF
@@ -180,10 +180,10 @@ crypto_math() {
}
crypto_random() {
- gen_srcs crypto::random \
- '+$(PLATFORM).ha' \
+ gen_srcs -plinux crypto::random \
+ +linux.ha \
random.ha
- gen_ssa crypto::random rt io errors
+ gen_ssa -plinux crypto::random rt io errors
}
gensrcs_crypto_sha256() {
@@ -543,19 +543,19 @@ hash_fnv() {
}
gensrcs_io() {
- gen_srcs io \
+ gen_srcs -plinux io \
'arch+$(ARCH).ha' \
+ println+linux.ha \
+ +linux/file.ha \
copy.ha \
drain.ha \
empty.ha \
filestream.ha \
handle.ha \
limit.ha \
- 'println+$(PLATFORM).ha' \
stream.ha \
tee.ha \
types.ha \
- '+$(PLATFORM)/file.ha' \
$*
}
@@ -569,47 +569,47 @@ io() {
+test/limit.ha \
+test/stream.ha
fi
- gen_ssa io strings errors
+ gen_ssa -plinux io strings errors
}
iobus_io_uring() {
- gen_srcs iobus::io_uring \
+ gen_srcs -plinux iobus::io_uring \
bus.ha \
handle.ha \
ops.ha \
pool.ha \
types.ha
- gen_ssa iobus::io_uring errors io linux::io_uring net::ip unix::poll
+ gen_ssa -plinux iobus::io_uring errors io linux::io_uring net::ip unix::poll
}
linux() {
- gen_srcs linux \
+ gen_srcs -plinux linux \
start.ha \
env.ha
- gen_ssa linux format::elf
+ gen_ssa -plinux linux format::elf
}
linux_signalfd() {
- gen_srcs linux::signalfd \
+ gen_srcs -plinux linux::signalfd \
signalfd.ha
- gen_ssa linux::signalfd errors
+ gen_ssa -plinux linux::signalfd errors
}
linux_io_uring() {
- gen_srcs linux::io_uring \
+ gen_srcs -plinux linux::io_uring \
cqe.ha \
queue.ha \
register.ha \
setup.ha \
sqe.ha \
uring.ha
- gen_ssa linux::io_uring errors types
+ gen_ssa -plinux linux::io_uring errors types
}
linux_vdso() {
- gen_srcs linux::vdso \
+ gen_srcs -plinux linux::vdso \
vdso.ha
- gen_ssa linux::vdso linux strings format::elf
+ gen_ssa -plinux linux::vdso linux strings format::elf
}
gensrcs_math() {
@@ -619,7 +619,6 @@ gensrcs_math() {
}
math() {
- printf '# math\n'
if [ $testing -eq 0 ]; then
gensrcs_math
else
@@ -629,16 +628,14 @@ math() {
}
net() {
- printf '# net\n'
- gen_srcs net \
- '+$(PLATFORM).ha' \
+ gen_srcs -plinux net \
+ +linux.ha \
errors.ha \
listener.ha
- gen_ssa net io os strings net::ip errors rt fmt
+ gen_ssa -plinux net io os strings net::ip errors rt fmt
}
net_dial() {
- printf '# net::dial\n'
gen_srcs net::dial \
registry.ha \
dial.ha \
@@ -649,7 +646,6 @@ net_dial() {
}
net_dns() {
- printf '# net::dns\n'
gen_srcs net::dns \
decode.ha \
error.ha \
@@ -661,9 +657,9 @@ net_dns() {
}
gensrcs_net_ip() {
- gen_srcs net::ip \
+ gen_srcs -plinux net::ip \
ip.ha \
- '+$(PLATFORM).ha' \
+ +linux.ha \
$*
}
@@ -675,35 +671,32 @@ net_ip() {
gensrcs_net_ip \
+test.ha
fi
- gen_ssa net::ip bytes io strconv strings strio fmt
+ gen_ssa -plinux net::ip bytes io strconv strings strio fmt
}
net_tcp() {
- printf '# net::tcp\n'
- gen_srcs net::tcp \
- '+$(PLATFORM).ha' \
+ gen_srcs -plinux net::tcp \
+ +linux.ha \
listener.ha \
options.ha
- gen_ssa net::tcp io net net::ip os rt
+ gen_ssa -plinux net::tcp io net net::ip os rt
}
net_udp() {
- printf '# net::udp\n'
- gen_srcs net::udp \
- '+$(PLATFORM).ha' \
+ gen_srcs -plinux net::udp \
+ +linux.ha \
options.ha
- gen_ssa net::udp net net::ip errors rt os io
+ gen_ssa -plinux net::udp net net::ip errors rt os io
}
net_unix() {
- printf '# net::unix\n'
- gen_srcs net::unix \
- '+$(PLATFORM).ha' \
+ gen_srcs -plinux net::unix \
+ +linux.ha \
addr.ha \
dial.ha \
listener.ha \
options.ha
- gen_ssa net::unix net errors os io strings types fmt net::dial
+ gen_ssa -plinux net::unix net errors os io strings types fmt net::dial
}
math_random() {
@@ -713,23 +706,23 @@ math_random() {
}
os() {
- gen_srcs os \
- '+$(PLATFORM)/environ.ha' \
- '+$(PLATFORM)/exit.ha' \
- '+$(PLATFORM)/dirfdfs.ha' \
- '+$(PLATFORM)/stdfd.ha' \
- '+$(PLATFORM)/fs.ha' \
+ gen_srcs -plinux os \
+ +linux/environ.ha \
+ +linux/exit.ha \
+ +linux/dirfdfs.ha \
+ +linux/stdfd.ha \
+ +linux/fs.ha \
fs.ha
- gen_ssa os io strings types fs encoding::utf8 bytes bufio errors
+ gen_ssa -plinux os io strings types fs encoding::utf8 bytes bufio errors
}
os_exec() {
- gen_srcs os::exec \
- 'exec+$(PLATFORM).ha' \
- 'process+$(PLATFORM).ha' \
+ gen_srcs -plinux os::exec \
+ exec+linux.ha \
+ process+linux.ha \
types.ha \
cmd.ha
- gen_ssa os::exec os strings fmt bytes path errors
+ gen_ssa -plinux os::exec os strings fmt bytes path errors
}
path() {
@@ -817,19 +810,19 @@ strio() {
gen_ssa strio io strings encoding::utf8 errors
}
+temp() {
+ gen_srcs -plinux temp +linux.ha
+ gen_ssa -plinux temp \
+ crypto::random encoding::hex fs io os path strio fmt strings
+}
+
time() {
- gen_srcs time \
- '+$(PLATFORM)/functions.ha' \
- '+$(PLATFORM)/+$(ARCH).ha' \
+ gen_srcs -plinux time \
+ +linux/functions.ha \
+ +linux/+'$(ARCH)'.ha \
arithm.ha \
types.ha
- gen_ssa time linux::vdso
-}
-
-temp() {
- gen_srcs temp \
- '+$(PLATFORM).ha'
- gen_ssa temp crypto::random encoding::hex fs io os path strio fmt strings
+ gen_ssa -plinux time linux::vdso
}
gensrcs_types() {
@@ -854,13 +847,13 @@ types() {
unix() {
# XXX: getuid and setuid are probably platform-specific too
- gen_srcs unix \
- '+$(PLATFORM)/nice.ha' \
- '+$(PLATFORM)/pipe.ha' \
- '+$(PLATFORM)/umask.ha' \
+ gen_srcs -plinux unix \
+ +linux/nice.ha \
+ +linux/pipe.ha \
+ +linux/umask.ha \
getuid.ha \
setuid.ha
- gen_ssa unix errors fs
+ gen_ssa -plinux unix errors fs
}
unix_hosts() {
@@ -878,9 +871,8 @@ unix_passwd() {
}
unix_poll() {
- gen_srcs unix::poll \
- '+$(PLATFORM)'.ha
- gen_ssa unix::poll rt errors time
+ gen_srcs -plinux unix::poll +linux.ha
+ gen_ssa -plinux unix::poll rt errors time
}
unix_resolvconf() {
@@ -890,12 +882,12 @@ unix_resolvconf() {
}
unix_tty() {
- gen_srcs unix::tty \
+ gen_srcs -plinux unix::tty \
types.ha \
- '+$(PLATFORM)/isatty.ha' \
- '+$(PLATFORM)/open.ha' \
- '+$(PLATFORM)/winsize.ha'
- gen_ssa unix::tty rt fs io os
+ +linux/isatty.ha \
+ +linux/open.ha \
+ +linux/winsize.ha
+ gen_ssa -plinux unix::tty rt fs io os
}
uuid() {
@@ -906,6 +898,9 @@ uuid() {
printf '# This file is generated by the gen-stdlib script, do not edit it by hand\n\n'
+# List of modules and their supported platforms. Place a tab between the module
+# and its platform list, and spaces between each supported platform. Omitting
+# the platform list implies all platforms are supported.
modules="ascii
bufio
bytes
@@ -913,7 +908,7 @@ compress::flate
compress::zlib
crypto::blake2b
crypto::math
-crypto::random
+crypto::random linux
crypto::md5
crypto::sha1
crypto::sha256
@@ -945,47 +940,72 @@ hash::crc16
hash::crc32
hash::crc64
hash::fnv
-io
-iobus::io_uring
-linux
-linux::signalfd
-linux::io_uring
-linux::vdso
+io linux
+iobus::io_uring linux
+linux linux
+linux::signalfd linux
+linux::io_uring linux
+linux::vdso linux
math
-net
+net linux
net::dial
net::dns
-net::ip
-net::tcp
-net::udp
-net::unix
+net::ip linux
+net::tcp linux
+net::udp linux
+net::unix linux
math::random
-os
-os::exec
+os linux
+os::exec linux
path
slice
sort
strconv
strings
strio
-temp
-time
+temp linux
+time linux
types
-unix
+unix linux
unix::hosts
unix::passwd
-unix::poll
+unix::poll linux
unix::resolvconf
-unix::tty
+unix::tty linux
uuid"
stdlib() {
rt
+ IFS="
+"
for module in $modules; do
- gen_lib "$module"
+ unset IFS
+ if [ -z "$(echo "$module" | cut -sf1)" ]
+ then
+ gen_lib "$module"
+ else
+ platforms="$(echo "$module" | cut -sf2-)"
+ module="$(echo "$module" | cut -sf1)"
+ for platform in $platforms
+ do
+ gen_lib -p "$platform" "$module"
+ done
+ fi
+ IFS="
+"
done
+ IFS="
+"
for module in $modules; do
+ unset IFS
+ if [ -n "$(echo "$module" | cut -sf1)" ]
+ then
+ module="$(echo "$module" | cut -sf1)"
+ fi
"$(mod_file "$module")"
+ IFS="
+"
done
+ unset IFS
}
genrules
diff --git a/scripts/gen-stdlib.sh b/scripts/gen-stdlib.sh
@@ -9,12 +9,29 @@ mod_var() {
}
gen_srcs() {
+ platform=any
+ while getopts p: name
+ do
+ case $name in
+ p)
+ platform="$OPTARG"
+ ;;
+ ?)
+ printf 'Invalid use of gen_srcs' >&2
+ exit 1
+ ;;
+ esac
+ done
+ shift $(($OPTIND - 1))
+
mod="$1"
+ shift
+
path="$(mod_path "$mod")"
var="$(mod_var "$mod")"
- shift
- printf '# %s\n' "$mod"
- printf '%s_srcs= \\\n' "$var"
+
+ printf '# %s (+%s)\n' "$mod" "$platform"
+ printf '%s_%s_srcs= \\\n' "$var" "$platform"
while [ $# -ne 0 ]
do
if [ $# -eq 1 ]
@@ -28,13 +45,29 @@ gen_srcs() {
}
gen_ssa() {
+ platform=any
+ while getopts p: name
+ do
+ case $name in
+ p)
+ platform="$OPTARG"
+ ;;
+ ?)
+ printf 'Invalid use of gen_srcs' >&2
+ exit 1
+ ;;
+ esac
+ done
+ shift $(($OPTIND - 1))
+
mod="$1"
+ shift
+
path=$(mod_path "$mod")
file=$(mod_file "$mod")
var=$(mod_var "$mod")
- shift
- printf "\$($cache)/$path/$file.ssa: \$(${var}_srcs) \$(${stdlib}_rt)"
+ printf "\$($cache)/$path/$file-$platform.ssa: \$(${var}_${platform}_srcs) \$(${stdlib}_rt)"
for dep in $*
do
printf ' $(%s)' "$(mod_var "$dep")"
@@ -45,18 +78,34 @@ gen_ssa() {
@printf 'HAREC \t\$@\n'
@mkdir -p \$($cache)/$path
@HARECACHE=\$($cache) \$(HAREC) \$($flags) -o \$@ -N$mod \\
- -t\$($cache)/$path/$file.td \$(${var}_srcs)
+ -t\$($cache)/$path/$file.td \$(${var}_${platform}_srcs)
EOF
}
gen_lib() {
- printf "# gen_lib $1\n"
+ platform=any
+ while getopts p: name
+ do
+ case $name in
+ p)
+ platform="$OPTARG"
+ ;;
+ ?)
+ printf 'Invalid use of gen_srcs' >&2
+ exit 1
+ ;;
+ esac
+ done
+ shift $(($OPTIND - 1))
+
+ printf "# gen_lib $1 ($platform)\n"
+
mod="$1"
path=$(mod_path "$mod")
file=$(mod_file "$mod")
var=$(mod_var "$mod")
- printf "%s=\$(%s)/%s/%s.o\n" "$var" "$cache" "$path" "$file"
+ printf "%s=\$(%s)/%s/%s-%s.o\n" "$var" "$cache" "$path" "$file" "$platform"
printf 'hare_%s_deps+=$(%s)\n\n' "$stdlib" "$var"
}
diff --git a/stdlib.mk b/stdlib.mk
@@ -1,21 +1,21 @@
# This file is generated by the gen-stdlib script, do not edit it by hand
rtscript=$(STDLIB)/rt/hare.sc
-# rt
-stdlib_rt_srcs= \
- $(STDLIB)/rt/+$(PLATFORM)/abort.ha \
- $(STDLIB)/rt/+$(PLATFORM)/env.ha \
- $(STDLIB)/rt/+$(PLATFORM)/errno.ha \
- $(STDLIB)/rt/+$(PLATFORM)/types.ha \
- $(STDLIB)/rt/+$(PLATFORM)/segmalloc.ha \
- $(STDLIB)/rt/+$(PLATFORM)/platformstart.ha \
- $(STDLIB)/rt/+$(PLATFORM)/prctl.ha \
- $(STDLIB)/rt/+$(PLATFORM)/+$(ARCH).ha \
- $(STDLIB)/rt/+$(PLATFORM)/syscallno+$(ARCH).ha \
- $(STDLIB)/rt/+$(PLATFORM)/syscalls.ha \
- $(STDLIB)/rt/+$(PLATFORM)/signal.ha \
- $(STDLIB)/rt/+$(PLATFORM)/stat.ha \
- $(STDLIB)/rt/+$(PLATFORM)/socket.ha \
+# rt (+linux)
+stdlib_rt_linux_srcs= \
+ $(STDLIB)/rt/+linux/abort.ha \
+ $(STDLIB)/rt/+linux/env.ha \
+ $(STDLIB)/rt/+linux/errno.ha \
+ $(STDLIB)/rt/+linux/types.ha \
+ $(STDLIB)/rt/+linux/segmalloc.ha \
+ $(STDLIB)/rt/+linux/platformstart.ha \
+ $(STDLIB)/rt/+linux/prctl.ha \
+ $(STDLIB)/rt/+linux/+$(ARCH).ha \
+ $(STDLIB)/rt/+linux/syscallno+$(ARCH).ha \
+ $(STDLIB)/rt/+linux/syscalls.ha \
+ $(STDLIB)/rt/+linux/signal.ha \
+ $(STDLIB)/rt/+linux/stat.ha \
+ $(STDLIB)/rt/+linux/socket.ha \
$(STDLIB)/rt/+$(ARCH)/jmp.ha \
$(STDLIB)/rt/+$(ARCH)/backtrace.ha \
$(STDLIB)/rt/types_arch+$(ARCH).ha \
@@ -30,11 +30,11 @@ stdlib_rt_srcs= \
$(STDLIB)/rt/abort.ha \
$(STDLIB)/rt/start.ha
-$(HARECACHE)/rt/rt.ssa: $(stdlib_rt_srcs) $(stdlib_rt)
+$(HARECACHE)/rt/rt-linux.ssa: $(stdlib_rt_linux_srcs) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/rt
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nrt \
- -t$(HARECACHE)/rt/rt.td $(stdlib_rt_srcs)
+ -t$(HARECACHE)/rt/rt.td $(stdlib_rt_linux_srcs)
$(HARECACHE)/rt/start.o: $(STDLIB)/rt/+$(PLATFORM)/start+$(ARCH).s
@printf 'AS \t$@\n'
@@ -73,326 +73,326 @@ $(HARECACHE)/rt/getfp.o: $(STDLIB)/rt/+$(ARCH)/getfp.s
@mkdir -p $(HARECACHE)/rt
@$(AS) -o $@ $<
-$(HARECACHE)/rt/rt.a: $(HARECACHE)/rt/rt.o $(stdlib_asm)
+$(HARECACHE)/rt/rt-linux.a: $(HARECACHE)/rt/rt-linux.o $(stdlib_asm)
@printf 'AR\t$@\n'
- @$(AR) -csr $@ $(HARECACHE)/rt/rt.o $(stdlib_asm)
+ @$(AR) -csr $@ $(HARECACHE)/rt/rt-linux.o $(stdlib_asm)
-stdlib_rt=$(HARECACHE)/rt/rt.a
+stdlib_rt=$(HARECACHE)/rt/rt-$(PLATFORM).a
hare_stdlib_deps+=$(stdlib_rt)
-# gen_lib ascii
-stdlib_ascii=$(HARECACHE)/ascii/ascii.o
+# gen_lib ascii (any)
+stdlib_ascii=$(HARECACHE)/ascii/ascii-any.o
hare_stdlib_deps+=$(stdlib_ascii)
-# gen_lib bufio
-stdlib_bufio=$(HARECACHE)/bufio/bufio.o
+# gen_lib bufio (any)
+stdlib_bufio=$(HARECACHE)/bufio/bufio-any.o
hare_stdlib_deps+=$(stdlib_bufio)
-# gen_lib bytes
-stdlib_bytes=$(HARECACHE)/bytes/bytes.o
+# gen_lib bytes (any)
+stdlib_bytes=$(HARECACHE)/bytes/bytes-any.o
hare_stdlib_deps+=$(stdlib_bytes)
-# gen_lib compress::flate
-stdlib_compress_flate=$(HARECACHE)/compress/flate/compress_flate.o
+# gen_lib compress::flate (any)
+stdlib_compress_flate=$(HARECACHE)/compress/flate/compress_flate-any.o
hare_stdlib_deps+=$(stdlib_compress_flate)
-# gen_lib compress::zlib
-stdlib_compress_zlib=$(HARECACHE)/compress/zlib/compress_zlib.o
+# gen_lib compress::zlib (any)
+stdlib_compress_zlib=$(HARECACHE)/compress/zlib/compress_zlib-any.o
hare_stdlib_deps+=$(stdlib_compress_zlib)
-# gen_lib crypto::blake2b
-stdlib_crypto_blake2b=$(HARECACHE)/crypto/blake2b/crypto_blake2b.o
+# gen_lib crypto::blake2b (any)
+stdlib_crypto_blake2b=$(HARECACHE)/crypto/blake2b/crypto_blake2b-any.o
hare_stdlib_deps+=$(stdlib_crypto_blake2b)
-# gen_lib crypto::math
-stdlib_crypto_math=$(HARECACHE)/crypto/math/crypto_math.o
+# gen_lib crypto::math (any)
+stdlib_crypto_math=$(HARECACHE)/crypto/math/crypto_math-any.o
hare_stdlib_deps+=$(stdlib_crypto_math)
-# gen_lib crypto::random
-stdlib_crypto_random=$(HARECACHE)/crypto/random/crypto_random.o
+# gen_lib crypto::random (linux)
+stdlib_crypto_random=$(HARECACHE)/crypto/random/crypto_random-linux.o
hare_stdlib_deps+=$(stdlib_crypto_random)
-# gen_lib crypto::md5
-stdlib_crypto_md5=$(HARECACHE)/crypto/md5/crypto_md5.o
+# gen_lib crypto::md5 (any)
+stdlib_crypto_md5=$(HARECACHE)/crypto/md5/crypto_md5-any.o
hare_stdlib_deps+=$(stdlib_crypto_md5)
-# gen_lib crypto::sha1
-stdlib_crypto_sha1=$(HARECACHE)/crypto/sha1/crypto_sha1.o
+# gen_lib crypto::sha1 (any)
+stdlib_crypto_sha1=$(HARECACHE)/crypto/sha1/crypto_sha1-any.o
hare_stdlib_deps+=$(stdlib_crypto_sha1)
-# gen_lib crypto::sha256
-stdlib_crypto_sha256=$(HARECACHE)/crypto/sha256/crypto_sha256.o
+# gen_lib crypto::sha256 (any)
+stdlib_crypto_sha256=$(HARECACHE)/crypto/sha256/crypto_sha256-any.o
hare_stdlib_deps+=$(stdlib_crypto_sha256)
-# gen_lib crypto::sha512
-stdlib_crypto_sha512=$(HARECACHE)/crypto/sha512/crypto_sha512.o
+# gen_lib crypto::sha512 (any)
+stdlib_crypto_sha512=$(HARECACHE)/crypto/sha512/crypto_sha512-any.o
hare_stdlib_deps+=$(stdlib_crypto_sha512)
-# gen_lib dirs
-stdlib_dirs=$(HARECACHE)/dirs/dirs.o
+# gen_lib dirs (any)
+stdlib_dirs=$(HARECACHE)/dirs/dirs-any.o
hare_stdlib_deps+=$(stdlib_dirs)
-# gen_lib encoding::base64
-stdlib_encoding_base64=$(HARECACHE)/encoding/base64/encoding_base64.o
+# gen_lib encoding::base64 (any)
+stdlib_encoding_base64=$(HARECACHE)/encoding/base64/encoding_base64-any.o
hare_stdlib_deps+=$(stdlib_encoding_base64)
-# gen_lib encoding::hex
-stdlib_encoding_hex=$(HARECACHE)/encoding/hex/encoding_hex.o
+# gen_lib encoding::hex (any)
+stdlib_encoding_hex=$(HARECACHE)/encoding/hex/encoding_hex-any.o
hare_stdlib_deps+=$(stdlib_encoding_hex)
-# gen_lib encoding::utf8
-stdlib_encoding_utf8=$(HARECACHE)/encoding/utf8/encoding_utf8.o
+# gen_lib encoding::utf8 (any)
+stdlib_encoding_utf8=$(HARECACHE)/encoding/utf8/encoding_utf8-any.o
hare_stdlib_deps+=$(stdlib_encoding_utf8)
-# gen_lib endian
-stdlib_endian=$(HARECACHE)/endian/endian.o
+# gen_lib endian (any)
+stdlib_endian=$(HARECACHE)/endian/endian-any.o
hare_stdlib_deps+=$(stdlib_endian)
-# gen_lib errors
-stdlib_errors=$(HARECACHE)/errors/errors.o
+# gen_lib errors (any)
+stdlib_errors=$(HARECACHE)/errors/errors-any.o
hare_stdlib_deps+=$(stdlib_errors)
-# gen_lib fmt
-stdlib_fmt=$(HARECACHE)/fmt/fmt.o
+# gen_lib fmt (any)
+stdlib_fmt=$(HARECACHE)/fmt/fmt-any.o
hare_stdlib_deps+=$(stdlib_fmt)
-# gen_lib fnmatch
-stdlib_fnmatch=$(HARECACHE)/fnmatch/fnmatch.o
+# gen_lib fnmatch (any)
+stdlib_fnmatch=$(HARECACHE)/fnmatch/fnmatch-any.o
hare_stdlib_deps+=$(stdlib_fnmatch)
-# gen_lib format::elf
-stdlib_format_elf=$(HARECACHE)/format/elf/format_elf.o
+# gen_lib format::elf (any)
+stdlib_format_elf=$(HARECACHE)/format/elf/format_elf-any.o
hare_stdlib_deps+=$(stdlib_format_elf)
-# gen_lib format::ini
-stdlib_format_ini=$(HARECACHE)/format/ini/format_ini.o
+# gen_lib format::ini (any)
+stdlib_format_ini=$(HARECACHE)/format/ini/format_ini-any.o
hare_stdlib_deps+=$(stdlib_format_ini)
-# gen_lib format::xml
-stdlib_format_xml=$(HARECACHE)/format/xml/format_xml.o
+# gen_lib format::xml (any)
+stdlib_format_xml=$(HARECACHE)/format/xml/format_xml-any.o
hare_stdlib_deps+=$(stdlib_format_xml)
-# gen_lib fs
-stdlib_fs=$(HARECACHE)/fs/fs.o
+# gen_lib fs (any)
+stdlib_fs=$(HARECACHE)/fs/fs-any.o
hare_stdlib_deps+=$(stdlib_fs)
-# gen_lib fs::mem
-stdlib_fs_mem=$(HARECACHE)/fs/mem/fs_mem.o
+# gen_lib fs::mem (any)
+stdlib_fs_mem=$(HARECACHE)/fs/mem/fs_mem-any.o
hare_stdlib_deps+=$(stdlib_fs_mem)
-# gen_lib getopt
-stdlib_getopt=$(HARECACHE)/getopt/getopt.o
+# gen_lib getopt (any)
+stdlib_getopt=$(HARECACHE)/getopt/getopt-any.o
hare_stdlib_deps+=$(stdlib_getopt)
-# gen_lib hare::ast
-stdlib_hare_ast=$(HARECACHE)/hare/ast/hare_ast.o
+# gen_lib hare::ast (any)
+stdlib_hare_ast=$(HARECACHE)/hare/ast/hare_ast-any.o
hare_stdlib_deps+=$(stdlib_hare_ast)
-# gen_lib hare::lex
-stdlib_hare_lex=$(HARECACHE)/hare/lex/hare_lex.o
+# gen_lib hare::lex (any)
+stdlib_hare_lex=$(HARECACHE)/hare/lex/hare_lex-any.o
hare_stdlib_deps+=$(stdlib_hare_lex)
-# gen_lib hare::module
-stdlib_hare_module=$(HARECACHE)/hare/module/hare_module.o
+# gen_lib hare::module (any)
+stdlib_hare_module=$(HARECACHE)/hare/module/hare_module-any.o
hare_stdlib_deps+=$(stdlib_hare_module)
-# gen_lib hare::parse
-stdlib_hare_parse=$(HARECACHE)/hare/parse/hare_parse.o
+# gen_lib hare::parse (any)
+stdlib_hare_parse=$(HARECACHE)/hare/parse/hare_parse-any.o
hare_stdlib_deps+=$(stdlib_hare_parse)
-# gen_lib hare::types
-stdlib_hare_types=$(HARECACHE)/hare/types/hare_types.o
+# gen_lib hare::types (any)
+stdlib_hare_types=$(HARECACHE)/hare/types/hare_types-any.o
hare_stdlib_deps+=$(stdlib_hare_types)
-# gen_lib hare::unit
-stdlib_hare_unit=$(HARECACHE)/hare/unit/hare_unit.o
+# gen_lib hare::unit (any)
+stdlib_hare_unit=$(HARECACHE)/hare/unit/hare_unit-any.o
hare_stdlib_deps+=$(stdlib_hare_unit)
-# gen_lib hare::unparse
-stdlib_hare_unparse=$(HARECACHE)/hare/unparse/hare_unparse.o
+# gen_lib hare::unparse (any)
+stdlib_hare_unparse=$(HARECACHE)/hare/unparse/hare_unparse-any.o
hare_stdlib_deps+=$(stdlib_hare_unparse)
-# gen_lib hash
-stdlib_hash=$(HARECACHE)/hash/hash.o
+# gen_lib hash (any)
+stdlib_hash=$(HARECACHE)/hash/hash-any.o
hare_stdlib_deps+=$(stdlib_hash)
-# gen_lib hash::adler32
-stdlib_hash_adler32=$(HARECACHE)/hash/adler32/hash_adler32.o
+# gen_lib hash::adler32 (any)
+stdlib_hash_adler32=$(HARECACHE)/hash/adler32/hash_adler32-any.o
hare_stdlib_deps+=$(stdlib_hash_adler32)
-# gen_lib hash::crc16
-stdlib_hash_crc16=$(HARECACHE)/hash/crc16/hash_crc16.o
+# gen_lib hash::crc16 (any)
+stdlib_hash_crc16=$(HARECACHE)/hash/crc16/hash_crc16-any.o
hare_stdlib_deps+=$(stdlib_hash_crc16)
-# gen_lib hash::crc32
-stdlib_hash_crc32=$(HARECACHE)/hash/crc32/hash_crc32.o
+# gen_lib hash::crc32 (any)
+stdlib_hash_crc32=$(HARECACHE)/hash/crc32/hash_crc32-any.o
hare_stdlib_deps+=$(stdlib_hash_crc32)
-# gen_lib hash::crc64
-stdlib_hash_crc64=$(HARECACHE)/hash/crc64/hash_crc64.o
+# gen_lib hash::crc64 (any)
+stdlib_hash_crc64=$(HARECACHE)/hash/crc64/hash_crc64-any.o
hare_stdlib_deps+=$(stdlib_hash_crc64)
-# gen_lib hash::fnv
-stdlib_hash_fnv=$(HARECACHE)/hash/fnv/hash_fnv.o
+# gen_lib hash::fnv (any)
+stdlib_hash_fnv=$(HARECACHE)/hash/fnv/hash_fnv-any.o
hare_stdlib_deps+=$(stdlib_hash_fnv)
-# gen_lib io
-stdlib_io=$(HARECACHE)/io/io.o
+# gen_lib io (linux)
+stdlib_io=$(HARECACHE)/io/io-linux.o
hare_stdlib_deps+=$(stdlib_io)
-# gen_lib iobus::io_uring
-stdlib_iobus_io_uring=$(HARECACHE)/iobus/io_uring/iobus_io_uring.o
+# gen_lib iobus::io_uring (linux)
+stdlib_iobus_io_uring=$(HARECACHE)/iobus/io_uring/iobus_io_uring-linux.o
hare_stdlib_deps+=$(stdlib_iobus_io_uring)
-# gen_lib linux
-stdlib_linux=$(HARECACHE)/linux/linux.o
+# gen_lib linux (linux)
+stdlib_linux=$(HARECACHE)/linux/linux-linux.o
hare_stdlib_deps+=$(stdlib_linux)
-# gen_lib linux::signalfd
-stdlib_linux_signalfd=$(HARECACHE)/linux/signalfd/linux_signalfd.o
+# gen_lib linux::signalfd (linux)
+stdlib_linux_signalfd=$(HARECACHE)/linux/signalfd/linux_signalfd-linux.o
hare_stdlib_deps+=$(stdlib_linux_signalfd)
-# gen_lib linux::io_uring
-stdlib_linux_io_uring=$(HARECACHE)/linux/io_uring/linux_io_uring.o
+# gen_lib linux::io_uring (linux)
+stdlib_linux_io_uring=$(HARECACHE)/linux/io_uring/linux_io_uring-linux.o
hare_stdlib_deps+=$(stdlib_linux_io_uring)
-# gen_lib linux::vdso
-stdlib_linux_vdso=$(HARECACHE)/linux/vdso/linux_vdso.o
+# gen_lib linux::vdso (linux)
+stdlib_linux_vdso=$(HARECACHE)/linux/vdso/linux_vdso-linux.o
hare_stdlib_deps+=$(stdlib_linux_vdso)
-# gen_lib math
-stdlib_math=$(HARECACHE)/math/math.o
+# gen_lib math (any)
+stdlib_math=$(HARECACHE)/math/math-any.o
hare_stdlib_deps+=$(stdlib_math)
-# gen_lib net
-stdlib_net=$(HARECACHE)/net/net.o
+# gen_lib net (linux)
+stdlib_net=$(HARECACHE)/net/net-linux.o
hare_stdlib_deps+=$(stdlib_net)
-# gen_lib net::dial
-stdlib_net_dial=$(HARECACHE)/net/dial/net_dial.o
+# gen_lib net::dial (any)
+stdlib_net_dial=$(HARECACHE)/net/dial/net_dial-any.o
hare_stdlib_deps+=$(stdlib_net_dial)
-# gen_lib net::dns
-stdlib_net_dns=$(HARECACHE)/net/dns/net_dns.o
+# gen_lib net::dns (any)
+stdlib_net_dns=$(HARECACHE)/net/dns/net_dns-any.o
hare_stdlib_deps+=$(stdlib_net_dns)
-# gen_lib net::ip
-stdlib_net_ip=$(HARECACHE)/net/ip/net_ip.o
+# gen_lib net::ip (linux)
+stdlib_net_ip=$(HARECACHE)/net/ip/net_ip-linux.o
hare_stdlib_deps+=$(stdlib_net_ip)
-# gen_lib net::tcp
-stdlib_net_tcp=$(HARECACHE)/net/tcp/net_tcp.o
+# gen_lib net::tcp (linux)
+stdlib_net_tcp=$(HARECACHE)/net/tcp/net_tcp-linux.o
hare_stdlib_deps+=$(stdlib_net_tcp)
-# gen_lib net::udp
-stdlib_net_udp=$(HARECACHE)/net/udp/net_udp.o
+# gen_lib net::udp (linux)
+stdlib_net_udp=$(HARECACHE)/net/udp/net_udp-linux.o
hare_stdlib_deps+=$(stdlib_net_udp)
-# gen_lib net::unix
-stdlib_net_unix=$(HARECACHE)/net/unix/net_unix.o
+# gen_lib net::unix (linux)
+stdlib_net_unix=$(HARECACHE)/net/unix/net_unix-linux.o
hare_stdlib_deps+=$(stdlib_net_unix)
-# gen_lib math::random
-stdlib_math_random=$(HARECACHE)/math/random/math_random.o
+# gen_lib math::random (any)
+stdlib_math_random=$(HARECACHE)/math/random/math_random-any.o
hare_stdlib_deps+=$(stdlib_math_random)
-# gen_lib os
-stdlib_os=$(HARECACHE)/os/os.o
+# gen_lib os (linux)
+stdlib_os=$(HARECACHE)/os/os-linux.o
hare_stdlib_deps+=$(stdlib_os)
-# gen_lib os::exec
-stdlib_os_exec=$(HARECACHE)/os/exec/os_exec.o
+# gen_lib os::exec (linux)
+stdlib_os_exec=$(HARECACHE)/os/exec/os_exec-linux.o
hare_stdlib_deps+=$(stdlib_os_exec)
-# gen_lib path
-stdlib_path=$(HARECACHE)/path/path.o
+# gen_lib path (any)
+stdlib_path=$(HARECACHE)/path/path-any.o
hare_stdlib_deps+=$(stdlib_path)
-# gen_lib slice
-stdlib_slice=$(HARECACHE)/slice/slice.o
+# gen_lib slice (any)
+stdlib_slice=$(HARECACHE)/slice/slice-any.o
hare_stdlib_deps+=$(stdlib_slice)
-# gen_lib sort
-stdlib_sort=$(HARECACHE)/sort/sort.o
+# gen_lib sort (any)
+stdlib_sort=$(HARECACHE)/sort/sort-any.o
hare_stdlib_deps+=$(stdlib_sort)
-# gen_lib strconv
-stdlib_strconv=$(HARECACHE)/strconv/strconv.o
+# gen_lib strconv (any)
+stdlib_strconv=$(HARECACHE)/strconv/strconv-any.o
hare_stdlib_deps+=$(stdlib_strconv)
-# gen_lib strings
-stdlib_strings=$(HARECACHE)/strings/strings.o
+# gen_lib strings (any)
+stdlib_strings=$(HARECACHE)/strings/strings-any.o
hare_stdlib_deps+=$(stdlib_strings)
-# gen_lib strio
-stdlib_strio=$(HARECACHE)/strio/strio.o
+# gen_lib strio (any)
+stdlib_strio=$(HARECACHE)/strio/strio-any.o
hare_stdlib_deps+=$(stdlib_strio)
-# gen_lib temp
-stdlib_temp=$(HARECACHE)/temp/temp.o
+# gen_lib temp (linux)
+stdlib_temp=$(HARECACHE)/temp/temp-linux.o
hare_stdlib_deps+=$(stdlib_temp)
-# gen_lib time
-stdlib_time=$(HARECACHE)/time/time.o
+# gen_lib time (linux)
+stdlib_time=$(HARECACHE)/time/time-linux.o
hare_stdlib_deps+=$(stdlib_time)
-# gen_lib types
-stdlib_types=$(HARECACHE)/types/types.o
+# gen_lib types (any)
+stdlib_types=$(HARECACHE)/types/types-any.o
hare_stdlib_deps+=$(stdlib_types)
-# gen_lib unix
-stdlib_unix=$(HARECACHE)/unix/unix.o
+# gen_lib unix (linux)
+stdlib_unix=$(HARECACHE)/unix/unix-linux.o
hare_stdlib_deps+=$(stdlib_unix)
-# gen_lib unix::hosts
-stdlib_unix_hosts=$(HARECACHE)/unix/hosts/unix_hosts.o
+# gen_lib unix::hosts (any)
+stdlib_unix_hosts=$(HARECACHE)/unix/hosts/unix_hosts-any.o
hare_stdlib_deps+=$(stdlib_unix_hosts)
-# gen_lib unix::passwd
-stdlib_unix_passwd=$(HARECACHE)/unix/passwd/unix_passwd.o
+# gen_lib unix::passwd (any)
+stdlib_unix_passwd=$(HARECACHE)/unix/passwd/unix_passwd-any.o
hare_stdlib_deps+=$(stdlib_unix_passwd)
-# gen_lib unix::poll
-stdlib_unix_poll=$(HARECACHE)/unix/poll/unix_poll.o
+# gen_lib unix::poll (linux)
+stdlib_unix_poll=$(HARECACHE)/unix/poll/unix_poll-linux.o
hare_stdlib_deps+=$(stdlib_unix_poll)
-# gen_lib unix::resolvconf
-stdlib_unix_resolvconf=$(HARECACHE)/unix/resolvconf/unix_resolvconf.o
+# gen_lib unix::resolvconf (any)
+stdlib_unix_resolvconf=$(HARECACHE)/unix/resolvconf/unix_resolvconf-any.o
hare_stdlib_deps+=$(stdlib_unix_resolvconf)
-# gen_lib unix::tty
-stdlib_unix_tty=$(HARECACHE)/unix/tty/unix_tty.o
+# gen_lib unix::tty (linux)
+stdlib_unix_tty=$(HARECACHE)/unix/tty/unix_tty-linux.o
hare_stdlib_deps+=$(stdlib_unix_tty)
-# gen_lib uuid
-stdlib_uuid=$(HARECACHE)/uuid/uuid.o
+# gen_lib uuid (any)
+stdlib_uuid=$(HARECACHE)/uuid/uuid-any.o
hare_stdlib_deps+=$(stdlib_uuid)
-# ascii
-stdlib_ascii_srcs= \
+# ascii (+any)
+stdlib_ascii_any_srcs= \
$(STDLIB)/ascii/ctype.ha \
$(STDLIB)/ascii/strcmp.ha
-$(HARECACHE)/ascii/ascii.ssa: $(stdlib_ascii_srcs) $(stdlib_rt) $(stdlib_strings)
+$(HARECACHE)/ascii/ascii-any.ssa: $(stdlib_ascii_any_srcs) $(stdlib_rt) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/ascii
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nascii \
- -t$(HARECACHE)/ascii/ascii.td $(stdlib_ascii_srcs)
+ -t$(HARECACHE)/ascii/ascii.td $(stdlib_ascii_any_srcs)
-# bufio
-stdlib_bufio_srcs= \
+# bufio (+any)
+stdlib_bufio_any_srcs= \
$(STDLIB)/bufio/buffered.ha \
$(STDLIB)/bufio/memstream.ha \
$(STDLIB)/bufio/scanner.ha
-$(HARECACHE)/bufio/bufio.ssa: $(stdlib_bufio_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_bytes) $(stdlib_strings) $(stdlib_encoding_utf8) $(stdlib_errors) $(stdlib_types)
+$(HARECACHE)/bufio/bufio-any.ssa: $(stdlib_bufio_any_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_bytes) $(stdlib_strings) $(stdlib_encoding_utf8) $(stdlib_errors) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/bufio
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nbufio \
- -t$(HARECACHE)/bufio/bufio.td $(stdlib_bufio_srcs)
+ -t$(HARECACHE)/bufio/bufio.td $(stdlib_bufio_any_srcs)
-# bytes
-stdlib_bytes_srcs= \
+# bytes (+any)
+stdlib_bytes_any_srcs= \
$(STDLIB)/bytes/contains.ha \
$(STDLIB)/bytes/copy.ha \
$(STDLIB)/bytes/equal.ha \
@@ -401,263 +401,263 @@ stdlib_bytes_srcs= \
$(STDLIB)/bytes/tokenize.ha \
$(STDLIB)/bytes/two_way.ha
-$(HARECACHE)/bytes/bytes.ssa: $(stdlib_bytes_srcs) $(stdlib_rt) $(stdlib_types)
+$(HARECACHE)/bytes/bytes-any.ssa: $(stdlib_bytes_any_srcs) $(stdlib_rt) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/bytes
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nbytes \
- -t$(HARECACHE)/bytes/bytes.td $(stdlib_bytes_srcs)
+ -t$(HARECACHE)/bytes/bytes.td $(stdlib_bytes_any_srcs)
-# compress::flate
-stdlib_compress_flate_srcs= \
+# compress::flate (+any)
+stdlib_compress_flate_any_srcs= \
$(STDLIB)/compress/flate/inflate.ha
-$(HARECACHE)/compress/flate/compress_flate.ssa: $(stdlib_compress_flate_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_bytes) $(stdlib_endian) $(stdlib_errors) $(stdlib_io) $(stdlib_fmt)
+$(HARECACHE)/compress/flate/compress_flate-any.ssa: $(stdlib_compress_flate_any_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_bytes) $(stdlib_endian) $(stdlib_errors) $(stdlib_io) $(stdlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/compress/flate
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncompress::flate \
- -t$(HARECACHE)/compress/flate/compress_flate.td $(stdlib_compress_flate_srcs)
+ -t$(HARECACHE)/compress/flate/compress_flate.td $(stdlib_compress_flate_any_srcs)
-# compress::zlib
-stdlib_compress_zlib_srcs= \
+# compress::zlib (+any)
+stdlib_compress_zlib_any_srcs= \
$(STDLIB)/compress/zlib/reader.ha
-$(HARECACHE)/compress/zlib/compress_zlib.ssa: $(stdlib_compress_zlib_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_bytes) $(stdlib_compress_flate) $(stdlib_endian) $(stdlib_errors) $(stdlib_hash) $(stdlib_hash_adler32) $(stdlib_io) $(stdlib_fmt)
+$(HARECACHE)/compress/zlib/compress_zlib-any.ssa: $(stdlib_compress_zlib_any_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_bytes) $(stdlib_compress_flate) $(stdlib_endian) $(stdlib_errors) $(stdlib_hash) $(stdlib_hash_adler32) $(stdlib_io) $(stdlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/compress/zlib
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncompress::zlib \
- -t$(HARECACHE)/compress/zlib/compress_zlib.td $(stdlib_compress_zlib_srcs)
+ -t$(HARECACHE)/compress/zlib/compress_zlib.td $(stdlib_compress_zlib_any_srcs)
-# crypto::blake2b
-stdlib_crypto_blake2b_srcs= \
+# crypto::blake2b (+any)
+stdlib_crypto_blake2b_any_srcs= \
$(STDLIB)/crypto/blake2b/blake2b.ha
-$(HARECACHE)/crypto/blake2b/crypto_blake2b.ssa: $(stdlib_crypto_blake2b_srcs) $(stdlib_rt) $(stdlib_encoding_hex) $(stdlib_fmt) $(stdlib_hash) $(stdlib_io) $(stdlib_strings) $(stdlib_strio) $(stdlib_crypto_math) $(stdlib_endian)
+$(HARECACHE)/crypto/blake2b/crypto_blake2b-any.ssa: $(stdlib_crypto_blake2b_any_srcs) $(stdlib_rt) $(stdlib_encoding_hex) $(stdlib_fmt) $(stdlib_hash) $(stdlib_io) $(stdlib_strings) $(stdlib_strio) $(stdlib_crypto_math) $(stdlib_endian)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/crypto/blake2b
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::blake2b \
- -t$(HARECACHE)/crypto/blake2b/crypto_blake2b.td $(stdlib_crypto_blake2b_srcs)
+ -t$(HARECACHE)/crypto/blake2b/crypto_blake2b.td $(stdlib_crypto_blake2b_any_srcs)
-# crypto::math
-stdlib_crypto_math_srcs= \
+# crypto::math (+any)
+stdlib_crypto_math_any_srcs= \
$(STDLIB)/crypto/math/bits.ha
-$(HARECACHE)/crypto/math/crypto_math.ssa: $(stdlib_crypto_math_srcs) $(stdlib_rt)
+$(HARECACHE)/crypto/math/crypto_math-any.ssa: $(stdlib_crypto_math_any_srcs) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/crypto/math
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::math \
- -t$(HARECACHE)/crypto/math/crypto_math.td $(stdlib_crypto_math_srcs)
+ -t$(HARECACHE)/crypto/math/crypto_math.td $(stdlib_crypto_math_any_srcs)
-# crypto::random
-stdlib_crypto_random_srcs= \
- $(STDLIB)/crypto/random/+$(PLATFORM).ha \
+# crypto::random (+linux)
+stdlib_crypto_random_linux_srcs= \
+ $(STDLIB)/crypto/random/+linux.ha \
$(STDLIB)/crypto/random/random.ha
-$(HARECACHE)/crypto/random/crypto_random.ssa: $(stdlib_crypto_random_srcs) $(stdlib_rt) $(stdlib_rt) $(stdlib_io) $(stdlib_errors)
+$(HARECACHE)/crypto/random/crypto_random-linux.ssa: $(stdlib_crypto_random_linux_srcs) $(stdlib_rt) $(stdlib_rt) $(stdlib_io) $(stdlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/crypto/random
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::random \
- -t$(HARECACHE)/crypto/random/crypto_random.td $(stdlib_crypto_random_srcs)
+ -t$(HARECACHE)/crypto/random/crypto_random.td $(stdlib_crypto_random_linux_srcs)
-# crypto::md5
-stdlib_crypto_md5_srcs= \
+# crypto::md5 (+any)
+stdlib_crypto_md5_any_srcs= \
$(STDLIB)/crypto/md5/md5.ha
-$(HARECACHE)/crypto/md5/crypto_md5.ssa: $(stdlib_crypto_md5_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_endian)
+$(HARECACHE)/crypto/md5/crypto_md5-any.ssa: $(stdlib_crypto_md5_any_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_endian)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/crypto/md5
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::md5 \
- -t$(HARECACHE)/crypto/md5/crypto_md5.td $(stdlib_crypto_md5_srcs)
+ -t$(HARECACHE)/crypto/md5/crypto_md5.td $(stdlib_crypto_md5_any_srcs)
-# crypto::sha1
-stdlib_crypto_sha1_srcs= \
+# crypto::sha1 (+any)
+stdlib_crypto_sha1_any_srcs= \
$(STDLIB)/crypto/sha1/sha1.ha
-$(HARECACHE)/crypto/sha1/crypto_sha1.ssa: $(stdlib_crypto_sha1_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_endian)
+$(HARECACHE)/crypto/sha1/crypto_sha1-any.ssa: $(stdlib_crypto_sha1_any_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_endian)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/crypto/sha1
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::sha1 \
- -t$(HARECACHE)/crypto/sha1/crypto_sha1.td $(stdlib_crypto_sha1_srcs)
+ -t$(HARECACHE)/crypto/sha1/crypto_sha1.td $(stdlib_crypto_sha1_any_srcs)
-# crypto::sha256
-stdlib_crypto_sha256_srcs= \
+# crypto::sha256 (+any)
+stdlib_crypto_sha256_any_srcs= \
$(STDLIB)/crypto/sha256/sha256.ha
-$(HARECACHE)/crypto/sha256/crypto_sha256.ssa: $(stdlib_crypto_sha256_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_endian)
+$(HARECACHE)/crypto/sha256/crypto_sha256-any.ssa: $(stdlib_crypto_sha256_any_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_endian)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/crypto/sha256
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::sha256 \
- -t$(HARECACHE)/crypto/sha256/crypto_sha256.td $(stdlib_crypto_sha256_srcs)
+ -t$(HARECACHE)/crypto/sha256/crypto_sha256.td $(stdlib_crypto_sha256_any_srcs)
-# crypto::sha512
-stdlib_crypto_sha512_srcs= \
+# crypto::sha512 (+any)
+stdlib_crypto_sha512_any_srcs= \
$(STDLIB)/crypto/sha512/sha512.ha
-$(HARECACHE)/crypto/sha512/crypto_sha512.ssa: $(stdlib_crypto_sha512_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_endian)
+$(HARECACHE)/crypto/sha512/crypto_sha512-any.ssa: $(stdlib_crypto_sha512_any_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_endian)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/crypto/sha512
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ncrypto::sha512 \
- -t$(HARECACHE)/crypto/sha512/crypto_sha512.td $(stdlib_crypto_sha512_srcs)
+ -t$(HARECACHE)/crypto/sha512/crypto_sha512.td $(stdlib_crypto_sha512_any_srcs)
-# dirs
-stdlib_dirs_srcs= \
+# dirs (+any)
+stdlib_dirs_any_srcs= \
$(STDLIB)/dirs/xdg.ha
-$(HARECACHE)/dirs/dirs.ssa: $(stdlib_dirs_srcs) $(stdlib_rt) $(stdlib_fs) $(stdlib_os) $(stdlib_path)
+$(HARECACHE)/dirs/dirs-any.ssa: $(stdlib_dirs_any_srcs) $(stdlib_rt) $(stdlib_fs) $(stdlib_os) $(stdlib_path)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/dirs
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ndirs \
- -t$(HARECACHE)/dirs/dirs.td $(stdlib_dirs_srcs)
+ -t$(HARECACHE)/dirs/dirs.td $(stdlib_dirs_any_srcs)
-# encoding::base64
-stdlib_encoding_base64_srcs= \
+# encoding::base64 (+any)
+stdlib_encoding_base64_any_srcs= \
$(STDLIB)/encoding/base64/base64.ha
-$(HARECACHE)/encoding/base64/encoding_base64.ssa: $(stdlib_encoding_base64_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_bytes) $(stdlib_io) $(stdlib_strio) $(stdlib_strings)
+$(HARECACHE)/encoding/base64/encoding_base64-any.ssa: $(stdlib_encoding_base64_any_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_bytes) $(stdlib_io) $(stdlib_strio) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/encoding/base64
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::base64 \
- -t$(HARECACHE)/encoding/base64/encoding_base64.td $(stdlib_encoding_base64_srcs)
+ -t$(HARECACHE)/encoding/base64/encoding_base64.td $(stdlib_encoding_base64_any_srcs)
-# encoding::hex
-stdlib_encoding_hex_srcs= \
+# encoding::hex (+any)
+stdlib_encoding_hex_any_srcs= \
$(STDLIB)/encoding/hex/hex.ha
-$(HARECACHE)/encoding/hex/encoding_hex.ssa: $(stdlib_encoding_hex_srcs) $(stdlib_rt) $(stdlib_ascii) $(stdlib_bytes) $(stdlib_fmt) $(stdlib_io) $(stdlib_strconv) $(stdlib_strio) $(stdlib_strings)
+$(HARECACHE)/encoding/hex/encoding_hex-any.ssa: $(stdlib_encoding_hex_any_srcs) $(stdlib_rt) $(stdlib_ascii) $(stdlib_bytes) $(stdlib_fmt) $(stdlib_io) $(stdlib_strconv) $(stdlib_strio) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/encoding/hex
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::hex \
- -t$(HARECACHE)/encoding/hex/encoding_hex.td $(stdlib_encoding_hex_srcs)
+ -t$(HARECACHE)/encoding/hex/encoding_hex.td $(stdlib_encoding_hex_any_srcs)
-# encoding::utf8
-stdlib_encoding_utf8_srcs= \
+# encoding::utf8 (+any)
+stdlib_encoding_utf8_any_srcs= \
$(STDLIB)/encoding/utf8/decode.ha \
$(STDLIB)/encoding/utf8/encode.ha \
$(STDLIB)/encoding/utf8/rune.ha
-$(HARECACHE)/encoding/utf8/encoding_utf8.ssa: $(stdlib_encoding_utf8_srcs) $(stdlib_rt) $(stdlib_types)
+$(HARECACHE)/encoding/utf8/encoding_utf8-any.ssa: $(stdlib_encoding_utf8_any_srcs) $(stdlib_rt) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/encoding/utf8
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nencoding::utf8 \
- -t$(HARECACHE)/encoding/utf8/encoding_utf8.td $(stdlib_encoding_utf8_srcs)
+ -t$(HARECACHE)/encoding/utf8/encoding_utf8.td $(stdlib_encoding_utf8_any_srcs)
-# endian
-stdlib_endian_srcs= \
+# endian (+any)
+stdlib_endian_any_srcs= \
$(STDLIB)/endian/big.ha \
$(STDLIB)/endian/network.ha \
$(STDLIB)/endian/little.ha \
$(STDLIB)/endian/endian.ha \
$(STDLIB)/endian/host+$(ARCH).ha
-$(HARECACHE)/endian/endian.ssa: $(stdlib_endian_srcs) $(stdlib_rt)
+$(HARECACHE)/endian/endian-any.ssa: $(stdlib_endian_any_srcs) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/endian
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nendian \
- -t$(HARECACHE)/endian/endian.td $(stdlib_endian_srcs)
+ -t$(HARECACHE)/endian/endian.td $(stdlib_endian_any_srcs)
-# errors
-stdlib_errors_srcs= \
+# errors (+any)
+stdlib_errors_any_srcs= \
$(STDLIB)/errors/common.ha \
$(STDLIB)/errors/opaque.ha \
$(STDLIB)/errors/string.ha \
$(STDLIB)/errors/rt.ha
-$(HARECACHE)/errors/errors.ssa: $(stdlib_errors_srcs) $(stdlib_rt)
+$(HARECACHE)/errors/errors-any.ssa: $(stdlib_errors_any_srcs) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/errors
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nerrors \
- -t$(HARECACHE)/errors/errors.td $(stdlib_errors_srcs)
+ -t$(HARECACHE)/errors/errors.td $(stdlib_errors_any_srcs)
-# fmt
-stdlib_fmt_srcs= \
+# fmt (+any)
+stdlib_fmt_any_srcs= \
$(STDLIB)/fmt/fmt.ha
-$(HARECACHE)/fmt/fmt.ssa: $(stdlib_fmt_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_io) $(stdlib_os) $(stdlib_strconv) $(stdlib_strings) $(stdlib_types)
+$(HARECACHE)/fmt/fmt-any.ssa: $(stdlib_fmt_any_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_io) $(stdlib_os) $(stdlib_strconv) $(stdlib_strings) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/fmt
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nfmt \
- -t$(HARECACHE)/fmt/fmt.td $(stdlib_fmt_srcs)
+ -t$(HARECACHE)/fmt/fmt.td $(stdlib_fmt_any_srcs)
-# fnmatch
-stdlib_fnmatch_srcs= \
+# fnmatch (+any)
+stdlib_fnmatch_any_srcs= \
$(STDLIB)/fnmatch/fnmatch.ha
-$(HARECACHE)/fnmatch/fnmatch.ssa: $(stdlib_fnmatch_srcs) $(stdlib_rt) $(stdlib_strings) $(stdlib_bytes) $(stdlib_sort) $(stdlib_ascii) $(stdlib_io) $(stdlib_fmt)
+$(HARECACHE)/fnmatch/fnmatch-any.ssa: $(stdlib_fnmatch_any_srcs) $(stdlib_rt) $(stdlib_strings) $(stdlib_bytes) $(stdlib_sort) $(stdlib_ascii) $(stdlib_io) $(stdlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/fnmatch
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nfnmatch \
- -t$(HARECACHE)/fnmatch/fnmatch.td $(stdlib_fnmatch_srcs)
+ -t$(HARECACHE)/fnmatch/fnmatch.td $(stdlib_fnmatch_any_srcs)
-# format::elf
-stdlib_format_elf_srcs= \
+# format::elf (+any)
+stdlib_format_elf_any_srcs= \
$(STDLIB)/format/elf/+$(ARCH).ha \
$(STDLIB)/format/elf/+$(PLATFORM).ha \
$(STDLIB)/format/elf/types.ha
-$(HARECACHE)/format/elf/format_elf.ssa: $(stdlib_format_elf_srcs) $(stdlib_rt)
+$(HARECACHE)/format/elf/format_elf-any.ssa: $(stdlib_format_elf_any_srcs) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/format/elf
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nformat::elf \
- -t$(HARECACHE)/format/elf/format_elf.td $(stdlib_format_elf_srcs)
+ -t$(HARECACHE)/format/elf/format_elf.td $(stdlib_format_elf_any_srcs)
-# format::ini
-stdlib_format_ini_srcs= \
+# format::ini (+any)
+stdlib_format_ini_any_srcs= \
$(STDLIB)/format/ini/scan.ha \
$(STDLIB)/format/ini/types.ha
-$(HARECACHE)/format/ini/format_ini.ssa: $(stdlib_format_ini_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_encoding_utf8) $(stdlib_fmt) $(stdlib_io) $(stdlib_strings)
+$(HARECACHE)/format/ini/format_ini-any.ssa: $(stdlib_format_ini_any_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_encoding_utf8) $(stdlib_fmt) $(stdlib_io) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/format/ini
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nformat::ini \
- -t$(HARECACHE)/format/ini/format_ini.td $(stdlib_format_ini_srcs)
+ -t$(HARECACHE)/format/ini/format_ini.td $(stdlib_format_ini_any_srcs)
-# format::xml
-stdlib_format_xml_srcs= \
+# format::xml (+any)
+stdlib_format_xml_any_srcs= \
$(STDLIB)/format/xml/types.ha \
$(STDLIB)/format/xml/parser.ha \
$(STDLIB)/format/xml/chars.ha
-$(HARECACHE)/format/xml/format_xml.ssa: $(stdlib_format_xml_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_bufio) $(stdlib_strings) $(stdlib_ascii) $(stdlib_strio) $(stdlib_os)
+$(HARECACHE)/format/xml/format_xml-any.ssa: $(stdlib_format_xml_any_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_bufio) $(stdlib_strings) $(stdlib_ascii) $(stdlib_strio) $(stdlib_os)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/format/xml
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nformat::xml \
- -t$(HARECACHE)/format/xml/format_xml.td $(stdlib_format_xml_srcs)
+ -t$(HARECACHE)/format/xml/format_xml.td $(stdlib_format_xml_any_srcs)
-# fs
-stdlib_fs_srcs= \
+# fs (+any)
+stdlib_fs_any_srcs= \
$(STDLIB)/fs/types.ha \
$(STDLIB)/fs/fs.ha \
$(STDLIB)/fs/util.ha
-$(HARECACHE)/fs/fs.ssa: $(stdlib_fs_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_strings) $(stdlib_path) $(stdlib_time) $(stdlib_errors)
+$(HARECACHE)/fs/fs-any.ssa: $(stdlib_fs_any_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_strings) $(stdlib_path) $(stdlib_time) $(stdlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/fs
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nfs \
- -t$(HARECACHE)/fs/fs.td $(stdlib_fs_srcs)
+ -t$(HARECACHE)/fs/fs.td $(stdlib_fs_any_srcs)
-# fs::mem
-stdlib_fs_mem_srcs= \
+# fs::mem (+any)
+stdlib_fs_mem_any_srcs= \
$(STDLIB)/fs/mem/mem.ha \
$(STDLIB)/fs/mem/stream.ha \
$(STDLIB)/fs/mem/util.ha
-$(HARECACHE)/fs/mem/fs_mem.ssa: $(stdlib_fs_mem_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_errors) $(stdlib_fs) $(stdlib_hash) $(stdlib_hash_fnv) $(stdlib_io) $(stdlib_path) $(stdlib_strconv) $(stdlib_strings) $(stdlib_types)
+$(HARECACHE)/fs/mem/fs_mem-any.ssa: $(stdlib_fs_mem_any_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_errors) $(stdlib_fs) $(stdlib_hash) $(stdlib_hash_fnv) $(stdlib_io) $(stdlib_path) $(stdlib_strconv) $(stdlib_strings) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/fs/mem
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nfs::mem \
- -t$(HARECACHE)/fs/mem/fs_mem.td $(stdlib_fs_mem_srcs)
+ -t$(HARECACHE)/fs/mem/fs_mem.td $(stdlib_fs_mem_any_srcs)
-# getopt
-stdlib_getopt_srcs= \
+# getopt (+any)
+stdlib_getopt_any_srcs= \
$(STDLIB)/getopt/getopts.ha
-$(HARECACHE)/getopt/getopt.ssa: $(stdlib_getopt_srcs) $(stdlib_rt) $(stdlib_encoding_utf8) $(stdlib_fmt) $(stdlib_io) $(stdlib_os) $(stdlib_strings)
+$(HARECACHE)/getopt/getopt-any.ssa: $(stdlib_getopt_any_srcs) $(stdlib_rt) $(stdlib_encoding_utf8) $(stdlib_fmt) $(stdlib_io) $(stdlib_os) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/getopt
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ngetopt \
- -t$(HARECACHE)/getopt/getopt.td $(stdlib_getopt_srcs)
+ -t$(HARECACHE)/getopt/getopt.td $(stdlib_getopt_any_srcs)
-# hare::ast
-stdlib_hare_ast_srcs= \
+# hare::ast (+any)
+stdlib_hare_ast_any_srcs= \
$(STDLIB)/hare/ast/decl.ha \
$(STDLIB)/hare/ast/expr.ha \
$(STDLIB)/hare/ast/ident.ha \
@@ -665,38 +665,38 @@ stdlib_hare_ast_srcs= \
$(STDLIB)/hare/ast/type.ha \
$(STDLIB)/hare/ast/unit.ha
-$(HARECACHE)/hare/ast/hare_ast.ssa: $(stdlib_hare_ast_srcs) $(stdlib_rt) $(stdlib_hare_lex) $(stdlib_strings)
+$(HARECACHE)/hare/ast/hare_ast-any.ssa: $(stdlib_hare_ast_any_srcs) $(stdlib_rt) $(stdlib_hare_lex) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hare/ast
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::ast \
- -t$(HARECACHE)/hare/ast/hare_ast.td $(stdlib_hare_ast_srcs)
+ -t$(HARECACHE)/hare/ast/hare_ast.td $(stdlib_hare_ast_any_srcs)
-# hare::lex
-stdlib_hare_lex_srcs= \
+# hare::lex (+any)
+stdlib_hare_lex_any_srcs= \
$(STDLIB)/hare/lex/token.ha \
$(STDLIB)/hare/lex/lex.ha
-$(HARECACHE)/hare/lex/hare_lex.ssa: $(stdlib_hare_lex_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_bufio) $(stdlib_strings) $(stdlib_types) $(stdlib_fmt) $(stdlib_sort) $(stdlib_strio)
+$(HARECACHE)/hare/lex/hare_lex-any.ssa: $(stdlib_hare_lex_any_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_bufio) $(stdlib_strings) $(stdlib_types) $(stdlib_fmt) $(stdlib_sort) $(stdlib_strio)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hare/lex
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::lex \
- -t$(HARECACHE)/hare/lex/hare_lex.td $(stdlib_hare_lex_srcs)
+ -t$(HARECACHE)/hare/lex/hare_lex.td $(stdlib_hare_lex_any_srcs)
-# hare::module
-stdlib_hare_module_srcs= \
+# hare::module (+any)
+stdlib_hare_module_any_srcs= \
$(STDLIB)/hare/module/types.ha \
$(STDLIB)/hare/module/context.ha \
$(STDLIB)/hare/module/scan.ha \
$(STDLIB)/hare/module/manifest.ha
-$(HARECACHE)/hare/module/hare_module.ssa: $(stdlib_hare_module_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_lex) $(stdlib_hare_parse) $(stdlib_hare_unparse) $(stdlib_strio) $(stdlib_fs) $(stdlib_io) $(stdlib_strings) $(stdlib_hash) $(stdlib_crypto_sha256) $(stdlib_dirs) $(stdlib_bytes) $(stdlib_encoding_utf8) $(stdlib_ascii) $(stdlib_fmt) $(stdlib_time) $(stdlib_slice) $(stdlib_bufio) $(stdlib_strconv) $(stdlib_os) $(stdlib_encoding_hex) $(stdlib_sort) $(stdlib_errors) $(stdlib_temp)
+$(HARECACHE)/hare/module/hare_module-any.ssa: $(stdlib_hare_module_any_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_lex) $(stdlib_hare_parse) $(stdlib_hare_unparse) $(stdlib_strio) $(stdlib_fs) $(stdlib_io) $(stdlib_strings) $(stdlib_hash) $(stdlib_crypto_sha256) $(stdlib_dirs) $(stdlib_bytes) $(stdlib_encoding_utf8) $(stdlib_ascii) $(stdlib_fmt) $(stdlib_time) $(stdlib_slice) $(stdlib_bufio) $(stdlib_strconv) $(stdlib_os) $(stdlib_encoding_hex) $(stdlib_sort) $(stdlib_errors) $(stdlib_temp)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hare/module
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::module \
- -t$(HARECACHE)/hare/module/hare_module.td $(stdlib_hare_module_srcs)
+ -t$(HARECACHE)/hare/module/hare_module.td $(stdlib_hare_module_any_srcs)
-# hare::parse
-stdlib_hare_parse_srcs= \
+# hare::parse (+any)
+stdlib_hare_parse_any_srcs= \
$(STDLIB)/hare/parse/decl.ha \
$(STDLIB)/hare/parse/expr.ha \
$(STDLIB)/hare/parse/ident.ha \
@@ -705,14 +705,14 @@ stdlib_hare_parse_srcs= \
$(STDLIB)/hare/parse/type.ha \
$(STDLIB)/hare/parse/unit.ha
-$(HARECACHE)/hare/parse/hare_parse.ssa: $(stdlib_hare_parse_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_lex) $(stdlib_hare_unparse) $(stdlib_fmt)
+$(HARECACHE)/hare/parse/hare_parse-any.ssa: $(stdlib_hare_parse_any_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_lex) $(stdlib_hare_unparse) $(stdlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hare/parse
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::parse \
- -t$(HARECACHE)/hare/parse/hare_parse.td $(stdlib_hare_parse_srcs)
+ -t$(HARECACHE)/hare/parse/hare_parse.td $(stdlib_hare_parse_any_srcs)
-# hare::types
-stdlib_hare_types_srcs= \
+# hare::types (+any)
+stdlib_hare_types_any_srcs= \
$(STDLIB)/hare/types/arch.ha \
$(STDLIB)/hare/types/builtins.ha \
$(STDLIB)/hare/types/class.ha \
@@ -721,14 +721,14 @@ stdlib_hare_types_srcs= \
$(STDLIB)/hare/types/store.ha \
$(STDLIB)/hare/types/types.ha
-$(HARECACHE)/hare/types/hare_types.ssa: $(stdlib_hare_types_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_parse) $(stdlib_hash) $(stdlib_hash_fnv) $(stdlib_endian)
+$(HARECACHE)/hare/types/hare_types-any.ssa: $(stdlib_hare_types_any_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_parse) $(stdlib_hash) $(stdlib_hash_fnv) $(stdlib_endian)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hare/types
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::types \
- -t$(HARECACHE)/hare/types/hare_types.td $(stdlib_hare_types_srcs)
+ -t$(HARECACHE)/hare/types/hare_types.td $(stdlib_hare_types_any_srcs)
-# hare::unit
-stdlib_hare_unit_srcs= \
+# hare::unit (+any)
+stdlib_hare_unit_any_srcs= \
$(STDLIB)/hare/unit/check.ha \
$(STDLIB)/hare/unit/context.ha \
$(STDLIB)/hare/unit/errors.ha \
@@ -738,14 +738,14 @@ stdlib_hare_unit_srcs= \
$(STDLIB)/hare/unit/scope.ha \
$(STDLIB)/hare/unit/unit.ha
-$(HARECACHE)/hare/unit/hare_unit.ssa: $(stdlib_hare_unit_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_types) $(stdlib_hash) $(stdlib_hash_fnv) $(stdlib_strings) $(stdlib_hare_lex) $(stdlib_bufio) $(stdlib_hare_parse)
+$(HARECACHE)/hare/unit/hare_unit-any.ssa: $(stdlib_hare_unit_any_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_types) $(stdlib_hash) $(stdlib_hash_fnv) $(stdlib_strings) $(stdlib_hare_lex) $(stdlib_bufio) $(stdlib_hare_parse)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hare/unit
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::unit \
- -t$(HARECACHE)/hare/unit/hare_unit.td $(stdlib_hare_unit_srcs)
+ -t$(HARECACHE)/hare/unit/hare_unit.td $(stdlib_hare_unit_any_srcs)
-# hare::unparse
-stdlib_hare_unparse_srcs= \
+# hare::unparse (+any)
+stdlib_hare_unparse_any_srcs= \
$(STDLIB)/hare/unparse/expr.ha \
$(STDLIB)/hare/unparse/decl.ha \
$(STDLIB)/hare/unparse/ident.ha \
@@ -754,130 +754,130 @@ stdlib_hare_unparse_srcs= \
$(STDLIB)/hare/unparse/unit.ha \
$(STDLIB)/hare/unparse/util.ha
-$(HARECACHE)/hare/unparse/hare_unparse.ssa: $(stdlib_hare_unparse_srcs) $(stdlib_rt) $(stdlib_fmt) $(stdlib_io) $(stdlib_strio) $(stdlib_hare_ast)
+$(HARECACHE)/hare/unparse/hare_unparse-any.ssa: $(stdlib_hare_unparse_any_srcs) $(stdlib_rt) $(stdlib_fmt) $(stdlib_io) $(stdlib_strio) $(stdlib_hare_ast)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hare/unparse
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::unparse \
- -t$(HARECACHE)/hare/unparse/hare_unparse.td $(stdlib_hare_unparse_srcs)
+ -t$(HARECACHE)/hare/unparse/hare_unparse.td $(stdlib_hare_unparse_any_srcs)
-# hash
-stdlib_hash_srcs= \
+# hash (+any)
+stdlib_hash_any_srcs= \
$(STDLIB)/hash/hash.ha
-$(HARECACHE)/hash/hash.ssa: $(stdlib_hash_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_fmt)
+$(HARECACHE)/hash/hash-any.ssa: $(stdlib_hash_any_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hash
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash \
- -t$(HARECACHE)/hash/hash.td $(stdlib_hash_srcs)
+ -t$(HARECACHE)/hash/hash.td $(stdlib_hash_any_srcs)
-# hash::adler32
-stdlib_hash_adler32_srcs= \
+# hash::adler32 (+any)
+stdlib_hash_adler32_any_srcs= \
$(STDLIB)/hash/adler32/adler32.ha
-$(HARECACHE)/hash/adler32/hash_adler32.ssa: $(stdlib_hash_adler32_srcs) $(stdlib_rt) $(stdlib_endian) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
+$(HARECACHE)/hash/adler32/hash_adler32-any.ssa: $(stdlib_hash_adler32_any_srcs) $(stdlib_rt) $(stdlib_endian) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hash/adler32
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::adler32 \
- -t$(HARECACHE)/hash/adler32/hash_adler32.td $(stdlib_hash_adler32_srcs)
+ -t$(HARECACHE)/hash/adler32/hash_adler32.td $(stdlib_hash_adler32_any_srcs)
-# hash::crc16
-stdlib_hash_crc16_srcs= \
+# hash::crc16 (+any)
+stdlib_hash_crc16_any_srcs= \
$(STDLIB)/hash/crc16/crc16.ha
-$(HARECACHE)/hash/crc16/hash_crc16.ssa: $(stdlib_hash_crc16_srcs) $(stdlib_rt) $(stdlib_endian) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
+$(HARECACHE)/hash/crc16/hash_crc16-any.ssa: $(stdlib_hash_crc16_any_srcs) $(stdlib_rt) $(stdlib_endian) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hash/crc16
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::crc16 \
- -t$(HARECACHE)/hash/crc16/hash_crc16.td $(stdlib_hash_crc16_srcs)
+ -t$(HARECACHE)/hash/crc16/hash_crc16.td $(stdlib_hash_crc16_any_srcs)
-# hash::crc32
-stdlib_hash_crc32_srcs= \
+# hash::crc32 (+any)
+stdlib_hash_crc32_any_srcs= \
$(STDLIB)/hash/crc32/crc32.ha
-$(HARECACHE)/hash/crc32/hash_crc32.ssa: $(stdlib_hash_crc32_srcs) $(stdlib_rt) $(stdlib_endian) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
+$(HARECACHE)/hash/crc32/hash_crc32-any.ssa: $(stdlib_hash_crc32_any_srcs) $(stdlib_rt) $(stdlib_endian) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hash/crc32
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::crc32 \
- -t$(HARECACHE)/hash/crc32/hash_crc32.td $(stdlib_hash_crc32_srcs)
+ -t$(HARECACHE)/hash/crc32/hash_crc32.td $(stdlib_hash_crc32_any_srcs)
-# hash::crc64
-stdlib_hash_crc64_srcs= \
+# hash::crc64 (+any)
+stdlib_hash_crc64_any_srcs= \
$(STDLIB)/hash/crc64/crc64.ha
-$(HARECACHE)/hash/crc64/hash_crc64.ssa: $(stdlib_hash_crc64_srcs) $(stdlib_rt) $(stdlib_endian) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
+$(HARECACHE)/hash/crc64/hash_crc64-any.ssa: $(stdlib_hash_crc64_any_srcs) $(stdlib_rt) $(stdlib_endian) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hash/crc64
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::crc64 \
- -t$(HARECACHE)/hash/crc64/hash_crc64.td $(stdlib_hash_crc64_srcs)
+ -t$(HARECACHE)/hash/crc64/hash_crc64.td $(stdlib_hash_crc64_any_srcs)
-# hash::fnv
-stdlib_hash_fnv_srcs= \
+# hash::fnv (+any)
+stdlib_hash_fnv_any_srcs= \
$(STDLIB)/hash/fnv/fnv.ha
-$(HARECACHE)/hash/fnv/hash_fnv.ssa: $(stdlib_hash_fnv_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
+$(HARECACHE)/hash/fnv/hash_fnv-any.ssa: $(stdlib_hash_fnv_any_srcs) $(stdlib_rt) $(stdlib_hash) $(stdlib_io) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/hash/fnv
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhash::fnv \
- -t$(HARECACHE)/hash/fnv/hash_fnv.td $(stdlib_hash_fnv_srcs)
+ -t$(HARECACHE)/hash/fnv/hash_fnv.td $(stdlib_hash_fnv_any_srcs)
-# io
-stdlib_io_srcs= \
+# io (+linux)
+stdlib_io_linux_srcs= \
$(STDLIB)/io/arch+$(ARCH).ha \
+ $(STDLIB)/io/println+linux.ha \
+ $(STDLIB)/io/+linux/file.ha \
$(STDLIB)/io/copy.ha \
$(STDLIB)/io/drain.ha \
$(STDLIB)/io/empty.ha \
$(STDLIB)/io/filestream.ha \
$(STDLIB)/io/handle.ha \
$(STDLIB)/io/limit.ha \
- $(STDLIB)/io/println+$(PLATFORM).ha \
$(STDLIB)/io/stream.ha \
$(STDLIB)/io/tee.ha \
- $(STDLIB)/io/types.ha \
- $(STDLIB)/io/+$(PLATFORM)/file.ha
+ $(STDLIB)/io/types.ha
-$(HARECACHE)/io/io.ssa: $(stdlib_io_srcs) $(stdlib_rt) $(stdlib_strings) $(stdlib_errors)
+$(HARECACHE)/io/io-linux.ssa: $(stdlib_io_linux_srcs) $(stdlib_rt) $(stdlib_strings) $(stdlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/io
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nio \
- -t$(HARECACHE)/io/io.td $(stdlib_io_srcs)
+ -t$(HARECACHE)/io/io.td $(stdlib_io_linux_srcs)
-# iobus::io_uring
-stdlib_iobus_io_uring_srcs= \
+# iobus::io_uring (+linux)
+stdlib_iobus_io_uring_linux_srcs= \
$(STDLIB)/iobus/io_uring/bus.ha \
$(STDLIB)/iobus/io_uring/handle.ha \
$(STDLIB)/iobus/io_uring/ops.ha \
$(STDLIB)/iobus/io_uring/pool.ha \
$(STDLIB)/iobus/io_uring/types.ha
-$(HARECACHE)/iobus/io_uring/iobus_io_uring.ssa: $(stdlib_iobus_io_uring_srcs) $(stdlib_rt) $(stdlib_errors) $(stdlib_io) $(stdlib_linux_io_uring) $(stdlib_net_ip) $(stdlib_unix_poll)
+$(HARECACHE)/iobus/io_uring/iobus_io_uring-linux.ssa: $(stdlib_iobus_io_uring_linux_srcs) $(stdlib_rt) $(stdlib_errors) $(stdlib_io) $(stdlib_linux_io_uring) $(stdlib_net_ip) $(stdlib_unix_poll)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/iobus/io_uring
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Niobus::io_uring \
- -t$(HARECACHE)/iobus/io_uring/iobus_io_uring.td $(stdlib_iobus_io_uring_srcs)
+ -t$(HARECACHE)/iobus/io_uring/iobus_io_uring.td $(stdlib_iobus_io_uring_linux_srcs)
-# linux
-stdlib_linux_srcs= \
+# linux (+linux)
+stdlib_linux_linux_srcs= \
$(STDLIB)/linux/start.ha \
$(STDLIB)/linux/env.ha
-$(HARECACHE)/linux/linux.ssa: $(stdlib_linux_srcs) $(stdlib_rt) $(stdlib_format_elf)
+$(HARECACHE)/linux/linux-linux.ssa: $(stdlib_linux_linux_srcs) $(stdlib_rt) $(stdlib_format_elf)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/linux
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlinux \
- -t$(HARECACHE)/linux/linux.td $(stdlib_linux_srcs)
+ -t$(HARECACHE)/linux/linux.td $(stdlib_linux_linux_srcs)
-# linux::signalfd
-stdlib_linux_signalfd_srcs= \
+# linux::signalfd (+linux)
+stdlib_linux_signalfd_linux_srcs= \
$(STDLIB)/linux/signalfd/signalfd.ha
-$(HARECACHE)/linux/signalfd/linux_signalfd.ssa: $(stdlib_linux_signalfd_srcs) $(stdlib_rt) $(stdlib_errors)
+$(HARECACHE)/linux/signalfd/linux_signalfd-linux.ssa: $(stdlib_linux_signalfd_linux_srcs) $(stdlib_rt) $(stdlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/linux/signalfd
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlinux::signalfd \
- -t$(HARECACHE)/linux/signalfd/linux_signalfd.td $(stdlib_linux_signalfd_srcs)
+ -t$(HARECACHE)/linux/signalfd/linux_signalfd.td $(stdlib_linux_signalfd_linux_srcs)
-# linux::io_uring
-stdlib_linux_io_uring_srcs= \
+# linux::io_uring (+linux)
+stdlib_linux_io_uring_linux_srcs= \
$(STDLIB)/linux/io_uring/cqe.ha \
$(STDLIB)/linux/io_uring/queue.ha \
$(STDLIB)/linux/io_uring/register.ha \
@@ -885,206 +885,199 @@ stdlib_linux_io_uring_srcs= \
$(STDLIB)/linux/io_uring/sqe.ha \
$(STDLIB)/linux/io_uring/uring.ha
-$(HARECACHE)/linux/io_uring/linux_io_uring.ssa: $(stdlib_linux_io_uring_srcs) $(stdlib_rt) $(stdlib_errors) $(stdlib_types)
+$(HARECACHE)/linux/io_uring/linux_io_uring-linux.ssa: $(stdlib_linux_io_uring_linux_srcs) $(stdlib_rt) $(stdlib_errors) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/linux/io_uring
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlinux::io_uring \
- -t$(HARECACHE)/linux/io_uring/linux_io_uring.td $(stdlib_linux_io_uring_srcs)
+ -t$(HARECACHE)/linux/io_uring/linux_io_uring.td $(stdlib_linux_io_uring_linux_srcs)
-# linux::vdso
-stdlib_linux_vdso_srcs= \
+# linux::vdso (+linux)
+stdlib_linux_vdso_linux_srcs= \
$(STDLIB)/linux/vdso/vdso.ha
-$(HARECACHE)/linux/vdso/linux_vdso.ssa: $(stdlib_linux_vdso_srcs) $(stdlib_rt) $(stdlib_linux) $(stdlib_strings) $(stdlib_format_elf)
+$(HARECACHE)/linux/vdso/linux_vdso-linux.ssa: $(stdlib_linux_vdso_linux_srcs) $(stdlib_rt) $(stdlib_linux) $(stdlib_strings) $(stdlib_format_elf)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/linux/vdso
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nlinux::vdso \
- -t$(HARECACHE)/linux/vdso/linux_vdso.td $(stdlib_linux_vdso_srcs)
+ -t$(HARECACHE)/linux/vdso/linux_vdso.td $(stdlib_linux_vdso_linux_srcs)
-# math
-# math
-stdlib_math_srcs= \
+# math (+any)
+stdlib_math_any_srcs= \
$(STDLIB)/math/math.ha \
$(STDLIB)/math/floats.ha \
$(STDLIB)/math/ints.ha \
$(STDLIB)/math/uints.ha \
$(STDLIB)/math/trig.ha
-$(HARECACHE)/math/math.ssa: $(stdlib_math_srcs) $(stdlib_rt) $(stdlib_types)
+$(HARECACHE)/math/math-any.ssa: $(stdlib_math_any_srcs) $(stdlib_rt) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/math
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nmath \
- -t$(HARECACHE)/math/math.td $(stdlib_math_srcs)
+ -t$(HARECACHE)/math/math.td $(stdlib_math_any_srcs)
-# net
-# net
-stdlib_net_srcs= \
- $(STDLIB)/net/+$(PLATFORM).ha \
+# net (+linux)
+stdlib_net_linux_srcs= \
+ $(STDLIB)/net/+linux.ha \
$(STDLIB)/net/errors.ha \
$(STDLIB)/net/listener.ha
-$(HARECACHE)/net/net.ssa: $(stdlib_net_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_os) $(stdlib_strings) $(stdlib_net_ip) $(stdlib_errors) $(stdlib_rt) $(stdlib_fmt)
+$(HARECACHE)/net/net-linux.ssa: $(stdlib_net_linux_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_os) $(stdlib_strings) $(stdlib_net_ip) $(stdlib_errors) $(stdlib_rt) $(stdlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/net
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet \
- -t$(HARECACHE)/net/net.td $(stdlib_net_srcs)
+ -t$(HARECACHE)/net/net.td $(stdlib_net_linux_srcs)
-# net::dial
-# net::dial
-stdlib_net_dial_srcs= \
+# net::dial (+any)
+stdlib_net_dial_any_srcs= \
$(STDLIB)/net/dial/registry.ha \
$(STDLIB)/net/dial/dial.ha \
$(STDLIB)/net/dial/ip.ha \
$(STDLIB)/net/dial/resolve.ha
-$(HARECACHE)/net/dial/net_dial.ssa: $(stdlib_net_dial_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_net) $(stdlib_net_ip) $(stdlib_net_tcp) $(stdlib_net_udp) $(stdlib_net_dns) $(stdlib_crypto_random) $(stdlib_strconv) $(stdlib_strings) $(stdlib_unix_hosts)
+$(HARECACHE)/net/dial/net_dial-any.ssa: $(stdlib_net_dial_any_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_net) $(stdlib_net_ip) $(stdlib_net_tcp) $(stdlib_net_udp) $(stdlib_net_dns) $(stdlib_crypto_random) $(stdlib_strconv) $(stdlib_strings) $(stdlib_unix_hosts)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/net/dial
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::dial \
- -t$(HARECACHE)/net/dial/net_dial.td $(stdlib_net_dial_srcs)
+ -t$(HARECACHE)/net/dial/net_dial.td $(stdlib_net_dial_any_srcs)
-# net::dns
-# net::dns
-stdlib_net_dns_srcs= \
+# net::dns (+any)
+stdlib_net_dns_any_srcs= \
$(STDLIB)/net/dns/decode.ha \
$(STDLIB)/net/dns/error.ha \
$(STDLIB)/net/dns/encode.ha \
$(STDLIB)/net/dns/query.ha \
$(STDLIB)/net/dns/types.ha
-$(HARECACHE)/net/dns/net_dns.ssa: $(stdlib_net_dns_srcs) $(stdlib_rt) $(stdlib_ascii) $(stdlib_endian) $(stdlib_net) $(stdlib_net_udp) $(stdlib_net_ip) $(stdlib_fmt) $(stdlib_strings) $(stdlib_unix_resolvconf) $(stdlib_unix_poll) $(stdlib_rt) $(stdlib_time) $(stdlib_errors)
+$(HARECACHE)/net/dns/net_dns-any.ssa: $(stdlib_net_dns_any_srcs) $(stdlib_rt) $(stdlib_ascii) $(stdlib_endian) $(stdlib_net) $(stdlib_net_udp) $(stdlib_net_ip) $(stdlib_fmt) $(stdlib_strings) $(stdlib_unix_resolvconf) $(stdlib_unix_poll) $(stdlib_rt) $(stdlib_time) $(stdlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/net/dns
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::dns \
- -t$(HARECACHE)/net/dns/net_dns.td $(stdlib_net_dns_srcs)
+ -t$(HARECACHE)/net/dns/net_dns.td $(stdlib_net_dns_any_srcs)
-# net::ip
-stdlib_net_ip_srcs= \
+# net::ip (+linux)
+stdlib_net_ip_linux_srcs= \
$(STDLIB)/net/ip/ip.ha \
- $(STDLIB)/net/ip/+$(PLATFORM).ha
+ $(STDLIB)/net/ip/+linux.ha
-$(HARECACHE)/net/ip/net_ip.ssa: $(stdlib_net_ip_srcs) $(stdlib_rt) $(stdlib_bytes) $(stdlib_io) $(stdlib_strconv) $(stdlib_strings) $(stdlib_strio) $(stdlib_fmt)
+$(HARECACHE)/net/ip/net_ip-linux.ssa: $(stdlib_net_ip_linux_srcs) $(stdlib_rt) $(stdlib_bytes) $(stdlib_io) $(stdlib_strconv) $(stdlib_strings) $(stdlib_strio) $(stdlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/net/ip
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::ip \
- -t$(HARECACHE)/net/ip/net_ip.td $(stdlib_net_ip_srcs)
+ -t$(HARECACHE)/net/ip/net_ip.td $(stdlib_net_ip_linux_srcs)
-# net::tcp
-# net::tcp
-stdlib_net_tcp_srcs= \
- $(STDLIB)/net/tcp/+$(PLATFORM).ha \
+# net::tcp (+linux)
+stdlib_net_tcp_linux_srcs= \
+ $(STDLIB)/net/tcp/+linux.ha \
$(STDLIB)/net/tcp/listener.ha \
$(STDLIB)/net/tcp/options.ha
-$(HARECACHE)/net/tcp/net_tcp.ssa: $(stdlib_net_tcp_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_net) $(stdlib_net_ip) $(stdlib_os) $(stdlib_rt)
+$(HARECACHE)/net/tcp/net_tcp-linux.ssa: $(stdlib_net_tcp_linux_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_net) $(stdlib_net_ip) $(stdlib_os) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/net/tcp
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::tcp \
- -t$(HARECACHE)/net/tcp/net_tcp.td $(stdlib_net_tcp_srcs)
+ -t$(HARECACHE)/net/tcp/net_tcp.td $(stdlib_net_tcp_linux_srcs)
-# net::udp
-# net::udp
-stdlib_net_udp_srcs= \
- $(STDLIB)/net/udp/+$(PLATFORM).ha \
+# net::udp (+linux)
+stdlib_net_udp_linux_srcs= \
+ $(STDLIB)/net/udp/+linux.ha \
$(STDLIB)/net/udp/options.ha
-$(HARECACHE)/net/udp/net_udp.ssa: $(stdlib_net_udp_srcs) $(stdlib_rt) $(stdlib_net) $(stdlib_net_ip) $(stdlib_errors) $(stdlib_rt) $(stdlib_os) $(stdlib_io)
+$(HARECACHE)/net/udp/net_udp-linux.ssa: $(stdlib_net_udp_linux_srcs) $(stdlib_rt) $(stdlib_net) $(stdlib_net_ip) $(stdlib_errors) $(stdlib_rt) $(stdlib_os) $(stdlib_io)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/net/udp
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::udp \
- -t$(HARECACHE)/net/udp/net_udp.td $(stdlib_net_udp_srcs)
+ -t$(HARECACHE)/net/udp/net_udp.td $(stdlib_net_udp_linux_srcs)
-# net::unix
-# net::unix
-stdlib_net_unix_srcs= \
- $(STDLIB)/net/unix/+$(PLATFORM).ha \
+# net::unix (+linux)
+stdlib_net_unix_linux_srcs= \
+ $(STDLIB)/net/unix/+linux.ha \
$(STDLIB)/net/unix/addr.ha \
$(STDLIB)/net/unix/dial.ha \
$(STDLIB)/net/unix/listener.ha \
$(STDLIB)/net/unix/options.ha
-$(HARECACHE)/net/unix/net_unix.ssa: $(stdlib_net_unix_srcs) $(stdlib_rt) $(stdlib_net) $(stdlib_errors) $(stdlib_os) $(stdlib_io) $(stdlib_strings) $(stdlib_types) $(stdlib_fmt) $(stdlib_net_dial)
+$(HARECACHE)/net/unix/net_unix-linux.ssa: $(stdlib_net_unix_linux_srcs) $(stdlib_rt) $(stdlib_net) $(stdlib_errors) $(stdlib_os) $(stdlib_io) $(stdlib_strings) $(stdlib_types) $(stdlib_fmt) $(stdlib_net_dial)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/net/unix
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nnet::unix \
- -t$(HARECACHE)/net/unix/net_unix.td $(stdlib_net_unix_srcs)
+ -t$(HARECACHE)/net/unix/net_unix.td $(stdlib_net_unix_linux_srcs)
-# math::random
-stdlib_math_random_srcs= \
+# math::random (+any)
+stdlib_math_random_any_srcs= \
$(STDLIB)/math/random/random.ha
-$(HARECACHE)/math/random/math_random.ssa: $(stdlib_math_random_srcs) $(stdlib_rt)
+$(HARECACHE)/math/random/math_random-any.ssa: $(stdlib_math_random_any_srcs) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/math/random
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nmath::random \
- -t$(HARECACHE)/math/random/math_random.td $(stdlib_math_random_srcs)
-
-# os
-stdlib_os_srcs= \
- $(STDLIB)/os/+$(PLATFORM)/environ.ha \
- $(STDLIB)/os/+$(PLATFORM)/exit.ha \
- $(STDLIB)/os/+$(PLATFORM)/dirfdfs.ha \
- $(STDLIB)/os/+$(PLATFORM)/stdfd.ha \
- $(STDLIB)/os/+$(PLATFORM)/fs.ha \
+ -t$(HARECACHE)/math/random/math_random.td $(stdlib_math_random_any_srcs)
+
+# os (+linux)
+stdlib_os_linux_srcs= \
+ $(STDLIB)/os/+linux/environ.ha \
+ $(STDLIB)/os/+linux/exit.ha \
+ $(STDLIB)/os/+linux/dirfdfs.ha \
+ $(STDLIB)/os/+linux/stdfd.ha \
+ $(STDLIB)/os/+linux/fs.ha \
$(STDLIB)/os/fs.ha
-$(HARECACHE)/os/os.ssa: $(stdlib_os_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_strings) $(stdlib_types) $(stdlib_fs) $(stdlib_encoding_utf8) $(stdlib_bytes) $(stdlib_bufio) $(stdlib_errors)
+$(HARECACHE)/os/os-linux.ssa: $(stdlib_os_linux_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_strings) $(stdlib_types) $(stdlib_fs) $(stdlib_encoding_utf8) $(stdlib_bytes) $(stdlib_bufio) $(stdlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/os
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nos \
- -t$(HARECACHE)/os/os.td $(stdlib_os_srcs)
+ -t$(HARECACHE)/os/os.td $(stdlib_os_linux_srcs)
-# os::exec
-stdlib_os_exec_srcs= \
- $(STDLIB)/os/exec/exec+$(PLATFORM).ha \
- $(STDLIB)/os/exec/process+$(PLATFORM).ha \
+# os::exec (+linux)
+stdlib_os_exec_linux_srcs= \
+ $(STDLIB)/os/exec/exec+linux.ha \
+ $(STDLIB)/os/exec/process+linux.ha \
$(STDLIB)/os/exec/types.ha \
$(STDLIB)/os/exec/cmd.ha
-$(HARECACHE)/os/exec/os_exec.ssa: $(stdlib_os_exec_srcs) $(stdlib_rt) $(stdlib_os) $(stdlib_strings) $(stdlib_fmt) $(stdlib_bytes) $(stdlib_path) $(stdlib_errors)
+$(HARECACHE)/os/exec/os_exec-linux.ssa: $(stdlib_os_exec_linux_srcs) $(stdlib_rt) $(stdlib_os) $(stdlib_strings) $(stdlib_fmt) $(stdlib_bytes) $(stdlib_path) $(stdlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/os/exec
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nos::exec \
- -t$(HARECACHE)/os/exec/os_exec.td $(stdlib_os_exec_srcs)
+ -t$(HARECACHE)/os/exec/os_exec.td $(stdlib_os_exec_linux_srcs)
-# path
-stdlib_path_srcs= \
+# path (+any)
+stdlib_path_any_srcs= \
$(STDLIB)/path/+$(PLATFORM).ha \
$(STDLIB)/path/util.ha \
$(STDLIB)/path/join.ha \
$(STDLIB)/path/names.ha \
$(STDLIB)/path/iter.ha
-$(HARECACHE)/path/path.ssa: $(stdlib_path_srcs) $(stdlib_rt) $(stdlib_strings) $(stdlib_bufio) $(stdlib_bytes)
+$(HARECACHE)/path/path-any.ssa: $(stdlib_path_any_srcs) $(stdlib_rt) $(stdlib_strings) $(stdlib_bufio) $(stdlib_bytes)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/path
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Npath \
- -t$(HARECACHE)/path/path.td $(stdlib_path_srcs)
+ -t$(HARECACHE)/path/path.td $(stdlib_path_any_srcs)
-# slice
-stdlib_slice_srcs= \
+# slice (+any)
+stdlib_slice_any_srcs= \
$(STDLIB)/slice/reverse.ha \
$(STDLIB)/slice/void.ha
-$(HARECACHE)/slice/slice.ssa: $(stdlib_slice_srcs) $(stdlib_rt) $(stdlib_types)
+$(HARECACHE)/slice/slice-any.ssa: $(stdlib_slice_any_srcs) $(stdlib_rt) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/slice
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nslice \
- -t$(HARECACHE)/slice/slice.td $(stdlib_slice_srcs)
+ -t$(HARECACHE)/slice/slice.td $(stdlib_slice_any_srcs)
-# sort
-stdlib_sort_srcs= \
+# sort (+any)
+stdlib_sort_any_srcs= \
$(STDLIB)/sort/search.ha \
$(STDLIB)/sort/sort.ha
-$(HARECACHE)/sort/sort.ssa: $(stdlib_sort_srcs) $(stdlib_rt)
+$(HARECACHE)/sort/sort-any.ssa: $(stdlib_sort_any_srcs) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/sort
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nsort \
- -t$(HARECACHE)/sort/sort.td $(stdlib_sort_srcs)
+ -t$(HARECACHE)/sort/sort.td $(stdlib_sort_any_srcs)
-# strconv
-stdlib_strconv_srcs= \
+# strconv (+any)
+stdlib_strconv_any_srcs= \
$(STDLIB)/strconv/types.ha \
$(STDLIB)/strconv/itos.ha \
$(STDLIB)/strconv/utos.ha \
@@ -1095,14 +1088,14 @@ stdlib_strconv_srcs= \
$(STDLIB)/strconv/stof.ha \
$(STDLIB)/strconv/stof_data.ha
-$(HARECACHE)/strconv/strconv.ssa: $(stdlib_strconv_srcs) $(stdlib_rt) $(stdlib_types) $(stdlib_strings) $(stdlib_ascii) $(stdlib_math)
+$(HARECACHE)/strconv/strconv-any.ssa: $(stdlib_strconv_any_srcs) $(stdlib_rt) $(stdlib_types) $(stdlib_strings) $(stdlib_ascii) $(stdlib_math)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/strconv
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nstrconv \
- -t$(HARECACHE)/strconv/strconv.td $(stdlib_strconv_srcs)
+ -t$(HARECACHE)/strconv/strconv.td $(stdlib_strconv_any_srcs)
-# strings
-stdlib_strings_srcs= \
+# strings (+any)
+stdlib_strings_any_srcs= \
$(STDLIB)/strings/concat.ha \
$(STDLIB)/strings/contains.ha \
$(STDLIB)/strings/cstrings.ha \
@@ -1115,155 +1108,155 @@ stdlib_strings_srcs= \
$(STDLIB)/strings/index.ha \
$(STDLIB)/strings/trim.ha
-$(HARECACHE)/strings/strings.ssa: $(stdlib_strings_srcs) $(stdlib_rt) $(stdlib_bytes) $(stdlib_encoding_utf8) $(stdlib_types)
+$(HARECACHE)/strings/strings-any.ssa: $(stdlib_strings_any_srcs) $(stdlib_rt) $(stdlib_bytes) $(stdlib_encoding_utf8) $(stdlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/strings
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nstrings \
- -t$(HARECACHE)/strings/strings.td $(stdlib_strings_srcs)
+ -t$(HARECACHE)/strings/strings.td $(stdlib_strings_any_srcs)
-# strio
-stdlib_strio_srcs= \
+# strio (+any)
+stdlib_strio_any_srcs= \
$(STDLIB)/strio/dynamic.ha \
$(STDLIB)/strio/fixed.ha \
$(STDLIB)/strio/ops.ha
-$(HARECACHE)/strio/strio.ssa: $(stdlib_strio_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_strings) $(stdlib_encoding_utf8) $(stdlib_errors)
+$(HARECACHE)/strio/strio-any.ssa: $(stdlib_strio_any_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_strings) $(stdlib_encoding_utf8) $(stdlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/strio
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nstrio \
- -t$(HARECACHE)/strio/strio.td $(stdlib_strio_srcs)
+ -t$(HARECACHE)/strio/strio.td $(stdlib_strio_any_srcs)
-# temp
-stdlib_temp_srcs= \
- $(STDLIB)/temp/+$(PLATFORM).ha
+# temp (+linux)
+stdlib_temp_linux_srcs= \
+ $(STDLIB)/temp/+linux.ha
-$(HARECACHE)/temp/temp.ssa: $(stdlib_temp_srcs) $(stdlib_rt) $(stdlib_crypto_random) $(stdlib_encoding_hex) $(stdlib_fs) $(stdlib_io) $(stdlib_os) $(stdlib_path) $(stdlib_strio) $(stdlib_fmt) $(stdlib_strings)
+$(HARECACHE)/temp/temp-linux.ssa: $(stdlib_temp_linux_srcs) $(stdlib_rt) $(stdlib_crypto_random) $(stdlib_encoding_hex) $(stdlib_fs) $(stdlib_io) $(stdlib_os) $(stdlib_path) $(stdlib_strio) $(stdlib_fmt) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/temp
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntemp \
- -t$(HARECACHE)/temp/temp.td $(stdlib_temp_srcs)
+ -t$(HARECACHE)/temp/temp.td $(stdlib_temp_linux_srcs)
-# time
-stdlib_time_srcs= \
- $(STDLIB)/time/+$(PLATFORM)/functions.ha \
- $(STDLIB)/time/+$(PLATFORM)/+$(ARCH).ha \
+# time (+linux)
+stdlib_time_linux_srcs= \
+ $(STDLIB)/time/+linux/functions.ha \
+ $(STDLIB)/time/+linux/+$(ARCH).ha \
$(STDLIB)/time/arithm.ha \
$(STDLIB)/time/types.ha
-$(HARECACHE)/time/time.ssa: $(stdlib_time_srcs) $(stdlib_rt) $(stdlib_linux_vdso)
+$(HARECACHE)/time/time-linux.ssa: $(stdlib_time_linux_srcs) $(stdlib_rt) $(stdlib_linux_vdso)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/time
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntime \
- -t$(HARECACHE)/time/time.td $(stdlib_time_srcs)
+ -t$(HARECACHE)/time/time.td $(stdlib_time_linux_srcs)
-# types
-stdlib_types_srcs= \
+# types (+any)
+stdlib_types_any_srcs= \
$(STDLIB)/types/limits.ha \
$(STDLIB)/types/classes.ha \
$(STDLIB)/types/reflect.ha \
$(STDLIB)/types/util.ha \
$(STDLIB)/types/arch+$(ARCH).ha
-$(HARECACHE)/types/types.ssa: $(stdlib_types_srcs) $(stdlib_rt)
+$(HARECACHE)/types/types-any.ssa: $(stdlib_types_any_srcs) $(stdlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/types
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Ntypes \
- -t$(HARECACHE)/types/types.td $(stdlib_types_srcs)
+ -t$(HARECACHE)/types/types.td $(stdlib_types_any_srcs)
-# unix
-stdlib_unix_srcs= \
- $(STDLIB)/unix/+$(PLATFORM)/nice.ha \
- $(STDLIB)/unix/+$(PLATFORM)/pipe.ha \
- $(STDLIB)/unix/+$(PLATFORM)/umask.ha \
+# unix (+linux)
+stdlib_unix_linux_srcs= \
+ $(STDLIB)/unix/+linux/nice.ha \
+ $(STDLIB)/unix/+linux/pipe.ha \
+ $(STDLIB)/unix/+linux/umask.ha \
$(STDLIB)/unix/getuid.ha \
$(STDLIB)/unix/setuid.ha
-$(HARECACHE)/unix/unix.ssa: $(stdlib_unix_srcs) $(stdlib_rt) $(stdlib_errors) $(stdlib_fs)
+$(HARECACHE)/unix/unix-linux.ssa: $(stdlib_unix_linux_srcs) $(stdlib_rt) $(stdlib_errors) $(stdlib_fs)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/unix
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix \
- -t$(HARECACHE)/unix/unix.td $(stdlib_unix_srcs)
+ -t$(HARECACHE)/unix/unix.td $(stdlib_unix_linux_srcs)
-# unix::hosts
-stdlib_unix_hosts_srcs= \
+# unix::hosts (+any)
+stdlib_unix_hosts_any_srcs= \
$(STDLIB)/unix/hosts/lookup.ha
-$(HARECACHE)/unix/hosts/unix_hosts.ssa: $(stdlib_unix_hosts_srcs) $(stdlib_rt) $(stdlib_os) $(stdlib_io) $(stdlib_bufio) $(stdlib_net_ip) $(stdlib_strings)
+$(HARECACHE)/unix/hosts/unix_hosts-any.ssa: $(stdlib_unix_hosts_any_srcs) $(stdlib_rt) $(stdlib_os) $(stdlib_io) $(stdlib_bufio) $(stdlib_net_ip) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/unix/hosts
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::hosts \
- -t$(HARECACHE)/unix/hosts/unix_hosts.td $(stdlib_unix_hosts_srcs)
+ -t$(HARECACHE)/unix/hosts/unix_hosts.td $(stdlib_unix_hosts_any_srcs)
-# unix::passwd
-stdlib_unix_passwd_srcs= \
+# unix::passwd (+any)
+stdlib_unix_passwd_any_srcs= \
$(STDLIB)/unix/passwd/group.ha \
$(STDLIB)/unix/passwd/passwd.ha \
$(STDLIB)/unix/passwd/types.ha
-$(HARECACHE)/unix/passwd/unix_passwd.ssa: $(stdlib_unix_passwd_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_io) $(stdlib_os) $(stdlib_strconv) $(stdlib_strings)
+$(HARECACHE)/unix/passwd/unix_passwd-any.ssa: $(stdlib_unix_passwd_any_srcs) $(stdlib_rt) $(stdlib_bufio) $(stdlib_io) $(stdlib_os) $(stdlib_strconv) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/unix/passwd
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::passwd \
- -t$(HARECACHE)/unix/passwd/unix_passwd.td $(stdlib_unix_passwd_srcs)
+ -t$(HARECACHE)/unix/passwd/unix_passwd.td $(stdlib_unix_passwd_any_srcs)
-# unix::poll
-stdlib_unix_poll_srcs= \
- $(STDLIB)/unix/poll/+$(PLATFORM).ha
+# unix::poll (+linux)
+stdlib_unix_poll_linux_srcs= \
+ $(STDLIB)/unix/poll/+linux.ha
-$(HARECACHE)/unix/poll/unix_poll.ssa: $(stdlib_unix_poll_srcs) $(stdlib_rt) $(stdlib_rt) $(stdlib_errors) $(stdlib_time)
+$(HARECACHE)/unix/poll/unix_poll-linux.ssa: $(stdlib_unix_poll_linux_srcs) $(stdlib_rt) $(stdlib_rt) $(stdlib_errors) $(stdlib_time)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/unix/poll
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::poll \
- -t$(HARECACHE)/unix/poll/unix_poll.td $(stdlib_unix_poll_srcs)
+ -t$(HARECACHE)/unix/poll/unix_poll.td $(stdlib_unix_poll_linux_srcs)
-# unix::resolvconf
-stdlib_unix_resolvconf_srcs= \
+# unix::resolvconf (+any)
+stdlib_unix_resolvconf_any_srcs= \
$(STDLIB)/unix/resolvconf/load.ha
-$(HARECACHE)/unix/resolvconf/unix_resolvconf.ssa: $(stdlib_unix_resolvconf_srcs) $(stdlib_rt) $(stdlib_os) $(stdlib_io) $(stdlib_bufio) $(stdlib_net_ip) $(stdlib_strings)
+$(HARECACHE)/unix/resolvconf/unix_resolvconf-any.ssa: $(stdlib_unix_resolvconf_any_srcs) $(stdlib_rt) $(stdlib_os) $(stdlib_io) $(stdlib_bufio) $(stdlib_net_ip) $(stdlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/unix/resolvconf
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::resolvconf \
- -t$(HARECACHE)/unix/resolvconf/unix_resolvconf.td $(stdlib_unix_resolvconf_srcs)
+ -t$(HARECACHE)/unix/resolvconf/unix_resolvconf.td $(stdlib_unix_resolvconf_any_srcs)
-# unix::tty
-stdlib_unix_tty_srcs= \
+# unix::tty (+linux)
+stdlib_unix_tty_linux_srcs= \
$(STDLIB)/unix/tty/types.ha \
- $(STDLIB)/unix/tty/+$(PLATFORM)/isatty.ha \
- $(STDLIB)/unix/tty/+$(PLATFORM)/open.ha \
- $(STDLIB)/unix/tty/+$(PLATFORM)/winsize.ha
+ $(STDLIB)/unix/tty/+linux/isatty.ha \
+ $(STDLIB)/unix/tty/+linux/open.ha \
+ $(STDLIB)/unix/tty/+linux/winsize.ha
-$(HARECACHE)/unix/tty/unix_tty.ssa: $(stdlib_unix_tty_srcs) $(stdlib_rt) $(stdlib_rt) $(stdlib_fs) $(stdlib_io) $(stdlib_os)
+$(HARECACHE)/unix/tty/unix_tty-linux.ssa: $(stdlib_unix_tty_linux_srcs) $(stdlib_rt) $(stdlib_rt) $(stdlib_fs) $(stdlib_io) $(stdlib_os)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/unix/tty
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nunix::tty \
- -t$(HARECACHE)/unix/tty/unix_tty.td $(stdlib_unix_tty_srcs)
+ -t$(HARECACHE)/unix/tty/unix_tty.td $(stdlib_unix_tty_linux_srcs)
-# uuid
-stdlib_uuid_srcs= \
+# uuid (+any)
+stdlib_uuid_any_srcs= \
$(STDLIB)/uuid/uuid.ha
-$(HARECACHE)/uuid/uuid.ssa: $(stdlib_uuid_srcs) $(stdlib_rt) $(stdlib_crypto_random) $(stdlib_strio) $(stdlib_fmt) $(stdlib_endian) $(stdlib_io) $(stdlib_bytes) $(stdlib_bufio) $(stdlib_strings) $(stdlib_strconv)
+$(HARECACHE)/uuid/uuid-any.ssa: $(stdlib_uuid_any_srcs) $(stdlib_rt) $(stdlib_crypto_random) $(stdlib_strio) $(stdlib_fmt) $(stdlib_endian) $(stdlib_io) $(stdlib_bytes) $(stdlib_bufio) $(stdlib_strings) $(stdlib_strconv)
@printf 'HAREC \t$@\n'
@mkdir -p $(HARECACHE)/uuid
@HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nuuid \
- -t$(HARECACHE)/uuid/uuid.td $(stdlib_uuid_srcs)
-
-# rt
-testlib_rt_srcs= \
- $(STDLIB)/rt/+$(PLATFORM)/abort.ha \
- $(STDLIB)/rt/+$(PLATFORM)/env.ha \
- $(STDLIB)/rt/+$(PLATFORM)/errno.ha \
- $(STDLIB)/rt/+$(PLATFORM)/types.ha \
- $(STDLIB)/rt/+$(PLATFORM)/segmalloc.ha \
- $(STDLIB)/rt/+$(PLATFORM)/platformstart.ha \
- $(STDLIB)/rt/+$(PLATFORM)/prctl.ha \
- $(STDLIB)/rt/+$(PLATFORM)/+$(ARCH).ha \
- $(STDLIB)/rt/+$(PLATFORM)/syscallno+$(ARCH).ha \
- $(STDLIB)/rt/+$(PLATFORM)/syscalls.ha \
- $(STDLIB)/rt/+$(PLATFORM)/signal.ha \
- $(STDLIB)/rt/+$(PLATFORM)/stat.ha \
- $(STDLIB)/rt/+$(PLATFORM)/socket.ha \
+ -t$(HARECACHE)/uuid/uuid.td $(stdlib_uuid_any_srcs)
+
+# rt (+linux)
+testlib_rt_linux_srcs= \
+ $(STDLIB)/rt/+linux/abort.ha \
+ $(STDLIB)/rt/+linux/env.ha \
+ $(STDLIB)/rt/+linux/errno.ha \
+ $(STDLIB)/rt/+linux/types.ha \
+ $(STDLIB)/rt/+linux/segmalloc.ha \
+ $(STDLIB)/rt/+linux/platformstart.ha \
+ $(STDLIB)/rt/+linux/prctl.ha \
+ $(STDLIB)/rt/+linux/+$(ARCH).ha \
+ $(STDLIB)/rt/+linux/syscallno+$(ARCH).ha \
+ $(STDLIB)/rt/+linux/syscalls.ha \
+ $(STDLIB)/rt/+linux/signal.ha \
+ $(STDLIB)/rt/+linux/stat.ha \
+ $(STDLIB)/rt/+linux/socket.ha \
$(STDLIB)/rt/+$(ARCH)/jmp.ha \
$(STDLIB)/rt/+$(ARCH)/backtrace.ha \
$(STDLIB)/rt/types_arch+$(ARCH).ha \
@@ -1282,11 +1275,11 @@ testlib_rt_srcs= \
$(STDLIB)/rt/+test/run.ha \
$(STDLIB)/rt/+test/ztos.ha
-$(TESTCACHE)/rt/rt.ssa: $(testlib_rt_srcs) $(testlib_rt)
+$(TESTCACHE)/rt/rt-linux.ssa: $(testlib_rt_linux_srcs) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/rt
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nrt \
- -t$(TESTCACHE)/rt/rt.td $(testlib_rt_srcs)
+ -t$(TESTCACHE)/rt/rt.td $(testlib_rt_linux_srcs)
$(TESTCACHE)/rt/start.o: $(STDLIB)/rt/+$(PLATFORM)/start+$(ARCH).s
@printf 'AS \t$@\n'
@@ -1325,326 +1318,326 @@ $(TESTCACHE)/rt/getfp.o: $(STDLIB)/rt/+$(ARCH)/getfp.s
@mkdir -p $(TESTCACHE)/rt
@$(AS) -o $@ $<
-$(TESTCACHE)/rt/rt.a: $(TESTCACHE)/rt/rt.o $(testlib_asm)
+$(TESTCACHE)/rt/rt-linux.a: $(TESTCACHE)/rt/rt-linux.o $(testlib_asm)
@printf 'AR\t$@\n'
- @$(AR) -csr $@ $(TESTCACHE)/rt/rt.o $(testlib_asm)
+ @$(AR) -csr $@ $(TESTCACHE)/rt/rt-linux.o $(testlib_asm)
-testlib_rt=$(TESTCACHE)/rt/rt.a
+testlib_rt=$(TESTCACHE)/rt/rt-$(PLATFORM).a
hare_testlib_deps+=$(testlib_rt)
-# gen_lib ascii
-testlib_ascii=$(TESTCACHE)/ascii/ascii.o
+# gen_lib ascii (any)
+testlib_ascii=$(TESTCACHE)/ascii/ascii-any.o
hare_testlib_deps+=$(testlib_ascii)
-# gen_lib bufio
-testlib_bufio=$(TESTCACHE)/bufio/bufio.o
+# gen_lib bufio (any)
+testlib_bufio=$(TESTCACHE)/bufio/bufio-any.o
hare_testlib_deps+=$(testlib_bufio)
-# gen_lib bytes
-testlib_bytes=$(TESTCACHE)/bytes/bytes.o
+# gen_lib bytes (any)
+testlib_bytes=$(TESTCACHE)/bytes/bytes-any.o
hare_testlib_deps+=$(testlib_bytes)
-# gen_lib compress::flate
-testlib_compress_flate=$(TESTCACHE)/compress/flate/compress_flate.o
+# gen_lib compress::flate (any)
+testlib_compress_flate=$(TESTCACHE)/compress/flate/compress_flate-any.o
hare_testlib_deps+=$(testlib_compress_flate)
-# gen_lib compress::zlib
-testlib_compress_zlib=$(TESTCACHE)/compress/zlib/compress_zlib.o
+# gen_lib compress::zlib (any)
+testlib_compress_zlib=$(TESTCACHE)/compress/zlib/compress_zlib-any.o
hare_testlib_deps+=$(testlib_compress_zlib)
-# gen_lib crypto::blake2b
-testlib_crypto_blake2b=$(TESTCACHE)/crypto/blake2b/crypto_blake2b.o
+# gen_lib crypto::blake2b (any)
+testlib_crypto_blake2b=$(TESTCACHE)/crypto/blake2b/crypto_blake2b-any.o
hare_testlib_deps+=$(testlib_crypto_blake2b)
-# gen_lib crypto::math
-testlib_crypto_math=$(TESTCACHE)/crypto/math/crypto_math.o
+# gen_lib crypto::math (any)
+testlib_crypto_math=$(TESTCACHE)/crypto/math/crypto_math-any.o
hare_testlib_deps+=$(testlib_crypto_math)
-# gen_lib crypto::random
-testlib_crypto_random=$(TESTCACHE)/crypto/random/crypto_random.o
+# gen_lib crypto::random (linux)
+testlib_crypto_random=$(TESTCACHE)/crypto/random/crypto_random-linux.o
hare_testlib_deps+=$(testlib_crypto_random)
-# gen_lib crypto::md5
-testlib_crypto_md5=$(TESTCACHE)/crypto/md5/crypto_md5.o
+# gen_lib crypto::md5 (any)
+testlib_crypto_md5=$(TESTCACHE)/crypto/md5/crypto_md5-any.o
hare_testlib_deps+=$(testlib_crypto_md5)
-# gen_lib crypto::sha1
-testlib_crypto_sha1=$(TESTCACHE)/crypto/sha1/crypto_sha1.o
+# gen_lib crypto::sha1 (any)
+testlib_crypto_sha1=$(TESTCACHE)/crypto/sha1/crypto_sha1-any.o
hare_testlib_deps+=$(testlib_crypto_sha1)
-# gen_lib crypto::sha256
-testlib_crypto_sha256=$(TESTCACHE)/crypto/sha256/crypto_sha256.o
+# gen_lib crypto::sha256 (any)
+testlib_crypto_sha256=$(TESTCACHE)/crypto/sha256/crypto_sha256-any.o
hare_testlib_deps+=$(testlib_crypto_sha256)
-# gen_lib crypto::sha512
-testlib_crypto_sha512=$(TESTCACHE)/crypto/sha512/crypto_sha512.o
+# gen_lib crypto::sha512 (any)
+testlib_crypto_sha512=$(TESTCACHE)/crypto/sha512/crypto_sha512-any.o
hare_testlib_deps+=$(testlib_crypto_sha512)
-# gen_lib dirs
-testlib_dirs=$(TESTCACHE)/dirs/dirs.o
+# gen_lib dirs (any)
+testlib_dirs=$(TESTCACHE)/dirs/dirs-any.o
hare_testlib_deps+=$(testlib_dirs)
-# gen_lib encoding::base64
-testlib_encoding_base64=$(TESTCACHE)/encoding/base64/encoding_base64.o
+# gen_lib encoding::base64 (any)
+testlib_encoding_base64=$(TESTCACHE)/encoding/base64/encoding_base64-any.o
hare_testlib_deps+=$(testlib_encoding_base64)
-# gen_lib encoding::hex
-testlib_encoding_hex=$(TESTCACHE)/encoding/hex/encoding_hex.o
+# gen_lib encoding::hex (any)
+testlib_encoding_hex=$(TESTCACHE)/encoding/hex/encoding_hex-any.o
hare_testlib_deps+=$(testlib_encoding_hex)
-# gen_lib encoding::utf8
-testlib_encoding_utf8=$(TESTCACHE)/encoding/utf8/encoding_utf8.o
+# gen_lib encoding::utf8 (any)
+testlib_encoding_utf8=$(TESTCACHE)/encoding/utf8/encoding_utf8-any.o
hare_testlib_deps+=$(testlib_encoding_utf8)
-# gen_lib endian
-testlib_endian=$(TESTCACHE)/endian/endian.o
+# gen_lib endian (any)
+testlib_endian=$(TESTCACHE)/endian/endian-any.o
hare_testlib_deps+=$(testlib_endian)
-# gen_lib errors
-testlib_errors=$(TESTCACHE)/errors/errors.o
+# gen_lib errors (any)
+testlib_errors=$(TESTCACHE)/errors/errors-any.o
hare_testlib_deps+=$(testlib_errors)
-# gen_lib fmt
-testlib_fmt=$(TESTCACHE)/fmt/fmt.o
+# gen_lib fmt (any)
+testlib_fmt=$(TESTCACHE)/fmt/fmt-any.o
hare_testlib_deps+=$(testlib_fmt)
-# gen_lib fnmatch
-testlib_fnmatch=$(TESTCACHE)/fnmatch/fnmatch.o
+# gen_lib fnmatch (any)
+testlib_fnmatch=$(TESTCACHE)/fnmatch/fnmatch-any.o
hare_testlib_deps+=$(testlib_fnmatch)
-# gen_lib format::elf
-testlib_format_elf=$(TESTCACHE)/format/elf/format_elf.o
+# gen_lib format::elf (any)
+testlib_format_elf=$(TESTCACHE)/format/elf/format_elf-any.o
hare_testlib_deps+=$(testlib_format_elf)
-# gen_lib format::ini
-testlib_format_ini=$(TESTCACHE)/format/ini/format_ini.o
+# gen_lib format::ini (any)
+testlib_format_ini=$(TESTCACHE)/format/ini/format_ini-any.o
hare_testlib_deps+=$(testlib_format_ini)
-# gen_lib format::xml
-testlib_format_xml=$(TESTCACHE)/format/xml/format_xml.o
+# gen_lib format::xml (any)
+testlib_format_xml=$(TESTCACHE)/format/xml/format_xml-any.o
hare_testlib_deps+=$(testlib_format_xml)
-# gen_lib fs
-testlib_fs=$(TESTCACHE)/fs/fs.o
+# gen_lib fs (any)
+testlib_fs=$(TESTCACHE)/fs/fs-any.o
hare_testlib_deps+=$(testlib_fs)
-# gen_lib fs::mem
-testlib_fs_mem=$(TESTCACHE)/fs/mem/fs_mem.o
+# gen_lib fs::mem (any)
+testlib_fs_mem=$(TESTCACHE)/fs/mem/fs_mem-any.o
hare_testlib_deps+=$(testlib_fs_mem)
-# gen_lib getopt
-testlib_getopt=$(TESTCACHE)/getopt/getopt.o
+# gen_lib getopt (any)
+testlib_getopt=$(TESTCACHE)/getopt/getopt-any.o
hare_testlib_deps+=$(testlib_getopt)
-# gen_lib hare::ast
-testlib_hare_ast=$(TESTCACHE)/hare/ast/hare_ast.o
+# gen_lib hare::ast (any)
+testlib_hare_ast=$(TESTCACHE)/hare/ast/hare_ast-any.o
hare_testlib_deps+=$(testlib_hare_ast)
-# gen_lib hare::lex
-testlib_hare_lex=$(TESTCACHE)/hare/lex/hare_lex.o
+# gen_lib hare::lex (any)
+testlib_hare_lex=$(TESTCACHE)/hare/lex/hare_lex-any.o
hare_testlib_deps+=$(testlib_hare_lex)
-# gen_lib hare::module
-testlib_hare_module=$(TESTCACHE)/hare/module/hare_module.o
+# gen_lib hare::module (any)
+testlib_hare_module=$(TESTCACHE)/hare/module/hare_module-any.o
hare_testlib_deps+=$(testlib_hare_module)
-# gen_lib hare::parse
-testlib_hare_parse=$(TESTCACHE)/hare/parse/hare_parse.o
+# gen_lib hare::parse (any)
+testlib_hare_parse=$(TESTCACHE)/hare/parse/hare_parse-any.o
hare_testlib_deps+=$(testlib_hare_parse)
-# gen_lib hare::types
-testlib_hare_types=$(TESTCACHE)/hare/types/hare_types.o
+# gen_lib hare::types (any)
+testlib_hare_types=$(TESTCACHE)/hare/types/hare_types-any.o
hare_testlib_deps+=$(testlib_hare_types)
-# gen_lib hare::unit
-testlib_hare_unit=$(TESTCACHE)/hare/unit/hare_unit.o
+# gen_lib hare::unit (any)
+testlib_hare_unit=$(TESTCACHE)/hare/unit/hare_unit-any.o
hare_testlib_deps+=$(testlib_hare_unit)
-# gen_lib hare::unparse
-testlib_hare_unparse=$(TESTCACHE)/hare/unparse/hare_unparse.o
+# gen_lib hare::unparse (any)
+testlib_hare_unparse=$(TESTCACHE)/hare/unparse/hare_unparse-any.o
hare_testlib_deps+=$(testlib_hare_unparse)
-# gen_lib hash
-testlib_hash=$(TESTCACHE)/hash/hash.o
+# gen_lib hash (any)
+testlib_hash=$(TESTCACHE)/hash/hash-any.o
hare_testlib_deps+=$(testlib_hash)
-# gen_lib hash::adler32
-testlib_hash_adler32=$(TESTCACHE)/hash/adler32/hash_adler32.o
+# gen_lib hash::adler32 (any)
+testlib_hash_adler32=$(TESTCACHE)/hash/adler32/hash_adler32-any.o
hare_testlib_deps+=$(testlib_hash_adler32)
-# gen_lib hash::crc16
-testlib_hash_crc16=$(TESTCACHE)/hash/crc16/hash_crc16.o
+# gen_lib hash::crc16 (any)
+testlib_hash_crc16=$(TESTCACHE)/hash/crc16/hash_crc16-any.o
hare_testlib_deps+=$(testlib_hash_crc16)
-# gen_lib hash::crc32
-testlib_hash_crc32=$(TESTCACHE)/hash/crc32/hash_crc32.o
+# gen_lib hash::crc32 (any)
+testlib_hash_crc32=$(TESTCACHE)/hash/crc32/hash_crc32-any.o
hare_testlib_deps+=$(testlib_hash_crc32)
-# gen_lib hash::crc64
-testlib_hash_crc64=$(TESTCACHE)/hash/crc64/hash_crc64.o
+# gen_lib hash::crc64 (any)
+testlib_hash_crc64=$(TESTCACHE)/hash/crc64/hash_crc64-any.o
hare_testlib_deps+=$(testlib_hash_crc64)
-# gen_lib hash::fnv
-testlib_hash_fnv=$(TESTCACHE)/hash/fnv/hash_fnv.o
+# gen_lib hash::fnv (any)
+testlib_hash_fnv=$(TESTCACHE)/hash/fnv/hash_fnv-any.o
hare_testlib_deps+=$(testlib_hash_fnv)
-# gen_lib io
-testlib_io=$(TESTCACHE)/io/io.o
+# gen_lib io (linux)
+testlib_io=$(TESTCACHE)/io/io-linux.o
hare_testlib_deps+=$(testlib_io)
-# gen_lib iobus::io_uring
-testlib_iobus_io_uring=$(TESTCACHE)/iobus/io_uring/iobus_io_uring.o
+# gen_lib iobus::io_uring (linux)
+testlib_iobus_io_uring=$(TESTCACHE)/iobus/io_uring/iobus_io_uring-linux.o
hare_testlib_deps+=$(testlib_iobus_io_uring)
-# gen_lib linux
-testlib_linux=$(TESTCACHE)/linux/linux.o
+# gen_lib linux (linux)
+testlib_linux=$(TESTCACHE)/linux/linux-linux.o
hare_testlib_deps+=$(testlib_linux)
-# gen_lib linux::signalfd
-testlib_linux_signalfd=$(TESTCACHE)/linux/signalfd/linux_signalfd.o
+# gen_lib linux::signalfd (linux)
+testlib_linux_signalfd=$(TESTCACHE)/linux/signalfd/linux_signalfd-linux.o
hare_testlib_deps+=$(testlib_linux_signalfd)
-# gen_lib linux::io_uring
-testlib_linux_io_uring=$(TESTCACHE)/linux/io_uring/linux_io_uring.o
+# gen_lib linux::io_uring (linux)
+testlib_linux_io_uring=$(TESTCACHE)/linux/io_uring/linux_io_uring-linux.o
hare_testlib_deps+=$(testlib_linux_io_uring)
-# gen_lib linux::vdso
-testlib_linux_vdso=$(TESTCACHE)/linux/vdso/linux_vdso.o
+# gen_lib linux::vdso (linux)
+testlib_linux_vdso=$(TESTCACHE)/linux/vdso/linux_vdso-linux.o
hare_testlib_deps+=$(testlib_linux_vdso)
-# gen_lib math
-testlib_math=$(TESTCACHE)/math/math.o
+# gen_lib math (any)
+testlib_math=$(TESTCACHE)/math/math-any.o
hare_testlib_deps+=$(testlib_math)
-# gen_lib net
-testlib_net=$(TESTCACHE)/net/net.o
+# gen_lib net (linux)
+testlib_net=$(TESTCACHE)/net/net-linux.o
hare_testlib_deps+=$(testlib_net)
-# gen_lib net::dial
-testlib_net_dial=$(TESTCACHE)/net/dial/net_dial.o
+# gen_lib net::dial (any)
+testlib_net_dial=$(TESTCACHE)/net/dial/net_dial-any.o
hare_testlib_deps+=$(testlib_net_dial)
-# gen_lib net::dns
-testlib_net_dns=$(TESTCACHE)/net/dns/net_dns.o
+# gen_lib net::dns (any)
+testlib_net_dns=$(TESTCACHE)/net/dns/net_dns-any.o
hare_testlib_deps+=$(testlib_net_dns)
-# gen_lib net::ip
-testlib_net_ip=$(TESTCACHE)/net/ip/net_ip.o
+# gen_lib net::ip (linux)
+testlib_net_ip=$(TESTCACHE)/net/ip/net_ip-linux.o
hare_testlib_deps+=$(testlib_net_ip)
-# gen_lib net::tcp
-testlib_net_tcp=$(TESTCACHE)/net/tcp/net_tcp.o
+# gen_lib net::tcp (linux)
+testlib_net_tcp=$(TESTCACHE)/net/tcp/net_tcp-linux.o
hare_testlib_deps+=$(testlib_net_tcp)
-# gen_lib net::udp
-testlib_net_udp=$(TESTCACHE)/net/udp/net_udp.o
+# gen_lib net::udp (linux)
+testlib_net_udp=$(TESTCACHE)/net/udp/net_udp-linux.o
hare_testlib_deps+=$(testlib_net_udp)
-# gen_lib net::unix
-testlib_net_unix=$(TESTCACHE)/net/unix/net_unix.o
+# gen_lib net::unix (linux)
+testlib_net_unix=$(TESTCACHE)/net/unix/net_unix-linux.o
hare_testlib_deps+=$(testlib_net_unix)
-# gen_lib math::random
-testlib_math_random=$(TESTCACHE)/math/random/math_random.o
+# gen_lib math::random (any)
+testlib_math_random=$(TESTCACHE)/math/random/math_random-any.o
hare_testlib_deps+=$(testlib_math_random)
-# gen_lib os
-testlib_os=$(TESTCACHE)/os/os.o
+# gen_lib os (linux)
+testlib_os=$(TESTCACHE)/os/os-linux.o
hare_testlib_deps+=$(testlib_os)
-# gen_lib os::exec
-testlib_os_exec=$(TESTCACHE)/os/exec/os_exec.o
+# gen_lib os::exec (linux)
+testlib_os_exec=$(TESTCACHE)/os/exec/os_exec-linux.o
hare_testlib_deps+=$(testlib_os_exec)
-# gen_lib path
-testlib_path=$(TESTCACHE)/path/path.o
+# gen_lib path (any)
+testlib_path=$(TESTCACHE)/path/path-any.o
hare_testlib_deps+=$(testlib_path)
-# gen_lib slice
-testlib_slice=$(TESTCACHE)/slice/slice.o
+# gen_lib slice (any)
+testlib_slice=$(TESTCACHE)/slice/slice-any.o
hare_testlib_deps+=$(testlib_slice)
-# gen_lib sort
-testlib_sort=$(TESTCACHE)/sort/sort.o
+# gen_lib sort (any)
+testlib_sort=$(TESTCACHE)/sort/sort-any.o
hare_testlib_deps+=$(testlib_sort)
-# gen_lib strconv
-testlib_strconv=$(TESTCACHE)/strconv/strconv.o
+# gen_lib strconv (any)
+testlib_strconv=$(TESTCACHE)/strconv/strconv-any.o
hare_testlib_deps+=$(testlib_strconv)
-# gen_lib strings
-testlib_strings=$(TESTCACHE)/strings/strings.o
+# gen_lib strings (any)
+testlib_strings=$(TESTCACHE)/strings/strings-any.o
hare_testlib_deps+=$(testlib_strings)
-# gen_lib strio
-testlib_strio=$(TESTCACHE)/strio/strio.o
+# gen_lib strio (any)
+testlib_strio=$(TESTCACHE)/strio/strio-any.o
hare_testlib_deps+=$(testlib_strio)
-# gen_lib temp
-testlib_temp=$(TESTCACHE)/temp/temp.o
+# gen_lib temp (linux)
+testlib_temp=$(TESTCACHE)/temp/temp-linux.o
hare_testlib_deps+=$(testlib_temp)
-# gen_lib time
-testlib_time=$(TESTCACHE)/time/time.o
+# gen_lib time (linux)
+testlib_time=$(TESTCACHE)/time/time-linux.o
hare_testlib_deps+=$(testlib_time)
-# gen_lib types
-testlib_types=$(TESTCACHE)/types/types.o
+# gen_lib types (any)
+testlib_types=$(TESTCACHE)/types/types-any.o
hare_testlib_deps+=$(testlib_types)
-# gen_lib unix
-testlib_unix=$(TESTCACHE)/unix/unix.o
+# gen_lib unix (linux)
+testlib_unix=$(TESTCACHE)/unix/unix-linux.o
hare_testlib_deps+=$(testlib_unix)
-# gen_lib unix::hosts
-testlib_unix_hosts=$(TESTCACHE)/unix/hosts/unix_hosts.o
+# gen_lib unix::hosts (any)
+testlib_unix_hosts=$(TESTCACHE)/unix/hosts/unix_hosts-any.o
hare_testlib_deps+=$(testlib_unix_hosts)
-# gen_lib unix::passwd
-testlib_unix_passwd=$(TESTCACHE)/unix/passwd/unix_passwd.o
+# gen_lib unix::passwd (any)
+testlib_unix_passwd=$(TESTCACHE)/unix/passwd/unix_passwd-any.o
hare_testlib_deps+=$(testlib_unix_passwd)
-# gen_lib unix::poll
-testlib_unix_poll=$(TESTCACHE)/unix/poll/unix_poll.o
+# gen_lib unix::poll (linux)
+testlib_unix_poll=$(TESTCACHE)/unix/poll/unix_poll-linux.o
hare_testlib_deps+=$(testlib_unix_poll)
-# gen_lib unix::resolvconf
-testlib_unix_resolvconf=$(TESTCACHE)/unix/resolvconf/unix_resolvconf.o
+# gen_lib unix::resolvconf (any)
+testlib_unix_resolvconf=$(TESTCACHE)/unix/resolvconf/unix_resolvconf-any.o
hare_testlib_deps+=$(testlib_unix_resolvconf)
-# gen_lib unix::tty
-testlib_unix_tty=$(TESTCACHE)/unix/tty/unix_tty.o
+# gen_lib unix::tty (linux)
+testlib_unix_tty=$(TESTCACHE)/unix/tty/unix_tty-linux.o
hare_testlib_deps+=$(testlib_unix_tty)
-# gen_lib uuid
-testlib_uuid=$(TESTCACHE)/uuid/uuid.o
+# gen_lib uuid (any)
+testlib_uuid=$(TESTCACHE)/uuid/uuid-any.o
hare_testlib_deps+=$(testlib_uuid)
-# ascii
-testlib_ascii_srcs= \
+# ascii (+any)
+testlib_ascii_any_srcs= \
$(STDLIB)/ascii/ctype.ha \
$(STDLIB)/ascii/strcmp.ha
-$(TESTCACHE)/ascii/ascii.ssa: $(testlib_ascii_srcs) $(testlib_rt) $(testlib_strings)
+$(TESTCACHE)/ascii/ascii-any.ssa: $(testlib_ascii_any_srcs) $(testlib_rt) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/ascii
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nascii \
- -t$(TESTCACHE)/ascii/ascii.td $(testlib_ascii_srcs)
+ -t$(TESTCACHE)/ascii/ascii.td $(testlib_ascii_any_srcs)
-# bufio
-testlib_bufio_srcs= \
+# bufio (+any)
+testlib_bufio_any_srcs= \
$(STDLIB)/bufio/buffered.ha \
$(STDLIB)/bufio/memstream.ha \
$(STDLIB)/bufio/scanner.ha
-$(TESTCACHE)/bufio/bufio.ssa: $(testlib_bufio_srcs) $(testlib_rt) $(testlib_io) $(testlib_bytes) $(testlib_strings) $(testlib_encoding_utf8) $(testlib_errors) $(testlib_types)
+$(TESTCACHE)/bufio/bufio-any.ssa: $(testlib_bufio_any_srcs) $(testlib_rt) $(testlib_io) $(testlib_bytes) $(testlib_strings) $(testlib_encoding_utf8) $(testlib_errors) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/bufio
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nbufio \
- -t$(TESTCACHE)/bufio/bufio.td $(testlib_bufio_srcs)
+ -t$(TESTCACHE)/bufio/bufio.td $(testlib_bufio_any_srcs)
-# bytes
-testlib_bytes_srcs= \
+# bytes (+any)
+testlib_bytes_any_srcs= \
$(STDLIB)/bytes/contains.ha \
$(STDLIB)/bytes/copy.ha \
$(STDLIB)/bytes/equal.ha \
@@ -1653,274 +1646,274 @@ testlib_bytes_srcs= \
$(STDLIB)/bytes/tokenize.ha \
$(STDLIB)/bytes/two_way.ha
-$(TESTCACHE)/bytes/bytes.ssa: $(testlib_bytes_srcs) $(testlib_rt) $(testlib_types)
+$(TESTCACHE)/bytes/bytes-any.ssa: $(testlib_bytes_any_srcs) $(testlib_rt) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/bytes
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nbytes \
- -t$(TESTCACHE)/bytes/bytes.td $(testlib_bytes_srcs)
+ -t$(TESTCACHE)/bytes/bytes.td $(testlib_bytes_any_srcs)
-# compress::flate
-testlib_compress_flate_srcs= \
+# compress::flate (+any)
+testlib_compress_flate_any_srcs= \
$(STDLIB)/compress/flate/inflate.ha
-$(TESTCACHE)/compress/flate/compress_flate.ssa: $(testlib_compress_flate_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_bytes) $(testlib_endian) $(testlib_errors) $(testlib_io) $(testlib_fmt)
+$(TESTCACHE)/compress/flate/compress_flate-any.ssa: $(testlib_compress_flate_any_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_bytes) $(testlib_endian) $(testlib_errors) $(testlib_io) $(testlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/compress/flate
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncompress::flate \
- -t$(TESTCACHE)/compress/flate/compress_flate.td $(testlib_compress_flate_srcs)
+ -t$(TESTCACHE)/compress/flate/compress_flate.td $(testlib_compress_flate_any_srcs)
-# compress::zlib
-testlib_compress_zlib_srcs= \
+# compress::zlib (+any)
+testlib_compress_zlib_any_srcs= \
$(STDLIB)/compress/zlib/data+test.ha \
$(STDLIB)/compress/zlib/reader.ha
-$(TESTCACHE)/compress/zlib/compress_zlib.ssa: $(testlib_compress_zlib_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_bytes) $(testlib_compress_flate) $(testlib_endian) $(testlib_errors) $(testlib_hash) $(testlib_hash_adler32) $(testlib_io) $(testlib_fmt)
+$(TESTCACHE)/compress/zlib/compress_zlib-any.ssa: $(testlib_compress_zlib_any_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_bytes) $(testlib_compress_flate) $(testlib_endian) $(testlib_errors) $(testlib_hash) $(testlib_hash_adler32) $(testlib_io) $(testlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/compress/zlib
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncompress::zlib \
- -t$(TESTCACHE)/compress/zlib/compress_zlib.td $(testlib_compress_zlib_srcs)
+ -t$(TESTCACHE)/compress/zlib/compress_zlib.td $(testlib_compress_zlib_any_srcs)
-# crypto::blake2b
-testlib_crypto_blake2b_srcs= \
+# crypto::blake2b (+any)
+testlib_crypto_blake2b_any_srcs= \
$(STDLIB)/crypto/blake2b/blake2b.ha \
$(STDLIB)/crypto/blake2b/+test.ha \
$(STDLIB)/crypto/blake2b/vectors+test.ha
-$(TESTCACHE)/crypto/blake2b/crypto_blake2b.ssa: $(testlib_crypto_blake2b_srcs) $(testlib_rt) $(testlib_encoding_hex) $(testlib_fmt) $(testlib_hash) $(testlib_io) $(testlib_strings) $(testlib_strio) $(testlib_crypto_math) $(testlib_endian)
+$(TESTCACHE)/crypto/blake2b/crypto_blake2b-any.ssa: $(testlib_crypto_blake2b_any_srcs) $(testlib_rt) $(testlib_encoding_hex) $(testlib_fmt) $(testlib_hash) $(testlib_io) $(testlib_strings) $(testlib_strio) $(testlib_crypto_math) $(testlib_endian)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/crypto/blake2b
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::blake2b \
- -t$(TESTCACHE)/crypto/blake2b/crypto_blake2b.td $(testlib_crypto_blake2b_srcs)
+ -t$(TESTCACHE)/crypto/blake2b/crypto_blake2b.td $(testlib_crypto_blake2b_any_srcs)
-# crypto::math
-testlib_crypto_math_srcs= \
+# crypto::math (+any)
+testlib_crypto_math_any_srcs= \
$(STDLIB)/crypto/math/bits.ha
-$(TESTCACHE)/crypto/math/crypto_math.ssa: $(testlib_crypto_math_srcs) $(testlib_rt)
+$(TESTCACHE)/crypto/math/crypto_math-any.ssa: $(testlib_crypto_math_any_srcs) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/crypto/math
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::math \
- -t$(TESTCACHE)/crypto/math/crypto_math.td $(testlib_crypto_math_srcs)
+ -t$(TESTCACHE)/crypto/math/crypto_math.td $(testlib_crypto_math_any_srcs)
-# crypto::random
-testlib_crypto_random_srcs= \
- $(STDLIB)/crypto/random/+$(PLATFORM).ha \
+# crypto::random (+linux)
+testlib_crypto_random_linux_srcs= \
+ $(STDLIB)/crypto/random/+linux.ha \
$(STDLIB)/crypto/random/random.ha
-$(TESTCACHE)/crypto/random/crypto_random.ssa: $(testlib_crypto_random_srcs) $(testlib_rt) $(testlib_rt) $(testlib_io) $(testlib_errors)
+$(TESTCACHE)/crypto/random/crypto_random-linux.ssa: $(testlib_crypto_random_linux_srcs) $(testlib_rt) $(testlib_rt) $(testlib_io) $(testlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/crypto/random
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::random \
- -t$(TESTCACHE)/crypto/random/crypto_random.td $(testlib_crypto_random_srcs)
+ -t$(TESTCACHE)/crypto/random/crypto_random.td $(testlib_crypto_random_linux_srcs)
-# crypto::md5
-testlib_crypto_md5_srcs= \
+# crypto::md5 (+any)
+testlib_crypto_md5_any_srcs= \
$(STDLIB)/crypto/md5/md5.ha \
$(STDLIB)/crypto/md5/+test.ha
-$(TESTCACHE)/crypto/md5/crypto_md5.ssa: $(testlib_crypto_md5_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_endian) $(testlib_fmt) $(testlib_strio) $(testlib_strings)
+$(TESTCACHE)/crypto/md5/crypto_md5-any.ssa: $(testlib_crypto_md5_any_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_endian) $(testlib_fmt) $(testlib_strio) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/crypto/md5
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::md5 \
- -t$(TESTCACHE)/crypto/md5/crypto_md5.td $(testlib_crypto_md5_srcs)
+ -t$(TESTCACHE)/crypto/md5/crypto_md5.td $(testlib_crypto_md5_any_srcs)
-# crypto::sha1
-testlib_crypto_sha1_srcs= \
+# crypto::sha1 (+any)
+testlib_crypto_sha1_any_srcs= \
$(STDLIB)/crypto/sha1/sha1.ha \
$(STDLIB)/crypto/sha1/+test.ha
-$(TESTCACHE)/crypto/sha1/crypto_sha1.ssa: $(testlib_crypto_sha1_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_endian) $(testlib_fmt) $(testlib_strio) $(testlib_strings)
+$(TESTCACHE)/crypto/sha1/crypto_sha1-any.ssa: $(testlib_crypto_sha1_any_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_endian) $(testlib_fmt) $(testlib_strio) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/crypto/sha1
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::sha1 \
- -t$(TESTCACHE)/crypto/sha1/crypto_sha1.td $(testlib_crypto_sha1_srcs)
+ -t$(TESTCACHE)/crypto/sha1/crypto_sha1.td $(testlib_crypto_sha1_any_srcs)
-# crypto::sha256
-testlib_crypto_sha256_srcs= \
+# crypto::sha256 (+any)
+testlib_crypto_sha256_any_srcs= \
$(STDLIB)/crypto/sha256/sha256.ha \
$(STDLIB)/crypto/sha256/+test.ha
-$(TESTCACHE)/crypto/sha256/crypto_sha256.ssa: $(testlib_crypto_sha256_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_endian) $(testlib_fmt) $(testlib_strio) $(testlib_strings)
+$(TESTCACHE)/crypto/sha256/crypto_sha256-any.ssa: $(testlib_crypto_sha256_any_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_endian) $(testlib_fmt) $(testlib_strio) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/crypto/sha256
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::sha256 \
- -t$(TESTCACHE)/crypto/sha256/crypto_sha256.td $(testlib_crypto_sha256_srcs)
+ -t$(TESTCACHE)/crypto/sha256/crypto_sha256.td $(testlib_crypto_sha256_any_srcs)
-# crypto::sha512
-testlib_crypto_sha512_srcs= \
+# crypto::sha512 (+any)
+testlib_crypto_sha512_any_srcs= \
$(STDLIB)/crypto/sha512/sha512.ha \
$(STDLIB)/crypto/sha512/+test.ha
-$(TESTCACHE)/crypto/sha512/crypto_sha512.ssa: $(testlib_crypto_sha512_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_endian) $(testlib_fmt) $(testlib_strio) $(testlib_strings)
+$(TESTCACHE)/crypto/sha512/crypto_sha512-any.ssa: $(testlib_crypto_sha512_any_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_endian) $(testlib_fmt) $(testlib_strio) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/crypto/sha512
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ncrypto::sha512 \
- -t$(TESTCACHE)/crypto/sha512/crypto_sha512.td $(testlib_crypto_sha512_srcs)
+ -t$(TESTCACHE)/crypto/sha512/crypto_sha512.td $(testlib_crypto_sha512_any_srcs)
-# dirs
-testlib_dirs_srcs= \
+# dirs (+any)
+testlib_dirs_any_srcs= \
$(STDLIB)/dirs/xdg.ha
-$(TESTCACHE)/dirs/dirs.ssa: $(testlib_dirs_srcs) $(testlib_rt) $(testlib_fs) $(testlib_os) $(testlib_path)
+$(TESTCACHE)/dirs/dirs-any.ssa: $(testlib_dirs_any_srcs) $(testlib_rt) $(testlib_fs) $(testlib_os) $(testlib_path)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/dirs
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ndirs \
- -t$(TESTCACHE)/dirs/dirs.td $(testlib_dirs_srcs)
+ -t$(TESTCACHE)/dirs/dirs.td $(testlib_dirs_any_srcs)
-# encoding::base64
-testlib_encoding_base64_srcs= \
+# encoding::base64 (+any)
+testlib_encoding_base64_any_srcs= \
$(STDLIB)/encoding/base64/base64.ha
-$(TESTCACHE)/encoding/base64/encoding_base64.ssa: $(testlib_encoding_base64_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_bytes) $(testlib_io) $(testlib_strio) $(testlib_strings)
+$(TESTCACHE)/encoding/base64/encoding_base64-any.ssa: $(testlib_encoding_base64_any_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_bytes) $(testlib_io) $(testlib_strio) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/encoding/base64
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::base64 \
- -t$(TESTCACHE)/encoding/base64/encoding_base64.td $(testlib_encoding_base64_srcs)
+ -t$(TESTCACHE)/encoding/base64/encoding_base64.td $(testlib_encoding_base64_any_srcs)
-# encoding::hex
-testlib_encoding_hex_srcs= \
+# encoding::hex (+any)
+testlib_encoding_hex_any_srcs= \
$(STDLIB)/encoding/hex/hex.ha
-$(TESTCACHE)/encoding/hex/encoding_hex.ssa: $(testlib_encoding_hex_srcs) $(testlib_rt) $(testlib_ascii) $(testlib_bytes) $(testlib_fmt) $(testlib_io) $(testlib_strconv) $(testlib_strio) $(testlib_strings)
+$(TESTCACHE)/encoding/hex/encoding_hex-any.ssa: $(testlib_encoding_hex_any_srcs) $(testlib_rt) $(testlib_ascii) $(testlib_bytes) $(testlib_fmt) $(testlib_io) $(testlib_strconv) $(testlib_strio) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/encoding/hex
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::hex \
- -t$(TESTCACHE)/encoding/hex/encoding_hex.td $(testlib_encoding_hex_srcs)
+ -t$(TESTCACHE)/encoding/hex/encoding_hex.td $(testlib_encoding_hex_any_srcs)
-# encoding::utf8
-testlib_encoding_utf8_srcs= \
+# encoding::utf8 (+any)
+testlib_encoding_utf8_any_srcs= \
$(STDLIB)/encoding/utf8/decode.ha \
$(STDLIB)/encoding/utf8/encode.ha \
$(STDLIB)/encoding/utf8/rune.ha
-$(TESTCACHE)/encoding/utf8/encoding_utf8.ssa: $(testlib_encoding_utf8_srcs) $(testlib_rt) $(testlib_types)
+$(TESTCACHE)/encoding/utf8/encoding_utf8-any.ssa: $(testlib_encoding_utf8_any_srcs) $(testlib_rt) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/encoding/utf8
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nencoding::utf8 \
- -t$(TESTCACHE)/encoding/utf8/encoding_utf8.td $(testlib_encoding_utf8_srcs)
+ -t$(TESTCACHE)/encoding/utf8/encoding_utf8.td $(testlib_encoding_utf8_any_srcs)
-# endian
-testlib_endian_srcs= \
+# endian (+any)
+testlib_endian_any_srcs= \
$(STDLIB)/endian/big.ha \
$(STDLIB)/endian/network.ha \
$(STDLIB)/endian/little.ha \
$(STDLIB)/endian/endian.ha \
$(STDLIB)/endian/host+$(ARCH).ha
-$(TESTCACHE)/endian/endian.ssa: $(testlib_endian_srcs) $(testlib_rt)
+$(TESTCACHE)/endian/endian-any.ssa: $(testlib_endian_any_srcs) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/endian
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nendian \
- -t$(TESTCACHE)/endian/endian.td $(testlib_endian_srcs)
+ -t$(TESTCACHE)/endian/endian.td $(testlib_endian_any_srcs)
-# errors
-testlib_errors_srcs= \
+# errors (+any)
+testlib_errors_any_srcs= \
$(STDLIB)/errors/common.ha \
$(STDLIB)/errors/opaque.ha \
$(STDLIB)/errors/string.ha \
$(STDLIB)/errors/rt.ha
-$(TESTCACHE)/errors/errors.ssa: $(testlib_errors_srcs) $(testlib_rt)
+$(TESTCACHE)/errors/errors-any.ssa: $(testlib_errors_any_srcs) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/errors
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nerrors \
- -t$(TESTCACHE)/errors/errors.td $(testlib_errors_srcs)
+ -t$(TESTCACHE)/errors/errors.td $(testlib_errors_any_srcs)
-# fmt
-testlib_fmt_srcs= \
+# fmt (+any)
+testlib_fmt_any_srcs= \
$(STDLIB)/fmt/fmt.ha
-$(TESTCACHE)/fmt/fmt.ssa: $(testlib_fmt_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_io) $(testlib_os) $(testlib_strconv) $(testlib_strings) $(testlib_types)
+$(TESTCACHE)/fmt/fmt-any.ssa: $(testlib_fmt_any_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_io) $(testlib_os) $(testlib_strconv) $(testlib_strings) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/fmt
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nfmt \
- -t$(TESTCACHE)/fmt/fmt.td $(testlib_fmt_srcs)
+ -t$(TESTCACHE)/fmt/fmt.td $(testlib_fmt_any_srcs)
-# fnmatch
-testlib_fnmatch_srcs= \
+# fnmatch (+any)
+testlib_fnmatch_any_srcs= \
$(STDLIB)/fnmatch/fnmatch.ha \
$(STDLIB)/fnmatch/+test.ha
-$(TESTCACHE)/fnmatch/fnmatch.ssa: $(testlib_fnmatch_srcs) $(testlib_rt) $(testlib_strings) $(testlib_bytes) $(testlib_sort) $(testlib_ascii) $(testlib_io) $(testlib_fmt)
+$(TESTCACHE)/fnmatch/fnmatch-any.ssa: $(testlib_fnmatch_any_srcs) $(testlib_rt) $(testlib_strings) $(testlib_bytes) $(testlib_sort) $(testlib_ascii) $(testlib_io) $(testlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/fnmatch
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nfnmatch \
- -t$(TESTCACHE)/fnmatch/fnmatch.td $(testlib_fnmatch_srcs)
+ -t$(TESTCACHE)/fnmatch/fnmatch.td $(testlib_fnmatch_any_srcs)
-# format::elf
-testlib_format_elf_srcs= \
+# format::elf (+any)
+testlib_format_elf_any_srcs= \
$(STDLIB)/format/elf/+$(ARCH).ha \
$(STDLIB)/format/elf/+$(PLATFORM).ha \
$(STDLIB)/format/elf/types.ha
-$(TESTCACHE)/format/elf/format_elf.ssa: $(testlib_format_elf_srcs) $(testlib_rt)
+$(TESTCACHE)/format/elf/format_elf-any.ssa: $(testlib_format_elf_any_srcs) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/format/elf
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nformat::elf \
- -t$(TESTCACHE)/format/elf/format_elf.td $(testlib_format_elf_srcs)
+ -t$(TESTCACHE)/format/elf/format_elf.td $(testlib_format_elf_any_srcs)
-# format::ini
-testlib_format_ini_srcs= \
+# format::ini (+any)
+testlib_format_ini_any_srcs= \
$(STDLIB)/format/ini/scan.ha \
$(STDLIB)/format/ini/types.ha \
$(STDLIB)/format/ini/+test.ha
-$(TESTCACHE)/format/ini/format_ini.ssa: $(testlib_format_ini_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_encoding_utf8) $(testlib_fmt) $(testlib_io) $(testlib_strings)
+$(TESTCACHE)/format/ini/format_ini-any.ssa: $(testlib_format_ini_any_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_encoding_utf8) $(testlib_fmt) $(testlib_io) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/format/ini
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nformat::ini \
- -t$(TESTCACHE)/format/ini/format_ini.td $(testlib_format_ini_srcs)
+ -t$(TESTCACHE)/format/ini/format_ini.td $(testlib_format_ini_any_srcs)
-# format::xml
-testlib_format_xml_srcs= \
+# format::xml (+any)
+testlib_format_xml_any_srcs= \
$(STDLIB)/format/xml/types.ha \
$(STDLIB)/format/xml/parser.ha \
$(STDLIB)/format/xml/chars.ha \
$(STDLIB)/format/xml/+test.ha
-$(TESTCACHE)/format/xml/format_xml.ssa: $(testlib_format_xml_srcs) $(testlib_rt) $(testlib_io) $(testlib_bufio) $(testlib_strings) $(testlib_ascii) $(testlib_strio) $(testlib_os)
+$(TESTCACHE)/format/xml/format_xml-any.ssa: $(testlib_format_xml_any_srcs) $(testlib_rt) $(testlib_io) $(testlib_bufio) $(testlib_strings) $(testlib_ascii) $(testlib_strio) $(testlib_os)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/format/xml
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nformat::xml \
- -t$(TESTCACHE)/format/xml/format_xml.td $(testlib_format_xml_srcs)
+ -t$(TESTCACHE)/format/xml/format_xml.td $(testlib_format_xml_any_srcs)
-# fs
-testlib_fs_srcs= \
+# fs (+any)
+testlib_fs_any_srcs= \
$(STDLIB)/fs/types.ha \
$(STDLIB)/fs/fs.ha \
$(STDLIB)/fs/util.ha
-$(TESTCACHE)/fs/fs.ssa: $(testlib_fs_srcs) $(testlib_rt) $(testlib_io) $(testlib_strings) $(testlib_path) $(testlib_time) $(testlib_errors)
+$(TESTCACHE)/fs/fs-any.ssa: $(testlib_fs_any_srcs) $(testlib_rt) $(testlib_io) $(testlib_strings) $(testlib_path) $(testlib_time) $(testlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/fs
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nfs \
- -t$(TESTCACHE)/fs/fs.td $(testlib_fs_srcs)
+ -t$(TESTCACHE)/fs/fs.td $(testlib_fs_any_srcs)
-# fs::mem
-testlib_fs_mem_srcs= \
+# fs::mem (+any)
+testlib_fs_mem_any_srcs= \
$(STDLIB)/fs/mem/mem.ha \
$(STDLIB)/fs/mem/stream.ha \
$(STDLIB)/fs/mem/util.ha \
$(STDLIB)/fs/mem/+test.ha
-$(TESTCACHE)/fs/mem/fs_mem.ssa: $(testlib_fs_mem_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_errors) $(testlib_fs) $(testlib_hash) $(testlib_hash_fnv) $(testlib_io) $(testlib_path) $(testlib_strconv) $(testlib_strings) $(testlib_types)
+$(TESTCACHE)/fs/mem/fs_mem-any.ssa: $(testlib_fs_mem_any_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_errors) $(testlib_fs) $(testlib_hash) $(testlib_hash_fnv) $(testlib_io) $(testlib_path) $(testlib_strconv) $(testlib_strings) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/fs/mem
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nfs::mem \
- -t$(TESTCACHE)/fs/mem/fs_mem.td $(testlib_fs_mem_srcs)
+ -t$(TESTCACHE)/fs/mem/fs_mem.td $(testlib_fs_mem_any_srcs)
-# getopt
-testlib_getopt_srcs= \
+# getopt (+any)
+testlib_getopt_any_srcs= \
$(STDLIB)/getopt/getopts.ha
-$(TESTCACHE)/getopt/getopt.ssa: $(testlib_getopt_srcs) $(testlib_rt) $(testlib_encoding_utf8) $(testlib_fmt) $(testlib_io) $(testlib_os) $(testlib_strings)
+$(TESTCACHE)/getopt/getopt-any.ssa: $(testlib_getopt_any_srcs) $(testlib_rt) $(testlib_encoding_utf8) $(testlib_fmt) $(testlib_io) $(testlib_os) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/getopt
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ngetopt \
- -t$(TESTCACHE)/getopt/getopt.td $(testlib_getopt_srcs)
+ -t$(TESTCACHE)/getopt/getopt.td $(testlib_getopt_any_srcs)
-# hare::ast
-testlib_hare_ast_srcs= \
+# hare::ast (+any)
+testlib_hare_ast_any_srcs= \
$(STDLIB)/hare/ast/decl.ha \
$(STDLIB)/hare/ast/expr.ha \
$(STDLIB)/hare/ast/ident.ha \
@@ -1928,39 +1921,39 @@ testlib_hare_ast_srcs= \
$(STDLIB)/hare/ast/type.ha \
$(STDLIB)/hare/ast/unit.ha
-$(TESTCACHE)/hare/ast/hare_ast.ssa: $(testlib_hare_ast_srcs) $(testlib_rt) $(testlib_hare_lex) $(testlib_strings)
+$(TESTCACHE)/hare/ast/hare_ast-any.ssa: $(testlib_hare_ast_any_srcs) $(testlib_rt) $(testlib_hare_lex) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hare/ast
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::ast \
- -t$(TESTCACHE)/hare/ast/hare_ast.td $(testlib_hare_ast_srcs)
+ -t$(TESTCACHE)/hare/ast/hare_ast.td $(testlib_hare_ast_any_srcs)
-# hare::lex
-testlib_hare_lex_srcs= \
+# hare::lex (+any)
+testlib_hare_lex_any_srcs= \
$(STDLIB)/hare/lex/token.ha \
$(STDLIB)/hare/lex/lex.ha \
$(STDLIB)/hare/lex/+test.ha
-$(TESTCACHE)/hare/lex/hare_lex.ssa: $(testlib_hare_lex_srcs) $(testlib_rt) $(testlib_io) $(testlib_bufio) $(testlib_strings) $(testlib_types) $(testlib_fmt) $(testlib_sort) $(testlib_strio)
+$(TESTCACHE)/hare/lex/hare_lex-any.ssa: $(testlib_hare_lex_any_srcs) $(testlib_rt) $(testlib_io) $(testlib_bufio) $(testlib_strings) $(testlib_types) $(testlib_fmt) $(testlib_sort) $(testlib_strio)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hare/lex
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::lex \
- -t$(TESTCACHE)/hare/lex/hare_lex.td $(testlib_hare_lex_srcs)
+ -t$(TESTCACHE)/hare/lex/hare_lex.td $(testlib_hare_lex_any_srcs)
-# hare::module
-testlib_hare_module_srcs= \
+# hare::module (+any)
+testlib_hare_module_any_srcs= \
$(STDLIB)/hare/module/types.ha \
$(STDLIB)/hare/module/context.ha \
$(STDLIB)/hare/module/scan.ha \
$(STDLIB)/hare/module/manifest.ha
-$(TESTCACHE)/hare/module/hare_module.ssa: $(testlib_hare_module_srcs) $(testlib_rt) $(testlib_hare_ast) $(testlib_hare_lex) $(testlib_hare_parse) $(testlib_hare_unparse) $(testlib_strio) $(testlib_fs) $(testlib_io) $(testlib_strings) $(testlib_hash) $(testlib_crypto_sha256) $(testlib_dirs) $(testlib_bytes) $(testlib_encoding_utf8) $(testlib_ascii) $(testlib_fmt) $(testlib_time) $(testlib_slice) $(testlib_bufio) $(testlib_strconv) $(testlib_os) $(testlib_encoding_hex) $(testlib_sort) $(testlib_errors) $(testlib_temp)
+$(TESTCACHE)/hare/module/hare_module-any.ssa: $(testlib_hare_module_any_srcs) $(testlib_rt) $(testlib_hare_ast) $(testlib_hare_lex) $(testlib_hare_parse) $(testlib_hare_unparse) $(testlib_strio) $(testlib_fs) $(testlib_io) $(testlib_strings) $(testlib_hash) $(testlib_crypto_sha256) $(testlib_dirs) $(testlib_bytes) $(testlib_encoding_utf8) $(testlib_ascii) $(testlib_fmt) $(testlib_time) $(testlib_slice) $(testlib_bufio) $(testlib_strconv) $(testlib_os) $(testlib_encoding_hex) $(testlib_sort) $(testlib_errors) $(testlib_temp)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hare/module
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::module \
- -t$(TESTCACHE)/hare/module/hare_module.td $(testlib_hare_module_srcs)
+ -t$(TESTCACHE)/hare/module/hare_module.td $(testlib_hare_module_any_srcs)
-# hare::parse
-testlib_hare_parse_srcs= \
+# hare::parse (+any)
+testlib_hare_parse_any_srcs= \
$(STDLIB)/hare/parse/decl.ha \
$(STDLIB)/hare/parse/expr.ha \
$(STDLIB)/hare/parse/ident.ha \
@@ -1975,14 +1968,14 @@ testlib_hare_parse_srcs= \
$(STDLIB)/hare/parse/+test/types.ha \
$(STDLIB)/hare/parse/+test/unit.ha
-$(TESTCACHE)/hare/parse/hare_parse.ssa: $(testlib_hare_parse_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_fmt) $(testlib_hare_ast) $(testlib_hare_lex) $(testlib_hare_unparse) $(testlib_io) $(testlib_strings) $(testlib_strio) $(testlib_fmt)
+$(TESTCACHE)/hare/parse/hare_parse-any.ssa: $(testlib_hare_parse_any_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_fmt) $(testlib_hare_ast) $(testlib_hare_lex) $(testlib_hare_unparse) $(testlib_io) $(testlib_strings) $(testlib_strio) $(testlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hare/parse
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::parse \
- -t$(TESTCACHE)/hare/parse/hare_parse.td $(testlib_hare_parse_srcs)
+ -t$(TESTCACHE)/hare/parse/hare_parse.td $(testlib_hare_parse_any_srcs)
-# hare::types
-testlib_hare_types_srcs= \
+# hare::types (+any)
+testlib_hare_types_any_srcs= \
$(STDLIB)/hare/types/arch.ha \
$(STDLIB)/hare/types/builtins.ha \
$(STDLIB)/hare/types/class.ha \
@@ -1992,14 +1985,14 @@ testlib_hare_types_srcs= \
$(STDLIB)/hare/types/types.ha \
$(STDLIB)/hare/types/+test.ha
-$(TESTCACHE)/hare/types/hare_types.ssa: $(testlib_hare_types_srcs) $(testlib_rt) $(testlib_hare_ast) $(testlib_hare_parse) $(testlib_hash) $(testlib_hash_fnv) $(testlib_endian)
+$(TESTCACHE)/hare/types/hare_types-any.ssa: $(testlib_hare_types_any_srcs) $(testlib_rt) $(testlib_hare_ast) $(testlib_hare_parse) $(testlib_hash) $(testlib_hash_fnv) $(testlib_endian)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hare/types
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::types \
- -t$(TESTCACHE)/hare/types/hare_types.td $(testlib_hare_types_srcs)
+ -t$(TESTCACHE)/hare/types/hare_types.td $(testlib_hare_types_any_srcs)
-# hare::unit
-testlib_hare_unit_srcs= \
+# hare::unit (+any)
+testlib_hare_unit_any_srcs= \
$(STDLIB)/hare/unit/check.ha \
$(STDLIB)/hare/unit/context.ha \
$(STDLIB)/hare/unit/errors.ha \
@@ -2010,14 +2003,14 @@ testlib_hare_unit_srcs= \
$(STDLIB)/hare/unit/unit.ha \
$(STDLIB)/hare/unit/+test.ha
-$(TESTCACHE)/hare/unit/hare_unit.ssa: $(testlib_hare_unit_srcs) $(testlib_rt) $(testlib_hare_ast) $(testlib_hare_types) $(testlib_hash) $(testlib_hash_fnv) $(testlib_strings) $(testlib_hare_lex) $(testlib_bufio) $(testlib_hare_parse)
+$(TESTCACHE)/hare/unit/hare_unit-any.ssa: $(testlib_hare_unit_any_srcs) $(testlib_rt) $(testlib_hare_ast) $(testlib_hare_types) $(testlib_hash) $(testlib_hash_fnv) $(testlib_strings) $(testlib_hare_lex) $(testlib_bufio) $(testlib_hare_parse)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hare/unit
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::unit \
- -t$(TESTCACHE)/hare/unit/hare_unit.td $(testlib_hare_unit_srcs)
+ -t$(TESTCACHE)/hare/unit/hare_unit.td $(testlib_hare_unit_any_srcs)
-# hare::unparse
-testlib_hare_unparse_srcs= \
+# hare::unparse (+any)
+testlib_hare_unparse_any_srcs= \
$(STDLIB)/hare/unparse/expr.ha \
$(STDLIB)/hare/unparse/decl.ha \
$(STDLIB)/hare/unparse/ident.ha \
@@ -2026,133 +2019,133 @@ testlib_hare_unparse_srcs= \
$(STDLIB)/hare/unparse/unit.ha \
$(STDLIB)/hare/unparse/util.ha
-$(TESTCACHE)/hare/unparse/hare_unparse.ssa: $(testlib_hare_unparse_srcs) $(testlib_rt) $(testlib_fmt) $(testlib_io) $(testlib_strio) $(testlib_hare_ast)
+$(TESTCACHE)/hare/unparse/hare_unparse-any.ssa: $(testlib_hare_unparse_any_srcs) $(testlib_rt) $(testlib_fmt) $(testlib_io) $(testlib_strio) $(testlib_hare_ast)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hare/unparse
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::unparse \
- -t$(TESTCACHE)/hare/unparse/hare_unparse.td $(testlib_hare_unparse_srcs)
+ -t$(TESTCACHE)/hare/unparse/hare_unparse.td $(testlib_hare_unparse_any_srcs)
-# hash
-testlib_hash_srcs= \
+# hash (+any)
+testlib_hash_any_srcs= \
$(STDLIB)/hash/hash.ha
-$(TESTCACHE)/hash/hash.ssa: $(testlib_hash_srcs) $(testlib_rt) $(testlib_io) $(testlib_fmt)
+$(TESTCACHE)/hash/hash-any.ssa: $(testlib_hash_any_srcs) $(testlib_rt) $(testlib_io) $(testlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hash
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash \
- -t$(TESTCACHE)/hash/hash.td $(testlib_hash_srcs)
+ -t$(TESTCACHE)/hash/hash.td $(testlib_hash_any_srcs)
-# hash::adler32
-testlib_hash_adler32_srcs= \
+# hash::adler32 (+any)
+testlib_hash_adler32_any_srcs= \
$(STDLIB)/hash/adler32/adler32.ha
-$(TESTCACHE)/hash/adler32/hash_adler32.ssa: $(testlib_hash_adler32_srcs) $(testlib_rt) $(testlib_endian) $(testlib_hash) $(testlib_io) $(testlib_strings)
+$(TESTCACHE)/hash/adler32/hash_adler32-any.ssa: $(testlib_hash_adler32_any_srcs) $(testlib_rt) $(testlib_endian) $(testlib_hash) $(testlib_io) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hash/adler32
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::adler32 \
- -t$(TESTCACHE)/hash/adler32/hash_adler32.td $(testlib_hash_adler32_srcs)
+ -t$(TESTCACHE)/hash/adler32/hash_adler32.td $(testlib_hash_adler32_any_srcs)
-# hash::crc16
-testlib_hash_crc16_srcs= \
+# hash::crc16 (+any)
+testlib_hash_crc16_any_srcs= \
$(STDLIB)/hash/crc16/crc16.ha
-$(TESTCACHE)/hash/crc16/hash_crc16.ssa: $(testlib_hash_crc16_srcs) $(testlib_rt) $(testlib_endian) $(testlib_hash) $(testlib_io) $(testlib_strings)
+$(TESTCACHE)/hash/crc16/hash_crc16-any.ssa: $(testlib_hash_crc16_any_srcs) $(testlib_rt) $(testlib_endian) $(testlib_hash) $(testlib_io) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hash/crc16
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::crc16 \
- -t$(TESTCACHE)/hash/crc16/hash_crc16.td $(testlib_hash_crc16_srcs)
+ -t$(TESTCACHE)/hash/crc16/hash_crc16.td $(testlib_hash_crc16_any_srcs)
-# hash::crc32
-testlib_hash_crc32_srcs= \
+# hash::crc32 (+any)
+testlib_hash_crc32_any_srcs= \
$(STDLIB)/hash/crc32/crc32.ha
-$(TESTCACHE)/hash/crc32/hash_crc32.ssa: $(testlib_hash_crc32_srcs) $(testlib_rt) $(testlib_endian) $(testlib_hash) $(testlib_io) $(testlib_strings)
+$(TESTCACHE)/hash/crc32/hash_crc32-any.ssa: $(testlib_hash_crc32_any_srcs) $(testlib_rt) $(testlib_endian) $(testlib_hash) $(testlib_io) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hash/crc32
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::crc32 \
- -t$(TESTCACHE)/hash/crc32/hash_crc32.td $(testlib_hash_crc32_srcs)
+ -t$(TESTCACHE)/hash/crc32/hash_crc32.td $(testlib_hash_crc32_any_srcs)
-# hash::crc64
-testlib_hash_crc64_srcs= \
+# hash::crc64 (+any)
+testlib_hash_crc64_any_srcs= \
$(STDLIB)/hash/crc64/crc64.ha
-$(TESTCACHE)/hash/crc64/hash_crc64.ssa: $(testlib_hash_crc64_srcs) $(testlib_rt) $(testlib_endian) $(testlib_hash) $(testlib_io) $(testlib_strings)
+$(TESTCACHE)/hash/crc64/hash_crc64-any.ssa: $(testlib_hash_crc64_any_srcs) $(testlib_rt) $(testlib_endian) $(testlib_hash) $(testlib_io) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hash/crc64
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::crc64 \
- -t$(TESTCACHE)/hash/crc64/hash_crc64.td $(testlib_hash_crc64_srcs)
+ -t$(TESTCACHE)/hash/crc64/hash_crc64.td $(testlib_hash_crc64_any_srcs)
-# hash::fnv
-testlib_hash_fnv_srcs= \
+# hash::fnv (+any)
+testlib_hash_fnv_any_srcs= \
$(STDLIB)/hash/fnv/fnv.ha
-$(TESTCACHE)/hash/fnv/hash_fnv.ssa: $(testlib_hash_fnv_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_strings)
+$(TESTCACHE)/hash/fnv/hash_fnv-any.ssa: $(testlib_hash_fnv_any_srcs) $(testlib_rt) $(testlib_hash) $(testlib_io) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/hash/fnv
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhash::fnv \
- -t$(TESTCACHE)/hash/fnv/hash_fnv.td $(testlib_hash_fnv_srcs)
+ -t$(TESTCACHE)/hash/fnv/hash_fnv.td $(testlib_hash_fnv_any_srcs)
-# io
-testlib_io_srcs= \
+# io (+linux)
+testlib_io_linux_srcs= \
$(STDLIB)/io/arch+$(ARCH).ha \
+ $(STDLIB)/io/println+linux.ha \
+ $(STDLIB)/io/+linux/file.ha \
$(STDLIB)/io/copy.ha \
$(STDLIB)/io/drain.ha \
$(STDLIB)/io/empty.ha \
$(STDLIB)/io/filestream.ha \
$(STDLIB)/io/handle.ha \
$(STDLIB)/io/limit.ha \
- $(STDLIB)/io/println+$(PLATFORM).ha \
$(STDLIB)/io/stream.ha \
$(STDLIB)/io/tee.ha \
$(STDLIB)/io/types.ha \
- $(STDLIB)/io/+$(PLATFORM)/file.ha \
$(STDLIB)/io/+test/copy.ha \
$(STDLIB)/io/+test/limit.ha \
$(STDLIB)/io/+test/stream.ha
-$(TESTCACHE)/io/io.ssa: $(testlib_io_srcs) $(testlib_rt) $(testlib_strings) $(testlib_errors)
+$(TESTCACHE)/io/io-linux.ssa: $(testlib_io_linux_srcs) $(testlib_rt) $(testlib_strings) $(testlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/io
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nio \
- -t$(TESTCACHE)/io/io.td $(testlib_io_srcs)
+ -t$(TESTCACHE)/io/io.td $(testlib_io_linux_srcs)
-# iobus::io_uring
-testlib_iobus_io_uring_srcs= \
+# iobus::io_uring (+linux)
+testlib_iobus_io_uring_linux_srcs= \
$(STDLIB)/iobus/io_uring/bus.ha \
$(STDLIB)/iobus/io_uring/handle.ha \
$(STDLIB)/iobus/io_uring/ops.ha \
$(STDLIB)/iobus/io_uring/pool.ha \
$(STDLIB)/iobus/io_uring/types.ha
-$(TESTCACHE)/iobus/io_uring/iobus_io_uring.ssa: $(testlib_iobus_io_uring_srcs) $(testlib_rt) $(testlib_errors) $(testlib_io) $(testlib_linux_io_uring) $(testlib_net_ip) $(testlib_unix_poll)
+$(TESTCACHE)/iobus/io_uring/iobus_io_uring-linux.ssa: $(testlib_iobus_io_uring_linux_srcs) $(testlib_rt) $(testlib_errors) $(testlib_io) $(testlib_linux_io_uring) $(testlib_net_ip) $(testlib_unix_poll)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/iobus/io_uring
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Niobus::io_uring \
- -t$(TESTCACHE)/iobus/io_uring/iobus_io_uring.td $(testlib_iobus_io_uring_srcs)
+ -t$(TESTCACHE)/iobus/io_uring/iobus_io_uring.td $(testlib_iobus_io_uring_linux_srcs)
-# linux
-testlib_linux_srcs= \
+# linux (+linux)
+testlib_linux_linux_srcs= \
$(STDLIB)/linux/start.ha \
$(STDLIB)/linux/env.ha
-$(TESTCACHE)/linux/linux.ssa: $(testlib_linux_srcs) $(testlib_rt) $(testlib_format_elf)
+$(TESTCACHE)/linux/linux-linux.ssa: $(testlib_linux_linux_srcs) $(testlib_rt) $(testlib_format_elf)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/linux
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlinux \
- -t$(TESTCACHE)/linux/linux.td $(testlib_linux_srcs)
+ -t$(TESTCACHE)/linux/linux.td $(testlib_linux_linux_srcs)
-# linux::signalfd
-testlib_linux_signalfd_srcs= \
+# linux::signalfd (+linux)
+testlib_linux_signalfd_linux_srcs= \
$(STDLIB)/linux/signalfd/signalfd.ha
-$(TESTCACHE)/linux/signalfd/linux_signalfd.ssa: $(testlib_linux_signalfd_srcs) $(testlib_rt) $(testlib_errors)
+$(TESTCACHE)/linux/signalfd/linux_signalfd-linux.ssa: $(testlib_linux_signalfd_linux_srcs) $(testlib_rt) $(testlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/linux/signalfd
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlinux::signalfd \
- -t$(TESTCACHE)/linux/signalfd/linux_signalfd.td $(testlib_linux_signalfd_srcs)
+ -t$(TESTCACHE)/linux/signalfd/linux_signalfd.td $(testlib_linux_signalfd_linux_srcs)
-# linux::io_uring
-testlib_linux_io_uring_srcs= \
+# linux::io_uring (+linux)
+testlib_linux_io_uring_linux_srcs= \
$(STDLIB)/linux/io_uring/cqe.ha \
$(STDLIB)/linux/io_uring/queue.ha \
$(STDLIB)/linux/io_uring/register.ha \
@@ -2160,25 +2153,24 @@ testlib_linux_io_uring_srcs= \
$(STDLIB)/linux/io_uring/sqe.ha \
$(STDLIB)/linux/io_uring/uring.ha
-$(TESTCACHE)/linux/io_uring/linux_io_uring.ssa: $(testlib_linux_io_uring_srcs) $(testlib_rt) $(testlib_errors) $(testlib_types)
+$(TESTCACHE)/linux/io_uring/linux_io_uring-linux.ssa: $(testlib_linux_io_uring_linux_srcs) $(testlib_rt) $(testlib_errors) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/linux/io_uring
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlinux::io_uring \
- -t$(TESTCACHE)/linux/io_uring/linux_io_uring.td $(testlib_linux_io_uring_srcs)
+ -t$(TESTCACHE)/linux/io_uring/linux_io_uring.td $(testlib_linux_io_uring_linux_srcs)
-# linux::vdso
-testlib_linux_vdso_srcs= \
+# linux::vdso (+linux)
+testlib_linux_vdso_linux_srcs= \
$(STDLIB)/linux/vdso/vdso.ha
-$(TESTCACHE)/linux/vdso/linux_vdso.ssa: $(testlib_linux_vdso_srcs) $(testlib_rt) $(testlib_linux) $(testlib_strings) $(testlib_format_elf)
+$(TESTCACHE)/linux/vdso/linux_vdso-linux.ssa: $(testlib_linux_vdso_linux_srcs) $(testlib_rt) $(testlib_linux) $(testlib_strings) $(testlib_format_elf)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/linux/vdso
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nlinux::vdso \
- -t$(TESTCACHE)/linux/vdso/linux_vdso.td $(testlib_linux_vdso_srcs)
+ -t$(TESTCACHE)/linux/vdso/linux_vdso.td $(testlib_linux_vdso_linux_srcs)
-# math
-# math
-testlib_math_srcs= \
+# math (+any)
+testlib_math_any_srcs= \
$(STDLIB)/math/math.ha \
$(STDLIB)/math/floats.ha \
$(STDLIB)/math/ints.ha \
@@ -2186,183 +2178,177 @@ testlib_math_srcs= \
$(STDLIB)/math/trig.ha \
$(STDLIB)/math/data+test.ha
-$(TESTCACHE)/math/math.ssa: $(testlib_math_srcs) $(testlib_rt) $(testlib_types)
+$(TESTCACHE)/math/math-any.ssa: $(testlib_math_any_srcs) $(testlib_rt) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/math
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nmath \
- -t$(TESTCACHE)/math/math.td $(testlib_math_srcs)
+ -t$(TESTCACHE)/math/math.td $(testlib_math_any_srcs)
-# net
-# net
-testlib_net_srcs= \
- $(STDLIB)/net/+$(PLATFORM).ha \
+# net (+linux)
+testlib_net_linux_srcs= \
+ $(STDLIB)/net/+linux.ha \
$(STDLIB)/net/errors.ha \
$(STDLIB)/net/listener.ha
-$(TESTCACHE)/net/net.ssa: $(testlib_net_srcs) $(testlib_rt) $(testlib_io) $(testlib_os) $(testlib_strings) $(testlib_net_ip) $(testlib_errors) $(testlib_rt) $(testlib_fmt)
+$(TESTCACHE)/net/net-linux.ssa: $(testlib_net_linux_srcs) $(testlib_rt) $(testlib_io) $(testlib_os) $(testlib_strings) $(testlib_net_ip) $(testlib_errors) $(testlib_rt) $(testlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/net
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet \
- -t$(TESTCACHE)/net/net.td $(testlib_net_srcs)
+ -t$(TESTCACHE)/net/net.td $(testlib_net_linux_srcs)
-# net::dial
-# net::dial
-testlib_net_dial_srcs= \
+# net::dial (+any)
+testlib_net_dial_any_srcs= \
$(STDLIB)/net/dial/registry.ha \
$(STDLIB)/net/dial/dial.ha \
$(STDLIB)/net/dial/ip.ha \
$(STDLIB)/net/dial/resolve.ha
-$(TESTCACHE)/net/dial/net_dial.ssa: $(testlib_net_dial_srcs) $(testlib_rt) $(testlib_io) $(testlib_net) $(testlib_net_ip) $(testlib_net_tcp) $(testlib_net_udp) $(testlib_net_dns) $(testlib_crypto_random) $(testlib_strconv) $(testlib_strings) $(testlib_unix_hosts)
+$(TESTCACHE)/net/dial/net_dial-any.ssa: $(testlib_net_dial_any_srcs) $(testlib_rt) $(testlib_io) $(testlib_net) $(testlib_net_ip) $(testlib_net_tcp) $(testlib_net_udp) $(testlib_net_dns) $(testlib_crypto_random) $(testlib_strconv) $(testlib_strings) $(testlib_unix_hosts)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/net/dial
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::dial \
- -t$(TESTCACHE)/net/dial/net_dial.td $(testlib_net_dial_srcs)
+ -t$(TESTCACHE)/net/dial/net_dial.td $(testlib_net_dial_any_srcs)
-# net::dns
-# net::dns
-testlib_net_dns_srcs= \
+# net::dns (+any)
+testlib_net_dns_any_srcs= \
$(STDLIB)/net/dns/decode.ha \
$(STDLIB)/net/dns/error.ha \
$(STDLIB)/net/dns/encode.ha \
$(STDLIB)/net/dns/query.ha \
$(STDLIB)/net/dns/types.ha
-$(TESTCACHE)/net/dns/net_dns.ssa: $(testlib_net_dns_srcs) $(testlib_rt) $(testlib_ascii) $(testlib_endian) $(testlib_net) $(testlib_net_udp) $(testlib_net_ip) $(testlib_fmt) $(testlib_strings) $(testlib_unix_resolvconf) $(testlib_unix_poll) $(testlib_rt) $(testlib_time) $(testlib_errors)
+$(TESTCACHE)/net/dns/net_dns-any.ssa: $(testlib_net_dns_any_srcs) $(testlib_rt) $(testlib_ascii) $(testlib_endian) $(testlib_net) $(testlib_net_udp) $(testlib_net_ip) $(testlib_fmt) $(testlib_strings) $(testlib_unix_resolvconf) $(testlib_unix_poll) $(testlib_rt) $(testlib_time) $(testlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/net/dns
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::dns \
- -t$(TESTCACHE)/net/dns/net_dns.td $(testlib_net_dns_srcs)
+ -t$(TESTCACHE)/net/dns/net_dns.td $(testlib_net_dns_any_srcs)
-# net::ip
-testlib_net_ip_srcs= \
+# net::ip (+linux)
+testlib_net_ip_linux_srcs= \
$(STDLIB)/net/ip/ip.ha \
- $(STDLIB)/net/ip/+$(PLATFORM).ha \
+ $(STDLIB)/net/ip/+linux.ha \
$(STDLIB)/net/ip/+test.ha
-$(TESTCACHE)/net/ip/net_ip.ssa: $(testlib_net_ip_srcs) $(testlib_rt) $(testlib_bytes) $(testlib_io) $(testlib_strconv) $(testlib_strings) $(testlib_strio) $(testlib_fmt)
+$(TESTCACHE)/net/ip/net_ip-linux.ssa: $(testlib_net_ip_linux_srcs) $(testlib_rt) $(testlib_bytes) $(testlib_io) $(testlib_strconv) $(testlib_strings) $(testlib_strio) $(testlib_fmt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/net/ip
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::ip \
- -t$(TESTCACHE)/net/ip/net_ip.td $(testlib_net_ip_srcs)
+ -t$(TESTCACHE)/net/ip/net_ip.td $(testlib_net_ip_linux_srcs)
-# net::tcp
-# net::tcp
-testlib_net_tcp_srcs= \
- $(STDLIB)/net/tcp/+$(PLATFORM).ha \
+# net::tcp (+linux)
+testlib_net_tcp_linux_srcs= \
+ $(STDLIB)/net/tcp/+linux.ha \
$(STDLIB)/net/tcp/listener.ha \
$(STDLIB)/net/tcp/options.ha
-$(TESTCACHE)/net/tcp/net_tcp.ssa: $(testlib_net_tcp_srcs) $(testlib_rt) $(testlib_io) $(testlib_net) $(testlib_net_ip) $(testlib_os) $(testlib_rt)
+$(TESTCACHE)/net/tcp/net_tcp-linux.ssa: $(testlib_net_tcp_linux_srcs) $(testlib_rt) $(testlib_io) $(testlib_net) $(testlib_net_ip) $(testlib_os) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/net/tcp
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::tcp \
- -t$(TESTCACHE)/net/tcp/net_tcp.td $(testlib_net_tcp_srcs)
+ -t$(TESTCACHE)/net/tcp/net_tcp.td $(testlib_net_tcp_linux_srcs)
-# net::udp
-# net::udp
-testlib_net_udp_srcs= \
- $(STDLIB)/net/udp/+$(PLATFORM).ha \
+# net::udp (+linux)
+testlib_net_udp_linux_srcs= \
+ $(STDLIB)/net/udp/+linux.ha \
$(STDLIB)/net/udp/options.ha
-$(TESTCACHE)/net/udp/net_udp.ssa: $(testlib_net_udp_srcs) $(testlib_rt) $(testlib_net) $(testlib_net_ip) $(testlib_errors) $(testlib_rt) $(testlib_os) $(testlib_io)
+$(TESTCACHE)/net/udp/net_udp-linux.ssa: $(testlib_net_udp_linux_srcs) $(testlib_rt) $(testlib_net) $(testlib_net_ip) $(testlib_errors) $(testlib_rt) $(testlib_os) $(testlib_io)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/net/udp
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::udp \
- -t$(TESTCACHE)/net/udp/net_udp.td $(testlib_net_udp_srcs)
+ -t$(TESTCACHE)/net/udp/net_udp.td $(testlib_net_udp_linux_srcs)
-# net::unix
-# net::unix
-testlib_net_unix_srcs= \
- $(STDLIB)/net/unix/+$(PLATFORM).ha \
+# net::unix (+linux)
+testlib_net_unix_linux_srcs= \
+ $(STDLIB)/net/unix/+linux.ha \
$(STDLIB)/net/unix/addr.ha \
$(STDLIB)/net/unix/dial.ha \
$(STDLIB)/net/unix/listener.ha \
$(STDLIB)/net/unix/options.ha
-$(TESTCACHE)/net/unix/net_unix.ssa: $(testlib_net_unix_srcs) $(testlib_rt) $(testlib_net) $(testlib_errors) $(testlib_os) $(testlib_io) $(testlib_strings) $(testlib_types) $(testlib_fmt) $(testlib_net_dial)
+$(TESTCACHE)/net/unix/net_unix-linux.ssa: $(testlib_net_unix_linux_srcs) $(testlib_rt) $(testlib_net) $(testlib_errors) $(testlib_os) $(testlib_io) $(testlib_strings) $(testlib_types) $(testlib_fmt) $(testlib_net_dial)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/net/unix
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nnet::unix \
- -t$(TESTCACHE)/net/unix/net_unix.td $(testlib_net_unix_srcs)
+ -t$(TESTCACHE)/net/unix/net_unix.td $(testlib_net_unix_linux_srcs)
-# math::random
-testlib_math_random_srcs= \
+# math::random (+any)
+testlib_math_random_any_srcs= \
$(STDLIB)/math/random/random.ha
-$(TESTCACHE)/math/random/math_random.ssa: $(testlib_math_random_srcs) $(testlib_rt)
+$(TESTCACHE)/math/random/math_random-any.ssa: $(testlib_math_random_any_srcs) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/math/random
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nmath::random \
- -t$(TESTCACHE)/math/random/math_random.td $(testlib_math_random_srcs)
-
-# os
-testlib_os_srcs= \
- $(STDLIB)/os/+$(PLATFORM)/environ.ha \
- $(STDLIB)/os/+$(PLATFORM)/exit.ha \
- $(STDLIB)/os/+$(PLATFORM)/dirfdfs.ha \
- $(STDLIB)/os/+$(PLATFORM)/stdfd.ha \
- $(STDLIB)/os/+$(PLATFORM)/fs.ha \
+ -t$(TESTCACHE)/math/random/math_random.td $(testlib_math_random_any_srcs)
+
+# os (+linux)
+testlib_os_linux_srcs= \
+ $(STDLIB)/os/+linux/environ.ha \
+ $(STDLIB)/os/+linux/exit.ha \
+ $(STDLIB)/os/+linux/dirfdfs.ha \
+ $(STDLIB)/os/+linux/stdfd.ha \
+ $(STDLIB)/os/+linux/fs.ha \
$(STDLIB)/os/fs.ha
-$(TESTCACHE)/os/os.ssa: $(testlib_os_srcs) $(testlib_rt) $(testlib_io) $(testlib_strings) $(testlib_types) $(testlib_fs) $(testlib_encoding_utf8) $(testlib_bytes) $(testlib_bufio) $(testlib_errors)
+$(TESTCACHE)/os/os-linux.ssa: $(testlib_os_linux_srcs) $(testlib_rt) $(testlib_io) $(testlib_strings) $(testlib_types) $(testlib_fs) $(testlib_encoding_utf8) $(testlib_bytes) $(testlib_bufio) $(testlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/os
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nos \
- -t$(TESTCACHE)/os/os.td $(testlib_os_srcs)
+ -t$(TESTCACHE)/os/os.td $(testlib_os_linux_srcs)
-# os::exec
-testlib_os_exec_srcs= \
- $(STDLIB)/os/exec/exec+$(PLATFORM).ha \
- $(STDLIB)/os/exec/process+$(PLATFORM).ha \
+# os::exec (+linux)
+testlib_os_exec_linux_srcs= \
+ $(STDLIB)/os/exec/exec+linux.ha \
+ $(STDLIB)/os/exec/process+linux.ha \
$(STDLIB)/os/exec/types.ha \
$(STDLIB)/os/exec/cmd.ha
-$(TESTCACHE)/os/exec/os_exec.ssa: $(testlib_os_exec_srcs) $(testlib_rt) $(testlib_os) $(testlib_strings) $(testlib_fmt) $(testlib_bytes) $(testlib_path) $(testlib_errors)
+$(TESTCACHE)/os/exec/os_exec-linux.ssa: $(testlib_os_exec_linux_srcs) $(testlib_rt) $(testlib_os) $(testlib_strings) $(testlib_fmt) $(testlib_bytes) $(testlib_path) $(testlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/os/exec
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nos::exec \
- -t$(TESTCACHE)/os/exec/os_exec.td $(testlib_os_exec_srcs)
+ -t$(TESTCACHE)/os/exec/os_exec.td $(testlib_os_exec_linux_srcs)
-# path
-testlib_path_srcs= \
+# path (+any)
+testlib_path_any_srcs= \
$(STDLIB)/path/+$(PLATFORM).ha \
$(STDLIB)/path/util.ha \
$(STDLIB)/path/join.ha \
$(STDLIB)/path/names.ha \
$(STDLIB)/path/iter.ha
-$(TESTCACHE)/path/path.ssa: $(testlib_path_srcs) $(testlib_rt) $(testlib_strings) $(testlib_bufio) $(testlib_bytes)
+$(TESTCACHE)/path/path-any.ssa: $(testlib_path_any_srcs) $(testlib_rt) $(testlib_strings) $(testlib_bufio) $(testlib_bytes)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/path
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Npath \
- -t$(TESTCACHE)/path/path.td $(testlib_path_srcs)
+ -t$(TESTCACHE)/path/path.td $(testlib_path_any_srcs)
-# slice
-testlib_slice_srcs= \
+# slice (+any)
+testlib_slice_any_srcs= \
$(STDLIB)/slice/reverse.ha \
$(STDLIB)/slice/void.ha
-$(TESTCACHE)/slice/slice.ssa: $(testlib_slice_srcs) $(testlib_rt) $(testlib_types)
+$(TESTCACHE)/slice/slice-any.ssa: $(testlib_slice_any_srcs) $(testlib_rt) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/slice
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nslice \
- -t$(TESTCACHE)/slice/slice.td $(testlib_slice_srcs)
+ -t$(TESTCACHE)/slice/slice.td $(testlib_slice_any_srcs)
-# sort
-testlib_sort_srcs= \
+# sort (+any)
+testlib_sort_any_srcs= \
$(STDLIB)/sort/search.ha \
$(STDLIB)/sort/sort.ha \
$(STDLIB)/sort/+test.ha
-$(TESTCACHE)/sort/sort.ssa: $(testlib_sort_srcs) $(testlib_rt)
+$(TESTCACHE)/sort/sort-any.ssa: $(testlib_sort_any_srcs) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/sort
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nsort \
- -t$(TESTCACHE)/sort/sort.td $(testlib_sort_srcs)
+ -t$(TESTCACHE)/sort/sort.td $(testlib_sort_any_srcs)
-# strconv
-testlib_strconv_srcs= \
+# strconv (+any)
+testlib_strconv_any_srcs= \
$(STDLIB)/strconv/types.ha \
$(STDLIB)/strconv/itos.ha \
$(STDLIB)/strconv/utos.ha \
@@ -2375,14 +2361,14 @@ testlib_strconv_srcs= \
$(STDLIB)/strconv/+test/stou.ha \
$(STDLIB)/strconv/+test/stoi.ha
-$(TESTCACHE)/strconv/strconv.ssa: $(testlib_strconv_srcs) $(testlib_rt) $(testlib_types) $(testlib_strings) $(testlib_ascii) $(testlib_math)
+$(TESTCACHE)/strconv/strconv-any.ssa: $(testlib_strconv_any_srcs) $(testlib_rt) $(testlib_types) $(testlib_strings) $(testlib_ascii) $(testlib_math)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/strconv
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nstrconv \
- -t$(TESTCACHE)/strconv/strconv.td $(testlib_strconv_srcs)
+ -t$(TESTCACHE)/strconv/strconv.td $(testlib_strconv_any_srcs)
-# strings
-testlib_strings_srcs= \
+# strings (+any)
+testlib_strings_any_srcs= \
$(STDLIB)/strings/concat.ha \
$(STDLIB)/strings/contains.ha \
$(STDLIB)/strings/cstrings.ha \
@@ -2395,49 +2381,49 @@ testlib_strings_srcs= \
$(STDLIB)/strings/index.ha \
$(STDLIB)/strings/trim.ha
-$(TESTCACHE)/strings/strings.ssa: $(testlib_strings_srcs) $(testlib_rt) $(testlib_bytes) $(testlib_encoding_utf8) $(testlib_types)
+$(TESTCACHE)/strings/strings-any.ssa: $(testlib_strings_any_srcs) $(testlib_rt) $(testlib_bytes) $(testlib_encoding_utf8) $(testlib_types)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/strings
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nstrings \
- -t$(TESTCACHE)/strings/strings.td $(testlib_strings_srcs)
+ -t$(TESTCACHE)/strings/strings.td $(testlib_strings_any_srcs)
-# strio
-testlib_strio_srcs= \
+# strio (+any)
+testlib_strio_any_srcs= \
$(STDLIB)/strio/dynamic.ha \
$(STDLIB)/strio/fixed.ha \
$(STDLIB)/strio/ops.ha
-$(TESTCACHE)/strio/strio.ssa: $(testlib_strio_srcs) $(testlib_rt) $(testlib_io) $(testlib_strings) $(testlib_encoding_utf8) $(testlib_errors)
+$(TESTCACHE)/strio/strio-any.ssa: $(testlib_strio_any_srcs) $(testlib_rt) $(testlib_io) $(testlib_strings) $(testlib_encoding_utf8) $(testlib_errors)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/strio
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nstrio \
- -t$(TESTCACHE)/strio/strio.td $(testlib_strio_srcs)
+ -t$(TESTCACHE)/strio/strio.td $(testlib_strio_any_srcs)
-# temp
-testlib_temp_srcs= \
- $(STDLIB)/temp/+$(PLATFORM).ha
+# temp (+linux)
+testlib_temp_linux_srcs= \
+ $(STDLIB)/temp/+linux.ha
-$(TESTCACHE)/temp/temp.ssa: $(testlib_temp_srcs) $(testlib_rt) $(testlib_crypto_random) $(testlib_encoding_hex) $(testlib_fs) $(testlib_io) $(testlib_os) $(testlib_path) $(testlib_strio) $(testlib_fmt) $(testlib_strings)
+$(TESTCACHE)/temp/temp-linux.ssa: $(testlib_temp_linux_srcs) $(testlib_rt) $(testlib_crypto_random) $(testlib_encoding_hex) $(testlib_fs) $(testlib_io) $(testlib_os) $(testlib_path) $(testlib_strio) $(testlib_fmt) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/temp
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntemp \
- -t$(TESTCACHE)/temp/temp.td $(testlib_temp_srcs)
+ -t$(TESTCACHE)/temp/temp.td $(testlib_temp_linux_srcs)
-# time
-testlib_time_srcs= \
- $(STDLIB)/time/+$(PLATFORM)/functions.ha \
- $(STDLIB)/time/+$(PLATFORM)/+$(ARCH).ha \
+# time (+linux)
+testlib_time_linux_srcs= \
+ $(STDLIB)/time/+linux/functions.ha \
+ $(STDLIB)/time/+linux/+$(ARCH).ha \
$(STDLIB)/time/arithm.ha \
$(STDLIB)/time/types.ha
-$(TESTCACHE)/time/time.ssa: $(testlib_time_srcs) $(testlib_rt) $(testlib_linux_vdso)
+$(TESTCACHE)/time/time-linux.ssa: $(testlib_time_linux_srcs) $(testlib_rt) $(testlib_linux_vdso)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/time
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntime \
- -t$(TESTCACHE)/time/time.td $(testlib_time_srcs)
+ -t$(TESTCACHE)/time/time.td $(testlib_time_linux_srcs)
-# types
-testlib_types_srcs= \
+# types (+any)
+testlib_types_any_srcs= \
$(STDLIB)/types/limits.ha \
$(STDLIB)/types/classes.ha \
$(STDLIB)/types/reflect.ha \
@@ -2445,88 +2431,88 @@ testlib_types_srcs= \
$(STDLIB)/types/arch+$(ARCH).ha \
$(STDLIB)/types/util+test.ha
-$(TESTCACHE)/types/types.ssa: $(testlib_types_srcs) $(testlib_rt)
+$(TESTCACHE)/types/types-any.ssa: $(testlib_types_any_srcs) $(testlib_rt)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/types
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Ntypes \
- -t$(TESTCACHE)/types/types.td $(testlib_types_srcs)
+ -t$(TESTCACHE)/types/types.td $(testlib_types_any_srcs)
-# unix
-testlib_unix_srcs= \
- $(STDLIB)/unix/+$(PLATFORM)/nice.ha \
- $(STDLIB)/unix/+$(PLATFORM)/pipe.ha \
- $(STDLIB)/unix/+$(PLATFORM)/umask.ha \
+# unix (+linux)
+testlib_unix_linux_srcs= \
+ $(STDLIB)/unix/+linux/nice.ha \
+ $(STDLIB)/unix/+linux/pipe.ha \
+ $(STDLIB)/unix/+linux/umask.ha \
$(STDLIB)/unix/getuid.ha \
$(STDLIB)/unix/setuid.ha
-$(TESTCACHE)/unix/unix.ssa: $(testlib_unix_srcs) $(testlib_rt) $(testlib_errors) $(testlib_fs)
+$(TESTCACHE)/unix/unix-linux.ssa: $(testlib_unix_linux_srcs) $(testlib_rt) $(testlib_errors) $(testlib_fs)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/unix
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix \
- -t$(TESTCACHE)/unix/unix.td $(testlib_unix_srcs)
+ -t$(TESTCACHE)/unix/unix.td $(testlib_unix_linux_srcs)
-# unix::hosts
-testlib_unix_hosts_srcs= \
+# unix::hosts (+any)
+testlib_unix_hosts_any_srcs= \
$(STDLIB)/unix/hosts/lookup.ha
-$(TESTCACHE)/unix/hosts/unix_hosts.ssa: $(testlib_unix_hosts_srcs) $(testlib_rt) $(testlib_os) $(testlib_io) $(testlib_bufio) $(testlib_net_ip) $(testlib_strings)
+$(TESTCACHE)/unix/hosts/unix_hosts-any.ssa: $(testlib_unix_hosts_any_srcs) $(testlib_rt) $(testlib_os) $(testlib_io) $(testlib_bufio) $(testlib_net_ip) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/unix/hosts
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::hosts \
- -t$(TESTCACHE)/unix/hosts/unix_hosts.td $(testlib_unix_hosts_srcs)
+ -t$(TESTCACHE)/unix/hosts/unix_hosts.td $(testlib_unix_hosts_any_srcs)
-# unix::passwd
-testlib_unix_passwd_srcs= \
+# unix::passwd (+any)
+testlib_unix_passwd_any_srcs= \
$(STDLIB)/unix/passwd/group.ha \
$(STDLIB)/unix/passwd/passwd.ha \
$(STDLIB)/unix/passwd/types.ha
-$(TESTCACHE)/unix/passwd/unix_passwd.ssa: $(testlib_unix_passwd_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_io) $(testlib_os) $(testlib_strconv) $(testlib_strings)
+$(TESTCACHE)/unix/passwd/unix_passwd-any.ssa: $(testlib_unix_passwd_any_srcs) $(testlib_rt) $(testlib_bufio) $(testlib_io) $(testlib_os) $(testlib_strconv) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/unix/passwd
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::passwd \
- -t$(TESTCACHE)/unix/passwd/unix_passwd.td $(testlib_unix_passwd_srcs)
+ -t$(TESTCACHE)/unix/passwd/unix_passwd.td $(testlib_unix_passwd_any_srcs)
-# unix::poll
-testlib_unix_poll_srcs= \
- $(STDLIB)/unix/poll/+$(PLATFORM).ha
+# unix::poll (+linux)
+testlib_unix_poll_linux_srcs= \
+ $(STDLIB)/unix/poll/+linux.ha
-$(TESTCACHE)/unix/poll/unix_poll.ssa: $(testlib_unix_poll_srcs) $(testlib_rt) $(testlib_rt) $(testlib_errors) $(testlib_time)
+$(TESTCACHE)/unix/poll/unix_poll-linux.ssa: $(testlib_unix_poll_linux_srcs) $(testlib_rt) $(testlib_rt) $(testlib_errors) $(testlib_time)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/unix/poll
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::poll \
- -t$(TESTCACHE)/unix/poll/unix_poll.td $(testlib_unix_poll_srcs)
+ -t$(TESTCACHE)/unix/poll/unix_poll.td $(testlib_unix_poll_linux_srcs)
-# unix::resolvconf
-testlib_unix_resolvconf_srcs= \
+# unix::resolvconf (+any)
+testlib_unix_resolvconf_any_srcs= \
$(STDLIB)/unix/resolvconf/load.ha
-$(TESTCACHE)/unix/resolvconf/unix_resolvconf.ssa: $(testlib_unix_resolvconf_srcs) $(testlib_rt) $(testlib_os) $(testlib_io) $(testlib_bufio) $(testlib_net_ip) $(testlib_strings)
+$(TESTCACHE)/unix/resolvconf/unix_resolvconf-any.ssa: $(testlib_unix_resolvconf_any_srcs) $(testlib_rt) $(testlib_os) $(testlib_io) $(testlib_bufio) $(testlib_net_ip) $(testlib_strings)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/unix/resolvconf
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::resolvconf \
- -t$(TESTCACHE)/unix/resolvconf/unix_resolvconf.td $(testlib_unix_resolvconf_srcs)
+ -t$(TESTCACHE)/unix/resolvconf/unix_resolvconf.td $(testlib_unix_resolvconf_any_srcs)
-# unix::tty
-testlib_unix_tty_srcs= \
+# unix::tty (+linux)
+testlib_unix_tty_linux_srcs= \
$(STDLIB)/unix/tty/types.ha \
- $(STDLIB)/unix/tty/+$(PLATFORM)/isatty.ha \
- $(STDLIB)/unix/tty/+$(PLATFORM)/open.ha \
- $(STDLIB)/unix/tty/+$(PLATFORM)/winsize.ha
+ $(STDLIB)/unix/tty/+linux/isatty.ha \
+ $(STDLIB)/unix/tty/+linux/open.ha \
+ $(STDLIB)/unix/tty/+linux/winsize.ha
-$(TESTCACHE)/unix/tty/unix_tty.ssa: $(testlib_unix_tty_srcs) $(testlib_rt) $(testlib_rt) $(testlib_fs) $(testlib_io) $(testlib_os)
+$(TESTCACHE)/unix/tty/unix_tty-linux.ssa: $(testlib_unix_tty_linux_srcs) $(testlib_rt) $(testlib_rt) $(testlib_fs) $(testlib_io) $(testlib_os)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/unix/tty
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nunix::tty \
- -t$(TESTCACHE)/unix/tty/unix_tty.td $(testlib_unix_tty_srcs)
+ -t$(TESTCACHE)/unix/tty/unix_tty.td $(testlib_unix_tty_linux_srcs)
-# uuid
-testlib_uuid_srcs= \
+# uuid (+any)
+testlib_uuid_any_srcs= \
$(STDLIB)/uuid/uuid.ha
-$(TESTCACHE)/uuid/uuid.ssa: $(testlib_uuid_srcs) $(testlib_rt) $(testlib_crypto_random) $(testlib_strio) $(testlib_fmt) $(testlib_endian) $(testlib_io) $(testlib_bytes) $(testlib_bufio) $(testlib_strings) $(testlib_strconv)
+$(TESTCACHE)/uuid/uuid-any.ssa: $(testlib_uuid_any_srcs) $(testlib_rt) $(testlib_crypto_random) $(testlib_strio) $(testlib_fmt) $(testlib_endian) $(testlib_io) $(testlib_bytes) $(testlib_bufio) $(testlib_strings) $(testlib_strconv)
@printf 'HAREC \t$@\n'
@mkdir -p $(TESTCACHE)/uuid
@HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nuuid \
- -t$(TESTCACHE)/uuid/uuid.td $(testlib_uuid_srcs)
+ -t$(TESTCACHE)/uuid/uuid.td $(testlib_uuid_any_srcs)