#!/bin/bash
upstreamURL = "https://github.com/DEAKSoftware/Synergy-Binaries.git"
queriedURL = " $( git config --get remote.origin.url ) "
toplevelPath = " $( git rev-parse --show-toplevel ) "
if [ " ${ upstreamURL } " != " ${ queriedURL } " ] || [ " ${ toplevelPath } " = = "" ] ; then
echo "error: Unrecognised Git upstream URL, or top-level directory. This script must run within the top-level directory of the Synergy-Binaries repository."
exit 1
fi
synergyCorePath = " ${ toplevelPath } /Synergy-Core "
buildPath = " ${ synergyCorePath } /build "
binariesPath = " ${ toplevelPath } /Binaries "
toolsPath = " ${ toplevelPath } /Tools "
configureSubmodules( ) {
git submodule update --init --remote --recursive
}
configureCMake( ) {
cmake -S " ${ synergyCorePath } " -B " ${ buildPath } " -D CMAKE_BUILD_TYPE = MINSIZEREL -D SYNERGY_ENTERPRISE = ON || exit 1
}
configureVersion( ) {
source /etc/os-release || exit 1
linuxVersion = " ${ ID } ${ VERSION_ID } "
source " ${ buildPath } /version "
synergyVersion = " ${ SYNERGY_VERSION_MAJOR } . ${ SYNERGY_VERSION_MINOR } . ${ SYNERGY_VERSION_PATCH } "
synergyVersionStage = " ${ SYNERGY_VERSION_STAGE } "
}
configure( ) {
configureSubmodules
configureCMake
configureVersion
}
buildBinaries( ) {
cmake --build " ${ buildPath } " --parallel 8 || exit 1
}
buildAppImage( ) {
pushd " ${ toolsPath } " || exit 1
wget -O linuxdeploy -c https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage || exit 1
chmod a+x linuxdeploy || exit 1
# Needed by linuxdeploy
export VERSION = " ${ synergyVersion } - ${ linuxVersion } "
appImagePath = " ${ buildPath } /Synergy- ${ VERSION } .AppDir "
./linuxdeploy \
--appdir " ${ appImagePath } " \
--executable " ${ buildPath } /bin/synergy " \
--executable " ${ buildPath } /bin/synergyc " \
--executable " ${ buildPath } /bin/synergyd " \
--executable " ${ buildPath } /bin/synergys " \
--executable " ${ buildPath } /bin/syntool " \
--create-desktop-file \
--icon-file " ${ synergyCorePath } /res/synergy.svg " \
--output appimage || exit 1
mv " ${ toolsPath } / " *.AppImage " ${ binariesPath } "
popd
}
buildDeb( ) {
pushd " ${ synergyCorePath } " || exit 1
printf " synergy ( ${ synergyVersion } ) ${ synergyVersionStage } ; urgency=medium\n " > "debian/changelog" || exit 1
debuild --set-envvar CMAKE_BUILD_TYPE = MINSIZEREL --set-envvar SYNERGY_ENTERPRISE = ON -us -uc || exit 1
git clean -fd
popd
mv " ${ synergyCorePath } /../ " *.deb " ${ binariesPath } "
rename " s/(\\d+\\.\\d+.\\d+)/\$1- ${ linuxVersion } /g " " ${ binariesPath } " /*.deb
mv " ${ synergyCorePath } /../synergy_ ${ synergyVersion } " * " ${ buildPath } "
mv " ${ synergyCorePath } /../synergy-dbgsym_ ${ synergyVersion } " * " ${ buildPath } "
}
buildClean( ) {
pushd " ${ synergyCorePath } " || exit 1
git clean -fdx
popd
pushd " ${ toplevelPath } " || exit 1
git clean -fdx
popd
}
if [ " ${ 1 } " = "--help" ] || [ " ${ 1 } " = "-h" ] ; then
cat " ${ toplevelPath } /Documentation/HelpLinux.txt "
elif [ " ${ 1 } " = "--bin" ] ; then
configure
buildBinaries
elif [ " ${ 1 } " = "--appimage" ] ; then
configure
buildBinaries
buildAppImage
elif [ " ${ 1 } " = "--deb" ] ; then
configure
buildDeb
elif [ " ${ 1 } " = "--all" ] ; then
configure
buildBinaries
buildAppImage
buildDeb
elif [ " ${ 1 } " = "--clean" ] ; then
buildClean
else
echo "error: Bad or unknown option. Run with '--help' option for details."
exit 1
fi
exit 0