2014-04-06 22:27:59 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
pushd "${0%/*}" &>/dev/null
|
|
|
|
pushd .. &>/dev/null
|
|
|
|
source ./tools/tools.sh
|
|
|
|
popd &>/dev/null
|
|
|
|
|
2014-04-22 19:34:08 +02:00
|
|
|
set +e
|
|
|
|
if [ -z "$OSXCROSS_VERSION" ]; then
|
|
|
|
`../target/bin/osxcross-conf 2>/dev/null`
|
|
|
|
fi
|
|
|
|
set -e
|
|
|
|
|
2014-04-06 22:27:59 +02:00
|
|
|
EXESUFFIX=""
|
|
|
|
|
|
|
|
function create_wrapper_link
|
|
|
|
{
|
2014-05-17 23:15:15 +02:00
|
|
|
# arg 2:
|
|
|
|
# 1: Create a standalone link and links with target triple prefix
|
|
|
|
# 2: Create links with target triple prefix and shorcut links such as o32, o64, ...
|
|
|
|
|
|
|
|
if [ $# -ge 2 ] && [ $2 -eq 1 ]; then
|
|
|
|
verbose_cmd ln -sf "${TARGETTRIPLE}-wrapper${EXESUFFIX}" "${1}${EXESUFFIX}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
verbose_cmd ln -sf "${TARGETTRIPLE}-wrapper${EXESUFFIX}" "i386-apple-${OSXCROSS_TARGET}-${1}${EXESUFFIX}"
|
|
|
|
verbose_cmd ln -sf "${TARGETTRIPLE}-wrapper${EXESUFFIX}" "x86_64-apple-${OSXCROSS_TARGET}-${1}${EXESUFFIX}"
|
|
|
|
|
2014-09-27 20:24:37 +02:00
|
|
|
if [[ $1 == *clang* ]] || ([ $# -ge 3 ] && [ $3 -eq 1 ]); then
|
2014-05-17 23:15:15 +02:00
|
|
|
# Do not create Haswell links for gcc
|
|
|
|
verbose_cmd ln -sf "${TARGETTRIPLE}-wrapper${EXESUFFIX}" "x86_64h-apple-${OSXCROSS_TARGET}-${1}${EXESUFFIX}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $# -ge 2 ] && [ $2 -eq 2 ]; then
|
|
|
|
verbose_cmd ln -sf "${TARGETTRIPLE}-wrapper${EXESUFFIX}" "o32-${1}${EXESUFFIX}"
|
|
|
|
verbose_cmd ln -sf "${TARGETTRIPLE}-wrapper${EXESUFFIX}" "o64-${1}${EXESUFFIX}"
|
|
|
|
|
|
|
|
if [[ $1 == *clang* ]]; then
|
|
|
|
# Do not create Haswell links for gcc
|
|
|
|
verbose_cmd ln -sf "${TARGETTRIPLE}-wrapper${EXESUFFIX}" "o64h-${1}${EXESUFFIX}"
|
|
|
|
fi
|
|
|
|
fi
|
2014-04-06 22:27:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
[ -z "$TARGETCOMPILER" ] && TARGETCOMPILER=clang
|
|
|
|
|
2014-04-22 19:34:08 +02:00
|
|
|
TARGETTRIPLE=x86_64-apple-${OSXCROSS_TARGET}
|
2014-04-06 22:27:59 +02:00
|
|
|
|
|
|
|
FLAGS=""
|
|
|
|
|
|
|
|
if [ -n "$BWPLATFORM" ]; then
|
|
|
|
PLATFORM=$BWPLATFORM
|
|
|
|
|
|
|
|
if [ $PLATFORM = "Darwin" -a $(uname -s) != "Darwin" ]; then
|
|
|
|
CXX=o32-clang++
|
2014-05-17 23:15:15 +02:00
|
|
|
#CXX=o32-g++
|
|
|
|
FLAGS+="-fvisibility-inlines-hidden "
|
2014-04-06 22:27:59 +02:00
|
|
|
elif [ $PLATFORM = "FreeBSD" -a $(uname -s) != "FreeBSD" ]; then
|
|
|
|
CXX=amd64-pc-freebsd10.0-clang++
|
2014-05-17 23:15:15 +02:00
|
|
|
#CXX=amd64-pc-freebsd10.0-g++
|
|
|
|
elif [ $PLATFORM = "NetBSD" -a $(uname -s) != "NetBSD" ]; then
|
|
|
|
CXX=amd64-pc-netbsd6.1.3-clang++
|
|
|
|
#CXX=amd64-pc-netbsd6.1.3-g++
|
2014-04-06 22:27:59 +02:00
|
|
|
elif [ $PLATFORM = "Windows" ]; then
|
|
|
|
CXX=w32-clang++
|
|
|
|
FLAGS+="-wc-static-runtime -g "
|
|
|
|
EXESUFFIX=".exe"
|
|
|
|
elif [ $PLATFORM = "MWindows" ]; then
|
|
|
|
CXX=i686-w64-mingw32-g++
|
|
|
|
FLAGS+="-static-libgcc -static-libstdc++ -g "
|
|
|
|
EXESUFFIX=".exe"
|
|
|
|
fi
|
2014-05-17 23:15:15 +02:00
|
|
|
|
|
|
|
[ -z "$BWCOMPILEONLY" ] && BWCOMPILEONLY=1
|
2014-04-06 22:27:59 +02:00
|
|
|
else
|
|
|
|
PLATFORM=$(uname -s)
|
2014-05-08 23:07:42 +02:00
|
|
|
FLAGS="-march=native $CXXFLAGS "
|
2014-04-06 22:27:59 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -n "$BWCXX" ]; then
|
|
|
|
[ "$CXX" != "$BWCXX" ] && echo "using $BWCXX" 1>&2
|
|
|
|
CXX=$BWCXX
|
|
|
|
fi
|
|
|
|
|
2014-05-17 23:15:15 +02:00
|
|
|
if [ "$PLATFORM" == "Linux" ]; then
|
|
|
|
FLAGS+="-isystem quirks/include "
|
2014-04-06 22:27:59 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
function compile_wrapper()
|
|
|
|
{
|
|
|
|
mkdir -p ../target ../target/bin
|
2014-05-17 23:15:15 +02:00
|
|
|
export PLATFORM
|
|
|
|
export CXX
|
|
|
|
|
2014-09-27 10:07:15 +02:00
|
|
|
verbose_cmd $MAKE clean
|
2014-04-06 22:27:59 +02:00
|
|
|
|
2014-05-17 23:15:15 +02:00
|
|
|
OSXCROSS_CXXFLAGS="$FLAGS" \
|
2014-09-27 10:07:15 +02:00
|
|
|
verbose_cmd $MAKE wrapper -j$JOBS
|
2014-04-06 22:27:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
compile_wrapper
|
|
|
|
|
2014-05-17 23:15:15 +02:00
|
|
|
if [ -n "$BWCOMPILEONLY" ]; then
|
|
|
|
exit 0
|
|
|
|
fi
|
2014-04-06 22:27:59 +02:00
|
|
|
|
2014-05-17 23:15:15 +02:00
|
|
|
verbose_cmd mv wrapper "../target/bin/${TARGETTRIPLE}-wrapper${EXESUFFIX}"
|
2014-04-06 22:27:59 +02:00
|
|
|
|
2014-05-17 23:15:15 +02:00
|
|
|
pushd "../target/bin" &>/dev/null
|
2014-04-06 22:27:59 +02:00
|
|
|
|
2014-05-17 23:15:15 +02:00
|
|
|
if [ $TARGETCOMPILER = "clang" ]; then
|
|
|
|
create_wrapper_link clang 2
|
|
|
|
create_wrapper_link clang++ 2
|
|
|
|
create_wrapper_link clang++-libc++ 2
|
2014-04-06 22:27:59 +02:00
|
|
|
elif [ $TARGETCOMPILER = "gcc" ]; then
|
2014-05-17 23:15:15 +02:00
|
|
|
create_wrapper_link gcc 2
|
|
|
|
create_wrapper_link g++ 2
|
|
|
|
create_wrapper_link g++-libc++ 2
|
2014-04-06 22:27:59 +02:00
|
|
|
fi
|
|
|
|
|
2014-05-17 23:15:15 +02:00
|
|
|
create_wrapper_link cc
|
|
|
|
create_wrapper_link c++
|
2014-04-06 22:27:59 +02:00
|
|
|
|
2014-05-17 23:15:15 +02:00
|
|
|
create_wrapper_link osxcross 1
|
|
|
|
create_wrapper_link osxcross-conf 1
|
|
|
|
create_wrapper_link osxcross-env 1
|
|
|
|
create_wrapper_link osxcross-cmp 1
|
2014-09-27 20:24:37 +02:00
|
|
|
create_wrapper_link pkg-config 0 1
|
2014-04-06 22:27:59 +02:00
|
|
|
|
2014-04-14 21:59:03 +02:00
|
|
|
if [ "$PLATFORM" != "Darwin" ]; then
|
2014-05-17 23:15:15 +02:00
|
|
|
create_wrapper_link sw_vers 1
|
|
|
|
create_wrapper_link dsymutil 1
|
2014-04-14 21:59:03 +02:00
|
|
|
fi
|
2014-04-06 22:27:59 +02:00
|
|
|
|
|
|
|
popd &>/dev/null
|
|
|
|
popd &>/dev/null
|