move duplicate code into a single file

add debug option (OCDEBUG=1 ./<script>)
update README
This commit is contained in:
Thomas Pöchtrager 2013-12-16 21:53:21 +01:00
parent 42e3fc51cc
commit 2c38fb673e
8 changed files with 138 additions and 143 deletions

View File

@ -15,12 +15,14 @@ If you want, then you can build an up-to-date vanilla GCC as well.
### WHAT IS NOT WORKING (YET)? ### ### WHAT IS NOT WORKING (YET)? ###
* Debug info is weak, because of the [missing](https://github.com/tpoechtrager/osxcross/blob/master/patches/gcc-dsymutil.patch) * Debug info is weak because of the [missing](https://github.com/tpoechtrager/osxcross/blob/master/patches/gcc-dsymutil.patch)
[`dsymutil`](http://www.manpagez.com/man/1/dsymutil) (shows only function names, no line numbers) [`dsymutil`](http://www.manpagez.com/man/1/dsymutil) (debugger shows only function names).
* GCC itself [doesn't build with GCC](https://github.com/tpoechtrager/osxcross/commit/12f5dcdde4bc1000180d25ffda229f0a13cf723d), The source code of dsymutil is not publicly available, so it can't be ported to other systems.
but builds fine when clang is used to build GCC But you probably don't want debug symbols anyway if you build on a non OS X system.
* GCC itself [doesn't build with GCC](https://github.com/tpoechtrager/osxcross/commit/12f5dcdde4bc1000180d25ffda229f0a13cf723d),
but builds fine when clang is used to build GCC.
Everything else besides that should work.
### WHAT CAN I BUILD WITH IT? ### ### WHAT CAN I BUILD WITH IT? ###

View File

@ -2,12 +2,7 @@
pushd "${0%/*}" &>/dev/null pushd "${0%/*}" &>/dev/null
export LC_ALL="C" source tools/tools.sh
export CC=clang
export CXX=clang++
# How many concurrent jobs should be used for compiling?
JOBS=`tools/get_cpu_count.sh` || exit 1
# SDK version to use # SDK version to use
SDK_VERSION=10.8 SDK_VERSION=10.8
@ -24,29 +19,12 @@ LINKER_VERSION=134.9
# Don't change this # Don't change this
OSXCROSS_VERSION=0.5 OSXCROSS_VERSION=0.5
function require
{
which $1 &>/dev/null
while [ $? -ne 0 ]
do
echo ""
read -p "Install $1 then press enter"
which $1 &>/dev/null
done
}
BASE_DIR=`pwd`
TARBALL_DIR=$BASE_DIR/tarballs TARBALL_DIR=$BASE_DIR/tarballs
BUILD_DIR=$BASE_DIR/build BUILD_DIR=$BASE_DIR/build
TARGET_DIR=$BASE_DIR/target TARGET_DIR=$BASE_DIR/target
PATCH_DIR=$BASE_DIR/patches PATCH_DIR=$BASE_DIR/patches
SDK_DIR=$TARGET_DIR/SDK SDK_DIR=$TARGET_DIR/SDK
JOBSSTR="jobs"
if [ $JOBS -eq 1 ]; then
JOBSSTR="job"
fi
if [ -z "$OSX_VERSION_MIN" ]; then if [ -z "$OSX_VERSION_MIN" ]; then
OSX_VERSION_MIN="default" OSX_VERSION_MIN="default"
fi fi
@ -58,11 +36,9 @@ case $SDK_VERSION in
10.7*) TARGET=darwin11 ;; 10.7*) TARGET=darwin11 ;;
10.8*) TARGET=darwin12 ;; 10.8*) TARGET=darwin12 ;;
10.9*) TARGET=darwin13 ;; 10.9*) TARGET=darwin13 ;;
*) echo "Invalid SDK Version"; exit 1 ;; *) echo "Invalid SDK Version" && exit 1 ;;
esac esac
set -e
echo "" echo ""
echo "Building OSXCross toolchain, Version: $OSXCROSS_VERSION" echo "Building OSXCross toolchain, Version: $OSXCROSS_VERSION"
echo "" echo ""
@ -98,9 +74,14 @@ set -e
CLANG_TARGET_OPTION=`./oclang/check_target_option.sh` CLANG_TARGET_OPTION=`./oclang/check_target_option.sh`
pushd $BUILD_DIR pushd $BUILD_DIR &>/dev/null
trap 'test $? -eq 0 || rm -f $BUILD_DIR/have_cctools*' EXIT function remove_locks()
{
rm -rf $BUILD_DIR/have_cctools*
}
source $BASE_DIR/tools/trap_exit.sh
if [ "`ls $TARBALL_DIR/cctools*.tar.* | wc -l | tr -d ' '`" != "1" ]; then if [ "`ls $TARBALL_DIR/cctools*.tar.* | wc -l | tr -d ' '`" != "1" ]; then
echo "" echo ""
@ -121,7 +102,7 @@ rm -rf xar*
tar xJfv $TARBALL_DIR/cctools*.tar.xz tar xJfv $TARBALL_DIR/cctools*.tar.xz
tar xzfv $TARBALL_DIR/xar*.tar.gz tar xzfv $TARBALL_DIR/xar*.tar.gz
pushd cctools*/cctools pushd cctools*/cctools &>/dev/null
patch -p0 < $PATCH_DIR/cctools-ld64-1.patch patch -p0 < $PATCH_DIR/cctools-ld64-1.patch
patch -p0 < $PATCH_DIR/cctools-ld64-2.patch patch -p0 < $PATCH_DIR/cctools-ld64-2.patch
patch -p0 < $PATCH_DIR/cctools-ld64-3.patch patch -p0 < $PATCH_DIR/cctools-ld64-3.patch
@ -133,37 +114,37 @@ echo ""
./configure --prefix=$TARGET_DIR --target=x86_64-apple-$TARGET ./configure --prefix=$TARGET_DIR --target=x86_64-apple-$TARGET
make -j$JOBS make -j$JOBS
make install -j$JOBS make install -j$JOBS
popd popd &>/dev/null
pushd $TARGET_DIR/bin pushd $TARGET_DIR/bin &>/dev/null
CCTOOLS=`find . -name "x86_64-apple-darwin*"` CCTOOLS=`find . -name "x86_64-apple-darwin*"`
CCTOOLS=($CCTOOLS) CCTOOLS=($CCTOOLS)
for CCTOOL in ${CCTOOLS[@]}; do for CCTOOL in ${CCTOOLS[@]}; do
CCTOOL_I386=`echo "$CCTOOL" | sed 's/x86_64/i386/g'` CCTOOL_I386=`echo "$CCTOOL" | sed 's/x86_64/i386/g'`
ln -sf $CCTOOL $CCTOOL_I386 ln -sf $CCTOOL $CCTOOL_I386
done done
popd popd &>/dev/null
fi # have cctools fi # have cctools
if [ ! -f "have_xar_$TARGET" ]; then if [ ! -f "have_xar_$TARGET" ]; then
if [ -n "$FORCE_XAR_BUILD" ] || [ `echo "$SDK_VERSION<=10.5" | bc -l` -eq 1 ]; then if [ -n "$FORCE_XAR_BUILD" ] || [ `echo "$SDK_VERSION<=10.5" | bc -l` -eq 1 ]; then
pushd xar* pushd xar* &>/dev/null
set +e set +e
sed -i 's/-Wall/-w/g' configure sed -i 's/-Wall/-w/g' configure
set -e set -e
./configure --prefix=$TARGET_DIR ./configure --prefix=$TARGET_DIR
make -j$JOBS make -j$JOBS
make install -j$JOBS make install -j$JOBS
popd popd &>/dev/null
fi # SDK <= 10.5 fi # SDK <= 10.5
fi # have xar fi # have xar
if [ ! -f "have_cctools_$TARGET" ]; then if [ ! -f "have_cctools_$TARGET" ]; then
function check function check_cctools
{ {
[ -f "/$TARGET_DIR/bin/$1-apple-$TARGET-lipo" ] || exit 1 [ -f "/$TARGET_DIR/bin/$1-apple-$TARGET-lipo" ] || exit 1
[ -f "/$TARGET_DIR/bin/$1-apple-$TARGET-ld" ] || exit 1 [ -f "/$TARGET_DIR/bin/$1-apple-$TARGET-ld" ] || exit 1
@ -173,8 +154,8 @@ function check
[ -f "/$TARGET_DIR/bin/$1-apple-$TARGET-strip" ] || exit 1 [ -f "/$TARGET_DIR/bin/$1-apple-$TARGET-strip" ] || exit 1
} }
check i386 check_cctools i386
check x86_64 check_cctools x86_64
touch "have_cctools_${CCTOOLS_REVHASH}_$TARGET" touch "have_cctools_${CCTOOLS_REVHASH}_$TARGET"
@ -218,14 +199,14 @@ esac
rm -rf $SDK_DIR/MacOSX$SDK_VERSION* 2>/dev/null rm -rf $SDK_DIR/MacOSX$SDK_VERSION* 2>/dev/null
mv -f SDKs/*$SDK_VERSION* $SDK_DIR mv -f SDKs/*$SDK_VERSION* $SDK_DIR
pushd $SDK_DIR/MacOSX$SDK_VERSION.sdk pushd $SDK_DIR/MacOSX$SDK_VERSION.sdk &>/dev/null
set +e set +e
ln -s $SDK_DIR/MacOSX$SDK_VERSION.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/std*.h usr/include 2>/dev/null ln -s $SDK_DIR/MacOSX$SDK_VERSION.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/std*.h usr/include 2>/dev/null
$BASE_DIR/oclang/find_intrinsic_headers.sh $SDK_DIR/MacOSX$SDK_VERSION.sdk $BASE_DIR/oclang/find_intrinsic_headers.sh $SDK_DIR/MacOSX$SDK_VERSION.sdk
set -e set -e
popd popd &>/dev/null
popd popd &>/dev/null
WRAPPER=$TARGET_DIR/bin/x86_64-apple-$TARGET-oclang WRAPPER=$TARGET_DIR/bin/x86_64-apple-$TARGET-oclang
cp -f oclang/oclang $WRAPPER cp -f oclang/oclang $WRAPPER
@ -233,7 +214,7 @@ cp -f oclang/oclang $WRAPPER
WRAPPER_SCRIPT=`basename $WRAPPER` WRAPPER_SCRIPT=`basename $WRAPPER`
WRAPPER_DIR=`dirname $WRAPPER` WRAPPER_DIR=`dirname $WRAPPER`
pushd $WRAPPER_DIR pushd $WRAPPER_DIR &>/dev/null
ln -sf $WRAPPER_SCRIPT o32-clang ln -sf $WRAPPER_SCRIPT o32-clang
ln -sf $WRAPPER_SCRIPT o32-clang++ ln -sf $WRAPPER_SCRIPT o32-clang++
@ -251,7 +232,7 @@ ln -sf $WRAPPER_SCRIPT x86_64-apple-$TARGET-clang
ln -sf $WRAPPER_SCRIPT x86_64-apple-$TARGET-clang++ ln -sf $WRAPPER_SCRIPT x86_64-apple-$TARGET-clang++
ln -sf $WRAPPER_SCRIPT x86_64-apple-$TARGET-clang++-libc++ ln -sf $WRAPPER_SCRIPT x86_64-apple-$TARGET-clang++-libc++
popd popd &>/dev/null
OSXCROSS_CONF="$TARGET_DIR/bin/osxcross-conf" OSXCROSS_CONF="$TARGET_DIR/bin/osxcross-conf"
OSXCROSS_ENV="$TARGET_DIR/bin/osxcross-env" OSXCROSS_ENV="$TARGET_DIR/bin/osxcross-env"
@ -296,15 +277,6 @@ echo "echo \"export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$BDIR/../lib${LIB_PATH}"\
chmod +x $OSXCROSS_CONF $OSXCROSS_ENV chmod +x $OSXCROSS_CONF $OSXCROSS_ENV
function test_compiler
{
echo -ne "testing $1 ... "
$1 $2 -O2 -Wall -o test
rm test
echo "works"
}
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:`cat $BUILD_DIR/cctools*/cctools/tmp/ldpath`" # libLTO.so export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:`cat $BUILD_DIR/cctools*/cctools/tmp/ldpath`" # libLTO.so
echo "" echo ""
@ -316,9 +288,9 @@ test_compiler o32-clang++ $BASE_DIR/oclang/test.cpp
test_compiler o64-clang++ $BASE_DIR/oclang/test.cpp test_compiler o64-clang++ $BASE_DIR/oclang/test.cpp
echo "" echo ""
echo "Now add the following line" echo "Now add"
echo "" echo ""
echo "\`$OSXCROSS_ENV\`" echo -e "\e[32m\`$OSXCROSS_ENV\`\e[0m"
echo "" echo ""
echo "to your ~/.bashrc or ~/.profile (including the '\`')" echo "to your ~/.bashrc or ~/.profile (including the '\`')"
echo "" echo ""

View File

@ -2,24 +2,13 @@
pushd "${0%/*}" &>/dev/null pushd "${0%/*}" &>/dev/null
export LC_ALL="C"
export LIBRARY_PATH="" export LIBRARY_PATH=""
export CC=clang DESC=gcc
export CXX=clang++ source tools/tools.sh
`tools/osxcross_conf.sh` `tools/osxcross_conf.sh`
if [ $? -ne 0 ]; then
echo "you need to complete ./build.sh first, before you can start building gcc"
exit 1
fi
set -e
# How many concurrent jobs should be used for compiling?
JOBS=`tools/get_cpu_count.sh`
# GCC version to build # GCC version to build
# (<4.7 will not work properly with libc++) # (<4.7 will not work properly with libc++)
GCC_VERSION=4.8.2 GCC_VERSION=4.8.2
@ -27,32 +16,24 @@ GCC_VERSION=4.8.2
# GCC mirror # GCC mirror
GCC_MIRROR="ftp://ftp.gwdg.de/pub/misc/gcc/releases" GCC_MIRROR="ftp://ftp.gwdg.de/pub/misc/gcc/releases"
function require
{
which $1 &>/dev/null
while [ $? -ne 0 ]
do
echo ""
read -p "Install $1 then press enter"
which $1 &>/dev/null
done
}
set +e set +e
require wget require wget
set -e set -e
BASE_DIR=`pwd` pushd $OSXCROSS_BUILD_DIR &>/dev/null
pushd $OSXCROSS_BUILD_DIR function remove_locks()
{
rm -rf $OSXCROSS_BUILD_DIR/have_gcc*
}
trap 'test $? -eq 0 || rm -f $OSXCROSS_BUILD_DIR/have_gcc*' EXIT source $BASE_DIR/tools/trap_exit.sh
if [ ! -f "have_gcc_${GCC_VERSION}_${OSXCROSS_TARGET}" ]; then if [ ! -f "have_gcc_${GCC_VERSION}_${OSXCROSS_TARGET}" ]; then
pushd $OSXCROSS_TARBALL_DIR pushd $OSXCROSS_TARBALL_DIR &>/dev/null
wget -c "$GCC_MIRROR/gcc-$GCC_VERSION/gcc-$GCC_VERSION.tar.bz2" wget -c "$GCC_MIRROR/gcc-$GCC_VERSION/gcc-$GCC_VERSION.tar.bz2"
popd popd &>/dev/null
echo "cleaning up ..." echo "cleaning up ..."
rm -rf gcc* 2>/dev/null rm -rf gcc* 2>/dev/null
@ -60,7 +41,7 @@ rm -rf gcc* 2>/dev/null
echo "extracting gcc ..." echo "extracting gcc ..."
tar xf "$OSXCROSS_TARBALL_DIR/gcc-$GCC_VERSION.tar.bz2" tar xf "$OSXCROSS_TARBALL_DIR/gcc-$GCC_VERSION.tar.bz2"
pushd gcc*$GCC_VERSION* pushd gcc*$GCC_VERSION* &>/dev/null
rm -f $OSXCROSS_TARGET_DIR/bin/*-gcc* rm -f $OSXCROSS_TARGET_DIR/bin/*-gcc*
rm -f $OSXCROSS_TARGET_DIR/bin/*-g++* rm -f $OSXCROSS_TARGET_DIR/bin/*-g++*
@ -68,7 +49,7 @@ rm -f $OSXCROSS_TARGET_DIR/bin/*-g++*
patch -p0 < $OSXCROSS_PATCH_DIR/gcc-dsymutil.patch patch -p0 < $OSXCROSS_PATCH_DIR/gcc-dsymutil.patch
mkdir -p build mkdir -p build
pushd build pushd build &>/dev/null
if [ "`uname -s`" == "FreeBSD" ]; then if [ "`uname -s`" == "FreeBSD" ]; then
export CPATH="/usr/local/include" export CPATH="/usr/local/include"
@ -101,14 +82,14 @@ fi
$MAKE -j$JOBS $MAKE -j$JOBS
$MAKE install -j$JOBS $MAKE install -j$JOBS
popd #build popd &>/dev/null # build
popd #gcc popd &>/dev/null # gcc
touch "have_gcc_${GCC_VERSION}_${OSXCROSS_TARGET}" touch "have_gcc_${GCC_VERSION}_${OSXCROSS_TARGET}"
fi #have gcc fi # have gcc
popd #build dir popd &>/dev/null # build dir
WRAPPER=$OSXCROSS_TARGET_DIR/bin/x86_64-apple-${OSXCROSS_TARGET}-ogcc WRAPPER=$OSXCROSS_TARGET_DIR/bin/x86_64-apple-${OSXCROSS_TARGET}-ogcc
cp ogcc/ogcc $WRAPPER cp ogcc/ogcc $WRAPPER
@ -116,7 +97,7 @@ cp ogcc/ogcc $WRAPPER
WRAPPER_SCRIPT=`basename $WRAPPER` WRAPPER_SCRIPT=`basename $WRAPPER`
WRAPPER_DIR=`dirname $WRAPPER` WRAPPER_DIR=`dirname $WRAPPER`
pushd $WRAPPER_DIR pushd $WRAPPER_DIR &>/dev/null
if [ ! -f i386-apple-$OSXCROSS_TARGET-base-gcc ]; then if [ ! -f i386-apple-$OSXCROSS_TARGET-base-gcc ]; then
mv x86_64-apple-$OSXCROSS_TARGET-gcc x86_64-apple-$OSXCROSS_TARGET-base-gcc mv x86_64-apple-$OSXCROSS_TARGET-gcc x86_64-apple-$OSXCROSS_TARGET-base-gcc
@ -142,15 +123,7 @@ ln -sf $WRAPPER_SCRIPT x86_64-apple-$OSXCROSS_TARGET-gcc
ln -sf $WRAPPER_SCRIPT x86_64-apple-$OSXCROSS_TARGET-g++ ln -sf $WRAPPER_SCRIPT x86_64-apple-$OSXCROSS_TARGET-g++
ln -sf $WRAPPER_SCRIPT x86_64-apple-$OSXCROSS_TARGET-g++-libc++ ln -sf $WRAPPER_SCRIPT x86_64-apple-$OSXCROSS_TARGET-g++-libc++
popd #wrapper dir popd &>/dev/null # wrapper dir
function test_compiler
{
echo -ne "testing $1 ... "
$1 $2 -O2 -Wall -o test
rm test
echo "works"
}
echo "" echo ""

View File

@ -2,19 +2,11 @@
pushd "${0%/*}" &>/dev/null pushd "${0%/*}" &>/dev/null
export LC_ALL="C" DESC=libc++
source tools/tools.sh
`tools/osxcross_conf.sh`
if [ $? -ne 0 ]; then
echo "you need to complete ./build.sh first, before you can start building libc++"
exit 1
fi
set -e
if [ `echo "${OSXCROSS_SDK_VERSION}<10.7" | bc -l` -eq 1 ]; then if [ `echo "${OSXCROSS_SDK_VERSION}<10.7" | bc -l` -eq 1 ]; then
echo "you must use the SDK from 10.7 or newer to get libc++ compiled" echo "you must use the SDK from 10.7 or newer to get $DESC compiled"
exit 1 exit 1
fi fi
@ -24,47 +16,39 @@ JOBS=`tools/get_cpu_count.sh`
# libc++ version to build # libc++ version to build
LIBCXX_VERSION=3.3 LIBCXX_VERSION=3.3
function require
{
which $1 &>/dev/null
while [ $? -ne 0 ]
do
echo ""
read -p "Install $1 then press enter"
which $1 &>/dev/null
done
}
BASE_DIR=`pwd`
set +e set +e
require wget require wget
require cmake require cmake
set -e set -e
pushd $OSXCROSS_BUILD_DIR pushd $OSXCROSS_BUILD_DIR &>/dev/null
trap 'test $? -eq 0 || rm -f $OSXCROSS_BUILD_DIR/have_libcxx*' EXIT function remove_locks()
{
rm -f $OSXCROSS_BUILD_DIR/have_libcxx*
}
source $BASE_DIR/tools/trap_exit.sh
if [ ! -f "have_libcxx_${LIBCXX_VERSION}_${OSXCROSS_TARGET}" ]; then if [ ! -f "have_libcxx_${LIBCXX_VERSION}_${OSXCROSS_TARGET}" ]; then
pushd $OSXCROSS_TARBALL_DIR pushd $OSXCROSS_TARBALL_DIR &>/dev/null
wget -c "http://llvm.org/releases/3.3/libcxx-${LIBCXX_VERSION}.src.tar.gz" wget -c "http://llvm.org/releases/3.3/libcxx-${LIBCXX_VERSION}.src.tar.gz"
popd popd &>/dev/null
tar xzfv "$OSXCROSS_TARBALL_DIR/libcxx-${LIBCXX_VERSION}.src.tar.gz" tar xzfv "$OSXCROSS_TARBALL_DIR/libcxx-${LIBCXX_VERSION}.src.tar.gz"
pushd libcxx-${LIBCXX_VERSION}* pushd libcxx-${LIBCXX_VERSION}* &>/dev/null
rm -rf build rm -rf build
mkdir build mkdir build
pushd build pushd build &>/dev/null
# remove conflicting versions # remove conflicting versions
rm -rf $OSXCROSS_SDK/usr/include/c++/v1 rm -rf $OSXCROSS_SDK/usr/include/c++/v1
rm -rf $OSXCROSS_SDK/usr/lib/libc++.dylib rm -rf $OSXCROSS_SDK/usr/lib/libc++.dylib
rm -rf $OSXCROSS_SDK/usr/lib/libc++.*.dylib rm -rf $OSXCROSS_SDK/usr/lib/libc++.*.dylib
function cmakeerror() function cmake_error()
{ {
echo -e "\e[1m" echo -e "\e[1m"
echo "It looks like CMake failed." echo "It looks like CMake failed."
@ -91,19 +75,19 @@ cmake .. \
-DCMAKE_INSTALL_PREFIX=$OSXCROSS_SDK/../libcxx_$OSXCROSS_SDK_VERSION \ -DCMAKE_INSTALL_PREFIX=$OSXCROSS_SDK/../libcxx_$OSXCROSS_SDK_VERSION \
-DCMAKE_AR=$OSXCROSS_CCTOOLS_PATH/x86_64-apple-$OSXCROSS_TARGET-ar \ -DCMAKE_AR=$OSXCROSS_CCTOOLS_PATH/x86_64-apple-$OSXCROSS_TARGET-ar \
-DCMAKE_RANLIB=$OSXCROSS_CCTOOLS_PATH/x86_64-apple-$OSXCROSS_TARGET-ranlib \ -DCMAKE_RANLIB=$OSXCROSS_CCTOOLS_PATH/x86_64-apple-$OSXCROSS_TARGET-ranlib \
-DCMAKE_CXX_FLAGS="-arch i386 -arch x86_64" || cmakeerror -DCMAKE_CXX_FLAGS="-arch i386 -arch x86_64" || cmake_error
make -j$JOBS make -j$JOBS
make install -j$JOBS make install -j$JOBS
popd #build popd &>/dev/null # build
popd #libcxx popd &>/dev/null # libcxx
touch "have_libcxx_${LIBCXX_VERSION}_${OSXCROSS_TARGET}" touch "have_libcxx_${LIBCXX_VERSION}_${OSXCROSS_TARGET}"
fi #have libcxx fi # have libcxx
popd #build dir popd &>/dev/null # build dir
function test_compiler_clang function test_compiler_clang
{ {

View File

@ -2,6 +2,8 @@
set -e set -e
which cc &>/dev/null || { echo "1" && exit 0; }
prog="cpucount" prog="cpucount"
pushd "${0%/*}" >/dev/null 2>&1 pushd "${0%/*}" >/dev/null 2>&1
@ -11,6 +13,6 @@ case "$(uname -s)" in
prog="${prog}.exe" ;; prog="${prog}.exe" ;;
esac esac
test ! -f $prog && cc cpucount.c -o cpucount test ! -f $prog && cc cpucount.c -o cpucount &>/dev/null
eval "./${prog}" eval "./${prog}"

View File

@ -2,9 +2,8 @@
pushd "${0%/*}" &>/dev/null pushd "${0%/*}" &>/dev/null
OSXCROSS_CONF=`which osxcross-conf 2>/dev/null` OSXCROSS_CONF="../target/bin/osxcross-conf"
test $? -eq 0 || OSXCROSS_CONF="../target/bin/osxcross-conf" test -f $OSXCROSS_CONF || { OSXCROSS_CONF=`which osxcross-conf 2>/dev/null` || exit 1; }
test -f $OSXCROSS_CONF || exit 1
$OSXCROSS_CONF || exit 1 $OSXCROSS_CONF || exit 1
`dirname $OSXCROSS_CONF`/osxcross-env `dirname $OSXCROSS_CONF`/osxcross-env

44
tools/tools.sh Normal file
View File

@ -0,0 +1,44 @@
#!/usr/bin/env bash
BASE_DIR=`pwd`
export LC_ALL="C"
export CC=clang
export CXX=clang++
# enable debug messages
test -n "$OCDEBUG" && set -x
# how many concurrent jobs should be used for compiling?
JOBS=`tools/get_cpu_count.sh`
if [ "`basename $0`" != "build.sh" ]; then
`tools/osxcross_conf.sh`
if [ $? -ne 0 ]; then
echo "you need to complete ./build.sh first, before you can start building $DESC"
exit 1
fi
fi
function require
{
which $1 &>/dev/null
while [ $? -ne 0 ]
do
echo ""
read -p "Please install $1 then press enter"
which $1 &>/dev/null
done
}
function test_compiler
{
echo -ne "testing $1 ... "
$1 $2 -O2 -Wall -o test
rm test
echo "works"
}
# exit on error
set -e

19
tools/trap_exit.sh Normal file
View File

@ -0,0 +1,19 @@
#!/usr/bin/env bash
function _exit()
{
EC=$?
if [ $EC -ne 0 ]; then
SCRIPT=`basename $0`
echo ""
echo "exiting with abnormal exit code ($EC)"
test -n "$OCDEBUG" || echo "run 'OCDEBUG=1 ./$SCRIPT' to enable debug messages"
echo "removing stale locks..."
remove_locks
echo "if it is happening the first time, then just re-run the script"
echo ""
fi
}
trap _exit EXIT