The Makefile behaviour is recreated using the new and significantly cleaner .NET Core csproj format. fixheader.exe is promoted to OpenRA.PostProcess.exe and now runs on all platforms.
74 lines
2.3 KiB
Bash
Executable File
74 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
command -v curl >/dev/null 2>&1 || { echo >&2 "Windows packaging requires curl."; exit 1; }
|
|
command -v markdown >/dev/null 2>&1 || { echo >&2 "Windows packaging requires markdown."; exit 1; }
|
|
command -v makensis >/dev/null 2>&1 || { echo >&2 "Windows packaging requires makensis."; exit 1; }
|
|
|
|
if [ $# -ne "2" ]; then
|
|
echo "Usage: $(basename "$0") tag outputdir"
|
|
exit 1
|
|
fi
|
|
|
|
# Set the working dir to the location of this script
|
|
cd "$(dirname "$0")" || exit 1
|
|
|
|
TAG="$1"
|
|
OUTPUTDIR="$2"
|
|
SRCDIR="$(pwd)/../.."
|
|
BUILTDIR="$(pwd)/build"
|
|
|
|
LAUNCHER_LIBS="-r:System.dll -r:System.Drawing.dll -r:System.Windows.Forms.dll -r:${BUILTDIR}/OpenRA.Game.exe"
|
|
FAQ_URL="http://wiki.openra.net/FAQ"
|
|
|
|
SUFFIX=" (dev)"
|
|
if [[ ${TAG} == release* ]]; then
|
|
SUFFIX=""
|
|
elif [[ ${TAG} == playtest* ]]; then
|
|
SUFFIX=" (playtest)"
|
|
fi
|
|
|
|
function makelauncher()
|
|
{
|
|
sed "s|DISPLAY_NAME|$2|" WindowsLauncher.cs.in | sed "s|MOD_ID|$3|" | sed "s|FAQ_URL|${FAQ_URL}|" > WindowsLauncher.cs
|
|
csc WindowsLauncher.cs -warn:4 -warnaserror -platform:"x86" -out:"$1" -t:winexe ${LAUNCHER_LIBS} -win32icon:"$4"
|
|
rm WindowsLauncher.cs
|
|
mono "${SRCDIR}/OpenRA.PostProcess.exe" "$1" -LAA > /dev/null
|
|
}
|
|
|
|
echo "Building core files"
|
|
|
|
pushd "${SRCDIR}" > /dev/null || exit 1
|
|
make clean
|
|
make windows-dependencies
|
|
make core
|
|
make version VERSION="${TAG}"
|
|
make install-core gameinstalldir="" DESTDIR="${BUILTDIR}"
|
|
popd > /dev/null || exit 1
|
|
|
|
echo "Compiling Windows launchers"
|
|
makelauncher "${BUILTDIR}/RedAlert.exe" "Red Alert" "ra" RedAlert.ico
|
|
makelauncher "${BUILTDIR}/TiberianDawn.exe" "Tiberian Dawn" "cnc" TiberianDawn.ico
|
|
makelauncher "${BUILTDIR}/Dune2000.exe" "Dune 2000" "d2k" Dune2000.ico
|
|
|
|
# Windows specific files
|
|
cp OpenRA.ico RedAlert.ico TiberianDawn.ico Dune2000.ico "${BUILTDIR}"
|
|
cp "${SRCDIR}/OpenRA.Game.exe.config" "${BUILTDIR}"
|
|
|
|
curl -s -L -O https://raw.githubusercontent.com/wiki/OpenRA/OpenRA/Changelog.md
|
|
markdown Changelog.md > "${BUILTDIR}/CHANGELOG.html"
|
|
rm Changelog.md
|
|
|
|
markdown "${SRCDIR}/README.md" > "${BUILTDIR}/README.html"
|
|
markdown "${SRCDIR}/CONTRIBUTING.md" > "${BUILTDIR}/CONTRIBUTING.html"
|
|
|
|
echo "Building Windows setup.exe"
|
|
makensis -V2 -DSRCDIR="${BUILTDIR}" -DDEPSDIR="${SRCDIR}/thirdparty/download/windows" -DTAG="${TAG}" -DSUFFIX="${SUFFIX}" OpenRA.nsi
|
|
if [ $? -eq 0 ]; then
|
|
mv OpenRA.Setup.exe "${OUTPUTDIR}/OpenRA-$TAG.exe"
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
# Cleanup
|
|
rm -rf "${BUILTDIR}"
|