Provide <triplet>-<tool> wrappers and links to many llvm tools

Provide wrappers named <triplet>-gcc and <triplet>-g++ as well,
to ease cross compilation with e.g. autotools, to allow just
specifying --host=<triplet>.

Provide wrappers for objdump and ld that provide specific output
that autotools look for.

Provide <triplet>-strip as a symlink to /bin/true, since there is
no strip tool available yet (and llvm-objcopy doesn't support
COFF yet).
This commit is contained in:
Martin Storsjö committed 2018-01-10 10:53:02 +02:00
1 parent f67075c23c
commit 55e8aef024
6 files changed
+83 -11

No files matched your search

+12 -2
View File
@@ -1,7 +1,17 @@
#!/usr/bin/env bash
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TARGET="$(basename $0 | sed 's/-clang.*//')"
EXE=$(basename $0 | sed 's/.*-\(clang.*\)/\1/')
TARGET="$(basename $0 | sed 's/-[^-]*$//')"
EXE=$(basename $0 | sed 's/.*-\([^-]*\)/\1/')
case $EXE in
clang*)
;;
gcc)
EXE=clang
;;
g++)
EXE=clang++
;;
esac
ARCH=$(echo $TARGET | sed 's/-.*//')
SYSROOT="$(cd "$DIR"/../$TARGET && pwd)"
case $ARCH in
+25
View File
@@ -0,0 +1,25 @@
#!/bin/sh
if [ "$1" = "--help" ]; then
cat<<EOF
GNU ld impersonation
We don't support --enable-auto-import, but libtool may look for this flag.
EOF
exit 0
fi
if [ "$1" = "-v" ]; then
# This isn't implemented in the lld mingw frontend, so don't
# pass the -m <machine> option in this case.
ld.lld -v
exit 0
fi
TARGET="$(basename $0 | sed 's/-[^-]*$//')"
ARCH=$(echo $TARGET | sed 's/-.*//')
case $ARCH in
i686) M=i386pe ;;
x86_64) M=i386pep ;;
armv7) M=thumb2pe ;;
aarch64) M=arm64pe ;;
esac
ld.lld -m $M "$@"
+33
View File
@@ -0,0 +1,33 @@
#!/bin/sh
if [ "$1" = "-f" ]; then
# libtool can try to run objdump -f and wants to see certain strings in
# the output, to accept it being a windows (import) library
llvm-readobj $2 | while read -r line; do
case $line in
File:*)
file=$(echo $line | awk '{print $2}')
;;
Format:*)
format=$(echo $line | awk '{print $2}')
case $format in
COFF-i386)
format=pe-i386
;;
COFF-x86-64)
format=pe-x86-64
;;
COFF-ARM*)
# This is wrong; modern COFF armv7 isn't pe-arm-wince, and
# arm64 definitely isn't, but libtool wants to see this
# string (or some of the others) in order to accept it.
format=pe-arm-wince
;;
esac
echo $file: file format $format
;;
esac
done
else
llvm-objdump "$@"
fi