Merge pull request #169 from iKarith/master

Some build script refactoring
This commit is contained in:
Twinaphex 2015-02-03 08:18:57 +01:00
commit feeb2adca9
4 changed files with 205 additions and 174 deletions

View File

@ -1,10 +1,57 @@
#!/bin/bash # vi: ts=3 sw=3 et ft=sh
die() { die() {
echo $1 echo $1
#exit 1 #exit 1
} }
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 = "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 = "osx" ]; then
CXX=c++
CXX11="clang++ -std=c++11 -stdlib=libc++"
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
echo "CC = $CC"
echo "CXX = $CXX"
echo "STRIP = $STRIP"
if [ "${CC}" ] && [ "${CXX}" ]; then if [ "${CC}" ] && [ "${CXX}" ]; then
COMPILER="CC=\"${CC}\" CXX=\"${CXX}\"" COMPILER="CC=\"${CC}\" CXX=\"${CXX}\""
else else
@ -27,6 +74,11 @@ echo "${FORMAT_COMPILER_TARGET_ALT}"
RESET_FORMAT_COMPILER_TARGET=$FORMAT_COMPILER_TARGET 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
if [ -z "$RARCH_DIST_DIR" ]; then
RARCH_DIR="${WORKDIR}/dist"
RARCH_DIST_DIR="$RARCH_DIR/$DIST_DIR"
fi
build_summary_log() { build_summary_log() {
if [ -z "${NOBUILD_SUMMARY}" ]; then if [ -z "${NOBUILD_SUMMARY}" ]; then
if [ "${1}" -eq "0" ]; then if [ "${1}" -eq "0" ]; then
@ -59,7 +111,7 @@ reset_compiler_targets() {
} }
build_libretro_pcsx_rearmed_interpreter() { build_libretro_pcsx_rearmed_interpreter() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d 'libretro-pcsx_rearmed' ]; then if [ -d 'libretro-pcsx_rearmed' ]; then
echo '=== Building PCSX ReARMed Interpreter ===' echo '=== Building PCSX ReARMed Interpreter ==='
cd libretro-pcsx_rearmed cd libretro-pcsx_rearmed
@ -81,7 +133,7 @@ build_libretro_pcsx_rearmed_interpreter() {
# $4 is Makefile name # $4 is Makefile name
# $5 is preferred platform # $5 is preferred platform
build_libretro_generic_makefile_subcore() { build_libretro_generic_makefile_subcore() {
cd $BASE_DIR cd ${WORKDIR}
if [ -d "libretro-${1}" ]; then if [ -d "libretro-${1}" ]; then
echo "=== Building ${2} ===" echo "=== Building ${2} ==="
cd libretro-${1}/ cd libretro-${1}/
@ -124,7 +176,7 @@ copy_core_to_dist() {
# $3 is Makefile name # $3 is Makefile name
# $4 is preferred platform # $4 is preferred platform
build_libretro_generic_makefile() { build_libretro_generic_makefile() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d "libretro-${1}" ]; then if [ -d "libretro-${1}" ]; then
echo "=== Building ${1} ===" echo "=== Building ${1} ==="
cd libretro-${1} cd libretro-${1}
@ -308,7 +360,6 @@ build_libretro_meteor() {
} }
build_libretro_nestopia() { build_libretro_nestopia() {
echo command build_libretro_generic_makefile "nestopia" "libretro" "Makefile" ${FORMAT_COMPILER_TARGET}
build_libretro_generic_makefile "nestopia" "libretro" "Makefile" ${FORMAT_COMPILER_TARGET} build_libretro_generic_makefile "nestopia" "libretro" "Makefile" ${FORMAT_COMPILER_TARGET}
} }
@ -364,7 +415,7 @@ build_libretro_ppsspp() {
build_libretro_mame() { build_libretro_mame() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d 'libretro-mame' ]; then if [ -d 'libretro-mame' ]; then
echo '' echo ''
echo '=== Building MAME ===' echo '=== Building MAME ==='
@ -397,7 +448,7 @@ build_libretro_mame() {
} }
build_libretro_mess() { build_libretro_mess() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d 'libretro-mame' ]; then if [ -d 'libretro-mame' ]; then
echo '' echo ''
echo '=== Building MESS ===' echo '=== Building MESS ==='
@ -424,7 +475,7 @@ build_libretro_mess() {
} }
rebuild_libretro_mess() { rebuild_libretro_mess() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d 'libretro-mame' ]; then if [ -d 'libretro-mame' ]; then
echo '' echo ''
echo '=== Building MESS ===' echo '=== Building MESS ==='
@ -451,7 +502,7 @@ rebuild_libretro_mess() {
} }
build_libretro_ume() { build_libretro_ume() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d 'libretro-mame' ]; then if [ -d 'libretro-mame' ]; then
echo '' echo ''
echo '=== Building UME ===' echo '=== Building UME ==='
@ -478,7 +529,7 @@ build_libretro_ume() {
} }
rebuild_libretro_ume() { rebuild_libretro_ume() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d 'libretro-mame' ]; then if [ -d 'libretro-mame' ]; then
echo '' echo ''
echo '=== Building MESS ===' echo '=== Building MESS ==='
@ -509,7 +560,7 @@ rebuild_libretro_ume() {
# $3 is profile name # $3 is profile name
# $4 is compiler # $4 is compiler
build_libretro_bsnes_modern() { build_libretro_bsnes_modern() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d "libretro-${1}" ]; then if [ -d "libretro-${1}" ]; then
echo "=== Building ${1} ${3} ===" echo "=== Building ${1} ${3} ==="
cd libretro-${1} cd libretro-${1}
@ -540,7 +591,7 @@ build_libretro_bsnes_mercury() {
build_libretro_bsnes_cplusplus98() { build_libretro_bsnes_cplusplus98() {
CORENAME="bsnes_cplusplus98" CORENAME="bsnes_cplusplus98"
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d "libretro-${CORENAME}" ]; then if [ -d "libretro-${CORENAME}" ]; then
echo "=== Building ${CORENAME} ===" echo "=== Building ${CORENAME} ==="
cd libretro-${CORENAME} cd libretro-${CORENAME}
@ -557,7 +608,7 @@ build_libretro_bsnes_cplusplus98() {
} }
build_libretro_bnes() { build_libretro_bnes() {
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d 'libretro-bnes' ]; then if [ -d 'libretro-bnes' ]; then
echo '=== Building bNES ===' echo '=== Building bNES ==='
cd libretro-bnes cd libretro-bnes
@ -576,7 +627,7 @@ build_libretro_bnes() {
build_libretro_mupen64() { build_libretro_mupen64() {
check_opengl check_opengl
cd "${BASE_DIR}" cd "${WORKDIR}"
if [ -d 'libretro-mupen64plus' ]; then if [ -d 'libretro-mupen64plus' ]; then
cd libretro-mupen64plus cd libretro-mupen64plus
@ -618,14 +669,14 @@ build_summary() {
if [ -z "${NOBUILD_SUMMARY}" ]; then if [ -z "${NOBUILD_SUMMARY}" ]; then
echo "=== Core Build Summary ===" > ${BUILD_SUMMARY} echo "=== Core Build Summary ===" > ${BUILD_SUMMARY}
if [ -r "${BUILD_SUCCESS}" ]; then if [ -r "${BUILD_SUCCESS}" ]; then
echo "$(wc -l < ${BUILD_SUCCESS}) core(s) successfully built:" >> ${BUILD_SUMMARY} echo "`wc -l < ${BUILD_SUCCESS}` core(s) successfully built:" >> ${BUILD_SUMMARY}
${BUILD_SUMMARY_FMT} ${BUILD_SUCCESS} >> ${BUILD_SUMMARY} ${BUILD_SUMMARY_FMT} ${BUILD_SUCCESS} >> ${BUILD_SUMMARY}
else else
echo " 0 cores successfully built. :(" >> ${BUILD_SUMMARY} echo " 0 cores successfully built. :(" >> ${BUILD_SUMMARY}
echo "$(wc -l < ${BUILD_FAIL}) core(s) failed to build:" echo "`wc -l < ${BUILD_FAIL}` core(s) failed to build:"
fi fi
if [ -r "${BUILD_FAIL}" ]; then if [ -r "${BUILD_FAIL}" ]; then
echo "$(wc -l < ${BUILD_FAIL}) core(s) failed to build:" >> ${BUILD_SUMMARY} echo "`wc -l < ${BUILD_FAIL}` core(s) failed to build:" >> ${BUILD_SUMMARY}
${BUILD_SUMMARY_FMT} ${BUILD_FAIL} >> ${BUILD_SUMMARY} ${BUILD_SUMMARY_FMT} ${BUILD_FAIL} >> ${BUILD_SUMMARY}
else else
echo " 0 cores failed to build! :D" >> ${BUILD_SUMMARY} echo " 0 cores failed to build! :D" >> ${BUILD_SUMMARY}

View File

@ -1,93 +1,29 @@
#!/bin/bash #! /bin/bash
# vi: sw=3 ts=3 et
. ./libretro-config.sh
# BSDs don't have readlink -f # BSDs don't have readlink -f
read_link() read_link()
{ {
TARGET_FILE="$1" TARGET_FILE="${1}"
cd $(dirname "$TARGET_FILE") cd "`dirname "${TARGET_FILE}"`"
TARGET_FILE=$(basename "$TARGET_FILE") TARGET_FILE="`basename "${TARGET_FILE}"`"
while [ -L "$TARGET_FILE" ] while [ -L "${TARGET_FILE}" ]; do
do TARGET_FILE="`readlink "${TARGET_FILE}"`"
TARGET_FILE=$(readlink "$TARGET_FILE") cd "`dirname "${TARGET_FILE}"`"
cd $(dirname "$TARGET_FILE") TARGET_FILE="`basename "${TARGET_FILE}"`"
TARGET_FILE=$(basename "$TARGET_FILE")
done done
PHYS_DIR=$(pwd -P) PHYS_DIR="`pwd -P`"
RESULT="$PHYS_DIR/$TARGET_FILE" RESULT="${PHYS_DIR}/${TARGET_FILE}"
echo $RESULT echo ${RESULT}
} }
SCRIPT="`read_link "$0"`"
BASE_DIR="`dirname "${SCRIPT}"`"
WORKDIR="`pwd`"
SCRIPT=$(read_link "$0") . ${BASE_DIR}/libretro-config.sh
echo "Script: $SCRIPT" . ${BASE_DIR}/libretro-build-common.sh
BASE_DIR=$(dirname "$SCRIPT")
if [ -z "$RARCH_DIST_DIR" ]; then
RARCH_DIR="$BASE_DIR/dist"
RARCH_DIST_DIR="$RARCH_DIR/$DIST_DIR"
fi
if [ -z "$JOBS" ]; then
JOBS=7
fi
die()
{
echo $1
#exit 1
}
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 = "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 = "osx" ]; then
CXX=c++
CXX11="clang++ -std=c++11 -stdlib=libc++"
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
echo "CC = $CC"
echo "CXX = $CXX"
echo "STRIP = $STRIP"
. ./libretro-build-common.sh
mkdir -p "$RARCH_DIST_DIR" mkdir -p "$RARCH_DIST_DIR"

View File

@ -1,82 +1,106 @@
#!/bin/bash #!/bin/bash
# vi: ts=3 sw=3 et
# Architecture Assignment # Architecture Assignment
[[ -z "$ARCH" ]] && ARCH="$(uname -m)" config_cpu() {
case "$ARCH" in [ -n "${2}" ] && ARCH=${1}
x86_64) [ -z "${ARCH}" ] && ARCH="`uname -m`"
case "${ARCH}" in
x86_64)
X86=true
X86_64=true
;;
i386|i686)
X86=true
;;
armv*)
ARM=true
export FORMAT_COMPILER_TARGET=armv
export RARCHCFLAGS="${RARCHCFLAGS} -marm"
case "${ARCH}" in
armv5tel) ARMV5=true ;;
armv6l) ARMV6=true ;;
armv7l) ARMV7=true ;;
esac
;;
esac
if [ -n "${PROCESSOR_ARCHITEW6432}" -a "${PROCESSOR_ARCHITEW6432}" = "AMD64" ]; then
ARCH=x86_64
X86=true && X86_64=true X86=true && X86_64=true
;; fi
i686) X86=true;; }
armv*)
ARM=true && export FORMAT_COMPILER_TARGET=armv
export RARCHCFLAGS="${RARCHCFLAGS} -marm"
case "$ARCH" in
armv5tel) ARMV5=true;;
armv6l) ARMV6=true;;
armv7l) ARMV7=true;;
esac;;
esac
if [[ -n "$PROCESSOR_ARCHITEW6432" && $PROCESSOR_ARCHITEW6432 -eq "AMD64" ]]; then
ARCH=x86_64
X86=true && X86_64=true
fi
if [ -z "$JOBS" ]; then
if command -v nproc >/dev/null; then
JOBS=$(nproc)
else
JOBS=1
fi
fi
# Platform Assignment # Platform Assignment
[ -z "$platform" ] && platform="$(uname)" config_platform() {
case "$platform" in [ -n "${1}" ] && platform="${1}"
*BSD*) [ -z "${platform}" ] && platform="`uname`"
FORMAT_EXT='so' case "${platform}" in
FORMAT_COMPILER_TARGET=unix *BSD*)
DIST_DIR=bsd;; FORMAT_EXT="so"
osx|*Darwin*) FORMAT_COMPILER_TARGET="unix"
FORMAT_EXT='dylib' DIST_DIR="bsd"
FORMAT_COMPILER_TARGET=osx ;;
DIST_DIR=osx;; osx|*Darwin*)
win|*mingw32*|*MINGW32*|*MSYS_NT*) FORMAT_EXT="dylib"
FORMAT_EXT='dll' FORMAT_COMPILER_TARGET="osx"
FORMAT_COMPILER_TARGET=win DIST_DIR="osx"
DIST_DIR=win_x86;; ;;
win64|*mingw64*|*MINGW64*) win|*mingw32*|*MINGW32*|*MSYS_NT*)
FORMAT_EXT='dll' FORMAT_EXT="dll"
FORMAT_COMPILER_TARGET=win FORMAT_COMPILER_TARGET="win"
DIST_DIR=win_x64;; DIST_DIR="win_x86"
*psp1*) ;;
FORMAT_EXT='a' win64|*mingw64*|*MINGW64*)
FORMAT_COMPILER_TARGET=psp1 FORMAT_EXT="dll"
DIST_DIR=psp1;; FORMAT_COMPILER_TARGET="win"
*ios|theos_ios*) DIST_DIR="win_x64"
FORMAT_EXT='dylib' ;;
FORMAT_COMPILER_TARGET=theos_ios *psp1*)
DIST_DIR=theos;; FORMAT_EXT="a"
android) FORMAT_COMPILER_TARGET="psp1"
FORMAT_EXT='so' DIST_DIR="psp1"
FORMAT_COMPILER_TARGET=android ;;
DIST_DIR=android;; *ios|theos_ios*)
*android-armv7*) FORMAT_EXT="dylib"
FORMAT_EXT='so' FORMAT_COMPILER_TARGET="theos_ios"
FORMAT_COMPILER_TARGET=android-armv7 DIST_DIR="theos"
DIST_DIR=android/armeabi-v7a;; ;;
*) android)
FORMAT_EXT='so' FORMAT_EXT="so"
FORMAT_COMPILER_TARGET=unix FORMAT_COMPILER_TARGET="android"
DIST_DIR=unix;; DIST_DIR="android"
esac ;;
*android-armv7*)
FORMAT_EXT="so"
FORMAT_COMPILER_TARGET="android-armv7"
DIST_DIR="android/armeabi-v7a"
;;
*)
FORMAT_EXT="so"
FORMAT_COMPILER_TARGET="unix"
DIST_DIR="unix"
;;
esac
export FORMAT_COMPILER_TARGET_ALT="$FORMAT_COMPILER_TARGET"
}
export FORMAT_COMPILER_TARGET_ALT="$FORMAT_COMPILER_TARGET" config_log_build_host() {
echo "PLATFORM: ${platform}"
echo "ARCHITECTURE: ${ARCH}"
echo "TARGET: ${FORMAT_COMPILER_TARGET}"
}
echo "PLATFORM: $platform" config_cpu
echo "ARCHITECTURE: $ARCH" config_platform
echo "TARGET: $FORMAT_COMPILER_TARGET" config_log_build_host
if [ -z "${JOBS}" ]; then
if command -v nproc >/dev/null; then
JOBS=`nproc`
else
JOBS=1
fi
fi
#if uncommented, will fetch repos with read+write access. Useful for committers #if uncommented, will fetch repos with read+write access. Useful for committers
#export WRITERIGHTS=1 #export WRITERIGHTS=1
@ -174,9 +198,9 @@ fi
# Set this to disable the core build summary # Set this to disable the core build summary
# export NOBUILD_SUMMARY=1 # export NOBUILD_SUMMARY=1
BUILD_SUMMARY=$(pwd)/build-summary.log BUILD_SUMMARY=${WORKDIR}/build-summary.log
BUILD_SUCCESS=$(pwd)/build-success.log BUILD_SUCCESS=${WORKDIR}/build-success.log
BUILD_FAIL=$(pwd)/build-fail.log BUILD_FAIL=${WORKDIR}/build-fail.log
if [ -z "${BUILD_SUMMARY_FMT}" ]; then if [ -z "${BUILD_SUMMARY_FMT}" ]; then
if command -v column >/dev/null; then if command -v column >/dev/null; then
BUILD_SUMMARY_FMT=column BUILD_SUMMARY_FMT=column
@ -192,7 +216,7 @@ 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 "libretro-config-user.sh" ]; then if [ -f "${WORKDIR}/libretro-config-user.sh" ]; then
. ./libretro-config-user.sh . ${WORKDIR}/libretro-config-user.sh
fi fi

View File

@ -1,7 +1,27 @@
#! /bin/bash #! /bin/bash
# vi: sw=3 ts=3 et # vi: sw=3 ts=3 et
. ./libretro-config.sh # BSDs don't have readlink -f
read_link()
{
TARGET_FILE="${1}"
cd "`dirname "${TARGET_FILE}"`"
TARGET_FILE="`basename "${TARGET_FILE}"`"
while [ -L "${TARGET_FILE}" ]; do
TARGET_FILE="`readlink "${TARGET_FILE}"`"
cd "`dirname "${TARGET_FILE}"`"
TARGET_FILE="`basename "${TARGET_FILE}"`"
done
PHYS_DIR="`pwd -P`"
RESULT="${PHYS_DIR}/${TARGET_FILE}"
echo ${RESULT}
}
SCRIPT="`read_link "$0"`"
BASE_DIR="`dirname "${SCRIPT}"`"
. ${BASE_DIR}/libretro-config.sh
WORKDIR=$(pwd) WORKDIR=$(pwd)