diff --git a/.gitignore b/.gitignore index 6ac11d6..0b767f1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ *.so *.pro.autosave base_override.h +.DS_Store base-full/ bass.lib diff --git a/README_BUILD.md b/README_BUILD.md index 685699c..f7441b8 100644 --- a/README_BUILD.md +++ b/README_BUILD.md @@ -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. diff --git a/scripts/configure_macos.sh b/scripts/configure_macos.sh new file mode 100755 index 0000000..af08966 --- /dev/null +++ b/scripts/configure_macos.sh @@ -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 diff --git a/scripts/configure_ubuntu.sh b/scripts/configure_ubuntu.sh index 848cf63..159dc4d 100755 --- a/scripts/configure_ubuntu.sh +++ b/scripts/configure_ubuntu.sh @@ -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 diff --git a/scripts/macos_post_build.sh b/scripts/macos_post_build.sh deleted file mode 100755 index 1db8c03..0000000 --- a/scripts/macos_post_build.sh +++ /dev/null @@ -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 diff --git a/scripts/release_macos.sh b/scripts/release_macos.sh new file mode 100755 index 0000000..50acb40 --- /dev/null +++ b/scripts/release_macos.sh @@ -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