Merge pull request #186 from iKarith/master

Big iOS build merge (take 2)
This commit is contained in:
Twinaphex 2015-02-18 04:09:39 +01:00
commit 7aa9e47e32
5 changed files with 224 additions and 108 deletions

View File

@ -37,12 +37,10 @@ RESET_FORMAT_COMPILER_TARGET=$FORMAT_COMPILER_TARGET
RESET_FORMAT_COMPILER_TARGET_ALT=$FORMAT_COMPILER_TARGET_ALT RESET_FORMAT_COMPILER_TARGET_ALT=$FORMAT_COMPILER_TARGET_ALT
build_summary_log() { build_summary_log() {
if [ -n "${BUILD_SUMMARY}" ]; then if [ "$1" -eq "0" ]; then
if [ "${1}" -eq "0" ]; then printf -v build_success "%s%s\n" "$build_success" "$2"
echo ${2} >> ${BUILD_SUCCESS} else
else printf -v build_fail "%s%s\n" "$build_fail" "$2"
echo ${2} >> ${BUILD_FAIL}
fi
fi fi
} }
@ -145,7 +143,7 @@ build_libretro_generic_makefile() {
build_dir="${WORKDIR}/libretro-${1}" build_dir="${WORKDIR}/libretro-${1}"
if [ -d "$build_dir" ]; then if [ -d "$build_dir" ]; then
echo "=== Building ${1} ===" echo "=== Building ${1} ==="
build_libretro_generic $1 $2 $3 $4 $build_dir build_libretro_generic $1 $2 $3 $4 "$build_dir"
copy_core_to_dist $1 copy_core_to_dist $1
else else
echo "${1} not fetched, skipping ..." echo "${1} not fetched, skipping ..."
@ -156,7 +154,7 @@ build_retroarch_generic_makefile() {
build_dir="${WORKDIR}/${1}" build_dir="${WORKDIR}/${1}"
if [ -d "$build_dir" ]; then if [ -d "$build_dir" ]; then
echo "=== Building ${2} ===" echo "=== Building ${2} ==="
build_libretro_generic $1 $2 $3 $4 $build_dir build_libretro_generic $1 $2 $3 $4 "$build_dir"
copy_core_to_dist $5 copy_core_to_dist $5
else else
echo "${1} not fetched, skipping ..." echo "${1} not fetched, skipping ..."
@ -641,23 +639,24 @@ build_libretro_mupen64() {
} }
build_summary() { build_summary() {
if [ -z "${NOBUILD_SUMMARY}" ]; then if [ -z "$NOBUILD_SUMMARY" ]; then
echo "=== Core Build Summary ===" > ${BUILD_SUMMARY} printf -v summary "=== Core Build Summary ===\n\n"
if [ -r "${BUILD_SUCCESS}" ]; then if [ -n "$build_success" ]; then
echo "`wc -l < ${BUILD_SUCCESS}` core(s) successfully built:" >> ${BUILD_SUMMARY} printf -v summary "%s%s\n" "$summary" "$(echo $build_success | wc -w) core(s) successfully built:"
${BUILD_SUMMARY_FMT} ${BUILD_SUCCESS} >> ${BUILD_SUMMARY} printf -v summary "%s%s\n\n" "$summary" "$(echo $build_success)"
else else
echo " 0 cores successfully built. :(" >> ${BUILD_SUMMARY} printf -v summary "%s%s\n\n" "$summary" " 0 cores successfully built. :("
echo "`wc -l < ${BUILD_FAIL}` core(s) failed to build:"
fi fi
if [ -r "${BUILD_FAIL}" ]; then if [ -n "$build_fail" ]; then
echo "`wc -l < ${BUILD_FAIL}` core(s) failed to build:" >> ${BUILD_SUMMARY} printf -v summary "%s%s\n" "$summary" "$(echo $build_fail | wc -w) core(s) failed to build:"
${BUILD_SUMMARY_FMT} ${BUILD_FAIL} >> ${BUILD_SUMMARY} printf -v summary "%s%s\n\n" "$summary" "$(echo $build_fail)"
else else
echo " 0 cores failed to build! :D" >> ${BUILD_SUMMARY} printf -v summary "%s%s\n\n" "$summary" " 0 cores failed to build! :D"
fi fi
rm -f $BUILD_SUCCESS $BUILD_FAIL if [ -n "$BUILD_SUMMARY" ]; then
cat ${BUILD_SUMMARY} echo "$summary" > "$BUILD_SUMMARY"
fi
echo "$summary"
fi fi
} }

View File

@ -1,39 +1,128 @@
#! /usr/bin/env bash #! /usr/bin/env bash
# vim: set ts=3 sw=3 noet ft=sh : bash # vim: set ts=3 sw=3 noet ft=sh : bash
set -e
WORKDIR="${PWD}"
BASE_DIR="$PWD"
RARCH_DIR=$BASE_DIR/dist
RARCH_DIST_DIR=$RARCH_DIR/ios
FORMAT=_ios
FORMAT_COMPILER_TARGET=ios FORMAT_COMPILER_TARGET=ios
FORMAT_COMPILER_TARGET_ALT=ios
FORMAT_EXT=dylib
JOBS=7
MAKE=make
CXX11="clang++ -std=c++11 -stdlib=libc++ -miphoneos-version-min=5.0"
IOS=1
IOSSDK=$(xcrun -sdk iphoneos -show-sdk-path) SCRIPT="${0#./}"
IOSVER_MAJOR=$(xcrun -sdk iphoneos -show-sdk-platform-version | cut -c '1') BASE_DIR="${SCRIPT%/*}"
IOSVER_MINOR=$(xcrun -sdk iphoneos -show-sdk-platform-version | cut -c '3') WORKDIR=$PWD
IOSVER=${IOSVER_MAJOR}${IOSVER_MINOR}
echo "iOS path: ${IOSSDK}"
echo "iOS version: ${IOSVER}"
export IOSSDK
. ./libretro-build-common.sh if [ "$BASE_DIR" = "$SCRIPT" ]; then
BASE_DIR="$WORKDIR"
else
if [[ "$0" != /* ]]; then
# Make the path absolute
BASE_DIR="$WORKDIR/$BASE_DIR"
fi
fi
if [ $1 ]; then if [ "$FORMAT_COMPILER_TARGET" != "ios" ]; then
$1 . ${BASE_DIR}/libretro-config.sh
else
# FIXME: libretro-config.sh should eventually do this stuff for iOS
DIST_DIR="ios"
FORMAT_EXT=dylib
IOS=1
FORMAT=_ios
FORMAT_COMPILER_TARGET=ios
export IOSSDK=$(xcrun -sdk iphoneos -show-sdk-path)
IOSVER_MAJOR=$(xcrun -sdk iphoneos -show-sdk-platform-version | cut -c '1')
IOSVER_MINOR=$(xcrun -sdk iphoneos -show-sdk-platform-version | cut -c '3')
IOSVER=${IOSVER_MAJOR}${IOSVER_MINOR}
fi
if [ -z "$RARCH_DIST_DIR" ]; then
RARCH_DIR="$WORKDIR/dist"
RARCH_DIST_DIR="$RARCH_DIR/$DIST_DIR"
fi
if [ -z "$JOBS" ]; then
JOBS=7
fi
if [ "$HOST_CC" ]; then
CC="${HOST_CC}-gcc"
CXX="${HOST_CC}-g++"
CXX11="${HOST_CC}-g++"
STRIP="${HOST_CC}-strip"
fi
if [ -z "$MAKE" ]; then
if uname -s | grep -i MINGW32 > /dev/null 2>&1; then
MAKE=mingw32-make
else
if type gmake > /dev/null 2>&1; then
MAKE=gmake
else
MAKE=make
fi
fi
fi
if [ -z "$CC" ]; then
if [ "$FORMAT_COMPILER_TARGET" = "ios" ]; then
CC="clang -arch armv7 -miphoneos-version-min=5.0 -isysroot $IOSSDK"
elif [ $FORMAT_COMPILER_TARGET = "osx" ]; then
CC=cc
elif uname -s | grep -i MINGW32 > /dev/null 2>&1; then
CC=mingw32-gcc
else
CC=gcc
fi
fi
if [ -z "$CXX" ]; then
if [ "$FORMAT_COMPILER_TARGET" = "ios" ]; then
CXX="clang++ -arch armv7 -miphoneos-version-min=5.0 -isysroot $IOSSDK"
CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -miphoneos-version-min=5.0 -isysroot $IOSSDK"
elif [ $FORMAT_COMPILER_TARGET = "osx" ]; then
CXX=c++
CXX11="clang++ -std=c++11 -stdlib=libc++"
# FIXME: Do this right later.
if [ "$ARCH" = "i386" ]; then
CC="cc -arch i386"
CXX="c++ -arch i386"
CXX11="clang++ -arch i386 -std=c++11 -stdlib=libc++"
fi
elif uname -s | grep -i MINGW32 > /dev/null 2>&1; then
CXX=mingw32-g++
CXX11=mingw32-g++
else
CXX=g++
CXX11=g++
fi
fi
FORMAT_COMPILER_TARGET_ALT=$FORMAT_COMPILER_TARGET
if [ "$FORMAT_COMPILER_TARGET" = "ios" ]; then
echo "iOS path: ${IOSSDK}"
echo "iOS version: ${IOSVER}"
fi
echo "CC = $CC"
echo "CXX = $CXX"
echo "CXX11 = $CXX11"
echo "STRIP = $STRIP"
. "$BASE_DIR/libretro-build-common.sh"
mkdir -p "$RARCH_DIST_DIR"
if [ -n "$1" ]; then
while [ -n "$1" ]; do
"$1"
shift
done
else else
build_libretro_2048 build_libretro_2048
build_libretro_4do
build_libretro_bluemsx build_libretro_bluemsx
build_libretro_fmsx build_libretro_fmsx
build_libretro_bsnes_cplusplus98 build_libretro_bsnes_cplusplus98
build_libretro_bsnes build_libretro_bsnes
build_libretro_bsnes_mercury
build_libretro_beetle_lynx build_libretro_beetle_lynx
build_libretro_beetle_gba build_libretro_beetle_gba
build_libretro_beetle_ngp build_libretro_beetle_ngp
@ -43,7 +132,7 @@ else
build_libretro_beetle_vb build_libretro_beetle_vb
build_libretro_beetle_wswan build_libretro_beetle_wswan
build_libretro_mednafen_psx build_libretro_mednafen_psx
#build_libretro_beetle_bsnes build_libretro_beetle_snes
build_libretro_catsfc build_libretro_catsfc
build_libretro_snes9x build_libretro_snes9x
build_libretro_snes9x_next build_libretro_snes9x_next
@ -62,24 +151,40 @@ else
build_libretro_tyrquake build_libretro_tyrquake
build_libretro_mame078 build_libretro_mame078
build_libretro_mame build_libretro_mame
#build_libretro_dosbox build_libretro_dosbox
build_libretro_scummvm build_libretro_scummvm
build_libretro_picodrive build_libretro_picodrive
build_libretro_handy build_libretro_handy
build_libretro_desmume build_libretro_desmume
build_libretro_pcsx_rearmed if [ $FORMAT_COMPILER_TARGET != "win" ]; then
build_libretro_pcsx_rearmed_interpreter build_libretro_pcsx_rearmed
build_libretro_mupen64 fi
if [ $FORMAT_COMPILER_TARGET = "ios" ]; then
# For self-signed iOS (without jailbreak)
build_libretro_pcsx_rearmed_interpreter
fi
build_libretro_yabause build_libretro_yabause
#build_libretro_ffmpeg
build_libretro_3dengine
build_libretro_vecx build_libretro_vecx
build_libretro_tgbdual build_libretro_tgbdual
build_libretro_prosystem build_libretro_prosystem
build_libretro_dinothawr build_libretro_dinothawr
build_libretro_virtualjaguar build_libretro_virtualjaguar
build_libretro_mupen64
build_libretro_3dengine
if [ $FORMAT_COMPILER_TARGET != "ios" ]; then
# These don't currently build on iOS
build_libretro_bnes
build_libretro_ffmpeg
build_libretro_ppsspp
fi
build_libretro_o2em build_libretro_o2em
build_libretro_4do build_libretro_hatari
build_libretro_gpsp build_libretro_gpsp
build_libretro_emux build_libretro_emux
build_libretro_test
if [ $FORMAT_COMPILER_TARGET != "ios" ]; then
build_libretro_testgl
fi
fi fi
build_summary

View File

@ -1,31 +1,36 @@
#! /usr/bin/env bash #! /usr/bin/env bash
# vim: set ts=3 sw=3 noet ft=sh : bash # vim: set ts=3 sw=3 noet ft=sh : bash
# BSDs don't have readlink -f SCRIPT="${0#./}"
read_link() BASE_DIR="${SCRIPT%/*}"
{ WORKDIR=$PWD
TARGET_FILE="${1}"
cd "`dirname "${TARGET_FILE}"`"
TARGET_FILE="`basename "${TARGET_FILE}"`"
while [ -L "${TARGET_FILE}" ]; do if [ "$BASE_DIR" = "$SCRIPT" ]; then
TARGET_FILE="`readlink "${TARGET_FILE}"`" BASE_DIR="$WORKDIR"
cd "`dirname "${TARGET_FILE}"`" else
TARGET_FILE="`basename "${TARGET_FILE}"`" if [[ "$0" != /* ]]; then
done # Make the path absolute
BASE_DIR="$WORKDIR/$BASE_DIR"
fi
fi
PHYS_DIR="`pwd -P`" if [ "$FORMAT_COMPILER_TARGET" != "ios" ]; then
RESULT="${PHYS_DIR}/${TARGET_FILE}" . ${BASE_DIR}/libretro-config.sh
echo ${RESULT} else
} # FIXME: libretro-config.sh should eventually do this stuff for iOS
SCRIPT="`read_link "$0"`" DIST_DIR="ios"
BASE_DIR="`dirname "${SCRIPT}"`" FORMAT_EXT=dylib
WORKDIR="`pwd`" IOS=1
FORMAT=_ios
. ${BASE_DIR}/libretro-config.sh FORMAT_COMPILER_TARGET=ios
export IOSSDK=$(xcrun -sdk iphoneos -show-sdk-path)
IOSVER_MAJOR=$(xcrun -sdk iphoneos -show-sdk-platform-version | cut -c '1')
IOSVER_MINOR=$(xcrun -sdk iphoneos -show-sdk-platform-version | cut -c '3')
IOSVER=${IOSVER_MAJOR}${IOSVER_MINOR}
fi
if [ -z "$RARCH_DIST_DIR" ]; then if [ -z "$RARCH_DIST_DIR" ]; then
RARCH_DIR="${WORKDIR}/dist" RARCH_DIR="$WORKDIR/dist"
RARCH_DIST_DIR="$RARCH_DIR/$DIST_DIR" RARCH_DIST_DIR="$RARCH_DIR/$DIST_DIR"
fi fi
@ -33,12 +38,6 @@ if [ -z "$JOBS" ]; then
JOBS=7 JOBS=7
fi fi
die()
{
echo $1
#exit 1
}
if [ "$HOST_CC" ]; then if [ "$HOST_CC" ]; then
CC="${HOST_CC}-gcc" CC="${HOST_CC}-gcc"
CXX="${HOST_CC}-g++" CXX="${HOST_CC}-g++"
@ -58,9 +57,10 @@ if [ -z "$MAKE" ]; then
fi fi
fi fi
if [ -z "$CC" ]; then if [ -z "$CC" ]; then
if [ $FORMAT_COMPILER_TARGET = "osx" ]; then if [ "$FORMAT_COMPILER_TARGET" = "ios" ]; then
CC="clang -arch armv7 -miphoneos-version-min=5.0 -isysroot $IOSSDK"
elif [ $FORMAT_COMPILER_TARGET = "osx" ]; then
CC=cc CC=cc
elif uname -s | grep -i MINGW32 > /dev/null 2>&1; then elif uname -s | grep -i MINGW32 > /dev/null 2>&1; then
CC=mingw32-gcc CC=mingw32-gcc
@ -70,7 +70,10 @@ if [ -z "$CC" ]; then
fi fi
if [ -z "$CXX" ]; then if [ -z "$CXX" ]; then
if [ $FORMAT_COMPILER_TARGET = "osx" ]; then if [ "$FORMAT_COMPILER_TARGET" = "ios" ]; then
CXX="clang++ -arch armv7 -miphoneos-version-min=5.0 -isysroot $IOSSDK"
CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -miphoneos-version-min=5.0 -isysroot $IOSSDK"
elif [ $FORMAT_COMPILER_TARGET = "osx" ]; then
CXX=c++ CXX=c++
CXX11="clang++ -std=c++11 -stdlib=libc++" CXX11="clang++ -std=c++11 -stdlib=libc++"
# FIXME: Do this right later. # FIXME: Do this right later.
@ -89,19 +92,25 @@ if [ -z "$CXX" ]; then
fi fi
FORMAT_COMPILER_TARGET_ALT=$FORMAT_COMPILER_TARGET FORMAT_COMPILER_TARGET_ALT=$FORMAT_COMPILER_TARGET
if [ "$FORMAT_COMPILER_TARGET" = "ios" ]; then
echo "iOS path: ${IOSSDK}"
echo "iOS version: ${IOSVER}"
fi
echo "CC = $CC" echo "CC = $CC"
echo "CXX = $CXX" echo "CXX = $CXX"
echo "CXX11 = $CXX11" echo "CXX11 = $CXX11"
echo "STRIP = $STRIP" echo "STRIP = $STRIP"
. ${BASE_DIR}/libretro-build-common.sh
. "$BASE_DIR/libretro-build-common.sh"
mkdir -p "$RARCH_DIST_DIR" mkdir -p "$RARCH_DIST_DIR"
if [ -n "${1}" ]; then if [ -n "$1" ]; then
NOBUILD_SUMMARY=1 while [ -n "$1" ]; do
while [ -n "${1}" ]; do "$1"
"${1}"
shift shift
done done
else else
@ -129,7 +138,6 @@ else
build_libretro_fb_alpha build_libretro_fb_alpha
build_libretro_vbam build_libretro_vbam
build_libretro_vba_next build_libretro_vba_next
build_libretro_bnes
build_libretro_fceumm build_libretro_fceumm
build_libretro_gambatte build_libretro_gambatte
build_libretro_meteor build_libretro_meteor
@ -149,6 +157,10 @@ else
if [ $FORMAT_COMPILER_TARGET != "win" ]; then if [ $FORMAT_COMPILER_TARGET != "win" ]; then
build_libretro_pcsx_rearmed build_libretro_pcsx_rearmed
fi fi
if [ $FORMAT_COMPILER_TARGET = "ios" ]; then
# For self-signed iOS (without jailbreak)
build_libretro_pcsx_rearmed_interpreter
fi
build_libretro_yabause build_libretro_yabause
build_libretro_vecx build_libretro_vecx
build_libretro_tgbdual build_libretro_tgbdual
@ -156,14 +168,21 @@ else
build_libretro_dinothawr build_libretro_dinothawr
build_libretro_virtualjaguar build_libretro_virtualjaguar
build_libretro_mupen64 build_libretro_mupen64
build_libretro_ffmpeg
build_libretro_3dengine build_libretro_3dengine
build_libretro_ppsspp if [ $FORMAT_COMPILER_TARGET != "ios" ]; then
# These don't currently build on iOS
build_libretro_bnes
build_libretro_ffmpeg
build_libretro_ppsspp
fi
build_libretro_o2em build_libretro_o2em
build_libretro_hatari build_libretro_hatari
build_libretro_gpsp build_libretro_gpsp
build_libretro_emux build_libretro_emux
build_libretro_test build_libretro_test
build_libretro_testgl if [ $FORMAT_COMPILER_TARGET != "ios" ]; then
build_summary build_libretro_testgl
fi
fi fi
build_summary

View File

@ -194,19 +194,10 @@ fi
#CORE BUILD SUMMARY #CORE BUILD SUMMARY
#================== #==================
# Remove this to enable the core build summary # Uncomment this to disable the core build summary
export BUILD_SUMMARY=1 # NOBUILD_SUMMARY=1
BUILD_SUMMARY=${WORKDIR}/build-summary.log BUILD_SUMMARY="$WORKDIR/build-summary.log"
BUILD_SUCCESS=${WORKDIR}/build-success.log
BUILD_FAIL=${WORKDIR}/build-fail.log
if [ -z "${BUILD_SUMMARY_FMT}" ]; then
if command -v column >/dev/null; then
BUILD_SUMMARY_FMT=column
else
BUILD_SUMMARY_FMT=cat
fi
fi
#USER DEFINES #USER DEFINES
@ -215,6 +206,6 @@ fi
#local libretro-config-user.sh file rather than here. #local libretro-config-user.sh file rather than here.
#The following below is just a sample. #The following below is just a sample.
if [ -f "${WORKDIR}/libretro-config-user.sh" ]; then if [ -f "$WORKDIR/libretro-config-user.sh" ]; then
. ${WORKDIR}/libretro-config-user.sh . "$WORKDIR/libretro-config-user.sh"
fi fi

View File

@ -24,8 +24,10 @@ fetch_git() {
git submodule foreach git pull origin master git submodule foreach git pull origin master
fi fi
else else
echo "git clone \"$1\" \"$WORKDIR/$2\"" clone_type=
git clone "$1" "$WORKDIR/$2" [ -n "$SHALLOW_CLONE" ] && depth="--depth 1"
echo "git clone $depth \"$1\" \"$WORKDIR/$2\""
git clone $depth "$1" "$WORKDIR/$2"
if [ -n "$4" ]; then if [ -n "$4" ]; then
echo "cd \"$fetch_dir\"" echo "cd \"$fetch_dir\""
cd "$fetch_dir" cd "$fetch_dir"