220 lines
6.1 KiB
Bash
Executable File
220 lines
6.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
verbose=0
|
|
msg=
|
|
notify=0
|
|
s_configure=
|
|
s_stepmania=
|
|
s_data=
|
|
s_rebuild=
|
|
s_ffmpeg=
|
|
num_jobs=1
|
|
|
|
|
|
usage () {
|
|
echo "Usage: $0 [OPTION] [-- [CONFIGURE_OPTIONS]]"
|
|
echo 'Build StepMania.'
|
|
echo "CONFIGURE_OPTIONS are passed to StepMania's configure."
|
|
echo ''
|
|
echo ' -c, --configure stop after configuring StepMania.'
|
|
echo ' -s, --stepmania stop after building StepMania'
|
|
echo ' (do not copy binaries).'
|
|
echo ' -d, --data generate GameData.smzip.'
|
|
echo ' -r, --rebuild rebuild StepMania (soft).'
|
|
echo ' -f, --ffmpeg build with ffmpeg 0.10.2.'
|
|
echo ' -j#, --jobs=# pass -j# to make.'
|
|
echo ' -h, --help print this help and exit.'
|
|
echo ' -v, --verbose increase verbosity (up to 2).'
|
|
echo ' --version print version and exit.'
|
|
exit $1
|
|
}
|
|
|
|
if which notify-send >/dev/null 2>&1; then
|
|
#Comment the following line out to disable notify.
|
|
notify=1
|
|
fi
|
|
|
|
if which getopt >/dev/null 2>&1; then
|
|
set -- `getopt -l configure,stepmania,data,rebuild,ffmpeg,help \
|
|
-l jobs::,verbose,version -- drfcshj::v $*`
|
|
fi
|
|
|
|
while [ $# -gt 0 ]; do
|
|
arg=$1
|
|
shift
|
|
case $arg in
|
|
-c|--configure) s_configure=yes ;;
|
|
-s|--stepmania) s_stepmania=yes ;;
|
|
-d|--data) s_data=yes ;;
|
|
-r|--rebuild) s_rebuild=yes ;;
|
|
-f|--ffmpeg) s_ffmpeg=yes ;;
|
|
-h|--help) usage 0 ;;
|
|
-j|--jobs) num_jobs=$1; shift ;;
|
|
-v|--verbose) verbose=$[verbose+1] ;;
|
|
--version) version ;;
|
|
--) break ;;
|
|
*) usage 1 ;;
|
|
esac
|
|
done
|
|
|
|
message () {
|
|
msg=$1
|
|
if [ $verbose -gt 0 ]; then
|
|
echo "$msg..."
|
|
else
|
|
echo -n "$msg..."
|
|
fi
|
|
if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
|
|
notify-send "StepMania build script" "$msg..."
|
|
fi
|
|
}
|
|
|
|
success () {
|
|
if [ $verbose -gt 0 ]; then
|
|
echo "$msg...okay."
|
|
else
|
|
echo okay.
|
|
fi
|
|
if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
|
|
notify-send "StepMania build script" "$msg...okay."
|
|
fi
|
|
}
|
|
|
|
failure () {
|
|
if [ $# -gt 0 ]; then
|
|
error=": $1"
|
|
else
|
|
error='.'
|
|
fi
|
|
if [ $verbose -gt 0 ]; then
|
|
echo "$msg...failed$error"
|
|
else
|
|
echo failed$error
|
|
echo "Consider passing --verbose to $0. Pass --help for details."
|
|
fi
|
|
if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
|
|
notify-send "StepMania build script failed" "$msg...failed$error"
|
|
fi;
|
|
exit 1
|
|
}
|
|
|
|
call () {
|
|
if [ $verbose -ge 2 ]; then
|
|
echo "$@"
|
|
fi
|
|
if [ $verbose -gt 0 ]; then
|
|
eval "$@" || failure
|
|
else
|
|
eval "$@" >/dev/null 2>&1 || failure
|
|
fi
|
|
success
|
|
}
|
|
|
|
version () {
|
|
echo 'build.sh (StepMania) 2.64'
|
|
echo 'Copyright (C) 2006-2009 Steve Checkoway'
|
|
echo 'StepMania is Copyright (C) 2001-2012 Chris Danford et al.'
|
|
echo 'sm-ssc is Copyright (C) 2009-2012 the spinal shark collective'
|
|
exit 0
|
|
}
|
|
|
|
if [ -n "$s_data" ]; then
|
|
message 'Generating GameData.smzip'
|
|
if [ -f _build/Makefile ]; then
|
|
cd _build
|
|
call make SMData
|
|
mv ./GameData.smzip ../
|
|
cd ..
|
|
else
|
|
failure "You need to configure StepMania first."
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
if [ -n "$s_ffmpeg" ]; then
|
|
ffversion=0.10.2
|
|
ffmpeg=ffmpeg-$ffversion
|
|
if [ ! -d $ffmpeg ]; then
|
|
message 'Downloading ffmpeg'
|
|
if which bzip2 &>/dev/null; then
|
|
zipcommand=jxf
|
|
ffmarc=$ffmpeg.tar.bz2
|
|
elif which gzip &>/dev/null; then
|
|
zipcommand=zxf
|
|
ffmarc=$ffmpeg.tar.gz
|
|
else
|
|
failure 'Install either bzip2 or gzip.'
|
|
fi
|
|
if which wget &>/dev/null; then
|
|
get=wget
|
|
elif which curl &>/dev/null; then
|
|
get='curl -O'
|
|
else
|
|
failure 'Install either curl or wget.'
|
|
fi
|
|
call $get "http://ffmpeg.org/releases/$ffmarc"
|
|
message 'Extracting ffmpeg'
|
|
call tar -$zipcommand $ffmarc
|
|
# message 'Cleaning up temporary files'
|
|
# call rm $ffmarc
|
|
fi
|
|
args="--enable-static --enable-gpl --enable-version3 --enable-nonfree --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --disable-libvpx --disable-vaapi --enable-libxvid --disable-debug --enable-memalign-hack --disable-network --enable-small --disable-encoders --disable-ffserver --extra-cflags=-Dattribute_deprecated="
|
|
cd $ffmpeg
|
|
message 'Configuring ffmpeg'
|
|
call ./configure --prefix="`pwd`/_inst" $args
|
|
message 'Building ffmpeg'
|
|
call make --jobs="$num_jobs" install-libs install-headers
|
|
cd ..
|
|
fi
|
|
|
|
if [ ! -f _build/src/config.h ] || [ -n "$s_rebuild" ]; then
|
|
message 'Configuring StepMania'
|
|
mkdir -p _build
|
|
cd _build
|
|
if [ -n "$s_ffmpeg" ]; then
|
|
call ../configure --with-ffmpeg --with-static-ffmpeg=../$ffmpeg/_inst "$@"
|
|
else
|
|
call ../configure "$@"
|
|
fi
|
|
cd ..
|
|
fi
|
|
if [ -n "$s_configure" ]; then exit 0; fi
|
|
if [ ! -f _build/src/stepmania ] || [ -n "$s_rebuild" ]; then
|
|
message 'Building StepMania'
|
|
cd _build
|
|
call make --jobs="$num_jobs"
|
|
cd ..
|
|
fi
|
|
if [ -n "$s_stepmania" ]; then exit 0; fi
|
|
if [ ! -f stepmania -o ! -f GtkModule.so ] || [ -n "$s_rebuild" ]; then
|
|
message 'Copying StepMania binaries'
|
|
cp _build/src/stepmania .
|
|
if [ -e _build/src/GtkModule.so ]; then
|
|
cp _build/src/GtkModule.so . # we tend to not have this file!
|
|
fi
|
|
success
|
|
fi
|
|
|
|
# (c) 2006-2009 Steve Checkoway
|
|
# All rights reserved.
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
# copy of this software and associated documentation files (the
|
|
# "Software"), to deal in the Software without restriction, including
|
|
# without limitation the rights to use, copy, modify, merge, publish,
|
|
# distribute, and/or sell copies of the Software, and to permit persons to
|
|
# whom the Software is furnished to do so, provided that the above
|
|
# copyright notice(s) and this permission notice appear in all copies of
|
|
# the Software and that both the above copyright notice(s) and this
|
|
# permission notice appear in supporting documentation.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
|
# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
|
# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
|
# OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
# PERFORMANCE OF THIS SOFTWARE.
|