mirror of
https://github.com/libretro/libretro-super
synced 2024-12-26 18:26:06 +00:00
1027 lines
27 KiB
Bash
1027 lines
27 KiB
Bash
# vim: set ts=3 sw=3 noet ft=sh : bash
|
|
|
|
# The platform variable is normally not set at the time libretro-config is
|
|
# included by libretro-build.sh. Other platform scripts may begin to include
|
|
# libretro-config as well if they define their platform-specific code in the
|
|
# case block below. This is a band-aid fix that we will address after 1.1 is
|
|
# released.
|
|
|
|
#if uncommented, will build experimental cores as well which are not yet fit for release.
|
|
#export BUILD_EXPERIMENTAL=1
|
|
|
|
#ARM DEFINES
|
|
#===========
|
|
|
|
#if uncommented, will build cores with Cortex A8 compiler optimizations
|
|
#export CORTEX_A8=1
|
|
|
|
#if uncommented, will build cores with Cortex A9 compiler optimizations
|
|
#export CORTEX_A9=1
|
|
|
|
#if uncommented, will build cores with ARM hardfloat ABI
|
|
#export ARM_HARDFLOAT=1
|
|
|
|
#if uncommented, will build cores with ARM softfloat ABI
|
|
#export ARM_SOFTFLOAT=1
|
|
|
|
#if uncommented, will build cores with ARM NEON support (ARMv7+ only)
|
|
#export ARM_NEON=1
|
|
|
|
#OPENGL DEFINES
|
|
#==============
|
|
|
|
#if uncommented, will build libretro GL cores. Ignored for mobile platforms - GL cores will always be built there.
|
|
export BUILD_LIBRETRO_GL=1
|
|
|
|
#if uncommented, will build cores with OpenGL ES 2 support. Not needed
|
|
#for platform-specific cores - only for generic core builds (ie. libretro-build.sh)
|
|
#export ENABLE_GLES=1
|
|
|
|
#Statically link cores
|
|
#export STATIC_LINKING=1
|
|
|
|
#ANDROID DEFINES
|
|
#================
|
|
|
|
export TARGET_ABIS="armeabi-v7a arm64-v8a x86 x86_64"
|
|
|
|
#uncomment to define NDK standalone toolchain for ARM
|
|
#export NDK_ROOT_DIR_ARM =
|
|
|
|
#uncomment to define NDK standalone toolchain for MIPS
|
|
#export NDK_ROOT_DIR_MIPS =
|
|
|
|
#uncomment to define NDK standalone toolchain for x86
|
|
#export NDK_ROOT_DIR_X86 =
|
|
|
|
# android version target if GLES is in use
|
|
export NDK_GL_HEADER_VER=android-18
|
|
|
|
# android version target if GLES is not in use
|
|
export NDK_NO_GL_HEADER_VER=android-9
|
|
|
|
# Retroarch target android API level
|
|
export RA_ANDROID_API=android-18
|
|
|
|
# Retroarch minimum API level (defines low end android version compatability)
|
|
export RA_ANDROID_MIN_API=android-9
|
|
|
|
|
|
#OSX DEFINES
|
|
#===========
|
|
|
|
# Define this to skip the universal build
|
|
# export NOUNIVERSAL=1
|
|
|
|
# ARCHFLAGS is a very convenient way of doing this for simple/obvious cores
|
|
# that don't need anything defined on the command line for 32 vs 64 bit
|
|
# systems, however it won't work for anything that does. For that, you need
|
|
# to do two separate builds, one for each arch, and then do something like:
|
|
# lipo -create core_i386.dylib core_x86_64.dylib -output core_ub.dylib
|
|
#
|
|
# If building on 10.5/10.6, it's possible that you could actually build a UB
|
|
# for Intel/PowerPC, but please don't. ;) Consider this a proof of concept
|
|
# for now just to test a few cores.
|
|
|
|
if [[ "$FORMAT_COMPILER_TARGET" = "osx" && -z "$NOUNIVERSAL" ]]; then
|
|
case "$ARCH" in
|
|
i386|x86_64)
|
|
export ARCHFLAGS="-arch i386 -arch x86_64"
|
|
;;
|
|
Power*|ppc|ppc64)
|
|
export ARCHFLAGS="-arch ppc -arch ppc64"
|
|
;;
|
|
*)
|
|
echo "Will not build universal binaries for unknown ARCH=\"$ARCH\""
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# OUTPUT AND LOGGING
|
|
# ==================
|
|
#
|
|
# This is kind of an inline design document that'll be changed for basic user
|
|
# instructions when the logging system is finished and tested.
|
|
#
|
|
# libretro-super has two kinds of output, the basic kind showing what the
|
|
# script is doing in a big-picture sense, and the commands and output from
|
|
# individual commands. End-users don't necessarily need to see this more
|
|
# detailed output, except when we're talking about huge cores like mame.
|
|
#
|
|
# If each can be directed to null, to the screen, to a log file, or to both
|
|
# the screen and a log file, you end up with a matrix os 16 possibilities. Of
|
|
# those, only a few are truly useful:
|
|
#
|
|
# Basic Detailed Useful to
|
|
# screen screen developer/end-user w/ space issues
|
|
# screen both developer
|
|
# both both developer
|
|
# screen log end-user
|
|
# log log buildbot
|
|
#
|
|
# What this tells me is that we need to log by default, as long as we kill
|
|
# old logfiles to avoid filling your HD with gigabytes of mame build logs.
|
|
# Output should go to both screen and log for developers, but users don't need
|
|
# to see the make commands, etc. Being able to disable both would be useful,
|
|
# but that a near-term TODO item. That just leaves being able to squelch the
|
|
# screen output for buildbot usage, and that's just > /dev/null on the command
|
|
# line, so not our problem here.
|
|
#
|
|
# Again, the ability to turn OFF these logs will be wanted very soon.
|
|
|
|
# Uncomment this to avoid clobbering logs
|
|
#LIBRETRO_LOG_APPEND=1
|
|
|
|
# Change this to adjust where logs are written
|
|
#LIBRETRO_LOG_DIR="$WORKDIR/log"
|
|
|
|
# Change this to rename the libretro-super main log file
|
|
#LIBRETRO_LOG_SUPER="libretro-super.log"
|
|
|
|
# Change this to rename core log files (%s for core's "safe" name)
|
|
#LIBRETRO_LOG_CORE="%s.log"
|
|
|
|
# Comment this if you don't need to see developer output
|
|
LIBRETRO_DEVELOPER=1
|
|
|
|
|
|
# BUILD_REVISIONS
|
|
# ===============
|
|
#
|
|
# libretro-super can save a revision string (e.g., the git sha hash) for any
|
|
# core it has compiled. If this feature is enabled, it will check if the
|
|
# revison string has changed before it compiles the core. This can speed up
|
|
# the build process for end-users and buildbots, and it also results in nightly
|
|
# build directories being smaller. It is not enabled by default because it
|
|
# cannot know about uncommitted changes in a working directory.
|
|
|
|
# Set this to enable the feature
|
|
#SKIP_UNCHANGED=1
|
|
|
|
# Set this if you don't like the default
|
|
#BUILD_REVISIONS_DIR="$WORKDIR/build-revisions"
|
|
|
|
|
|
# COLOR IN OUTPUT
|
|
# ===============
|
|
#
|
|
# If you don't like ANSI-style color in your output, uncomment this line.
|
|
#NO_COLOR=1
|
|
|
|
# If you want to force it even in log files, uncomment this line.
|
|
#FORCE_COLOR=1
|
|
|
|
#USER DEFINES
|
|
#------------
|
|
#These options should be defined inside your own
|
|
#local libretro-config-user.sh file rather than here.
|
|
#The following below is just a sample.
|
|
|
|
if [ -f "$WORKDIR/libretro-config-user.sh" ]; then
|
|
. "$WORKDIR/libretro-config-user.sh"
|
|
fi
|
|
|
|
case "$platform" in
|
|
##
|
|
## Configs that did not use libretro-config originally
|
|
## TODO: Integrate this with everything else (post-1.1)
|
|
##
|
|
|
|
emscripten)
|
|
DIST_DIR="emscripten"
|
|
FORMAT_EXT=bc
|
|
FORMAT=_emscripten
|
|
FORMAT_COMPILER_TARGET=emscripten
|
|
FORMAT_COMPILER_TARGET_ALT=emscripten
|
|
;;
|
|
ios)
|
|
# NOTE: This config requires a Mac with an Xcode installation. These
|
|
# scripts will work at least as far as 10.5 that we're sure of, but
|
|
# we build with clang targeting iOS >= 5. We'll accept patches for
|
|
# older versions of iOS.
|
|
|
|
DIST_DIR="ios"
|
|
FORMAT_EXT=dylib
|
|
IOS=1
|
|
ARCH=armv7
|
|
FORMAT=_ios
|
|
FORMAT_COMPILER_TARGET=ios
|
|
FORMAT_COMPILER_TARGET_ALT=ios
|
|
export IOSSDK=$(xcodebuild -version -sdk iphoneos Path)
|
|
MIN_IOS5="-miphoneos-version-min=5.0"
|
|
MIN_IOS7="-miphoneos-version-min=7.0"
|
|
|
|
# Use generic names rather than gcc/clang to better support both
|
|
CC="cc -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
|
|
CXX="c++ -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
|
|
CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
|
|
;;
|
|
|
|
ios9)
|
|
# NOTE: This config requires a Mac with an Xcode installation. These
|
|
# scripts will work at least as far as 10.5 that we're sure of, but
|
|
# we build with clang targeting iOS >= 5. We'll accept patches for
|
|
# older versions of iOS.
|
|
|
|
DIST_DIR="ios9"
|
|
FORMAT_EXT=dylib
|
|
IOS=1
|
|
ARCH=armv7
|
|
FORMAT=_ios
|
|
FORMAT_COMPILER_TARGET=ios9
|
|
FORMAT_COMPILER_TARGET_ALT=ios9
|
|
export IOSSDK=$(xcodebuild -version -sdk iphoneos Path)
|
|
MIN_IOS5="-miphoneos-version-min=5.0"
|
|
MIN_IOS7="-miphoneos-version-min=7.0"
|
|
|
|
# Use generic names rather than gcc/clang to better support both
|
|
CC="cc -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
CXX="c++ -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
;;
|
|
|
|
ios10)
|
|
DIST_DIR="ios10"
|
|
FORMAT_EXT=dylib
|
|
IOS=1
|
|
ARCH=armv7 arm64
|
|
FORMAT=_ios
|
|
FORMAT_COMPILER_TARGET=ios10
|
|
FORMAT_COMPILER_TARGET_ALT=ios10
|
|
export IOSSDK=$(xcodebuild -version -sdk iphoneos Path)
|
|
|
|
# Use generic names rather than gcc/clang to better support both
|
|
CC="cc -arch armv7 -arch arm64 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
CXX="c++ -arch armv7 -arch arm64 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -arch arm64 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
;;
|
|
|
|
ios-arm64)
|
|
DIST_DIR="ios-arm64"
|
|
FORMAT_EXT=dylib
|
|
IOS=1
|
|
ARCH=arm64
|
|
FORMAT=_ios
|
|
FORMAT_COMPILER_TARGET=ios-arm64
|
|
FORMAT_COMPILER_TARGET_ALT=ios-arm64
|
|
export IOSSDK=$(xcodebuild -version -sdk iphoneos Path)
|
|
|
|
# Use generic names rather than gcc/clang to better support both
|
|
CC="cc -arch arm64 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
CXX="c++ -arch arm64 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
CXX11="clang++ -std=c++11 -stdlib=libc++ -arch arm64 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
|
|
CXX17="clang++ -std=c++17 -stdlib=libc++ -arch arm64 -isysroot $IOSSDK"
|
|
;;
|
|
|
|
tvos-arm64)
|
|
DIST_DIR="tvos-arm64"
|
|
FORMAT_EXT=dylib
|
|
IOS=1
|
|
ARCH=arm64
|
|
FORMAT=_tvos
|
|
FORMAT_COMPILER_TARGET=tvos-arm64
|
|
FORMAT_COMPILER_TARGET_ALT=tvos-arm64
|
|
export IOSSDK=$(xcodebuild -version -sdk appletvos Path)
|
|
|
|
# Use generic names rather than gcc/clang to better support both
|
|
CC="cc -arch arm64 -marm -mtvos-version-min=9.0 -isysroot $IOSSDK"
|
|
CXX="c++ -arch arm64 -marm -mtvos-version-min=9.0 -isysroot $IOSSDK"
|
|
CXX11="clang++ -std=c++11 -stdlib=libc++ -arch arm64 -marm -mtvos-version-min=9.0 -isysroot $IOSSDK"
|
|
CXX17="clang++ -std=c++17 -stdlib=libc++ -arch arm64 -isysroot $IOSSDK"
|
|
;;
|
|
|
|
|
|
android-x86_64)
|
|
FORMAT_ABI="x86_64"
|
|
DIST_DIR="android/${FORMAT_ABI}"
|
|
FORMAT_EXT=so
|
|
FORMAT=".android_${FORMAT_ABI}"
|
|
FORMAT_COMPILER_TARGET=android_${FORMAT_ABI}
|
|
FORMAT_COMPILER_TARGET_ALT=android_${FORMAT_ABI}
|
|
FORMAT_ABI_ANDROID=yes
|
|
UNAME_PLATFORM="$(uname)"
|
|
HOST_PLATFORM="linux"
|
|
|
|
case "$UNAME_PLATFORM" in
|
|
osx|*Darwin*)
|
|
HOST_PLATFORM="darwin"
|
|
;;
|
|
win|*mingw32*|*MINGW32*|*MSYS_NT*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
win64|*mingw64*|*MINGW64*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
esac
|
|
export NDK_ROOT_DIR
|
|
CC="$NDK_ROOT_DIR/toolchains/x86_64-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/x86_64-linux-android-gcc"
|
|
CXX="$NDK_ROOT_DIR/toolchains/x86_64-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/x86_64-linux-android-g++"
|
|
CXX11="$NDK_ROOT_DIR/toolchains/x86_64-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/x86_64-linux-android-g++"
|
|
;;
|
|
|
|
android-x86)
|
|
FORMAT_ABI="x86"
|
|
DIST_DIR="android/${FORMAT_ABI}"
|
|
FORMAT_EXT=so
|
|
FORMAT=".android_${FORMAT_ABI}"
|
|
FORMAT_COMPILER_TARGET=android_${FORMAT_ABI}
|
|
FORMAT_COMPILER_TARGET_ALT=android_${FORMAT_ABI}
|
|
FORMAT_ABI_ANDROID=yes
|
|
UNAME_PLATFORM="$(uname)"
|
|
HOST_PLATFORM="linux"
|
|
|
|
case "$UNAME_PLATFORM" in
|
|
osx|*Darwin*)
|
|
HOST_PLATFORM="darwin"
|
|
;;
|
|
win|*mingw32*|*MINGW32*|*MSYS_NT*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
win64|*mingw64*|*MINGW64*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
esac
|
|
export NDK_ROOT_DIR
|
|
CC="$NDK_ROOT_DIR/toolchains/x86-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/i686-linux-android-gcc"
|
|
CXX="$NDK_ROOT_DIR/toolchains/x86-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/i686-linux-android-g++"
|
|
CXX11="$NDK_ROOT_DIR/toolchains/x86-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/i686-linux-android-g++"
|
|
;;
|
|
|
|
android-armeabi)
|
|
FORMAT_ABI="armeabi"
|
|
DIST_DIR="android/${FORMAT_ABI}"
|
|
FORMAT_EXT=so
|
|
FORMAT=".android_${FORMAT_ABI}"
|
|
FORMAT_COMPILER_TARGET=android_${FORMAT_ABI}
|
|
FORMAT_COMPILER_TARGET_ALT=android_${FORMAT_ABI}
|
|
FORMAT_ABI_ANDROID=yes
|
|
UNAME_PLATFORM="$(uname)"
|
|
HOST_PLATFORM="linux"
|
|
|
|
case "$UNAME_PLATFORM" in
|
|
osx|*Darwin*)
|
|
HOST_PLATFORM="darwin"
|
|
;;
|
|
win|*mingw32*|*MINGW32*|*MSYS_NT*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
win64|*mingw64*|*MINGW64*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
esac
|
|
export NDK_ROOT_DIR
|
|
CC="$NDK_ROOT_DIR/toolchains/arm-linux-androideabi-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/arm-linux-androideabi-gcc"
|
|
CXX="$NDK_ROOT_DIR/toolchains/arm-linux-androideabi-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/arm-linux-androideabi-g++"
|
|
CXX11="$NDK_ROOT_DIR/toolchains/arm-linux-androideabi-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/arm-linux-androideabi-g++"
|
|
;;
|
|
|
|
android-armeabi_v7a)
|
|
FORMAT_ABI="armeabi-v7a"
|
|
DIST_DIR="android/${FORMAT_ABI}"
|
|
FORMAT_EXT=so
|
|
FORMAT=".android_${FORMAT_ABI}"
|
|
FORMAT_COMPILER_TARGET=android_armeabi-v7a
|
|
FORMAT_COMPILER_TARGET_ALT=android_armeabi-v7a
|
|
FORMAT_ABI_ANDROID=yes
|
|
UNAME_PLATFORM="$(uname)"
|
|
HOST_PLATFORM="linux"
|
|
|
|
case "$UNAME_PLATFORM" in
|
|
osx|*Darwin*)
|
|
HOST_PLATFORM="darwin"
|
|
;;
|
|
win|*mingw32*|*MINGW32*|*MSYS_NT*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
win64|*mingw64*|*MINGW64*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
esac
|
|
export NDK_ROOT_DIR
|
|
CC="$NDK_ROOT_DIR/toolchains/arm-linux-androideabi-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/arm-linux-androideabi-gcc"
|
|
CXX="$NDK_ROOT_DIR/toolchains/arm-linux-androideabi-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/arm-linux-androideabi-g++"
|
|
CXX11="$NDK_ROOT_DIR/toolchains/arm-linux-androideabi-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/arm-linux-androideabi-g++"
|
|
;;
|
|
|
|
android-arm64_v8a)
|
|
FORMAT_ABI="arm64-v8a"
|
|
DIST_DIR="android/${FORMAT_ABI}"
|
|
FORMAT_EXT=so
|
|
FORMAT=".android_${FORMAT_ABI}"
|
|
FORMAT_COMPILER_TARGET=android_arm64-v8a
|
|
FORMAT_COMPILER_TARGET_ALT=android_arm64-v8a
|
|
FORMAT_ABI_ANDROID=yes
|
|
UNAME_PLATFORM="$(uname)"
|
|
HOST_PLATFORM="linux"
|
|
|
|
case "$UNAME_PLATFORM" in
|
|
osx|*Darwin*)
|
|
HOST_PLATFORM="darwin"
|
|
;;
|
|
win|*mingw32*|*MINGW32*|*MSYS_NT*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
win64|*mingw64*|*MINGW64*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
esac
|
|
export NDK_ROOT_DIR
|
|
CC="$NDK_ROOT_DIR/toolchains/aarch64-linux-android-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/aarch64-linux-android-gcc"
|
|
CXX="$NDK_ROOT_DIR/toolchains/aarch64-linux-android-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/aarch64-linux-android-g++"
|
|
CXX11="$NDK_ROOT_DIR/toolchains/aarch64-linux-android-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/aarch64-linux-android-g++"
|
|
;;
|
|
|
|
android-mips)
|
|
FORMAT_ABI="mips"
|
|
DIST_DIR="android/${FORMAT_ABI}"
|
|
FORMAT_EXT=so
|
|
FORMAT=".android_${FORMAT_ABI}"
|
|
FORMAT_COMPILER_TARGET=android_${FORMAT_ABI}
|
|
FORMAT_COMPILER_TARGET_ALT=android_${FORMAT_ABI}
|
|
FORMAT_ABI_ANDROID=yes
|
|
UNAME_PLATFORM="$(uname)"
|
|
HOST_PLATFORM="linux"
|
|
|
|
case "$UNAME_PLATFORM" in
|
|
osx|*Darwin*)
|
|
HOST_PLATFORM="darwin"
|
|
;;
|
|
win|*mingw32*|*MINGW32*|*MSYS_NT*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
win64|*mingw64*|*MINGW64*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
esac
|
|
export NDK_ROOT_DIR
|
|
CC="$NDK_ROOT_DIR/toolchains/mipsel-linux-android-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/mipsel-linux-android-gcc"
|
|
CXX="$NDK_ROOT_DIR/toolchains/mipsel-linux-android-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/mipsel-linux-android-g++"
|
|
CXX11="$NDK_ROOT_DIR/toolchains/mipsel-linux-android-4.8/prebuilt/${HOST_PLATFORM}-x86_64/bin/mipsel-linux-android-g++"
|
|
;;
|
|
|
|
android-mips64)
|
|
FORMAT_ABI="mips64"
|
|
DIST_DIR="android/${FORMAT_ABI}"
|
|
FORMAT_EXT=so
|
|
FORMAT=".android_${FORMAT_ABI}"
|
|
FORMAT_COMPILER_TARGET=android_${FORMAT_ABI}
|
|
FORMAT_COMPILER_TARGET_ALT=android_${FORMAT_ABI}
|
|
FORMAT_ABI_ANDROID=yes
|
|
UNAME_PLATFORM="$(uname)"
|
|
HOST_PLATFORM="linux"
|
|
|
|
case "$UNAME_PLATFORM" in
|
|
osx|*Darwin*)
|
|
HOST_PLATFORM="darwin"
|
|
;;
|
|
win|*mingw32*|*MINGW32*|*MSYS_NT*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
win64|*mingw64*|*MINGW64*)
|
|
HOST_PLATFORM="windows"
|
|
;;
|
|
esac
|
|
export NDK_ROOT_DIR
|
|
CC="$NDK_ROOT_DIR/toolchains/mips64el-linux-android-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/mips64el-linux-android-gcc"
|
|
CXX="$NDK_ROOT_DIR/toolchains/mips64el-linux-android-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/mips64el-linux-android-g++"
|
|
CXX11="$NDK_ROOT_DIR/toolchains/mips64el-linux-android-4.9/prebuilt/${HOST_PLATFORM}-x86_64/bin/mips64el-linux-android-g++"
|
|
;;
|
|
|
|
qnx)
|
|
DIST_DIR="qnx"
|
|
FORMAT_EXT=so
|
|
FORMAT=_qnx
|
|
FORMAT_COMPILER_TARGET=qnx
|
|
FORMAT_COMPILER_TARGET_ALT=qnx
|
|
|
|
CC="qcc -Vgcc_ntoarmv7le"
|
|
CXX="QCC -Vgcc_ntoarmv7le_cpp"
|
|
CXX11="QCC -Vgcc_ntoarmv7le_cpp"
|
|
;;
|
|
|
|
psp1)
|
|
DIST_DIR="psp1"
|
|
FORMAT_EXT=a
|
|
FORMAT=_psp1
|
|
FORMAT_COMPILER_TARGET=psp1
|
|
FORMAT_COMPILER_TARGET_ALT=psp1
|
|
|
|
CC="psp-gcc${BINARY_EXT}"
|
|
CXX="psp-g++${BINARY_EXT}"
|
|
;;
|
|
|
|
psl1ght)
|
|
DIST_DIR="psl1ght"
|
|
FORMAT_EXT=a
|
|
FORMAT=_psl1ght
|
|
FORMAT_COMPILER_TARGET=psl1ght
|
|
FORMAT_COMPILER_TARGET_ALT=psl1ght
|
|
|
|
CC="powerpc64-ps3-elf-gcc${BINARY_EXT}"
|
|
CXX="powerpc64-ps3-elf-g++${BINARY_EXT}"
|
|
;;
|
|
|
|
ps2)
|
|
DIST_DIR="ps2"
|
|
FORMAT_EXT=a
|
|
FORMAT=_ps2
|
|
FORMAT_COMPILER_TARGET=ps2
|
|
FORMAT_COMPILER_TARGET_ALT=ps2
|
|
|
|
CC="mips64r5900el-ps2-elf-gcc${BINARY_EXT}"
|
|
CXX="mips64r5900el-ps2-elf-g++${BINARY_EXT}"
|
|
;;
|
|
|
|
ctr)
|
|
DIST_DIR="ctr"
|
|
FORMAT_EXT=a
|
|
FORMAT=_ctr
|
|
FORMAT_COMPILER_TARGET=ctr
|
|
FORMAT_COMPILER_TARGET_ALT=ctr
|
|
|
|
CC="$DEVKITARM/bin/arm-none-eabi-gcc$BINARY_EXT"
|
|
CXX="$DEVKITARM/bin/arm-none-eabi-g++$BINARY_EXT"
|
|
AR="$DEVKITARM/bin/arm-none-eabi-ar$BINARY_EXT"
|
|
;;
|
|
|
|
vita)
|
|
DIST_DIR="vita"
|
|
FORMAT_EXT=a
|
|
FORMAT=_vita
|
|
FORMAT_COMPILER_TARGET=vita
|
|
FORMAT_COMPILER_TARGET_ALT=vita
|
|
|
|
CC="arm-vita-eabi-gcc${BINARY_EXT}"
|
|
CXX="arm-vita-eabi-g++${BINARY_EXT}"
|
|
;;
|
|
|
|
ps3)
|
|
DIST_DIR="ps3"
|
|
FORMAT_EXT=a
|
|
FORMAT_COMPILER_TARGET=ps3
|
|
FORMAT_COMPILER_TARGET_ALT=sncps3
|
|
FORMAT=_ps3
|
|
|
|
CC="ppu-lv2-gcc.exe"
|
|
CXX="ppu-lv2-g++.exe"
|
|
;;
|
|
|
|
ngc)
|
|
DIST_DIR="ngc"
|
|
FORMAT_EXT=a
|
|
FORMAT_COMPILER_TARGET=ngc
|
|
FORMAT_COMPILER_TARGET_ALT=ngc
|
|
FORMAT=_ngc
|
|
|
|
CC="$DEVKITPPC/bin/powerpc-eabi-gcc$BINARY_EXT"
|
|
CXX="$DEVKITPPC/bin/powerpc-eabi-g++$BINARY_EXT"
|
|
AR="$DEVKITPPC/bin/powerpc-eabi-ar$BINARY_EXT"
|
|
;;
|
|
|
|
wii)
|
|
DIST_DIR="wii"
|
|
FORMAT_EXT=a
|
|
FORMAT_COMPILER_TARGET=wii
|
|
FORMAT_COMPILER_TARGET_ALT=wii
|
|
FORMAT=_wii
|
|
|
|
CC="$DEVKITPPC/bin/powerpc-eabi-gcc$BINARY_EXT"
|
|
CXX="$DEVKITPPC/bin/powerpc-eabi-g++$BINARY_EXT"
|
|
AR="$DEVKITPPC/bin/powerpc-eabi-ar$BINARY_EXT"
|
|
;;
|
|
|
|
xbox1)
|
|
DIST_DIR="xbox1"
|
|
FORMAT_EXT=lib
|
|
FORMAT_COMPILER_TARGET=xbox1_msvc2003
|
|
FORMAT_COMPILER_TARGET_ALT=xbox1_msvc2003
|
|
FORMAT=_xdk1
|
|
BINARY_EXT=.exe
|
|
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
|
|
;;
|
|
|
|
xbox360)
|
|
DIST_DIR="xbox360"
|
|
FORMAT_EXT=lib
|
|
FORMAT_COMPILER_TARGET=xbox360_msvc2010
|
|
FORMAT_COMPILER_TARGET_ALT=xbox360_msvc2010
|
|
FORMAT=_xdk360
|
|
BINARY_EXT=.exe
|
|
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
|
|
;;
|
|
|
|
wiiu)
|
|
DIST_DIR="wiiu"
|
|
FORMAT_EXT=a
|
|
FORMAT_COMPILER_TARGET=wiiu
|
|
FORMAT_COMPILER_TARGET_ALT=wiiu
|
|
FORMAT=_wiiu
|
|
|
|
CC="$DEVKITPPC/bin/powerpc-eabi-gcc$BINARY_EXT"
|
|
CXX="$DEVKITPPC/bin/powerpc-eabi-g++$BINARY_EXT"
|
|
AR="$DEVKITPPC/bin/powerpc-eabi-ar$BINARY_EXT"
|
|
;;
|
|
|
|
switch)
|
|
DIST_DIR="switch"
|
|
FORMAT_EXT=a
|
|
FORMAT_COMPILER_TARGET=switch
|
|
FORMAT_COMPILER_TARGET_ALT=switch
|
|
FORMAT=_switch
|
|
|
|
CC="clang$BINARY_EXT"
|
|
CXX="clang++$BINARY_EXT"
|
|
AR="llvm-ar$BINARY_EXT"
|
|
|
|
;;
|
|
|
|
libnx)
|
|
DIST_DIR="libnx"
|
|
FORMAT_EXT=a
|
|
FORMAT_COMPILER_TARGET=libnx
|
|
FORMAT_COMPILER_TARGET_ALT=libnx
|
|
FORMAT=_libnx
|
|
|
|
CC="$DEVKITPRO/devkitA64/bin/aarch64-none-elf-gcc$BINARY_EXT"
|
|
CXX="$DEVKITPRO/devkitA64/bin/aarch64-none-elf-g++$BINARY_EXT"
|
|
AR="$DEVKITPRO/devkitA64/bin/aarch64-none-elf-ar$BINARY_EXT"
|
|
|
|
;;
|
|
|
|
sncps3)
|
|
DIST_DIR="ps3"
|
|
FORMAT_EXT=a
|
|
FORMAT_COMPILER_TARGET=sncps3
|
|
FORMAT=_ps3
|
|
|
|
CC="$CELL_SDK/host-win32/sn/bin/ps3ppusnc.exe"
|
|
CXX="$CELL_SDK/host-win32/sn/bin/ps3ppusnc.exe"
|
|
;;
|
|
|
|
theos_ios)
|
|
DIST_DIR="theos_ios"
|
|
BUILD_PRODUCT_PREFIX="objs/obj"
|
|
FORMAT_EXT=dylib
|
|
IOS=1
|
|
ARCH=armv7
|
|
FORMAT=_ios
|
|
FORMAT_COMPILER_TARGET=theos_ios
|
|
FORMAT_COMPILER_TARGET_ALT=theos_ios
|
|
|
|
# Make sure that the cross bins you need are first in your path
|
|
CXX11="clang++ -std=c++11 -stdlib=libc++ -miphoneos-version-min=5.0"
|
|
|
|
;;
|
|
|
|
##
|
|
## Original libretro-config path
|
|
##
|
|
*)
|
|
|
|
# Architecture Assignment
|
|
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
|
|
fi
|
|
}
|
|
|
|
# Platform Assignment
|
|
config_platform() {
|
|
[ -n "$1" ] && platform="$1"
|
|
[ -z "$platform" ] && platform="$(uname)"
|
|
case "$platform" in
|
|
*BSD*)
|
|
platform=bsd
|
|
FORMAT_EXT="so"
|
|
BINARY_EXT=""
|
|
FORMAT_COMPILER_TARGET="unix"
|
|
DIST_DIR="bsd"
|
|
;;
|
|
*Haiku*)
|
|
platform=haiku
|
|
FORMAT_EXT="so"
|
|
BINARY_EXT=""
|
|
FORMAT_COMPILER_TARGET="unix"
|
|
DIST_DIR="haiku"
|
|
;;
|
|
osx|*Darwin*)
|
|
platform=osx
|
|
FORMAT_EXT="dylib"
|
|
BINARY_EXT=""
|
|
FORMAT_COMPILER_TARGET="osx"
|
|
case "$ARCH" in
|
|
x86_64|i386|Power*|ppc*)
|
|
DIST_DIR="osx-$ARCH"
|
|
;;
|
|
*)
|
|
DIST_DIR="osx-unknown"
|
|
;;
|
|
esac
|
|
;;
|
|
msvc2003_x86)
|
|
platform=windows_msvc2003_x86
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2003_x86"
|
|
DIST_DIR="msvc2003_x86"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2005_x86)
|
|
platform=windows_msvc2005_x86
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2005_x86"
|
|
DIST_DIR="msvc2005_x86"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2008_x86)
|
|
platform=windows_msvc2008_x86
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2008_x86"
|
|
DIST_DIR="msvc2008_x86"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2010_x86)
|
|
platform=windows_msvc2010_x86
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2010_x86"
|
|
DIST_DIR="msvc2010_x86"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2010_x64)
|
|
platform=windows_msvc2010_x64
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2010_x64"
|
|
DIST_DIR="msvc2010_x64"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2015_x86)
|
|
platform=windows_msvc2015_x86
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2015_x86"
|
|
DIST_DIR="msvc2015_x86"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2015_x64)
|
|
platform=windows_msvc2015_x64
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2015_x64"
|
|
DIST_DIR="msvc2015_x64"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2017_desktop_x86)
|
|
platform=windows_msvc2017_desktop_x86
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2017_desktop_x86"
|
|
DIST_DIR="msvc2017_desktop_x86"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2017_desktop_x64)
|
|
platform=windows_msvc2017_desktop_x64
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2017_desktop_x64"
|
|
DIST_DIR="msvc2017_desktop_x64"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2017_uwp_x86)
|
|
platform=windows_msvc2017_uwp_x86
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2017_uwp_x86"
|
|
DIST_DIR="msvc2017_uwp_x86"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2017_uwp_x64)
|
|
platform=windows_msvc2017_uwp_x64
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2017_uwp_x64"
|
|
DIST_DIR="msvc2017_uwp_x64"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
msvc2017_uwp_arm)
|
|
platform=windows_msvc2017_uwp_arm
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="windows_msvc2017_uwp_arm"
|
|
DIST_DIR="msvc2017_uwp_arm"
|
|
CC="cl.exe"
|
|
CXX="cl.exe"
|
|
CXX11="cl.exe"
|
|
;;
|
|
win|*mingw32*|*MINGW32*|*MSYS_NT*)
|
|
platform=win
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="win"
|
|
DIST_DIR="win_x86"
|
|
;;
|
|
win64|*mingw64*|*MINGW64*)
|
|
platform=win
|
|
FORMAT_EXT="dll"
|
|
BINARY_EXT=".exe"
|
|
FORMAT_COMPILER_TARGET="win"
|
|
DIST_DIR="win_x64"
|
|
;;
|
|
*psp1*)
|
|
platform=psp1
|
|
FORMAT_EXT="a"
|
|
FORMAT_COMPILER_TARGET="psp1"
|
|
DIST_DIR="psp1"
|
|
;;
|
|
*ctr*)
|
|
platform=ctr
|
|
FORMAT_EXT="a"
|
|
FORMAT_COMPILER_TARGET="ctr"
|
|
DIST_DIR="ctr"
|
|
;;
|
|
*emscripten*)
|
|
platform=emscripten
|
|
FORMAT_EXT="bc"
|
|
FORMAT_COMPILER_TARGET="emscripten"
|
|
DIST_DIR="emscripten"
|
|
;;
|
|
*vita*)
|
|
platform=vita
|
|
FORMAT_EXT="a"
|
|
FORMAT_COMPILER_TARGET="vita"
|
|
DIST_DIR="vita"
|
|
;;
|
|
*ps3*)
|
|
platform=ps3
|
|
FORMAT_EXT="a"
|
|
FORMAT_COMPILER_TARGET="ps3"
|
|
FORMAT_COMPILER_TARGET_ALT="sncps3"
|
|
DIST_DIR="ps3"
|
|
;;
|
|
*wii*)
|
|
platform=wii
|
|
FORMAT_EXT="a"
|
|
FORMAT_COMPILER_TARGET="wii"
|
|
DIST_DIR="wii"
|
|
;;
|
|
*ngc*)
|
|
platform=ngc
|
|
FORMAT_EXT="a"
|
|
FORMAT_COMPILER_TARGET="ngc"
|
|
DIST_DIR="ngc"
|
|
;;
|
|
android-x86_64)
|
|
platform=android-x86_64
|
|
FORMAT_EXT="so"
|
|
FORMAT_COMPILER_TARGET="${platform}"
|
|
DIST_DIR="android/x86_64"
|
|
;;
|
|
android-x86)
|
|
platform=android-x86
|
|
FORMAT_EXT="so"
|
|
FORMAT_COMPILER_TARGET="${platform}"
|
|
DIST_DIR="android/x86"
|
|
;;
|
|
android-armeabi)
|
|
platform=android-armeabi
|
|
FORMAT_EXT="so"
|
|
FORMAT_COMPILER_TARGET="${platform}"
|
|
DIST_DIR="android/armeabi"
|
|
;;
|
|
android-armeabi_v7a)
|
|
platform=android-armeabi_v7a
|
|
FORMAT_EXT="so"
|
|
FORMAT_COMPILER_TARGET="${platform}"
|
|
DIST_DIR="android/armeabi-v7a"
|
|
;;
|
|
android-arm64_v8a)
|
|
platform=android-arm64_v8a
|
|
FORMAT_EXT="so"
|
|
FORMAT_COMPILER_TARGET="${platform}"
|
|
DIST_DIR="android/arm64-v8a"
|
|
;;
|
|
android-mips)
|
|
platform=android-mips
|
|
FORMAT_EXT="so"
|
|
FORMAT_COMPILER_TARGET="${platform}"
|
|
DIST_DIR="android/mips"
|
|
;;
|
|
android-mips64)
|
|
platform=android-mips64
|
|
FORMAT_EXT="so"
|
|
FORMAT_COMPILER_TARGET="${platform}"
|
|
DIST_DIR="android/mips64"
|
|
;;
|
|
theos_ios*)
|
|
platform=theos_ios
|
|
FORMAT_EXT="dylib"
|
|
FORMAT_COMPILER_TARGET="theos_ios"
|
|
DIST_DIR="theos_ios"
|
|
;;
|
|
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"
|
|
;;
|
|
linux-armv7-neon)
|
|
FORMAT_EXT="so"
|
|
FORMAT_COMPILER_TARGET="unix-armv7-hardfloat-neon"
|
|
DIST_DIR="unix"
|
|
;;
|
|
*)
|
|
BINARY_EXT=""
|
|
FORMAT_COMPILER_TARGET="unix"
|
|
if [ -n "$STATIC_LINKING" ]; then
|
|
FORMAT=_unix
|
|
FORMAT_EXT="a"
|
|
DIST_DIR="unix-static"
|
|
else
|
|
FORMAT_EXT="so"
|
|
DIST_DIR="unix"
|
|
fi
|
|
;;
|
|
esac
|
|
export FORMAT_COMPILER_TARGET_ALT="$FORMAT_COMPILER_TARGET"
|
|
}
|
|
|
|
config_log_build_host() {
|
|
echo "PLATFORM: $platform"
|
|
echo "ARCHITECTURE: $ARCH"
|
|
echo "TARGET: $FORMAT_COMPILER_TARGET"
|
|
}
|
|
|
|
config_cpu
|
|
config_platform
|
|
config_log_build_host
|
|
|
|
if [ -z "$JOBS" ]; then
|
|
# nproc is generally Linux-specific.
|
|
if command -v nproc >/dev/null; then
|
|
JOBS="$(nproc)"
|
|
elif [ "$platform" = "osx" ] && command -v sysctl >/dev/null; then
|
|
JOBS="$(sysctl -n hw.physicalcpu)"
|
|
else
|
|
JOBS=1
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|