Files
llvm-mingw/strip-llvm.sh
T

121 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
set -e
unset HOST
while [ $# -gt 0 ]; do
case "$1" in
--host=*)
HOST="${1#*=}"
;;
*)
PREFIX="$1"
;;
esac
shift
done
if [ -z "$PREFIX" ]; then
echo $0 [--host=<triple>] dir
exit 1
fi
cd "$PREFIX"
if [ -n "$FULL_LLVM" ]; then
exit 0
fi
if [ -n "$HOST" ]; then
EXEEXT=.exe
fi
case $(uname) in
MINGW*)
EXEEXT=.exe
;;
*)
;;
esac
cd bin
for i in bugpoint c-index-test clang-* diagtool dsymutil git-clang-format hmaptool ld64.lld llc lldb-* lli llvm-* obj2yaml opt sancov sanstats scan-build scan-view verify-uselistorder wasm-ld yaml2obj libclang.dll LTO.dll *Remarks.dll *.bat; do
basename=$i
if [ -n "$EXEEXT" ]; then
# Some in the list are expanded globs, some are plain names we list.
case $i in
*$EXEEXT)
basename=$(echo $i | sed s/$EXEEXT//)
;;
esac
i=$basename
if [ -e $basename$EXEEXT ]; then
i=$basename$EXEEXT
fi
fi
# Basename has got $EXEEXT stripped, but any other suffix kept intact.
case $basename in
*.sh)
;;
clang++|clang-*.*|clang-cpp)
;;
clang-*)
suffix="${basename#*-}"
# Test removing all numbers from the suffix; if it is empty, the suffix
# was a plain number (as if the original name was clang-7); if it wasn't
# empty, remove the tool.
if [ "$(echo $suffix | tr -d '[0-9]')" != "" ]; then
rm -f $i
fi
;;
llvm-ar|llvm-cvtres|llvm-dlltool|llvm-nm|llvm-objdump|llvm-ranlib|llvm-rc|llvm-readobj|llvm-strings|llvm-pdbutil|llvm-objcopy|llvm-strip|llvm-cov|llvm-profdata|llvm-addr2line|llvm-symbolizer|llvm-wrapper)
;;
ld64.lld|wasm-ld)
if [ -e $i ]; then
rm $i
fi
;;
lldb|lldb-server)
;;
*)
if [ -f $i ]; then
rm $i
elif [ -L $i ] && [ ! -e $(readlink $i) ]; then
# Remove dangling symlinks
rm $i
fi
;;
esac
done
if [ -n "$EXEEXT" ]; then
# Convert ld.lld from a symlink to a regular file, so we can remove
# the one it points to. On MSYS, and if packaging built toolchains
# in a zip file, symlinks are converted into copies.
if [ -L ld.lld$EXEEXT ]; then
cp ld.lld$EXEEXT tmp
rm ld.lld$EXEEXT
mv tmp ld.lld$EXEEXT
fi
# lld-link isn't used normally, but can be useful for debugging/testing,
# and is kept in unix setups. Removing it when packaging for windows,
# to conserve space.
rm -f lld$EXEEXT lld-link$EXEEXT
# Remove superfluous frontends; these aren't really used.
rm -f clang-cpp* clang++*
fi
cd ..
rm -rf share libexec
cd include
rm -rf clang clang-c lld llvm llvm-c
cd ..
cd lib
for i in lib*.a *.so* *.dylib* cmake; do
case $i in
liblldb*)
;;
*)
rm -rf $i
;;
esac
done
cd ..