forked from mirrors/0ad
New Linux/BSD build flow.
Getting and building libraries is now clearly separated from preparing workspaces. Some disk space is automatically reclaimed and cleanup is streamlined.
This commit is contained in:
@@ -2,8 +2,10 @@ This directory holds libraries that are used by the game.
|
||||
Libraries are downloaded by running the correct script for your platform.
|
||||
|
||||
osx/ contains a script for download and building required libraries on OS X.
|
||||
source/ contains bundled source, when the game requires a specific library
|
||||
version that may not be available in package managers.
|
||||
|
||||
build-source-libs.sh downloads and builds a checkout of source libraries
|
||||
that we bundle, when the game requires a specific library version
|
||||
that may not be available in package managers.
|
||||
|
||||
get-windows-libs.bat downloads a checkout of headers and precompiled
|
||||
libraries that we bundle for Windows builds.
|
||||
|
||||
Executable
+116
@@ -0,0 +1,116 @@
|
||||
#!/bin/sh
|
||||
|
||||
die()
|
||||
{
|
||||
echo ERROR: $*
|
||||
exit 1
|
||||
}
|
||||
|
||||
# SVN revision to checkout for source-libs
|
||||
# Update this line when you commit an update to source-libs
|
||||
source_svnrev="28083"
|
||||
|
||||
if [ "`uname -s`" = "Darwin" ]; then
|
||||
echo 'This script should not be used on macOS: use build-osx-libs.sh instead.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "$(dirname $0)"
|
||||
# Now in libraries/ (where we assume this script resides)
|
||||
|
||||
# Check for whitespace in absolute path; this will cause problems in the
|
||||
# SpiderMonkey build and maybe elsewhere, so we just forbid it
|
||||
# Use perl as an alternative to readlink -f, which isn't available on BSD
|
||||
SCRIPTPATH=`perl -MCwd -e 'print Cwd::abs_path shift' "$0"`
|
||||
case "$SCRIPTPATH" in
|
||||
*\ * )
|
||||
die "Absolute path contains whitespace, which will break the build - move the game to a path without spaces" ;;
|
||||
esac
|
||||
|
||||
|
||||
# Parse command-line options (download options and build options):
|
||||
source_libs_dir="source"
|
||||
|
||||
without_nvtt=false
|
||||
with_system_nvtt=false
|
||||
with_system_mozjs=false
|
||||
|
||||
JOBS=${JOBS:="-j2"}
|
||||
|
||||
for i in "$@"
|
||||
do
|
||||
case $i in
|
||||
--source-libs-dir=* ) source_libs_dir=${1#*=} ;;
|
||||
--source-libs-dir ) die "correct syntax is --source-libs-dir=/path/to/dir" ;;
|
||||
--without-nvtt ) without_nvtt=true ;;
|
||||
--with-system-nvtt ) with_system_nvtt=true ;;
|
||||
--with-system-mozjs ) with_system_mozjs=true ;;
|
||||
-j* ) JOBS=$i ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Download source libs
|
||||
echo "Downloading source libs..."
|
||||
echo
|
||||
if [ -e ${source_libs_dir}/.svn ]; then
|
||||
(cd ${source_libs_dir} && svn cleanup && svn up -r $source_svnrev)
|
||||
else
|
||||
svn co -r $source_svnrev https://svn.wildfiregames.com/public/source-libs/trunk ${source_libs_dir}
|
||||
fi
|
||||
|
||||
# Build/update bundled external libraries
|
||||
echo "Building third-party dependencies..."
|
||||
echo
|
||||
|
||||
# Some of our makefiles depend on GNU make, so we set some sane defaults if MAKE
|
||||
# is not set.
|
||||
case "`uname -s`" in
|
||||
"FreeBSD" | "OpenBSD" )
|
||||
MAKE=${MAKE:="gmake"}
|
||||
;;
|
||||
* )
|
||||
MAKE=${MAKE:="make"}
|
||||
;;
|
||||
esac
|
||||
|
||||
(cd ${source_libs_dir}/fcollada && MAKE=${MAKE} JOBS=${JOBS} ./build.sh) || die "FCollada build failed"
|
||||
echo
|
||||
if [ "$with_system_nvtt" = "false" ] && [ "$without_nvtt" = "false" ]; then
|
||||
(cd ${source_libs_dir}/nvtt && MAKE=${MAKE} JOBS=${JOBS} ./build.sh) || die "NVTT build failed"
|
||||
fi
|
||||
echo
|
||||
if [ "$with_system_mozjs" = "false" ]; then
|
||||
(cd ${source_libs_dir}/spidermonkey && MAKE=${MAKE} JOBS=${JOBS} ./build.sh) || die "SpiderMonkey build failed"
|
||||
fi
|
||||
echo
|
||||
|
||||
echo "Copying built files..."
|
||||
# Copy built binaries to binaries/system/
|
||||
cp ${source_libs_dir}/fcollada/bin/* ../binaries/system/
|
||||
if [ "$with_system_nvtt" = "false" ] && [ "$without_nvtt" = "false" ]; then
|
||||
cp ${source_libs_dir}/nvtt/bin/* ../binaries/system/
|
||||
fi
|
||||
if [ "$with_system_mozjs" = "false" ]; then
|
||||
cp ${source_libs_dir}/spidermonkey/bin/* ../binaries/system/
|
||||
fi
|
||||
# If a custom source-libs dir was used, includes and static libs should be copied to libraries/source/
|
||||
# and all other bundled content should be copied.
|
||||
if [ "$source_libs_dir" != "source" ]; then
|
||||
rsync -avzq \
|
||||
--exclude fcollada \
|
||||
--exclude nvtt \
|
||||
--exclude spidermonkey \
|
||||
${source_libs_dir}/ source
|
||||
|
||||
mkdir -p source/fcollada
|
||||
cp -r ${source_libs_dir}/fcollada/{include,lib} source/fcollada/
|
||||
if [ "$with_system_nvtt" = "false" ] && [ "$without_nvtt" = "false" ]; then
|
||||
mkdir -p source/nvtt
|
||||
cp -r ${source_libs_dir}/nvtt/{include,lib} source/nvtt/
|
||||
fi
|
||||
if [ "$with_system_mozjs" = "false" ]; then
|
||||
mkdir -p source/spidermonkey
|
||||
cp -r ${source_libs_dir}/spidermonkey/{include-unix-debug,include-unix-release,lib} source/spidermonkey/
|
||||
fi
|
||||
fi
|
||||
echo "Done."
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This short script allows one to reset source libraries to a clean state without
|
||||
# having to redownload everything.
|
||||
# (We don't attempt to clean up every last file here - output in binaries/system/
|
||||
# will still be there, etc. This is mostly just to quickly fix problems in the
|
||||
# bundled dependencies.)
|
||||
|
||||
cd "$(dirname $0)"
|
||||
# Now in libraries/ (where we assume this script resides)
|
||||
|
||||
echo "Cleaning bundled third-party dependencies..."
|
||||
|
||||
if [ -e source/.svn ]; then
|
||||
(cd source && svn revert -R . && svn st --no-ignore | cut -c 9- | xargs rm -rf)
|
||||
else
|
||||
rm -rf source
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Done. Try running build-source-libs.sh again now."
|
||||
Reference in New Issue
Block a user