You can now build Cosmopolitan with Clang:
make -j8 MODE=llvm
o/llvm/examples/hello.com
The assembler and linker code is now friendly to LLVM too.
So it's not needed to configure Clang to use binutils under
the hood. If you love LLVM then you can now use pure LLVM.
54 lines
1.3 KiB
Bash
Executable File
54 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
#-*-mode:sh;indent-tabs-mode:nil;tab-width:2;coding:utf-8-*-┐
|
|
#───vi: set net ft=sh ts=2 sts=2 fenc=utf-8 :vi─────────────┘
|
|
#
|
|
# OVERVIEW
|
|
#
|
|
# Cosmopolitan Archiver
|
|
#
|
|
# DESCRIPTION
|
|
#
|
|
# This goes 100x faster than ar and ranlib.
|
|
#
|
|
# EXAMPLE
|
|
#
|
|
# build/archive rcsD library.a foo.o ...
|
|
|
|
MKDIR=${MKDIR:-$(command -v mkdir) -p} || exit
|
|
if [ -x "o//tool/build/ar.com" ]; then
|
|
set -- "o//tool/build/ar.com" "$@"
|
|
else
|
|
if [ ! -x o/build/bootstrap/ar.com ]; then
|
|
mkdir -p o/build/bootstrap &&
|
|
cp -f build/bootstrap/ar.com o/build/bootstrap/ar.com.$$ &&
|
|
mv -f o/build/bootstrap/ar.com.$$ o/build/bootstrap/ar.com || exit
|
|
fi
|
|
set -- o/build/bootstrap/ar.com "$@"
|
|
fi
|
|
OUT=$3
|
|
|
|
printf "$LOGFMT" "${ACTION:-ARCHIVE.a}" "$OUT" >&2
|
|
# if [ "$V" = "0" ]; then
|
|
# printf "$LOGFMT" "${ACTION:-ARCHIVE.a}" "$OUT" >&2
|
|
# else
|
|
# # some of these windows nt archives are quite huge
|
|
# COLUMNS=${COLUMNS:-80}
|
|
# COLUMNS=$((COLUMNS - 4))
|
|
# printf "%s\n" "$*" |
|
|
# /usr/bin/fold -s -w $COLUMNS |
|
|
# sed -e '1bb' -e 's/^/ /' -e ':b' -e '$b' -e 's/$/ \\/' >&2
|
|
# fi
|
|
|
|
REASON=failed
|
|
trap REASON=interrupted INT
|
|
|
|
"$@" >/dev/null && exit
|
|
|
|
if [ "$TERM" = "dumb" ]; then
|
|
f='%s %s\r\n\r\n'
|
|
else
|
|
f='\033[91m%s\033[39m \033[94m%s\033[39m\r\n\r\n'
|
|
fi
|
|
printf "$f" "archive $REASON:" "$*" >&2
|
|
exit 1
|