build:
#!/usr/bin/env sh
HAREPATH=""
if [[ -z "${HAREPATH}" ]]; then
HAREPATH="$(hare version -v | sed -n '/HAREPATH/{n;p;}' | tr -d '[:space:]')"
echo "HAREPATH not set, using default: $HAREPATH"
else
HAREPATH="${HAREPATH}"
fi
# setup build dir
rm -rf build/
mkdir -p build/bin/
mkdir -p build/o/
# build rust staticlib
cargo build --release
# build hare objects
hare build -F -lc -t o -o build/o/main.o main.ha
hare build -F -lc -t o -o build/o/ascii.o "$HAREPATH/ascii/"
hare build -F -lc -t o -o build/o/bufio.o "$HAREPATH/bufio/"
hare build -F -lc -t o -o build/o/bytes.o "$HAREPATH/bytes/"
hare build -F -lc -t o -o build/o/encoding.o "$HAREPATH/encoding/"
hare build -F -lc -t o -o build/o/encoding_utf8.o "$HAREPATH/encoding/utf8/"
hare build -F -lc -t o -o build/o/errors.o "$HAREPATH/errors/"
hare build -F -lc -t o -o build/o/fmt.o "$HAREPATH/fmt/"
hare build -F -lc -t o -o build/o/fs.o "$HAREPATH/fs/"
hare build -F -lc -t o -o build/o/io.o "$HAREPATH/io/"
hare build -F -lc -t o -o build/o/linux.o "$HAREPATH/linux/"
hare build -F -lc -t o -o build/o/linux_vdso.o "$HAREPATH/linux/vdso/"
hare build -F -lc -t o -o build/o/math.o "$HAREPATH/math/"
hare build -F -lc -t o -o build/o/memio.o "$HAREPATH/memio/"
hare build -F -lc -t o -o build/o/os.o "$HAREPATH/os/"
hare build -F -lc -t o -o build/o/path.o "$HAREPATH/path/"
hare build -F -lc -t o -o build/o/rt.o "$HAREPATH/rt/"
hare build -F -lc -t o -o build/o/sort.o "$HAREPATH/sort/"
hare build -F -lc -t o -o build/o/sort_cmp.o "$HAREPATH/sort/cmp/"
hare build -F -lc -t o -o build/o/strconv.o "$HAREPATH/strconv/"
hare build -F -lc -t o -o build/o/strings.o "$HAREPATH/strings/"
hare build -F -lc -t o -o build/o/time.o "$HAREPATH/time/"
hare build -F -lc -t o -o build/o/types.o "$HAREPATH/types/"
hare build -F -lc -t o -o build/o/types_c.o "$HAREPATH/types/c/"
# link hare objects and rust staticlib together, into an executable
# ignore startfiles (crt1.o and friends)
cc -nostartfiles -lc build/o/*.o target/release/libhello.a -o build/bin/out