Mac improvements

Just modifying build scripts to make it less painful to build and release on Mac

See merge request AttorneyOnline/AO2-Client!64
This commit is contained in:
David Skoland 2019-06-29 00:27:31 +00:00 committed by oldmud0
parent 15db260639
commit f2a4ac013d
6 changed files with 99 additions and 27 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
*.so
*.pro.autosave
base_override.h
.DS_Store
base-full/
bass.lib

View File

@ -8,22 +8,40 @@ This program has five main dependencies
* Discord Rich Presence (https://github.com/discordapp/discord-rpc/releases)
* Qt Apng Plugin (https://github.com/Skycoder42/QtApng/releases)
### Help
If you're having issues with any of this, ask in the offical Discord: https://discord.gg/wWvQ3pw
Alternatively, you can ask OmniTroid#4004 on Discord.
### How to build dynamically (the easy way)
#### General preparation
What you want to do is first download the latest version of Qt from the first link. (get the prebuilt dynamic version)
If you're on Ubuntu, go to the scripts/ folder and run configure_ubuntu.sh. This should fetch all the required dependencies automatically.
If not, go to each one of the links above and find the right dynamic library for your platform:
* Windows: .dll
* Linux: .so
* Mac: .dylib
After going through the OS-specific steps below, compiling in Qt creator should work.
And put them in BOTH lib/ and the repository root (lib/ is required for linking and root is required for runtime)
#### Windows
Launch Qt creator, open the .pro file and try running it. Ask in the Discord if you're having issues: https://discord.gg/wWvQ3pw
If you're on Windows, you need to go find all the dependencies (see above) and put them in the lib/ folder.
#### MacOS
If you're on MacOS, you can simply go to terminal and run ./scripts/configure_macos.sh
This will automatically fetch all the required dependencies. Additionally, if you need to create a standalone release, just run ./scripts/release_macos.sh
This will make the .app bundle in bin/ able to execute as a standalone.
#### Ubuntu
If you're on Ubuntu, just go to terminal and run ./scripts/configure_ubuntu.sh
This should fetch all the required dependencies automatically.
#### Other Linux
With some tweaks to the ubuntu script, it shouldn't be a big hassle to compile it on a modern linux. Look in the script and see what you may have to modify.
### How to build statically (the hard way)
You're gonna have a bad time.
You're gonna have a bad time.
Building statically means you can distribute the final program without needing to pack alongside a lot of dynamic libraries.
This is a tricky process and is not recommended unless you know what you're doing.

42
scripts/configure_macos.sh Executable file
View File

@ -0,0 +1,42 @@
#!/bin/sh
# This script fetches all build dependencies for MacOS
# Tested on MacOS 10.14 (Mojave), Qt 5.13 and XCode 10.2
# Exit on errors and unset variables
set -eu
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/"
cd ${ROOT_DIR}
LIB_TARGET="../../lib"
BASS_LINK="http://uk.un4seen.com/files/bass24-osx.zip"
BASSOPUS_LINK="http://www.un4seen.com/files/bassopus24-osx.zip"
DISCORD_RPC_LINK="https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip"
APNG_LINK="https://github.com/Skycoder42/QtApng/releases/download/1.1.2-2/qtapng_clang_64_5.13.0.tar.xz"
# Easier if we don't need to worry about an existing tmp folder tbh smh
# v Add a slash here for free tmp folder cleanup in true javascript community style
rm -rf tmp
mkdir tmp
cd tmp
curl -Ls ${BASS_LINK} -o bass.zip
unzip -qq bass.zip
cp libbass.dylib ${LIB_TARGET}
curl -Ls ${BASSOPUS_LINK} -o bassopus.zip
unzip -qq bassopus.zip
cp libbassopus.dylib ${LIB_TARGET}
curl -Ls ${DISCORD_RPC_LINK} -o discord_rpc.zip
unzip -qq discord_rpc.zip
cp discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib ${LIB_TARGET}
curl -Ls ${APNG_LINK} -o apng.tar.xz
tar -xf apng.tar.xz
cp clang_64/plugins/imageformats/libqapng.dylib ../../lib
cd ..
rm -rf tmp

View File

@ -1,7 +1,13 @@
#!/bin/sh
set -e
#assumes a somewhat recent 64-bit ubuntu
# Assumes a somewhat recent 64-bit ubuntu
# Exit on errors and unset variables
set -eu
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/"
cd ${ROOT_DIR}
#need some openGL stuff
sudo apt install libgl1-mesa-dev

View File

@ -1,17 +0,0 @@
#!/bin/sh
set -e
DST_FOLDER="./bin/Attorney_Online.app/Contents/Frameworks"
cd ..
mkdir $DST_FOLDER
cp ./lib/libbass.dylib $DST_FOLDER
cp ./lib/libbassopus.dylib $DST_FOLDER
install_name_tool -id @executable_path/../Frameworks/libbass.dylib $DST_FOLDER/libbass.dylib
install_name_tool -id @executable_path/../Frameworks/libbassopus.dylib $DST_FOLDER/libbassopus.dylib
install_name_tool -change @loader_path/libbass.dylib @executable_path/../Frameworks/libbass.dylib ./bin/Attorney_Online.app/Contents/MacOS/Attorney_Online

22
scripts/release_macos.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/sh
# This script prepares the compiled bundle for shipping as a standalone release
# Assumes the Qt bin folder is in PATH
# Should be used on a "Release" build from QT creator
# Note that this DOES NOT add the base/ folder
# Exit on errors and unset variables
set -eu
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/"
cd ${ROOT_DIR}
# This thing basically does all the work
macdeployqt ../bin/Attorney_Online.app
# Need to add the dependencies
cp ../lib/* ../bin/Attorney_Online.app/Contents/Frameworks
# libbass has a funny path for some reason, just use rpath
install_name_tool -change @loader_path/libbass.dylib @rpath/libbass.dylib ../bin/Attorney_Online.app/Contents/MacOS/Attorney_Online