diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2ae2147..5a820ca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v3 - name: Check shell scripts run: | - shellcheck -o all build.sh clean.sh link-mac.sh pull_repos.sh + shellcheck -o all build.sh clean.sh pull_repos.sh - name: Run build script run: | git config --global --add safe.directory /__w/simple64/simple64 @@ -35,6 +35,7 @@ jobs: patch git zip + unzip pacboy: >- cmake:p gcc:p @@ -46,7 +47,7 @@ jobs: qt6:p - name: Run build script - run: msys2 -c 'export SIMPLE64_AUTOUPDATE=1; ./build.sh' + run: msys2 -c 'export SIMPLE64_AUTOUPDATE=1; ./build.sh zip' - name: Upload zip uses: actions/upload-artifact@v3 with: diff --git a/.gitignore b/.gitignore index 5228490..804d745 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ simple64/ +discord/ +vosk/ *zip *.dylib .DS_Store diff --git a/build.sh b/build.sh index 5e040cd..b48d397 100755 --- a/build.sh +++ b/build.sh @@ -9,11 +9,6 @@ UNAME=$(uname -s) PLATFORM=$(uname -m) if [[ ${UNAME} == *"MINGW64"* ]]; then suffix=".dll" -elif [[ ${UNAME} == *"Darwin"* ]]; then - suffix=".dylib" - qt_version=$(ls /usr/local/Cellar/qt) - export CXXFLAGS='-stdlib=libc++' - export LDFLAGS='-mmacosx-version-min=11.0' else suffix=".so" fi @@ -67,13 +62,7 @@ mkdir -p "${base_dir}/simple64-gui/build" cd "${base_dir}/simple64-gui/build" cmake -G Ninja -DCMAKE_BUILD_TYPE="${RELEASE_TYPE}" .. VERBOSE=1 cmake --build . - -if [[ ${UNAME} == *"Darwin"* ]]; then - "/usr/local/Cellar/qt/${qt_version}/bin/macdeployqt" "${base_dir}/simple64-gui/build/simple64-gui.app" - cp -a "${base_dir}/simple64-gui/build/simple64-gui.app" "${install_dir}" -else - cp "${base_dir}/simple64-gui/build/simple64-gui" "${install_dir}" -fi +cp "${base_dir}/simple64-gui/build/simple64-gui" "${install_dir}" mkdir -p "${base_dir}/parallel-rsp/build" cd "${base_dir}/parallel-rsp/build" @@ -87,6 +76,32 @@ cmake -G Ninja -DCMAKE_BUILD_TYPE="${RELEASE_TYPE}" .. VERBOSE=1 cmake --build . cp simple64-video-parallel.* "${install_dir}" +if [[ ! -d "${base_dir}/discord" ]]; then + echo "Downloading Discord SDK" + mkdir -p "${base_dir}/discord" + cd "${base_dir}/discord" + wget -q https://dl-game-sdk.discordapp.net/2.5.6/discord_game_sdk.zip + unzip -q discord_game_sdk.zip + rm discord_game_sdk.zip +fi + +if [[ ! -d "${base_dir}/vosk" ]]; then + mkdir -p "${base_dir}/vosk" + cd "${base_dir}/vosk" + if [[ ${UNAME} == *"MINGW64"* ]]; then + echo "Downloading Vosk for Windows" + wget -q https://github.com/alphacep/vosk-api/releases/download/v0.3.45/vosk-win64-0.3.45.zip + elif [[ "${PLATFORM}" == "aarch64" ]]; then + echo "Downloading Vosk for Linux aarch64" + wget -q https://github.com/alphacep/vosk-api/releases/download/v0.3.45/vosk-linux-aarch64-0.3.45.zip + else + echo "Downloading Vosk for Linux x86_64" + wget -q https://github.com/alphacep/vosk-api/releases/download/v0.3.45/vosk-linux-x86_64-0.3.45.zip + fi + unzip -jq ./*.zip + rm ./*.zip +fi + if [[ ${UNAME} == *"MINGW64"* ]]; then cd "${install_dir}" windeployqt-qt6.exe --no-translations simple64-gui.exe @@ -121,28 +136,21 @@ if [[ ${UNAME} == *"MINGW64"* ]]; then cp -v "${MSYSTEM_PREFIX}/bin/libcrypto-3-x64.dll" "${install_dir}" # used by Qt at runtime cp -v "${MSYSTEM_PREFIX}/bin/libssl-3-x64.dll" "${install_dir}" # used by Qt at runtime cp -v "${base_dir}/7za.exe" "${install_dir}" - cp -v "${base_dir}/simple64-gui/discord/discord_game_sdk.dll" "${install_dir}" - cp -v "${base_dir}/simple64-input-qt/vosk/x86_64/vosk.dll" "${install_dir}" -elif [[ ${UNAME} == *"Darwin"* ]]; then - cp "${base_dir}/simple64-gui/discord/discord_game_sdk.dylib" "${install_dir}" - cd "${base_dir}" - sh ./link-mac.sh + cp -v "${base_dir}/discord/lib/x86_64/discord_game_sdk.dll" "${install_dir}" + cp -v "${base_dir}/vosk/libvosk.dll" "${install_dir}/vosk.dll" else + cp "${base_dir}/vosk/libvosk.so" "${install_dir}" if [[ "${PLATFORM}" == "aarch64" ]]; then my_os=linux_aarch64 - cp "${base_dir}/simple64-input-qt/vosk/aarch64/libvosk.so" "${install_dir}" else my_os=linux_x86_64 - cp "${base_dir}/simple64-gui/discord/libdiscord_game_sdk.so" "${install_dir}" - cp "${base_dir}/simple64-input-qt/vosk/x86_64/libvosk.so" "${install_dir}" + cp "${base_dir}/discord/lib/x86_64/discord_game_sdk.so" "${install_dir}/libdiscord_game_sdk.so" fi fi -if [[ "$1" != "nozip" ]]; then - if [[ ${UNAME} != *"Darwin"* ]]; then - cd "${base_dir}" - rm -f "${base_dir}/"*.zip - HASH=$(git rev-parse --short HEAD) - zip --symlinks -r "simple64-${my_os}-${HASH}.zip" simple64 - fi +if [[ "$1" == "zip" ]]; then + cd "${base_dir}" + rm -f "${base_dir}/"*.zip + HASH=$(git rev-parse --short HEAD) + zip --symlinks -r "simple64-${my_os}-${HASH}.zip" simple64 fi diff --git a/clean.sh b/clean.sh index 35bbd78..df3d8f1 100755 --- a/clean.sh +++ b/clean.sh @@ -10,3 +10,5 @@ rm -rf simple64-input-qt/build rm -rf simple64-input-raphnetraw/build rm -rf parallel-rsp/build rm -rf parallel-rdp-standalone/build +rm -rf discord +rm -rf vosk diff --git a/link-mac.sh b/link-mac.sh deleted file mode 100755 index 005ae9d..0000000 --- a/link-mac.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env bash - -set -e - -contents=simple64/simple64-gui.app/Contents - -# Get files in correct directories -mv simple64/font.ttf "${contents}/MacOS" -mv simple64/libmupen64plus.dylib "${contents}/MacOS" -mv simple64/simple64-audio-sdl2.dylib "${contents}/MacOS" -mv simple64/simple64-input-qt.dylib "${contents}/MacOS" -mv simple64/simple64-input-raphnetraw.dylib "${contents}/MacOS" -mv simple64/simple64-rsp-parallel.dylib "${contents}/MacOS" -mv simple64/simple64-video-parallel.dylib "${contents}/MacOS" -mv simple64/mupen64plus.ini "${contents}/MacOS" -mv simple64/mupencheat.txt "${contents}/MacOS" -mv simple64/pif.ntsc.rom "${contents}/MacOS" -mv simple64/pif.pal.rom "${contents}/MacOS" -mv simple64/discord_game_sdk.dylib "${contents}/MacOS" - -# SDL -cp /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib "${contents}/Frameworks" -otool -L "${contents}/Frameworks/libSDL2-2.0.0.dylib" - -cp /usr/local/opt/sdl2_net/lib/libSDL2_net-2.0.0.dylib "${contents}/Frameworks" -install_name_tool -change /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/../Frameworks/libSDL2-2.0.0.dylib "${contents}/Frameworks/libSDL2_net-2.0.0.dylib" - -otool -L "${contents}/Frameworks/libSDL2_net-2.0.0.dylib" - -# libpng -cp /usr/local/opt/libpng/lib/libpng16.16.dylib "${contents}/Frameworks" - -otool -L "${contents}/Frameworks/libpng16.16.dylib" - -# hidapi -cp /usr/local/opt/hidapi/lib/libhidapi.0.dylib "${contents}/Frameworks" - -otool -L "${contents}/Frameworks/libhidapi.0.dylib" - -# freetype -cp /usr/local/opt/freetype/lib/libfreetype.6.dylib "${contents}/Frameworks" - -install_name_tool -change /usr/local/opt/libpng/lib/libpng16.16.dylib @executable_path/../Frameworks/libpng16.16.dylib "${contents}/Frameworks/libfreetype.6.dylib" - -otool -L "${contents}/Frameworks/libfreetype.6.dylib" - -# simple64-gui -# nothing to link -otool -L "${contents}/MacOS/simple64-gui" - -# libmupen64plus.dylib -install_name_tool -change /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/../Frameworks/libSDL2-2.0.0.dylib "${contents}/MacOS/libmupen64plus.dylib" -install_name_tool -change /usr/local/opt/sdl2_net/lib/libSDL2_net-2.0.0.dylib @executable_path/../Frameworks/libSDL2_net-2.0.0.dylib "${contents}/MacOS/libmupen64plus.dylib" -install_name_tool -change /usr/local/opt/libpng/lib/libpng16.16.dylib @executable_path/../Frameworks/libpng16.16.dylib "${contents}/MacOS/libmupen64plus.dylib" - -otool -L "${contents}/MacOS/libmupen64plus.dylib" - -# simple64-audio-sdl2.dylib -install_name_tool -change /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/../Frameworks/libSDL2-2.0.0.dylib "${contents}/MacOS/simple64-audio-sdl2.dylib" - -otool -L "${contents}/MacOS/simple64-audio-sdl2.dylib" - -# simple64-input-qt.dylib -install_name_tool -change /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/../Frameworks/libSDL2-2.0.0.dylib "${contents}/MacOS/simple64-input-qt.dylib" -install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets "${contents}/MacOS/simple64-input-qt.dylib" -install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui "${contents}/MacOS/simple64-input-qt.dylib" -install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore "${contents}/MacOS/simple64-input-qt.dylib" - -otool -L "${contents}/MacOS/simple64-input-qt.dylib" - -# simple64-input-raphnetraw.dylib -install_name_tool -change /usr/local/opt/hidapi/lib/libhidapi.0.dylib @executable_path/../Frameworks/libhidapi.0.dylib "${contents}/MacOS/simple64-input-raphnetraw.dylib" - -otool -L "${contents}/MacOS/simple64-input-raphnetraw.dylib" - -# simple64-rsp-parallel.dylib - -otool -L "${contents}/MacOS/simple64-rsp-parallel.dylib" - -# simple64-video-parallel.dylib - -otool -L "${contents}/MacOS/simple64-video-parallel.dylib" - -# Time to create the DMG - -# 1. Create symlink to Applications folder -ln -s /Applications simple64/Applications - -# 2. Create DMG -HASH=$(git rev-parse --short HEAD) -hdiutil create -volname simple64 -srcfolder simple64 -ov -format UDZO "simple64/simple64-osx-${HASH}.dmg"