#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
TARGET="$(basename $0 | sed 's/-clang.*//')"
EXE=$(basename $0 | sed 's/.*-\(clang.*\)/\1/')
# We could set these defaults in the clang frontend driver, but that's not yet merged upstream
ARCH=$(echo $TARGET | sed 's/-.*//')
case $ARCH in
i686)
	# Dwarf is the default for i686, but currently there's an issue
	# in libunwind with unwinding clang generated dwarf opcodes on 32 bit
	# x86, pending resolution at https://reviews.llvm.org/D38680.
	ARCH_FLAGS=-fsjlj-exceptions
	;;
x86_64)
	# Explicitly request dwarf on x86_64; SEH is the default there but
	# libcxxabi lacks support for it.
	ARCH_FLAGS=-fdwarf-exceptions
	;;
armv7)
	# Dwarf is the default here.
	ARCH_FLAGS=
	;;
aarch64)
	# Dwarf is the default on aarch64; enable emulated TLS since native
	# TLS isn't implemented yet.
	ARCH_FLAGS=-femulated-tls
	;;
esac
$DIR/$EXE -target $TARGET -rtlib=compiler-rt -stdlib=libc++ -fuse-ld=lld $ARCH_FLAGS -Qunused-arguments "$@"
