Refactor build scripts to allow building only Classical or Mono

The in-container build scripts now get passed CLASSICAL and MONO env
variables which can be used to build one or the other, or both
(default).

`build.sh`, `build-release.sh` and `build-templates.sh` now all expect
command line switches to specify the version details, and optionally
which flavor to build.

For example to build Mono only:

  ./build.sh -v 3.2-beta4 -g master -b mono
  ./build-release.sh -v 3.2-beta4 -b mono
  ./build-templates.sh -v 3.2-beta4 -t 3.2.beta4 -b mono

Also took the opportunity to do some extra cleanup, like removing
unnecessary `builtin_*` options since they all default to True, even
for Linux in 3.2, as well as `use_lto` and `use_static_cpp` options
on platforms which don't implement them.

And I improved the `build-release.sh` script to be a bit easier to
read, and avoid having too many stray folders to cleanup.
The build scripts should now generate the final structure that we'd use
on the official mirrors, with the `mono` distribution as a subfolder of
the main release folder.
This commit is contained in:
Rémi Verschelde
2019-12-13 13:28:34 +01:00
parent 7b376804d7
commit 067d3f3a49
12 changed files with 774 additions and 556 deletions

View File

@@ -2,9 +2,11 @@
set -e
# Config
export BUILD_NAME=official
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="builtin_libpng=yes builtin_openssl=yes builtin_zlib=yes debug_symbols=no use_static_cpp=yes use_lto=yes"
export OPTIONS="debug_symbols=no use_static_cpp=yes use_lto=yes"
export OPTIONS_MONO="module_mono_enabled=yes mono_static=yes"
export TERM=xterm
export CC="gcc-8"
@@ -15,30 +17,42 @@ mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/Managed/Generated modules/mono/glue/Managed/
# Classical
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS tools=yes target=release_debug
mkdir -p /root/out/tools
cp -rvp bin/* /root/out/tools
rm -rf bin
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Linux..."
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS tools=no target=release_debug
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS tools=no target=release
mkdir -p /root/out/templates
cp -rvp bin/* /root/out/templates
rm -rf bin
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS tools=yes target=release_debug
mkdir -p /root/out/tools
cp -rvp bin/* /root/out/tools
rm -rf bin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig/
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS tools=no target=release_debug
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS tools=no target=release
mkdir -p /root/out/templates
cp -rvp bin/* /root/out/templates
rm -rf bin
fi
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS $OPTIONS_MONO tools=yes target=release_debug copy_mono_root=yes
mkdir -p /root/out/tools-mono
cp -rvp bin/* /root/out/tools-mono
rm -rf bin
# Mono
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS $OPTIONS_MONO tools=no target=release_debug
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS $OPTIONS_MONO tools=no target=release
mkdir -p /root/out/templates-mono
cp -rvp bin/* /root/out/templates-mono
rm -rf bin
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for Linux..."
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/Managed/Generated modules/mono/glue/Managed/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig/
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS $OPTIONS_MONO tools=yes target=release_debug copy_mono_root=yes
mkdir -p /root/out/tools-mono
cp -rvp bin/* /root/out/tools-mono
rm -rf bin
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS $OPTIONS_MONO tools=no target=release_debug
$SCONS platform=x11 CC=$CC CXX=$CXX $OPTIONS $OPTIONS_MONO tools=no target=release
mkdir -p /root/out/templates-mono
cp -rvp bin/* /root/out/templates-mono
rm -rf bin
fi
echo "Linux build successful"