mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-09-28 16:15:55 +08:00
Improve Android pause/resume behavior.
This commit is contained in:
Executable
+135
@@ -0,0 +1,135 @@
|
||||
#!/bin/bash
|
||||
|
||||
SOURCES=()
|
||||
MKSOURCES=""
|
||||
CURDIR=`pwd -P`
|
||||
|
||||
# Fetch sources
|
||||
if [[ $# -ge 2 ]]; then
|
||||
for src in ${@:2}
|
||||
do
|
||||
SOURCES+=($src)
|
||||
MKSOURCES="$MKSOURCES $(basename $src)"
|
||||
done
|
||||
else
|
||||
if [ -n "$1" ]; then
|
||||
while read src
|
||||
do
|
||||
SOURCES+=($src)
|
||||
MKSOURCES="$MKSOURCES $(basename $src)"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$1" ] || [ -z "$SOURCES" ]; then
|
||||
echo "Usage: androidbuild.sh com.yourcompany.yourapp < sources.list"
|
||||
echo "Usage: androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c"
|
||||
echo "To copy SDL source instead of symlinking: COPYSOURCE=1 androidbuild.sh ... "
|
||||
echo "You can pass additional arguments to ndk-build with the NDKARGS variable: NDKARGS=\"-s\" androidbuild.sh ..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
SDLPATH="$( cd "$(dirname "$0")/.." ; pwd -P )"
|
||||
|
||||
NDKBUILD=`which ndk-build`
|
||||
if [ -z "$NDKBUILD" ];then
|
||||
echo "Could not find the ndk-build utility, install Android's NDK and add it to the path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ANDROID=`which android`
|
||||
if [ -z "$ANDROID" ];then
|
||||
echo "Could not find the android utility, install Android's SDK and add it to the path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ANT=`which ant`
|
||||
|
||||
if [ -z "$ANT" ];then
|
||||
echo "Could not find the ant utility, install Android's SDK and add it to the path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NCPUS="1"
|
||||
case "$OSTYPE" in
|
||||
darwin*)
|
||||
NCPU=`sysctl -n hw.ncpu`
|
||||
;;
|
||||
linux*)
|
||||
if [ -n `which nproc` ]; then
|
||||
NCPUS=`nproc`
|
||||
fi
|
||||
;;
|
||||
*);;
|
||||
esac
|
||||
|
||||
APP="$1"
|
||||
APPARR=(${APP//./ })
|
||||
BUILDPATH="$SDLPATH/build/$APP"
|
||||
|
||||
# Start Building
|
||||
|
||||
rm -rf $BUILDPATH
|
||||
mkdir -p $BUILDPATH
|
||||
|
||||
cp -r $SDLPATH/android-project/* $BUILDPATH
|
||||
|
||||
# Copy SDL sources
|
||||
mkdir -p $BUILDPATH/jni/SDL
|
||||
if [ -z "$COPYSOURCE" ]; then
|
||||
ln -s $SDLPATH/src $BUILDPATH/jni/SDL
|
||||
ln -s $SDLPATH/include $BUILDPATH/jni/SDL
|
||||
else
|
||||
cp -r $SDLPATH/src $BUILDPATH/jni/SDL
|
||||
cp -r $SDLPATH/include $BUILDPATH/jni/SDL
|
||||
fi
|
||||
|
||||
cp -r $SDLPATH/Android.mk $BUILDPATH/jni/SDL
|
||||
sed -i "s|YourSourceHere.c|$MKSOURCES|g" $BUILDPATH/jni/src/Android.mk
|
||||
sed -i "s|org\.libsdl\.app|$APP|g" $BUILDPATH/AndroidManifest.xml
|
||||
|
||||
# Copy user sources
|
||||
for src in "${SOURCES[@]}"
|
||||
do
|
||||
cp $src $BUILDPATH/jni/src
|
||||
done
|
||||
|
||||
# Create an inherited Activity
|
||||
cd $BUILDPATH/src
|
||||
for folder in "${APPARR[@]}"
|
||||
do
|
||||
mkdir -p $folder
|
||||
cd $folder
|
||||
done
|
||||
|
||||
ACTIVITY="${folder}Activity"
|
||||
sed -i "s|SDLActivity|$ACTIVITY|g" $BUILDPATH/AndroidManifest.xml
|
||||
sed -i "s|SDLActivity|$APP|g" $BUILDPATH/build.xml
|
||||
|
||||
# Fill in a default Activity
|
||||
echo "package $APP;" > "$ACTIVITY.java"
|
||||
echo "import org.libsdl.app.SDLActivity;" >> "$ACTIVITY.java"
|
||||
echo "public class $ACTIVITY extends SDLActivity {}" >> "$ACTIVITY.java"
|
||||
|
||||
# Update project and build
|
||||
cd $BUILDPATH
|
||||
android update project --path $BUILDPATH
|
||||
$NDKBUILD -j $NCPUS $NDKARGS
|
||||
$ANT debug
|
||||
|
||||
cd $CURDIR
|
||||
|
||||
APK="$BUILDPATH/bin/$APP-debug.apk"
|
||||
|
||||
if [ -f "$APK" ]; then
|
||||
echo "Your APK is ready at $APK"
|
||||
echo "To install to your device: "
|
||||
echo "cd $BUILDPATH"
|
||||
echo "ant debug install"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "There was an error building the APK"
|
||||
exit 1
|
||||
Vendored
+1541
File diff suppressed because it is too large
Load Diff
Vendored
+1786
File diff suppressed because it is too large
Load Diff
Executable
+101
@@ -0,0 +1,101 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Build Universal binaries on Mac OS X, thanks Ryan!
|
||||
#
|
||||
# Usage: ./configure CXX="sh g++-fat.sh" && make && rm -rf x86 x64
|
||||
|
||||
DEVELOPER="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer"
|
||||
|
||||
# Intel 32-bit compiler flags (10.6 runtime compatibility)
|
||||
GCC_COMPILE_X86="g++ -arch i386 -mmacosx-version-min=10.5 \
|
||||
-I/usr/local/include"
|
||||
|
||||
GCC_LINK_X86="-mmacosx-version-min=10.5"
|
||||
|
||||
# Intel 64-bit compiler flags (10.6 runtime compatibility)
|
||||
GCC_COMPILE_X64="g++ -arch x86_64 -mmacosx-version-min=10.6 \
|
||||
-I/usr/local/include"
|
||||
|
||||
GCC_LINK_X64="-mmacosx-version-min=10.6"
|
||||
|
||||
# Output both PowerPC and Intel object files
|
||||
args="$*"
|
||||
compile=yes
|
||||
link=yes
|
||||
while test x$1 != x; do
|
||||
case $1 in
|
||||
--version) exec g++ $1;;
|
||||
-v) exec g++ $1;;
|
||||
-V) exec g++ $1;;
|
||||
-print-prog-name=*) exec g++ $1;;
|
||||
-print-search-dirs) exec g++ $1;;
|
||||
-E) GCC_COMPILE_X86="$GCC_COMPILE_X86 -E"
|
||||
GCC_COMPILE_X64="$GCC_COMPILE_X64 -E"
|
||||
compile=no; link=no;;
|
||||
-c) link=no;;
|
||||
-o) output=$2;;
|
||||
*.c|*.cc|*.cpp|*.S) source=$1;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
if test x$link = xyes; then
|
||||
GCC_COMPILE_X86="$GCC_COMPILE_X86 $GCC_LINK_X86"
|
||||
GCC_COMPILE_X64="$GCC_COMPILE_X64 $GCC_LINK_X64"
|
||||
fi
|
||||
if test x"$output" = x; then
|
||||
if test x$link = xyes; then
|
||||
output=a.out
|
||||
elif test x$compile = xyes; then
|
||||
output=`echo $source | sed -e 's|.*/||' -e 's|\(.*\)\.[^\.]*|\1|'`.o
|
||||
fi
|
||||
fi
|
||||
|
||||
# Compile X86 32-bit
|
||||
if test x"$output" != x; then
|
||||
dir=x86/`dirname $output`
|
||||
if test -d $dir; then
|
||||
:
|
||||
else
|
||||
mkdir -p $dir
|
||||
fi
|
||||
fi
|
||||
set -- $args
|
||||
while test x$1 != x; do
|
||||
if test -f "x86/$1" && test "$1" != "$output"; then
|
||||
x86_args="$x86_args x86/$1"
|
||||
else
|
||||
x86_args="$x86_args $1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
$GCC_COMPILE_X86 $x86_args || exit $?
|
||||
if test x"$output" != x; then
|
||||
cp $output x86/$output
|
||||
fi
|
||||
|
||||
# Compile X86 32-bit
|
||||
if test x"$output" != x; then
|
||||
dir=x64/`dirname $output`
|
||||
if test -d $dir; then
|
||||
:
|
||||
else
|
||||
mkdir -p $dir
|
||||
fi
|
||||
fi
|
||||
set -- $args
|
||||
while test x$1 != x; do
|
||||
if test -f "x64/$1" && test "$1" != "$output"; then
|
||||
x64_args="$x64_args x64/$1"
|
||||
else
|
||||
x64_args="$x64_args $1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
$GCC_COMPILE_X64 $x64_args || exit $?
|
||||
if test x"$output" != x; then
|
||||
cp $output x64/$output
|
||||
fi
|
||||
|
||||
if test x"$output" != x; then
|
||||
lipo -create -o $output x86/$output x64/$output
|
||||
fi
|
||||
Executable
+102
@@ -0,0 +1,102 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Build Universal binaries on Mac OS X, thanks Ryan!
|
||||
#
|
||||
# Usage: ./configure CC="sh gcc-fat.sh" && make && rm -rf x86 x64
|
||||
|
||||
DEVELOPER="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer"
|
||||
|
||||
# Intel 32-bit compiler flags (10.5 runtime compatibility)
|
||||
GCC_COMPILE_X86="gcc -arch i386 -mmacosx-version-min=10.5 \
|
||||
-I/usr/local/include"
|
||||
|
||||
GCC_LINK_X86="-mmacosx-version-min=10.5"
|
||||
|
||||
# Intel 64-bit compiler flags (10.6 runtime compatibility)
|
||||
GCC_COMPILE_X64="gcc -arch x86_64 -mmacosx-version-min=10.6 \
|
||||
-DMAC_OS_X_VERSION_MIN_REQUIRED=1050 \
|
||||
-I/usr/local/include"
|
||||
|
||||
GCC_LINK_X64="-mmacosx-version-min=10.6"
|
||||
|
||||
# Output both PowerPC and Intel object files
|
||||
args="$*"
|
||||
compile=yes
|
||||
link=yes
|
||||
while test x$1 != x; do
|
||||
case $1 in
|
||||
--version) exec gcc $1;;
|
||||
-v) exec gcc $1;;
|
||||
-V) exec gcc $1;;
|
||||
-print-prog-name=*) exec gcc $1;;
|
||||
-print-search-dirs) exec gcc $1;;
|
||||
-E) GCC_COMPILE_X86="$GCC_COMPILE_X86 -E"
|
||||
GCC_COMPILE_X64="$GCC_COMPILE_X64 -E"
|
||||
compile=no; link=no;;
|
||||
-c) link=no;;
|
||||
-o) output=$2;;
|
||||
*.c|*.cc|*.cpp|*.S) source=$1;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
if test x$link = xyes; then
|
||||
GCC_COMPILE_X86="$GCC_COMPILE_X86 $GCC_LINK_X86"
|
||||
GCC_COMPILE_X64="$GCC_COMPILE_X64 $GCC_LINK_X64"
|
||||
fi
|
||||
if test x"$output" = x; then
|
||||
if test x$link = xyes; then
|
||||
output=a.out
|
||||
elif test x$compile = xyes; then
|
||||
output=`echo $source | sed -e 's|.*/||' -e 's|\(.*\)\.[^\.]*|\1|'`.o
|
||||
fi
|
||||
fi
|
||||
|
||||
# Compile X86 32-bit
|
||||
if test x"$output" != x; then
|
||||
dir=x86/`dirname $output`
|
||||
if test -d $dir; then
|
||||
:
|
||||
else
|
||||
mkdir -p $dir
|
||||
fi
|
||||
fi
|
||||
set -- $args
|
||||
while test x$1 != x; do
|
||||
if test -f "x86/$1" && test "$1" != "$output"; then
|
||||
x86_args="$x86_args x86/$1"
|
||||
else
|
||||
x86_args="$x86_args $1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
$GCC_COMPILE_X86 $x86_args || exit $?
|
||||
if test x"$output" != x; then
|
||||
cp $output x86/$output
|
||||
fi
|
||||
|
||||
# Compile X86 32-bit
|
||||
if test x"$output" != x; then
|
||||
dir=x64/`dirname $output`
|
||||
if test -d $dir; then
|
||||
:
|
||||
else
|
||||
mkdir -p $dir
|
||||
fi
|
||||
fi
|
||||
set -- $args
|
||||
while test x$1 != x; do
|
||||
if test -f "x64/$1" && test "$1" != "$output"; then
|
||||
x64_args="$x64_args x64/$1"
|
||||
else
|
||||
x64_args="$x64_args $1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
$GCC_COMPILE_X64 $x64_args || exit $?
|
||||
if test x"$output" != x; then
|
||||
cp $output x64/$output
|
||||
fi
|
||||
|
||||
if test x"$output" != x; then
|
||||
lipo -create -o $output x86/$output x64/$output
|
||||
fi
|
||||
Executable
+323
File diff suppressed because it is too large
Load Diff
Executable
+277
File diff suppressed because it is too large
Load Diff
Executable
+9655
File diff suppressed because it is too large
Load Diff
Executable
+99
@@ -0,0 +1,99 @@
|
||||
#! /bin/sh
|
||||
# mkinstalldirs --- make directory hierarchy
|
||||
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
# Created: 1993-05-16
|
||||
# Public domain
|
||||
|
||||
errstatus=0
|
||||
dirmode=""
|
||||
|
||||
usage="\
|
||||
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
|
||||
|
||||
# process command line arguments
|
||||
while test $# -gt 0 ; do
|
||||
case "${1}" in
|
||||
-h | --help | --h* ) # -h for help
|
||||
echo "${usage}" 1>&2; exit 0 ;;
|
||||
-m ) # -m PERM arg
|
||||
shift
|
||||
test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
|
||||
dirmode="${1}"
|
||||
shift ;;
|
||||
-- ) shift; break ;; # stop option processing
|
||||
-* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
|
||||
* ) break ;; # first non-opt arg
|
||||
esac
|
||||
done
|
||||
|
||||
for file
|
||||
do
|
||||
if test -d "$file"; then
|
||||
shift
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
case $# in
|
||||
0) exit 0 ;;
|
||||
esac
|
||||
|
||||
case $dirmode in
|
||||
'')
|
||||
if mkdir -p -- . 2>/dev/null; then
|
||||
echo "mkdir -p -- $*"
|
||||
exec mkdir -p -- "$@"
|
||||
fi ;;
|
||||
*)
|
||||
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
|
||||
echo "mkdir -m $dirmode -p -- $*"
|
||||
exec mkdir -m "$dirmode" -p -- "$@"
|
||||
fi ;;
|
||||
esac
|
||||
|
||||
for file
|
||||
do
|
||||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||
shift
|
||||
|
||||
pathcomp=
|
||||
for d
|
||||
do
|
||||
pathcomp="$pathcomp$d"
|
||||
case "$pathcomp" in
|
||||
-* ) pathcomp=./$pathcomp ;;
|
||||
esac
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
echo "mkdir $pathcomp"
|
||||
|
||||
mkdir "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
errstatus=$lasterr
|
||||
else
|
||||
if test ! -z "$dirmode"; then
|
||||
echo "chmod $dirmode $pathcomp"
|
||||
|
||||
lasterr=""
|
||||
chmod "$dirmode" "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -z "$lasterr"; then
|
||||
errstatus=$lasterr
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
pathcomp="$pathcomp/"
|
||||
done
|
||||
done
|
||||
|
||||
exit $errstatus
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 3
|
||||
# End:
|
||||
# mkinstalldirs ends here
|
||||
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This is the script buildbot.libsdl.org uses to cross-compile SDL2 from
|
||||
# x86 Linux to Raspberry Pi.
|
||||
|
||||
# The final tarball can be unpacked in the root directory of a RPi,
|
||||
# so the SDL2 install lands in /usr/local. Run ldconfig, and then
|
||||
# you should be able to build and run SDL2-based software on your
|
||||
# Pi. Standard configure scripts should be able to find SDL and
|
||||
# build against it, and sdl2-config should work correctly on the
|
||||
# actual device.
|
||||
|
||||
TARBALL="$1"
|
||||
if [ -z $1 ]; then
|
||||
TARBALL=sdl-raspberrypi.tar.bz2
|
||||
fi
|
||||
|
||||
OSTYPE=`uname -s`
|
||||
if [ "$OSTYPE" != "Linux" ]; then
|
||||
# !!! FIXME
|
||||
echo "This only works on x86 or x64-64 Linux at the moment." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "x$MAKE" == "x" ]; then
|
||||
NCPU=`cat /proc/cpuinfo |grep vendor_id |wc -l`
|
||||
let NCPU=$NCPU+1
|
||||
MAKE="make -j$NCPU"
|
||||
fi
|
||||
|
||||
BUILDBOTDIR="raspberrypi-buildbot"
|
||||
PARENTDIR="$PWD"
|
||||
|
||||
set -e
|
||||
set -x
|
||||
rm -f $TARBALL
|
||||
rm -rf $BUILDBOTDIR
|
||||
mkdir -p $BUILDBOTDIR
|
||||
pushd $BUILDBOTDIR
|
||||
|
||||
SYSROOT="/opt/rpi-sysroot"
|
||||
export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux -L$SYSROOT/opt/vc/lib"
|
||||
# -L$SYSROOT/usr/lib/arm-linux-gnueabihf"
|
||||
# !!! FIXME: shouldn't have to --disable-* things here.
|
||||
../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
|
||||
$MAKE
|
||||
$MAKE install
|
||||
# Fix up a few things to a real install path on a real Raspberry Pi...
|
||||
perl -w -pi -e "s#$PWD/rpi-sdl2-installed#/usr/local#g;" ./rpi-sdl2-installed/lib/libSDL2.la ./rpi-sdl2-installed/lib/pkgconfig/sdl2.pc ./rpi-sdl2-installed/bin/sdl2-config
|
||||
mkdir -p ./usr
|
||||
mv ./rpi-sdl2-installed ./usr/local
|
||||
|
||||
popd
|
||||
tar -cjvvf $TARBALL -C $BUILDBOTDIR usr
|
||||
rm -rf $BUILDBOTDIR
|
||||
|
||||
set +x
|
||||
echo "All done. Final installable is in $TARBALL ...";
|
||||
|
||||
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Print the current source revision, if available
|
||||
|
||||
# FIXME: this prints the tip, which isn't useful if you're on a different
|
||||
# branch, or just not sync'd to the tip.
|
||||
hg tip --template 'hg-{rev}:{node|short}' || (echo "hg-0:baadf00d"; exit 1)
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# libtool assumes that the compiler can handle the -fPIC flag
|
||||
# This isn't always true (for example, nasm can't handle it)
|
||||
command=""
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-?PIC)
|
||||
# Ignore -fPIC and -DPIC options
|
||||
;;
|
||||
-fno-common)
|
||||
# Ignore -fPIC and -DPIC options
|
||||
;;
|
||||
*)
|
||||
command="$command $1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
echo $command
|
||||
exec $command
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Generate a header file with the current source revision
|
||||
|
||||
outdir=`pwd`
|
||||
cd `dirname $0`
|
||||
srcdir=..
|
||||
header=$outdir/include/SDL_revision.h
|
||||
|
||||
rev=`sh showrev.sh 2>/dev/null`
|
||||
if [ "$rev" != "" -a "$rev" != "hg-0:baadf00d" ]; then
|
||||
revnum=`echo $rev | sed 's,hg-\([0-9]*\).*,\1,'`
|
||||
echo "#define SDL_REVISION \"$rev\"" >"$header.new"
|
||||
echo "#define SDL_REVISION_NUMBER $revnum" >>"$header.new"
|
||||
if diff $header $header.new >/dev/null 2>&1; then
|
||||
rm "$header.new"
|
||||
else
|
||||
mv "$header.new" "$header"
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user