diff --git a/libretro-build-common.sh b/libretro-build-common.sh index 7cf9d859..7209a809 100755 --- a/libretro-build-common.sh +++ b/libretro-build-common.sh @@ -1,10 +1,57 @@ -#!/bin/bash +# vi: ts=3 sw=3 et ft=sh 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" if [ "${CC}" ] && [ "${CXX}" ]; then COMPILER="CC=\"${CC}\" CXX=\"${CXX}\"" else @@ -27,6 +74,11 @@ echo "${FORMAT_COMPILER_TARGET_ALT}" RESET_FORMAT_COMPILER_TARGET=$FORMAT_COMPILER_TARGET 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() { if [ -z "${NOBUILD_SUMMARY}" ]; then if [ "${1}" -eq "0" ]; then @@ -59,7 +111,7 @@ reset_compiler_targets() { } build_libretro_pcsx_rearmed_interpreter() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d 'libretro-pcsx_rearmed' ]; then echo '=== Building PCSX ReARMed Interpreter ===' cd libretro-pcsx_rearmed @@ -81,7 +133,7 @@ build_libretro_pcsx_rearmed_interpreter() { # $4 is Makefile name # $5 is preferred platform build_libretro_generic_makefile_subcore() { - cd $BASE_DIR + cd ${WORKDIR} if [ -d "libretro-${1}" ]; then echo "=== Building ${2} ===" cd libretro-${1}/ @@ -124,7 +176,7 @@ copy_core_to_dist() { # $3 is Makefile name # $4 is preferred platform build_libretro_generic_makefile() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d "libretro-${1}" ]; then echo "=== Building ${1} ===" cd libretro-${1} @@ -308,7 +360,6 @@ build_libretro_meteor() { } 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} } @@ -364,7 +415,7 @@ build_libretro_ppsspp() { build_libretro_mame() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d 'libretro-mame' ]; then echo '' echo '=== Building MAME ===' @@ -397,7 +448,7 @@ build_libretro_mame() { } build_libretro_mess() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d 'libretro-mame' ]; then echo '' echo '=== Building MESS ===' @@ -424,7 +475,7 @@ build_libretro_mess() { } rebuild_libretro_mess() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d 'libretro-mame' ]; then echo '' echo '=== Building MESS ===' @@ -451,7 +502,7 @@ rebuild_libretro_mess() { } build_libretro_ume() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d 'libretro-mame' ]; then echo '' echo '=== Building UME ===' @@ -478,7 +529,7 @@ build_libretro_ume() { } rebuild_libretro_ume() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d 'libretro-mame' ]; then echo '' echo '=== Building MESS ===' @@ -509,7 +560,7 @@ rebuild_libretro_ume() { # $3 is profile name # $4 is compiler build_libretro_bsnes_modern() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d "libretro-${1}" ]; then echo "=== Building ${1} ${3} ===" cd libretro-${1} @@ -540,7 +591,7 @@ build_libretro_bsnes_mercury() { build_libretro_bsnes_cplusplus98() { CORENAME="bsnes_cplusplus98" - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d "libretro-${CORENAME}" ]; then echo "=== Building ${CORENAME} ===" cd libretro-${CORENAME} @@ -557,7 +608,7 @@ build_libretro_bsnes_cplusplus98() { } build_libretro_bnes() { - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d 'libretro-bnes' ]; then echo '=== Building bNES ===' cd libretro-bnes @@ -576,7 +627,7 @@ build_libretro_bnes() { build_libretro_mupen64() { check_opengl - cd "${BASE_DIR}" + cd "${WORKDIR}" if [ -d 'libretro-mupen64plus' ]; then cd libretro-mupen64plus @@ -618,14 +669,14 @@ build_summary() { if [ -z "${NOBUILD_SUMMARY}" ]; then echo "=== Core Build Summary ===" > ${BUILD_SUMMARY} 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} else 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 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} else echo " 0 cores failed to build! :D" >> ${BUILD_SUMMARY} diff --git a/libretro-build.sh b/libretro-build.sh index 3e6bce69..ce0b9c38 100755 --- a/libretro-build.sh +++ b/libretro-build.sh @@ -1,93 +1,29 @@ -#!/bin/bash - -. ./libretro-config.sh +#! /bin/bash +# vi: sw=3 ts=3 et # BSDs don't have readlink -f read_link() { - TARGET_FILE="$1" - cd $(dirname "$TARGET_FILE") - TARGET_FILE=$(basename "$TARGET_FILE") + 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") + 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 + PHYS_DIR="`pwd -P`" + RESULT="${PHYS_DIR}/${TARGET_FILE}" + echo ${RESULT} } +SCRIPT="`read_link "$0"`" +BASE_DIR="`dirname "${SCRIPT}"`" +WORKDIR="`pwd`" -SCRIPT=$(read_link "$0") -echo "Script: $SCRIPT" -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 +. ${BASE_DIR}/libretro-config.sh +. ${BASE_DIR}/libretro-build-common.sh mkdir -p "$RARCH_DIST_DIR" diff --git a/libretro-config.sh b/libretro-config.sh index c5baefe9..bf953f59 100755 --- a/libretro-config.sh +++ b/libretro-config.sh @@ -1,82 +1,106 @@ #!/bin/bash +# vi: ts=3 sw=3 et # Architecture Assignment -[[ -z "$ARCH" ]] && ARCH="$(uname -m)" -case "$ARCH" in - x86_64) +config_cpu() { + [ -n "${2}" ] && ARCH=${1} + [ -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 - ;; - 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 + fi +} # Platform Assignment -[ -z "$platform" ] && platform="$(uname)" -case "$platform" in - *BSD*) - FORMAT_EXT='so' - FORMAT_COMPILER_TARGET=unix - DIST_DIR=bsd;; - osx|*Darwin*) - FORMAT_EXT='dylib' - FORMAT_COMPILER_TARGET=osx - DIST_DIR=osx;; - win|*mingw32*|*MINGW32*|*MSYS_NT*) - FORMAT_EXT='dll' - FORMAT_COMPILER_TARGET=win - DIST_DIR=win_x86;; - win64|*mingw64*|*MINGW64*) - FORMAT_EXT='dll' - FORMAT_COMPILER_TARGET=win - DIST_DIR=win_x64;; - *psp1*) - FORMAT_EXT='a' - FORMAT_COMPILER_TARGET=psp1 - DIST_DIR=psp1;; - *ios|theos_ios*) - FORMAT_EXT='dylib' - FORMAT_COMPILER_TARGET=theos_ios - DIST_DIR=theos;; - android) - FORMAT_EXT='so' - FORMAT_COMPILER_TARGET=android - DIST_DIR=android;; - *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 +config_platform() { + [ -n "${1}" ] && platform="${1}" + [ -z "${platform}" ] && platform="`uname`" + case "${platform}" in + *BSD*) + FORMAT_EXT="so" + FORMAT_COMPILER_TARGET="unix" + DIST_DIR="bsd" + ;; + osx|*Darwin*) + FORMAT_EXT="dylib" + FORMAT_COMPILER_TARGET="osx" + DIST_DIR="osx" + ;; + win|*mingw32*|*MINGW32*|*MSYS_NT*) + FORMAT_EXT="dll" + FORMAT_COMPILER_TARGET="win" + DIST_DIR="win_x86" + ;; + win64|*mingw64*|*MINGW64*) + FORMAT_EXT="dll" + FORMAT_COMPILER_TARGET="win" + DIST_DIR="win_x64" + ;; + *psp1*) + FORMAT_EXT="a" + FORMAT_COMPILER_TARGET="psp1" + DIST_DIR="psp1" + ;; + *ios|theos_ios*) + FORMAT_EXT="dylib" + FORMAT_COMPILER_TARGET="theos_ios" + DIST_DIR="theos" + ;; + android) + FORMAT_EXT="so" + FORMAT_COMPILER_TARGET="android" + DIST_DIR="android" + ;; + *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" -echo "ARCHITECTURE: $ARCH" -echo "TARGET: $FORMAT_COMPILER_TARGET" +config_cpu +config_platform +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 #export WRITERIGHTS=1 @@ -174,9 +198,9 @@ fi # Set this to disable the core build summary # export NOBUILD_SUMMARY=1 -BUILD_SUMMARY=$(pwd)/build-summary.log -BUILD_SUCCESS=$(pwd)/build-success.log -BUILD_FAIL=$(pwd)/build-fail.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 @@ -192,7 +216,7 @@ fi #local libretro-config-user.sh file rather than here. #The following below is just a sample. -if [ -f "libretro-config-user.sh" ]; then -. ./libretro-config-user.sh +if [ -f "${WORKDIR}/libretro-config-user.sh" ]; then + . ${WORKDIR}/libretro-config-user.sh fi diff --git a/libretro-fetch.sh b/libretro-fetch.sh index 3ceb5392..1caf84a7 100755 --- a/libretro-fetch.sh +++ b/libretro-fetch.sh @@ -1,7 +1,27 @@ #! /bin/bash # 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)