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