mirror of
https://github.com/izzy2lost/WeeU.git
synced 2026-07-06 00:19:59 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
14f9baa30c | ||
|
|
5313787a5c | ||
|
|
aa8f87ed73 | ||
|
|
ea0d608deb | ||
|
|
15071d4b86 | ||
|
|
beb623f4aa | ||
|
|
8ea4c50da4 | ||
|
|
5f1c0af138 | ||
|
|
2145dc67a9 | ||
|
|
da3f6dbb80 | ||
|
|
1192180e73 | ||
|
|
e741b9e36f | ||
|
|
0da6b2f52e | ||
|
|
acf261f260 | ||
|
|
853d1d467e | ||
|
|
6dd5081b43 | ||
|
|
b595800e98 | ||
|
|
d770314825 | ||
|
|
52227c06ca | ||
|
|
7f375d6654 | ||
|
|
866c6a08b2 | ||
|
|
5ebc71c59d | ||
|
|
c717ec0c4c | ||
|
|
c88204f946 | ||
|
|
eed0cb4344 | ||
|
|
ac1949de1d | ||
|
|
a46d74c20a | ||
|
|
a2989ae45e | ||
|
|
1d79871aa6 | ||
|
|
fa305ae1a2 | ||
|
|
50c2003e0f | ||
|
|
ee8fc3fa15 | ||
|
|
5678036590 | ||
|
|
d439fe4897 | ||
|
|
e051e08586 | ||
|
|
8daae39a66 | ||
|
|
029c0e64e7 | ||
|
|
00be588058 | ||
|
|
1193871271 | ||
|
|
19574110ac | ||
|
|
cb023db394 | ||
|
|
9be892a9aa | ||
|
|
8f848cfa71 | ||
|
|
f7b9fbd52c | ||
|
|
27816d89cc | ||
|
|
0e972ea0e4 | ||
|
|
756847ad79 | ||
|
|
53ed3e3340 | ||
|
|
49188ed043 | ||
|
|
0f1158c3bc | ||
|
|
e51eaf4fa5 | ||
|
|
64baee6af9 | ||
|
|
d1522fb24c | ||
|
|
6f936888d1 | ||
|
|
ef87d6218b | ||
|
|
f81c5fbd13 | ||
|
|
0af3920844 | ||
|
|
ae90fe7eb8 | ||
|
|
9267e72ef9 | ||
|
|
a9988361e6 | ||
|
|
ffc6ab784e | ||
|
|
905b11f986 | ||
|
|
deefc4e392 | ||
|
|
79d4e60692 | ||
|
|
92d88fa866 | ||
|
|
4c2e69445d | ||
|
|
6013ac1823 | ||
|
|
9bf84560a7 | ||
|
|
5658466d84 | ||
|
|
b8903f21e8 | ||
|
|
6a3b7f0290 | ||
|
|
8d717160e9 | ||
|
|
91ce31ca9f | ||
|
|
de4bf7c2c1 | ||
|
|
71a0504691 | ||
|
|
aeb3154257 | ||
|
|
58d1625672 | ||
|
|
d7c510ed31 | ||
|
|
f209413051 | ||
|
|
57fe7a53f1 | ||
|
|
44f0e5acd3 | ||
|
|
493b11e23a | ||
|
|
191357c518 | ||
|
|
1292463a5b | ||
|
|
a660be1a16 | ||
|
|
eb803a8c8c | ||
|
|
cf03067f7a | ||
|
|
55a735dcfa | ||
|
|
08609591ae | ||
|
|
4efa40c51c | ||
|
|
955ce9b973 | ||
|
|
1ec8c713b4 | ||
|
|
73b1dc1663 | ||
|
|
1f45589cea | ||
|
|
c1c2962b66 | ||
|
|
8c83d88d55 | ||
|
|
42ff3ad468 | ||
|
|
2d74bcfbfa | ||
|
|
67de63bed6 | ||
|
|
5f3c2816ec | ||
|
|
7f62b145dd | ||
|
|
cdca5eaf78 | ||
|
|
e68c31e5fb | ||
|
|
35ecfa3f54 | ||
|
|
6c392d5a22 | ||
|
|
9fb3c76b76 | ||
|
|
13ccf9a160 | ||
|
|
7db2b77983 | ||
|
|
0a121c97c7 | ||
|
|
b20a0a1374 | ||
|
|
e91740cf29 | ||
|
|
4f4c9594ac | ||
|
|
5a4731f919 | ||
|
|
522b5ef260 | ||
|
|
057ef4598e | ||
|
|
4f4412b334 | ||
|
|
f14536635c | ||
|
|
00ff5549d9 | ||
|
|
c8ffff8f41 | ||
|
|
2f02fda9ea | ||
|
|
89ec2f0591 | ||
|
|
d5bb3e44e8 | ||
|
|
da98aa4176 | ||
|
|
95dc590d2c | ||
|
|
f3fe6f3455 | ||
|
|
2eec6b44c3 | ||
|
|
3eff2d4a60 | ||
|
|
d427b59019 | ||
|
|
a184a04e56 | ||
|
|
162fdabb9d | ||
|
|
c8045f7f04 | ||
|
|
6df3e1742e | ||
|
|
152b790242 | ||
|
|
de58ae7d98 | ||
|
|
55efe4ca2b | ||
|
|
a0bf8dab7d | ||
|
|
02616bf6be | ||
|
|
be10f8859e | ||
|
|
657662d1bb | ||
|
|
aa878cc938 | ||
|
|
7168d20cde | ||
|
|
2de02eaaaa | ||
|
|
783d88a892 | ||
|
|
28ea70b6d8 | ||
|
|
96765e4ac6 | ||
|
|
111637a9fd | ||
|
|
bed5fdb195 | ||
|
|
996539fce8 | ||
|
|
05617a332b | ||
|
|
caef34f2ff | ||
|
|
f801fc1fe8 | ||
|
|
61484598fc | ||
|
|
5987b3d8ae | ||
|
|
081ebead5f | ||
|
|
a72e2deb6c | ||
|
|
d13dab0fd8 | ||
|
|
be641952a4 | ||
|
|
ba09daf328 | ||
|
|
557aff4024 | ||
|
|
d4f18aa791 | ||
|
|
de542410c2 | ||
|
|
33d5c6d490 | ||
|
|
352a918494 | ||
|
|
d083fc0470 | ||
|
|
fa7ae84314 | ||
|
|
00099c5ecc | ||
|
|
44b22b9eb1 | ||
|
|
a0531916ec | ||
|
|
119b39ab19 | ||
|
|
09eb9e5b48 | ||
|
|
e6a64aadda | ||
|
|
a5f3558b79 | ||
|
|
b089ae5b32 | ||
|
|
06233e3462 | ||
|
|
4972381edc | ||
|
|
cd6eb1097b | ||
|
|
c4eab08f30 | ||
|
|
57ff99ce53 | ||
|
|
8b5cafa98e | ||
|
|
d2e7ddf613 | ||
|
|
356a573b45 | ||
|
|
00eb8f95e4 | ||
|
|
3bc76a7048 | ||
|
|
0c412caa09 | ||
|
|
d6e226f129 | ||
|
|
b9ff29ba86 | ||
|
|
8c74158078 | ||
|
|
72cf7c7587 | ||
|
|
fdb1f27e7d | ||
|
|
e919c23ea5 | ||
|
|
f73b921349 | ||
|
|
9db3f87549 | ||
|
|
199fcefa89 | ||
|
|
c25233404e | ||
|
|
c587f73810 | ||
|
|
5631c5a0ec | ||
|
|
544288c598 | ||
|
|
1fc73e8cc9 | ||
|
|
827b607629 | ||
|
|
24b1cff66d | ||
|
|
a5483910d5 | ||
|
|
0d07c11066 | ||
|
|
562b86dd8f | ||
|
|
6e4ba0a9b5 | ||
|
|
7fc00c47b8 | ||
|
|
3de504f8ec | ||
|
|
991c36e019 | ||
|
|
186e92221a | ||
|
|
31d2db6f78 | ||
|
|
ebb5ab53e2 | ||
|
|
a6fb0a48eb | ||
|
|
ec2d7c086a | ||
|
|
c714e8cb6b | ||
|
|
e834515f43 | ||
|
|
4f9eea07e0 | ||
|
|
372c314f06 | ||
|
|
5bd253a1f8 | ||
|
|
4ac65159ef | ||
|
|
eab1b24320 | ||
|
|
07cd402531 | ||
|
|
0a59085021 | ||
|
|
8dd809d725 | ||
|
|
1923b7a7c4 | ||
|
|
f61539a262 | ||
|
|
92021db230 | ||
|
|
4b792aa4d2 | ||
|
|
1e30d72658 | ||
|
|
2b0cbf7f6b | ||
|
|
3738ccd2e6 | ||
|
|
b53b223ba9 | ||
|
|
6aaad1eb83 | ||
|
|
adab729f43 | ||
|
|
dd0af0a56f | ||
|
|
934cb54605 | ||
|
|
356cf0e5e0 | ||
|
|
e2d0871ca3 | ||
|
|
40d9664d1c | ||
|
|
eca7374567 | ||
|
|
80a6057512 | ||
|
|
0735237686 | ||
|
|
90eb2e01f4 | ||
|
|
409f12b13a | ||
|
|
7b513f1744 | ||
|
|
c3e29fb619 | ||
|
|
2065ac5f63 | ||
|
|
269d5b9aab | ||
|
|
6f9f3d52ea | ||
|
|
719c631f13 | ||
|
|
66658351c1 | ||
|
|
a5717e1b11 | ||
|
|
ca2e0a7c31 | ||
|
|
2e829479d9 | ||
|
|
4ac1ab162a | ||
|
|
813f9148b1 | ||
|
|
9941e00b54 | ||
|
|
1c49a8a1ba | ||
|
|
d2f81f30ab | ||
|
|
47001ad233 | ||
|
|
a8370684a1 | ||
|
|
f9c4b3aed7 | ||
|
|
68d8d621c2 | ||
|
|
afe29d5b1d | ||
|
|
459fd5d9bb | ||
|
|
bdd6b3f835 | ||
|
|
63e1289bb5 | ||
|
|
e8ebeab313 | ||
|
|
f9e91723b7 | ||
|
|
f9a4b2dbb1 | ||
|
|
d6575455ee | ||
|
|
356b1fff56 | ||
|
|
583ff53936 | ||
|
|
4e3b267c4d | ||
|
|
c2014b16da | ||
|
|
fb94873230 | ||
|
|
6016f2e298 | ||
|
|
669fb5533d | ||
|
|
c68665a1b4 | ||
|
|
82f0a24e80 | ||
|
|
15183df480 | ||
|
|
47a4a43774 | ||
|
|
deb307ef95 | ||
|
|
3acd0c4f2c | ||
|
|
c58cbb4787 | ||
|
|
0992908d69 | ||
|
|
3cf3cb1a9e | ||
|
|
1d17abd9d9 | ||
|
|
6c0dc45f86 | ||
|
|
6dc73f5d79 | ||
|
|
93b2c73e0c | ||
|
|
0c05c3e87f | ||
|
|
a08958f3b6 | ||
|
|
e4bacd8262 | ||
|
|
6026d2ad96 | ||
|
|
35d7ad6414 | ||
|
|
99a5db20eb | ||
|
|
fa6f834974 | ||
|
|
2b619cfcfb | ||
|
|
c8fe2428a0 | ||
|
|
32795e1e25 |
@@ -0,0 +1,43 @@
|
|||||||
|
name: Set up a vcpkg binary cache
|
||||||
|
|
||||||
|
description: Bootstraps vcpkg and configures GitHub Packages as a binary cache.
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
github-token:
|
||||||
|
description: Token for authenticating with GitHub Packages
|
||||||
|
required: true
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Bootstrap vcpkg
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ "$RUNNER_OS" == "Windows" ]; then
|
||||||
|
./dependencies/vcpkg/bootstrap-vcpkg.bat
|
||||||
|
else
|
||||||
|
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Setup NuGet Credentials for vcpkg
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
function vcpkg_nuget() {
|
||||||
|
if [ "$RUNNER_OS" == "Windows" ]; then
|
||||||
|
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` "$@"
|
||||||
|
else
|
||||||
|
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
vcpkg_nuget \
|
||||||
|
sources add \
|
||||||
|
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
|
||||||
|
-storepasswordincleartext \
|
||||||
|
-name "GitHub" \
|
||||||
|
-username "${{ github.repository_owner }}" \
|
||||||
|
-password "${{ inputs.github-token }}"
|
||||||
|
|
||||||
|
vcpkg_nuget \
|
||||||
|
setapikey "${{ inputs.github-token }}" \
|
||||||
|
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
name: Android build
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
workflow_dispatch:
|
|
||||||
push:
|
|
||||||
branches: ["android"]
|
|
||||||
pull_request:
|
|
||||||
branches: ["android"]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repo
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: "recursive"
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Set up JDK 17
|
|
||||||
uses: actions/setup-java@v3
|
|
||||||
with:
|
|
||||||
java-version: "17"
|
|
||||||
distribution: "temurin"
|
|
||||||
|
|
||||||
- name: Create store file
|
|
||||||
env:
|
|
||||||
ANDROID_STORE_FILE_BASE64: ${{ secrets.ANDROID_STORE_FILE_BASE64 }}
|
|
||||||
ANDROID_KEY_STORE_PASSWORD: ${{ secrets.ANDROID_KEY_STORE_PASSWORD }}
|
|
||||||
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
|
||||||
if: "${{ env.ANDROID_STORE_FILE_BASE64 != '' }}"
|
|
||||||
run: |
|
|
||||||
cd ./src/android
|
|
||||||
base64 --decode <<< "${ANDROID_STORE_FILE_BASE64}" > store.jks
|
|
||||||
ANDROID_STORE_FILE=$(pwd)/store.jks
|
|
||||||
echo -e "keyStorePassword=$ANDROID_KEY_STORE_PASSWORD\nkeyAlias=$ANDROID_KEY_ALIAS\nstoreFile=$ANDROID_STORE_FILE\n" > keystore.properties
|
|
||||||
|
|
||||||
- name: Build Cemu for Android
|
|
||||||
run: |
|
|
||||||
cd ./src/android
|
|
||||||
./gradlew assembleRelease
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cemu-android
|
|
||||||
path: |
|
|
||||||
./src/android/app/build/outputs/apk/release/*.apk
|
|
||||||
./src/android/app/build/outputs/apk/release/*.aab
|
|
||||||
+225
-207
@@ -1,263 +1,281 @@
|
|||||||
name: Build Cemu
|
name: Build Cemu
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_dispatch:
|
||||||
inputs:
|
|
||||||
next_version_major:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
next_version_minor:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg"
|
VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg"
|
||||||
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
|
VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,readwrite"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-ubuntu:
|
build-ubuntu:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout repo"
|
- name: "Checkout repo"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Setup release mode parameters
|
- name: Setup release mode parameters
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
||||||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||||||
echo "Build mode is release"
|
echo "Build mode is release"
|
||||||
|
|
||||||
- name: Setup build flags for version
|
- name: Setup build flags for version
|
||||||
if: ${{ inputs.next_version_major != '' }}
|
if: ${{ inputs.next_version_major != '' }}
|
||||||
run: |
|
run: |
|
||||||
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||||||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: "Install system dependencies"
|
- name: "Install system dependencies"
|
||||||
run: |
|
run: |
|
||||||
sudo apt update -qq
|
sudo apt update -qq
|
||||||
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build
|
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build libbluetooth-dev
|
||||||
|
|
||||||
- name: "Setup cmake"
|
- name: "Setup cmake"
|
||||||
uses: jwlawson/actions-setup-cmake@v2
|
uses: jwlawson/actions-setup-cmake@v2
|
||||||
with:
|
with:
|
||||||
cmake-version: '3.29.0'
|
cmake-version: "3.29.0"
|
||||||
|
|
||||||
- name: "Bootstrap vcpkg"
|
- name: Setup vcpkg binary cache
|
||||||
run: |
|
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
|
||||||
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
|
with:
|
||||||
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
- name: 'Setup NuGet Credentials for vcpkg'
|
- name: "cmake"
|
||||||
shell: 'bash'
|
run: |
|
||||||
run: |
|
cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
|
||||||
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
|
|
||||||
sources add \
|
|
||||||
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
|
|
||||||
-storepasswordincleartext \
|
|
||||||
-name "GitHub" \
|
|
||||||
-username "${{ github.repository_owner }}" \
|
|
||||||
-password "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
|
|
||||||
setapikey "${{ secrets.GITHUB_TOKEN }}" \
|
|
||||||
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
|
||||||
|
|
||||||
- name: "cmake"
|
- name: "Build Cemu"
|
||||||
run: |
|
run: |
|
||||||
cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
|
cmake --build build
|
||||||
|
|
||||||
- name: "Build Cemu"
|
- name: Prepare artifact
|
||||||
run: |
|
run: mv bin/Cemu_release bin/Cemu
|
||||||
cmake --build build
|
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Upload artifact
|
||||||
run: mv bin/Cemu_release bin/Cemu
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
- name: Upload artifact
|
name: cemu-bin-linux-x64
|
||||||
uses: actions/upload-artifact@v4
|
path: ./bin/Cemu
|
||||||
with:
|
|
||||||
name: cemu-bin-linux-x64
|
|
||||||
path: ./bin/Cemu
|
|
||||||
|
|
||||||
build-appimage:
|
build-appimage:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
needs: build-ubuntu
|
needs: build-ubuntu
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Upstream Repo
|
- name: Checkout Upstream Repo
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-linux-x64
|
name: cemu-bin-linux-x64
|
||||||
path: bin
|
path: bin
|
||||||
|
|
||||||
- name: "Install system dependencies"
|
- name: "Install system dependencies"
|
||||||
run: |
|
run: |
|
||||||
sudo apt update -qq
|
sudo apt update -qq
|
||||||
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream
|
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream libbluetooth-dev
|
||||||
|
|
||||||
- name: "Build AppImage"
|
- name: "Build AppImage"
|
||||||
run: |
|
run: |
|
||||||
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
|
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
|
||||||
export DEPLOY_GTK_VERSION=3
|
export DEPLOY_GTK_VERSION=3
|
||||||
dist/linux/appimage.sh
|
dist/linux/appimage.sh
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: cemu-appimage-x64
|
name: cemu-appimage-x64
|
||||||
path: artifacts
|
path: artifacts
|
||||||
|
|
||||||
build-windows:
|
build-windows:
|
||||||
runs-on: windows-2022
|
runs-on: windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout repo"
|
- name: "Checkout repo"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
|
|
||||||
- name: Setup release mode parameters
|
- name: Setup release mode parameters
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
echo "Build mode is release"
|
echo "Build mode is release"
|
||||||
|
|
||||||
- name: Setup build flags for version
|
- name: Setup build flags for version
|
||||||
if: ${{ inputs.next_version_major != '' }}
|
if: ${{ inputs.next_version_major != '' }}
|
||||||
run: |
|
run: |
|
||||||
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||||||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
|
|
||||||
- name: "Setup cmake"
|
- name: "Setup cmake"
|
||||||
uses: jwlawson/actions-setup-cmake@v2
|
uses: jwlawson/actions-setup-cmake@v2
|
||||||
with:
|
with:
|
||||||
cmake-version: '3.29.0'
|
cmake-version: "3.29.0"
|
||||||
|
|
||||||
- name: "Bootstrap vcpkg"
|
- name: Setup vcpkg binary cache
|
||||||
run: |
|
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
|
||||||
./dependencies/vcpkg/bootstrap-vcpkg.bat
|
with:
|
||||||
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
- name: 'Setup NuGet Credentials for vcpkg'
|
- name: "cmake"
|
||||||
shell: 'bash'
|
run: |
|
||||||
run: |
|
mkdir -p build
|
||||||
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \
|
cd build
|
||||||
sources add \
|
echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}"
|
||||||
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
|
echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}"
|
||||||
-storepasswordincleartext \
|
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build"
|
||||||
-name "GitHub" \
|
|
||||||
-username "${{ github.repository_owner }}" \
|
|
||||||
-password "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \
|
|
||||||
setapikey "${{ secrets.GITHUB_TOKEN }}" \
|
|
||||||
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
|
||||||
|
|
||||||
- name: "cmake"
|
- name: "Build Cemu"
|
||||||
run: |
|
run: |
|
||||||
mkdir -p build
|
cd build
|
||||||
cd build
|
cmake --build . --config ${{ env.BUILD_MODE }}
|
||||||
echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}"
|
|
||||||
echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}"
|
|
||||||
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build"
|
|
||||||
|
|
||||||
- name: "Build Cemu"
|
- name: Prepare artifact
|
||||||
run: |
|
run: Rename-Item bin/Cemu_release.exe Cemu.exe
|
||||||
cd build
|
|
||||||
cmake --build . --config ${{ env.BUILD_MODE }}
|
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Upload artifact
|
||||||
run: Rename-Item bin/Cemu_release.exe Cemu.exe
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
- name: Upload artifact
|
name: cemu-bin-windows-x64
|
||||||
uses: actions/upload-artifact@v4
|
path: ./bin/Cemu.exe
|
||||||
with:
|
|
||||||
name: cemu-bin-windows-x64
|
|
||||||
path: ./bin/Cemu.exe
|
|
||||||
|
|
||||||
build-macos:
|
build-macos:
|
||||||
runs-on: macos-14
|
runs-on: macos-14
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
arch: [x86_64, arm64]
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout repo"
|
- name: "Checkout repo"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
|
|
||||||
- name: Setup release mode parameters
|
- name: Setup release mode parameters
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
||||||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||||||
echo "Build mode is release"
|
echo "Build mode is release"
|
||||||
|
|
||||||
- name: Setup build flags for version
|
- name: Setup build flags for version
|
||||||
if: ${{ inputs.next_version_major != '' }}
|
if: ${{ inputs.next_version_major != '' }}
|
||||||
run: |
|
run: |
|
||||||
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||||||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: "Install system dependencies"
|
- name: "Install system dependencies"
|
||||||
run: |
|
run: |
|
||||||
brew update
|
brew update
|
||||||
brew install ninja nasm automake libtool
|
brew install ninja nasm automake libtool
|
||||||
|
|
||||||
- name: "Install molten-vk"
|
- name: "Install molten-vk"
|
||||||
run: |
|
run: |
|
||||||
curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.2.9/MoltenVK-macos.tar
|
curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.3.0/MoltenVK-macos.tar
|
||||||
tar xf MoltenVK-macos.tar
|
tar xf MoltenVK-macos.tar
|
||||||
sudo mkdir -p /usr/local/lib
|
sudo mkdir -p /usr/local/lib
|
||||||
sudo cp MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib /usr/local/lib
|
sudo cp MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib /usr/local/lib
|
||||||
|
|
||||||
- name: "Setup cmake"
|
- name: "Setup cmake"
|
||||||
uses: jwlawson/actions-setup-cmake@v2
|
uses: jwlawson/actions-setup-cmake@v2
|
||||||
with:
|
with:
|
||||||
cmake-version: '3.29.0'
|
cmake-version: "3.29.0"
|
||||||
|
|
||||||
- name: "Bootstrap vcpkg"
|
- name: Setup vcpkg binary cache
|
||||||
run: |
|
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
|
||||||
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
|
with:
|
||||||
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
- name: 'Setup NuGet Credentials for vcpkg'
|
- name: "cmake"
|
||||||
shell: 'bash'
|
run: |
|
||||||
run: |
|
mkdir build
|
||||||
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
|
cd build
|
||||||
sources add \
|
cmake .. ${{ env.BUILD_FLAGS }} \
|
||||||
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \
|
||||||
-storepasswordincleartext \
|
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \
|
||||||
-name "GitHub" \
|
-DMACOS_BUNDLE=ON \
|
||||||
-username "${{ github.repository_owner }}" \
|
-G Ninja
|
||||||
-password "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
|
|
||||||
setapikey "${{ secrets.GITHUB_TOKEN }}" \
|
|
||||||
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
|
||||||
|
|
||||||
- name: "cmake"
|
- name: "Build Cemu"
|
||||||
run: |
|
run: |
|
||||||
mkdir build
|
cmake --build build
|
||||||
cd build
|
|
||||||
cmake .. ${{ env.BUILD_FLAGS }} \
|
|
||||||
-DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \
|
|
||||||
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
|
|
||||||
-DMACOS_BUNDLE=ON \
|
|
||||||
-G Ninja
|
|
||||||
|
|
||||||
- name: "Build Cemu"
|
- name: Prepare artifact
|
||||||
run: |
|
run: |
|
||||||
cmake --build build
|
mkdir bin/Cemu_app
|
||||||
|
mv bin/Cemu_release.app bin/Cemu_app/Cemu.app
|
||||||
|
mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu
|
||||||
|
sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist
|
||||||
|
chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh}
|
||||||
|
ln -s /Applications bin/Cemu_app/Applications
|
||||||
|
hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app"
|
||||||
|
hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg
|
||||||
|
rm bin/tmp.dmg
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Upload artifact
|
||||||
run: |
|
uses: actions/upload-artifact@v4
|
||||||
mkdir bin/Cemu_app
|
with:
|
||||||
mv bin/Cemu_release.app bin/Cemu_app/Cemu.app
|
name: cemu-bin-macos-${{ matrix.arch }}
|
||||||
mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu
|
path: ./bin/Cemu.dmg
|
||||||
sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist
|
|
||||||
chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh}
|
|
||||||
ln -s /Applications bin/Cemu_app/Applications
|
|
||||||
hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app"
|
|
||||||
hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg
|
|
||||||
rm bin/tmp.dmg
|
|
||||||
|
|
||||||
- name: Upload artifact
|
build-android:
|
||||||
uses: actions/upload-artifact@v4
|
runs-on: ubuntu-22.04
|
||||||
with:
|
|
||||||
name: cemu-bin-macos-x64
|
steps:
|
||||||
path: ./bin/Cemu.dmg
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
submodules: "recursive"
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Install system dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt update -qq
|
||||||
|
sudo apt install -y gettext
|
||||||
|
|
||||||
|
- name: Uncompile message catalogs
|
||||||
|
run: |
|
||||||
|
for mo_file in bin/resources/*/cemu.mo
|
||||||
|
do
|
||||||
|
echo $mo_file
|
||||||
|
language_code=$(basename $(dirname $mo_file))
|
||||||
|
po_file=src/android/app/src/main/assets/translations/$language_code/cemu.po
|
||||||
|
mkdir -p $(dirname $po_file)
|
||||||
|
msgunfmt $mo_file -o $po_file || echo "Failed to uncompile message catalog from $mo_file"
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Setup vcpkg binary cache
|
||||||
|
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
|
||||||
|
with:
|
||||||
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
|
- name: Build Cemu
|
||||||
|
env:
|
||||||
|
ANDROID_STORE_FILE_BASE64: ${{ secrets.ANDROID_STORE_FILE_BASE64 }}
|
||||||
|
ANDROID_KEY_STORE_PASSWORD: ${{ secrets.ANDROID_KEY_STORE_PASSWORD }}
|
||||||
|
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
||||||
|
EMULATOR_VERSION_MAJOR: ${{ inputs.next_version_major }}
|
||||||
|
EMULATOR_VERSION_MINOR: ${{ inputs.next_version_minor }}
|
||||||
|
run: |
|
||||||
|
export JAVA_HOME=$JAVA_HOME_17_X64
|
||||||
|
|
||||||
|
cd ./src/android
|
||||||
|
|
||||||
|
if [[ -n "$ANDROID_STORE_FILE_BASE64" ]]; then
|
||||||
|
base64 --decode <<< "${ANDROID_STORE_FILE_BASE64}" > store.jks
|
||||||
|
export ANDROID_STORE_FILE=$(pwd)/store.jks
|
||||||
|
echo "Android signing store file has been set up."
|
||||||
|
else
|
||||||
|
echo "No Android signing store file provided. The APK will not be signed with a release key."
|
||||||
|
fi
|
||||||
|
|
||||||
|
./gradlew assembleRelease
|
||||||
|
./gradlew testRelease
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: cemu-bin-android
|
||||||
|
path: ./src/android/app/build/outputs/apk/*/*.apk
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
name: Build check
|
name: Build check
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "*.md"
|
- "*.md"
|
||||||
@@ -16,3 +17,4 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
uses: ./.github/workflows/build.yml
|
uses: ./.github/workflows/build.yml
|
||||||
|
secrets: inherit
|
||||||
|
|||||||
@@ -0,0 +1,172 @@
|
|||||||
|
name: Build vcpkg Android Dependencies
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-vcpkg-android:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Set up JDK 21
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '21'
|
||||||
|
|
||||||
|
- name: Install CMake
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y cmake ninja-build
|
||||||
|
|
||||||
|
- name: Setup Android NDK
|
||||||
|
uses: nttld/setup-ndk@v1
|
||||||
|
id: setup-ndk
|
||||||
|
with:
|
||||||
|
ndk-version: r29
|
||||||
|
add-to-path: true
|
||||||
|
|
||||||
|
- name: Cache vcpkg
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
dependencies/vcpkg/installed
|
||||||
|
dependencies/vcpkg/buildtrees
|
||||||
|
dependencies/vcpkg/packages
|
||||||
|
key: vcpkg-android-arm64-${{ hashFiles('vcpkg.json') }}
|
||||||
|
restore-keys: |
|
||||||
|
vcpkg-android-arm64-
|
||||||
|
|
||||||
|
- name: Bootstrap vcpkg
|
||||||
|
run: |
|
||||||
|
cd dependencies/vcpkg
|
||||||
|
./bootstrap-vcpkg.sh
|
||||||
|
|
||||||
|
- name: Build vcpkg dependencies for arm64-v8a
|
||||||
|
env:
|
||||||
|
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
VCPKG_ROOT: ${{ github.workspace }}/dependencies/vcpkg
|
||||||
|
run: |
|
||||||
|
cd dependencies/vcpkg
|
||||||
|
|
||||||
|
# Install dependencies for Android arm64-v8a
|
||||||
|
./vcpkg install \
|
||||||
|
--triplet=arm64-android \
|
||||||
|
--overlay-ports=${{ github.workspace }}/dependencies/vcpkg_overlay_ports \
|
||||||
|
--x-manifest-root=${{ github.workspace }} \
|
||||||
|
--x-install-root=${{ github.workspace }}/dependencies/vcpkg/installed
|
||||||
|
|
||||||
|
- name: Package vcpkg installed directory
|
||||||
|
run: |
|
||||||
|
cd dependencies/vcpkg
|
||||||
|
tar -czf vcpkg-android-arm64.tar.gz installed/arm64-android
|
||||||
|
|
||||||
|
- name: Upload vcpkg dependencies artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: vcpkg-android-arm64
|
||||||
|
path: dependencies/vcpkg/vcpkg-android-arm64.tar.gz
|
||||||
|
retention-days: 30
|
||||||
|
|
||||||
|
- name: Create installation instructions
|
||||||
|
run: |
|
||||||
|
cat > VCPKG_INSTALL_INSTRUCTIONS.md << 'EOF'
|
||||||
|
# vcpkg Android Dependencies Installation
|
||||||
|
|
||||||
|
## ABI: arm64-v8a (arm64-android triplet)
|
||||||
|
|
||||||
|
### Installation Steps:
|
||||||
|
|
||||||
|
1. Download the artifact `vcpkg-android-arm64.tar.gz` from the workflow run
|
||||||
|
|
||||||
|
2. Extract to your local repository:
|
||||||
|
|
||||||
|
**On Linux/macOS:**
|
||||||
|
```bash
|
||||||
|
cd /path/to/WeeU
|
||||||
|
tar -xzf vcpkg-android-arm64.tar.gz -C dependencies/vcpkg/
|
||||||
|
```
|
||||||
|
|
||||||
|
**On Windows (PowerShell):**
|
||||||
|
```powershell
|
||||||
|
cd C:\path\to\WeeU
|
||||||
|
tar -xzf vcpkg-android-arm64.tar.gz -C dependencies\vcpkg\
|
||||||
|
```
|
||||||
|
|
||||||
|
**On Windows (using 7-Zip or WinRAR):**
|
||||||
|
- Extract the .tar.gz file to get the .tar file
|
||||||
|
- Extract the .tar file
|
||||||
|
- Copy the `installed` folder to `dependencies\vcpkg\`
|
||||||
|
|
||||||
|
3. The dependencies will be extracted to:
|
||||||
|
```
|
||||||
|
dependencies/vcpkg/installed/arm64-android/
|
||||||
|
```
|
||||||
|
|
||||||
|
4. You can now build the Android app locally without vcpkg downloading dependencies:
|
||||||
|
|
||||||
|
**On Linux/macOS:**
|
||||||
|
```bash
|
||||||
|
cd src/android
|
||||||
|
./gradlew assembleRelease
|
||||||
|
```
|
||||||
|
|
||||||
|
**On Windows:**
|
||||||
|
```powershell
|
||||||
|
cd src\android
|
||||||
|
.\gradlew.bat assembleRelease
|
||||||
|
```
|
||||||
|
|
||||||
|
### What's included:
|
||||||
|
- All vcpkg dependencies specified in vcpkg.json for Android
|
||||||
|
- Pre-built libraries for arm64-v8a architecture (works on all platforms)
|
||||||
|
- Headers and CMake configuration files
|
||||||
|
- Boost, OpenSSL, libzip, curl, and all other dependencies
|
||||||
|
|
||||||
|
### Platform Compatibility:
|
||||||
|
- ✅ **Windows**: Fully supported - Android NDK builds work the same
|
||||||
|
- ✅ **Linux**: Fully supported
|
||||||
|
- ✅ **macOS**: Fully supported
|
||||||
|
- The dependencies are cross-platform because they're for Android target, not host OS
|
||||||
|
|
||||||
|
### Notes:
|
||||||
|
- This is for arm64-v8a only (the only ABI configured in the project)
|
||||||
|
- Dependencies are cached and will be reused if vcpkg.json hasn't changed
|
||||||
|
- Total size is approximately 500MB-1GB compressed
|
||||||
|
- Works on Windows, Linux, and macOS because Android builds are cross-platform
|
||||||
|
|
||||||
|
### Requirements:
|
||||||
|
- Android NDK r28 (or compatible version)
|
||||||
|
- CMake 3.25+
|
||||||
|
- Java 21+
|
||||||
|
|
||||||
|
### Troubleshooting:
|
||||||
|
|
||||||
|
**On Windows:**
|
||||||
|
- If build fails, ensure the extracted path matches: `dependencies\vcpkg\installed\arm64-android\`
|
||||||
|
- Verify extraction: `dir dependencies\vcpkg\installed\arm64-android\`
|
||||||
|
- Make sure you have Android NDK installed via Android Studio or standalone
|
||||||
|
- Set ANDROID_NDK_HOME environment variable if needed
|
||||||
|
|
||||||
|
**On Linux/macOS:**
|
||||||
|
- If build fails, ensure the extracted path matches: `dependencies/vcpkg/installed/arm64-android/`
|
||||||
|
- Verify extraction: `ls -la dependencies/vcpkg/installed/arm64-android/`
|
||||||
|
- Make sure you have Android NDK r28 installed
|
||||||
|
|
||||||
|
**General:**
|
||||||
|
- Clear the vcpkg cache if you encounter issues: `rm -rf dependencies/vcpkg/installed` (or `rmdir /s dependencies\vcpkg\installed` on Windows)
|
||||||
|
- The Android build uses CMake which is cross-platform
|
||||||
|
- Dependencies are built for Android ARM64, not your host OS
|
||||||
|
EOF
|
||||||
|
|
||||||
|
- name: Upload installation instructions
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: vcpkg-installation-instructions
|
||||||
|
path: VCPKG_INSTALL_INSTRUCTIONS.md
|
||||||
|
retention-days: 30
|
||||||
+17
-8
@@ -1,4 +1,4 @@
|
|||||||
name: Deploy experimental release
|
name: Deploy release
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
@@ -38,8 +38,8 @@ on:
|
|||||||
description: 'Feature 9'
|
description: 'Feature 9'
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
changelog9:
|
android_build_type:
|
||||||
description: 'Feature 10'
|
description: 'Build type'
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
@@ -50,11 +50,13 @@ jobs:
|
|||||||
call-release-build:
|
call-release-build:
|
||||||
uses: ./.github/workflows/build.yml
|
uses: ./.github/workflows/build.yml
|
||||||
needs: calculate-version
|
needs: calculate-version
|
||||||
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
next_version_major: ${{ needs.calculate-version.outputs.next_version_major }}
|
next_version_major: ${{ needs.calculate-version.outputs.next_version_major }}
|
||||||
next_version_minor: ${{ needs.calculate-version.outputs.next_version_minor }}
|
next_version_minor: ${{ needs.calculate-version.outputs.next_version_minor }}
|
||||||
|
android_build_type: ${{ inputs.android_build_type }}
|
||||||
deploy:
|
deploy:
|
||||||
name: Deploy experimental release
|
name: Deploy release
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
needs: [call-release-build, calculate-version]
|
needs: [call-release-build, calculate-version]
|
||||||
steps:
|
steps:
|
||||||
@@ -75,7 +77,6 @@ jobs:
|
|||||||
if [ -n "${{ github.event.inputs.changelog6 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog6 }}\n"; fi
|
if [ -n "${{ github.event.inputs.changelog6 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog6 }}\n"; fi
|
||||||
if [ -n "${{ github.event.inputs.changelog7 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog7 }}\n"; fi
|
if [ -n "${{ github.event.inputs.changelog7 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog7 }}\n"; fi
|
||||||
if [ -n "${{ github.event.inputs.changelog8 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog8 }}\n"; fi
|
if [ -n "${{ github.event.inputs.changelog8 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog8 }}\n"; fi
|
||||||
if [ -n "${{ github.event.inputs.changelog9 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog9 }}\n"; fi
|
|
||||||
echo -e "$CHANGELOG"
|
echo -e "$CHANGELOG"
|
||||||
echo "RELEASE_BODY=$CHANGELOG" >> $GITHUB_ENV
|
echo "RELEASE_BODY=$CHANGELOG" >> $GITHUB_ENV
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
@@ -95,8 +96,8 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-macos-x64
|
pattern: cemu-bin-macos*
|
||||||
path: cemu-bin-macos-x64
|
path: cemu-macos
|
||||||
|
|
||||||
- name: Initialize
|
- name: Initialize
|
||||||
run: |
|
run: |
|
||||||
@@ -137,7 +138,15 @@ jobs:
|
|||||||
rm -r ./${{ env.CEMU_FOLDER_NAME }}
|
rm -r ./${{ env.CEMU_FOLDER_NAME }}
|
||||||
|
|
||||||
- name: Create release from macos-bin
|
- name: Create release from macos-bin
|
||||||
run: cp cemu-bin-macos-x64/Cemu.dmg upload/cemu-${{ env.CEMU_VERSION }}-macos-12-x64.dmg
|
run: |
|
||||||
|
cd cemu-macos
|
||||||
|
for bin_dir in cemu-bin-macos-*; do
|
||||||
|
arch="${bin_dir##cemu-bin-macos-}"
|
||||||
|
cp $bin_dir/Cemu.dmg ../upload/cemu-${{ env.CEMU_VERSION }}-macos-12-$arch.dmg
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Create release from android-bin
|
||||||
|
run: cp cemu-bin-android/*.apk upload/cemu-${{ env.CEMU_VERSION }}.apk
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
run: |
|
run: |
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
name: Deploy experimental android release
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
call-release-build:
|
|
||||||
uses: ./.github/workflows/android_build.yml
|
|
||||||
secrets: inherit
|
|
||||||
deploy:
|
|
||||||
name: Deploy experimental release
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: [call-release-build]
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cemu-android
|
|
||||||
path: cemu-android
|
|
||||||
|
|
||||||
- name: Initialize
|
|
||||||
run: |
|
|
||||||
mkdir upload
|
|
||||||
sudo apt install zip
|
|
||||||
|
|
||||||
- name: Set version dependent vars
|
|
||||||
run: |
|
|
||||||
echo "CEMU_VERSION=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Create release from apk
|
|
||||||
run: |
|
|
||||||
VERSION=${{ env.CEMU_VERSION }}
|
|
||||||
echo "Cemu Version is $VERSION"
|
|
||||||
ls cemu-android
|
|
||||||
mv cemu-android/*.apk upload/Cemu-$VERSION.apk
|
|
||||||
|
|
||||||
- name: Create release
|
|
||||||
run: |
|
|
||||||
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
|
|
||||||
tar xvzf ghr.tar.gz; rm ghr.tar.gz
|
|
||||||
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
|
|
||||||
RELEASE_BODY=$(printf "Experimental release\n%s" "Latest commit ${{ env.CEMU_VERSION }}")
|
|
||||||
ghr_v0.15.0_linux_amd64/ghr -b "$RELEASE_BODY" -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }}" "${{ env.CEMU_VERSION }}" ./upload
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
name: Create new release
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
PlaceholderInput:
|
|
||||||
description: PlaceholderInput
|
|
||||||
required: false
|
|
||||||
jobs:
|
|
||||||
call-release-build:
|
|
||||||
uses: ./.github/workflows/build.yml
|
|
||||||
with:
|
|
||||||
deploymode: release
|
|
||||||
deploy:
|
|
||||||
name: Deploy release
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
needs: call-release-build
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cemu-bin-linux-x64
|
|
||||||
path: cemu-bin-linux-x64
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cemu-appimage-x64
|
|
||||||
path: cemu-appimage-x64
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cemu-bin-windows-x64
|
|
||||||
path: cemu-bin-windows-x64
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cemu-bin-macos-x64
|
|
||||||
path: cemu-bin-macos-x64
|
|
||||||
|
|
||||||
- name: Initialize
|
|
||||||
run: |
|
|
||||||
mkdir upload
|
|
||||||
sudo apt update -qq
|
|
||||||
sudo apt install -y zip
|
|
||||||
|
|
||||||
- name: Get Cemu release version
|
|
||||||
run: |
|
|
||||||
gcc -o getversion .github/getversion.cpp
|
|
||||||
echo "Cemu CI version: $(./getversion)"
|
|
||||||
echo "CEMU_FOLDER_NAME=Cemu_$(./getversion)" >> $GITHUB_ENV
|
|
||||||
echo "CEMU_VERSION=$(./getversion)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Create release from windows-bin
|
|
||||||
run: |
|
|
||||||
ls ./
|
|
||||||
ls ./bin/
|
|
||||||
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
|
|
||||||
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
|
|
||||||
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
|
|
||||||
rm -r ./${{ env.CEMU_FOLDER_NAME }}
|
|
||||||
|
|
||||||
- name: Create appimage
|
|
||||||
run: |
|
|
||||||
VERSION=${{ env.CEMU_VERSION }}
|
|
||||||
echo "Cemu Version is $VERSION"
|
|
||||||
ls cemu-appimage-x64
|
|
||||||
mv cemu-appimage-x64/Cemu-*-x86_64.AppImage upload/Cemu-$VERSION-x86_64.AppImage
|
|
||||||
|
|
||||||
- name: Create release from ubuntu-bin
|
|
||||||
run: |
|
|
||||||
ls ./
|
|
||||||
ls ./bin/
|
|
||||||
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
|
|
||||||
mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
|
|
||||||
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-20.04-x64.zip ${{ env.CEMU_FOLDER_NAME }}
|
|
||||||
rm -r ./${{ env.CEMU_FOLDER_NAME }}
|
|
||||||
|
|
||||||
- name: Create release from macos-bin
|
|
||||||
run: cp cemu-bin-macos-x64/Cemu.dmg upload/cemu-${{ env.CEMU_VERSION }}-macos-12-x64.dmg
|
|
||||||
|
|
||||||
- name: Create release
|
|
||||||
run: |
|
|
||||||
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
|
|
||||||
tar xvzf ghr.tar.gz; rm ghr.tar.gz
|
|
||||||
ghr_v0.15.0_linux_amd64/ghr -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }}" -b "Changelog:" v${{ env.CEMU_VERSION }} ./upload
|
|
||||||
@@ -29,7 +29,7 @@ jobs:
|
|||||||
id: get_all_releases
|
id: get_all_releases
|
||||||
run: |
|
run: |
|
||||||
# Fetch all releases and check for API errors
|
# Fetch all releases and check for API errors
|
||||||
RESPONSE=$(curl -s -o response.json -w "%{http_code}" "https://api.github.com/repos/${{ github.repository }}/releases?per_page=100")
|
RESPONSE=$(curl -s -o response.json -w "%{http_code}" "https://api.github.com/repos/cemu-project/cemu/releases?per_page=100")
|
||||||
if [ "$RESPONSE" -ne 200 ]; then
|
if [ "$RESPONSE" -ne 200 ]; then
|
||||||
echo "Failed to fetch releases. HTTP status: $RESPONSE"
|
echo "Failed to fetch releases. HTTP status: $RESPONSE"
|
||||||
cat response.json
|
cat response.json
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
name: Generate translation template
|
name: Generate translation template
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "*.md"
|
- "*.md"
|
||||||
@@ -19,7 +20,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout repo"
|
- name: "Checkout repo"
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: "Install gettext"
|
- name: "Install gettext"
|
||||||
run: |
|
run: |
|
||||||
@@ -31,11 +32,23 @@ jobs:
|
|||||||
find src -name *.cpp -o -name *.hpp -o -name *.h |
|
find src -name *.cpp -o -name *.hpp -o -name *.h |
|
||||||
xargs xgettext --from-code=utf-8 -w 100
|
xargs xgettext --from-code=utf-8 -w 100
|
||||||
--keyword="_" --keyword="wxTRANSLATE" --keyword="wxPLURAL:1,2"
|
--keyword="_" --keyword="wxTRANSLATE" --keyword="wxPLURAL:1,2"
|
||||||
|
--keyword="_tr" --keyword="TR_NOOP"
|
||||||
--check=space-ellipsis --omit-header
|
--check=space-ellipsis --omit-header
|
||||||
-o cemu.pot
|
-o cemu_cpp.pot
|
||||||
|
|
||||||
|
- name: "Generate POT file from the Android App"
|
||||||
|
run: |
|
||||||
|
cemu_dir=$(pwd)
|
||||||
|
cd src/android/app
|
||||||
|
./gradlew gettext
|
||||||
|
mv cemu_kt.pot "$cemu_dir"
|
||||||
|
|
||||||
|
- name: "Combine the POT files"
|
||||||
|
run: |
|
||||||
|
xgettext cemu_cpp.pot cemu_kt.pot --omit-header -o cemu.pot
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: POT file
|
name: POT file
|
||||||
path: ./cemu.pot
|
path: ./cemu.pot
|
||||||
|
|||||||
@@ -55,3 +55,6 @@ bin/graphicPacks/*
|
|||||||
|
|
||||||
# Ignore Finder view option files created by OS X
|
# Ignore Finder view option files created by OS X
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
.kilocode/mcp.json
|
||||||
|
vcpkg-android-arm64.tar.gz
|
||||||
|
src/android/app/src/main/assets/COVER_DOWNLOAD_README.md
|
||||||
|
|||||||
+9
-1
@@ -1,6 +1,6 @@
|
|||||||
[submodule "dependencies/ZArchive"]
|
[submodule "dependencies/ZArchive"]
|
||||||
path = dependencies/ZArchive
|
path = dependencies/ZArchive
|
||||||
url = https://github.com/SSimco/ZArchive
|
url = https://github.com/Exzap/ZArchive
|
||||||
shallow = true
|
shallow = true
|
||||||
[submodule "dependencies/cubeb"]
|
[submodule "dependencies/cubeb"]
|
||||||
path = dependencies/cubeb
|
path = dependencies/cubeb
|
||||||
@@ -21,3 +21,11 @@
|
|||||||
[submodule "dependencies/xbyak_aarch64"]
|
[submodule "dependencies/xbyak_aarch64"]
|
||||||
path = dependencies/xbyak_aarch64
|
path = dependencies/xbyak_aarch64
|
||||||
url = https://github.com/fujitsu/xbyak_aarch64
|
url = https://github.com/fujitsu/xbyak_aarch64
|
||||||
|
[submodule "dependencies/libadrenotools"]
|
||||||
|
path = dependencies/libadrenotools
|
||||||
|
url = https://github.com/bylaws/libadrenotools
|
||||||
|
shallow = true
|
||||||
|
[submodule "dependencies/libucontext/libucontext"]
|
||||||
|
path = dependencies/libucontext/src
|
||||||
|
url = https://github.com/kaniini/libucontext
|
||||||
|
shallow = true
|
||||||
|
|||||||
@@ -20,6 +20,10 @@
|
|||||||
- [Installing Tool Dependencies](#installing-tool-dependencies)
|
- [Installing Tool Dependencies](#installing-tool-dependencies)
|
||||||
- [Installing Library Dependencies](#installing-library-dependencies)
|
- [Installing Library Dependencies](#installing-library-dependencies)
|
||||||
- [Build Cemu using CMake](#build-cemu-using-cmake)
|
- [Build Cemu using CMake](#build-cemu-using-cmake)
|
||||||
|
- [Android](#android)
|
||||||
|
- [FreeBSD](#freebsd)
|
||||||
|
- [Installing Dependencies](#installing-dependencies)
|
||||||
|
- [Build Cemu on BSD with CMake](#build-cemu-on-bsd-with-cmake)
|
||||||
- [Updating Cemu and source code](#updating-cemu-and-source-code)
|
- [Updating Cemu and source code](#updating-cemu-and-source-code)
|
||||||
|
|
||||||
## Windows
|
## Windows
|
||||||
@@ -46,10 +50,10 @@ To compile Cemu, a recent enough compiler and STL with C++20 support is required
|
|||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
#### For Arch and derivatives:
|
#### For Arch and derivatives:
|
||||||
`sudo pacman -S --needed base-devel clang cmake freeglut git glm gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
|
`sudo pacman -S --needed base-devel bluez-libs clang cmake freeglut git glm gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
|
||||||
|
|
||||||
#### For Debian, Ubuntu and derivatives:
|
#### For Debian, Ubuntu and derivatives:
|
||||||
`sudo apt install -y cmake curl clang-15 freeglut3-dev git libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libtool nasm ninja-build`
|
`sudo apt install -y cmake curl clang-15 freeglut3-dev git libbluetooth-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libtool nasm ninja-build`
|
||||||
|
|
||||||
You may also need to install `libusb-1.0-0-dev` as a workaround for an issue with the vcpkg hidapi package.
|
You may also need to install `libusb-1.0-0-dev` as a workaround for an issue with the vcpkg hidapi package.
|
||||||
|
|
||||||
@@ -57,7 +61,7 @@ At Step 3 in [Build Cemu using cmake and clang](#build-cemu-using-cmake-and-clan
|
|||||||
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
|
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
|
||||||
|
|
||||||
#### For Fedora and derivatives:
|
#### For Fedora and derivatives:
|
||||||
`sudo dnf install clang cmake cubeb-devel freeglut-devel git glm-devel gtk3-devel kernel-headers libgcrypt-devel libsecret-devel libtool libusb1-devel llvm nasm ninja-build perl-core systemd-devel zlib-devel zlib-static`
|
`sudo dnf install bluez-libs-devel clang cmake cubeb-devel freeglut-devel git glm-devel gtk3-devel kernel-headers libgcrypt-devel libsecret-devel libtool libusb1-devel llvm nasm ninja-build perl-core systemd-devel wayland-protocols-devel zlib-devel zlib-static`
|
||||||
|
|
||||||
### Build Cemu
|
### Build Cemu
|
||||||
|
|
||||||
@@ -120,6 +124,9 @@ This section refers to running `cmake -S...` (truncated).
|
|||||||
* Compiling failed during rebuild after `git pull` with an error that mentions RPATH
|
* Compiling failed during rebuild after `git pull` with an error that mentions RPATH
|
||||||
* Add the following and try running the command again:
|
* Add the following and try running the command again:
|
||||||
* `-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON`
|
* `-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON`
|
||||||
|
* Environment variable `VCPKG_FORCE_SYSTEM_BINARIES` must be set.
|
||||||
|
* Execute the folowing and then try running the command again:
|
||||||
|
* `export VCPKG_FORCE_SYSTEM_BINARIES=1`
|
||||||
* If you are getting a random error, read the [package-name-and-platform]-out.log and [package-name-and-platform]-err.log for the actual reason to see if you might be lacking the headers from a dependency.
|
* If you are getting a random error, read the [package-name-and-platform]-out.log and [package-name-and-platform]-err.log for the actual reason to see if you might be lacking the headers from a dependency.
|
||||||
|
|
||||||
|
|
||||||
@@ -182,6 +189,43 @@ Then install the dependencies:
|
|||||||
#### Troubleshooting steps
|
#### Troubleshooting steps
|
||||||
- If step 3 gives you an error about not being able to find ninja, try appending `-DCMAKE_MAKE_PROGRAM=/usr/local/bin/ninja` to the command and running it again.
|
- If step 3 gives you an error about not being able to find ninja, try appending `-DCMAKE_MAKE_PROGRAM=/usr/local/bin/ninja` to the command and running it again.
|
||||||
|
|
||||||
|
## Android
|
||||||
|
Prerequisites:
|
||||||
|
- git
|
||||||
|
- [Android studio](https://developer.android.com/studio)
|
||||||
|
|
||||||
|
Instructions:
|
||||||
|
1. Run `git clone --recursive https://github.com/cemu-project/Cemu`
|
||||||
|
2. Open the project located in `src/android` in Android Studio
|
||||||
|
3. Click Build > Make Project
|
||||||
|
|
||||||
|
## FreeBSD
|
||||||
|
|
||||||
|
The following instructions to build Cemu on FreeBSD are experimental. Some features available on other platforms are not available on FreeBSD (discord rich presence, bluetooth/support for actual Wii U controllers, auto-updates, etc.)
|
||||||
|
|
||||||
|
To compile Cemu, a recent enough compiler and STL with C++20 support is required! Clang-15 or higher is what we recommend. Any version of FreeBSD 13.3-RELEASE or higher comes bundled with LLVM > version 15 as part of the base system. However, if for whatever reason your system lacks a recent version of LLVM you can install one by executing:
|
||||||
|
|
||||||
|
`sudo pkg install llvm15`
|
||||||
|
|
||||||
|
Or a higher version as desired.
|
||||||
|
|
||||||
|
### Installing Dependencies
|
||||||
|
|
||||||
|
`sudo pkg install boost-libs cmake-core curl glslang gtk3 libzip ninja png pkgconf pugixml rapidjson sdl2 wayland wayland-protocols wx32-gtk3 xorg zstd`
|
||||||
|
|
||||||
|
### Build Cemu on BSD with CMake
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone --recursive https://github.com/cemu-project/Cemu
|
||||||
|
cd Cemu
|
||||||
|
cmake -B build -DCMAKE_BUILD_TYPE=release -DENABLE_BLUEZ=OFF -DENABLE_DISCORD_RPC=OFF -DENABLE_FERAL_GAMEMODE=OFF -DENABLE_HIDAPI=OFF -DENABLE_VCPKG=OFF -G Ninja
|
||||||
|
cmake --build build
|
||||||
|
|
||||||
|
cd build && ninja install
|
||||||
|
```
|
||||||
|
|
||||||
|
You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu_release`.
|
||||||
|
|
||||||
## Updating Cemu and source code
|
## Updating Cemu and source code
|
||||||
1. To update your Cemu local repository, use the command `git pull --recurse-submodules` (run this command on the Cemu root).
|
1. To update your Cemu local repository, use the command `git pull --recurse-submodules` (run this command on the Cemu root).
|
||||||
- This should update your local copy of Cemu and all of its dependencies.
|
- This should update your local copy of Cemu and all of its dependencies.
|
||||||
@@ -189,3 +233,41 @@ Then install the dependencies:
|
|||||||
|
|
||||||
If CMake complains about Cemu already being compiled or another similar error, try deleting the `CMakeCache.txt` file inside the `build` folder and retry building.
|
If CMake complains about Cemu already being compiled or another similar error, try deleting the `CMakeCache.txt` file inside the `build` folder and retry building.
|
||||||
|
|
||||||
|
## CMake configure flags
|
||||||
|
Some flags can be passed during CMake configure to customise which features are enabled on build.
|
||||||
|
|
||||||
|
Example usage: `cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DENABLE_SDL=ON -DENABLE_VULKAN=OFF`
|
||||||
|
|
||||||
|
### All platforms
|
||||||
|
| Flag | | Description | Default | Note |
|
||||||
|
|--------------------|:--|-----------------------------------------------------------------------------|---------|--------------------|
|
||||||
|
| ALLOW_PORTABLE | | Allow Cemu to use the `portable` directory to store configs and data | ON | |
|
||||||
|
| CEMU_CXX_FLAGS | | Flags passed straight to the compiler, e.g. `-march=native`, `-Wall`, `/W3` | "" | |
|
||||||
|
| ENABLE_CUBEB | | Enable cubeb audio backend | ON | |
|
||||||
|
| ENABLE_DISCORD_RPC | | Enable Discord Rich presence support | ON | |
|
||||||
|
| ENABLE_OPENGL | | Enable OpenGL graphics backend | ON | Currently required |
|
||||||
|
| ENABLE_HIDAPI | | Enable HIDAPI (used for Wiimote controller API) | ON | |
|
||||||
|
| ENABLE_SDL | | Enable SDLController controller API | ON | Currently required |
|
||||||
|
| ENABLE_VCPKG | | Use VCPKG package manager to obtain dependencies | ON | |
|
||||||
|
| ENABLE_VULKAN | | Enable the Vulkan graphics backend | ON | |
|
||||||
|
| ENABLE_WXWIDGETS | | Enable wxWidgets UI | ON | Currently required |
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
| Flag | Description | Default | Note |
|
||||||
|
|--------------------|-----------------------------------|---------|--------------------|
|
||||||
|
| ENABLE_DIRECTAUDIO | Enable DirectAudio audio backend | ON | Currently required |
|
||||||
|
| ENABLE_DIRECTINPUT | Enable DirectInput controller API | ON | Currently required |
|
||||||
|
| ENABLE_XAUDIO | Enable XAudio audio backend | ON | |
|
||||||
|
| ENABLE_XINPUT | Enable XInput controller API | ON | |
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
| Flag | Description | Default |
|
||||||
|
|-----------------------|----------------------------------------------------|---------|
|
||||||
|
| ENABLE_BLUEZ | Build with Bluez (used for Wiimote controller API) | ON |
|
||||||
|
| ENABLE_FERAL_GAMEMODE | Enable Feral Interactive GameMode support | ON |
|
||||||
|
| ENABLE_WAYLAND | Enable Wayland support | ON |
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
| Flag | Description | Default |
|
||||||
|
|--------------|------------------------------------------------|---------|
|
||||||
|
| MACOS_BUNDLE | MacOS executable will be an application bundle | OFF |
|
||||||
|
|||||||
+31
-31
@@ -1,7 +1,8 @@
|
|||||||
cmake_minimum_required(VERSION 3.21.1)
|
cmake_minimum_required(VERSION 3.25)
|
||||||
|
|
||||||
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
|
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
|
||||||
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
|
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
|
||||||
|
option(ALLOW_PORTABLE "Allow Cemu to be run in portable mode" ON)
|
||||||
|
|
||||||
# used by CI script to set version:
|
# used by CI script to set version:
|
||||||
set(EMULATOR_VERSION_MAJOR "0" CACHE STRING "")
|
set(EMULATOR_VERSION_MAJOR "0" CACHE STRING "")
|
||||||
@@ -37,11 +38,11 @@ if (ENABLE_VCPKG)
|
|||||||
|
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE AND NOT VCPKG_TARGET_ANDROID)
|
if(UNIX AND NOT APPLE AND NOT VCPKG_TARGET_ANDROID)
|
||||||
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_linux")
|
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_linux;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_mac")
|
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_mac;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
|
||||||
else()
|
else()
|
||||||
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
|
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_win;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
|
||||||
endif()
|
endif()
|
||||||
if(VCPKG_TARGET_ANDROID)
|
if(VCPKG_TARGET_ANDROID)
|
||||||
set(ENV{ANDROID_NDK_HOME} ${ANDROID_NDK})
|
set(ENV{ANDROID_NDK_HOME} ${ANDROID_NDK})
|
||||||
@@ -77,10 +78,8 @@ add_definitions(-DEMULATOR_VERSION_PATCH=${EMULATOR_VERSION_PATCH})
|
|||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
|
||||||
# enable link time optimization for release builds
|
# enable link time optimization for release builds
|
||||||
if(NOT ANDROID)
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
|
||||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON)
|
||||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT CemuBin)
|
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT CemuBin)
|
||||||
@@ -107,6 +106,7 @@ endif()
|
|||||||
if (UNIX AND NOT APPLE)
|
if (UNIX AND NOT APPLE)
|
||||||
option(ENABLE_WAYLAND "Build with Wayland support" ON)
|
option(ENABLE_WAYLAND "Build with Wayland support" ON)
|
||||||
option(ENABLE_FERAL_GAMEMODE "Enables Feral Interactive GameMode Support" ON)
|
option(ENABLE_FERAL_GAMEMODE "Enables Feral Interactive GameMode Support" ON)
|
||||||
|
option(ENABLE_BLUEZ "Build with Bluez support" ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(ENABLE_OPENGL "Enables the OpenGL backend" ON)
|
option(ENABLE_OPENGL "Enables the OpenGL backend" ON)
|
||||||
@@ -131,23 +131,6 @@ if (WIN32)
|
|||||||
endif()
|
endif()
|
||||||
option(ENABLE_CUBEB "Enabled cubeb backend" ON)
|
option(ENABLE_CUBEB "Enabled cubeb backend" ON)
|
||||||
|
|
||||||
# usb hid backends
|
|
||||||
if (WIN32)
|
|
||||||
option(ENABLE_NSYSHID_WINDOWS_HID "Enables the native Windows HID backend for nsyshid" ON)
|
|
||||||
endif ()
|
|
||||||
# libusb and windows hid backends shouldn't be active at the same time; otherwise we'd see all devices twice!
|
|
||||||
if (NOT ENABLE_NSYSHID_WINDOWS_HID)
|
|
||||||
option(ENABLE_NSYSHID_LIBUSB "Enables the libusb backend for nsyshid" ON)
|
|
||||||
else ()
|
|
||||||
set(ENABLE_NSYSHID_LIBUSB OFF CACHE BOOL "" FORCE)
|
|
||||||
endif ()
|
|
||||||
if (ENABLE_NSYSHID_WINDOWS_HID)
|
|
||||||
add_compile_definitions(NSYSHID_ENABLE_BACKEND_WINDOWS_HID)
|
|
||||||
endif ()
|
|
||||||
if (ENABLE_NSYSHID_LIBUSB)
|
|
||||||
add_compile_definitions(NSYSHID_ENABLE_BACKEND_LIBUSB)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
option(ENABLE_WXWIDGETS "Build with wxWidgets UI (Currently required)" ON)
|
option(ENABLE_WXWIDGETS "Build with wxWidgets UI (Currently required)" ON)
|
||||||
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG true)
|
set(THREADS_PREFER_PTHREAD_FLAG true)
|
||||||
@@ -189,11 +172,17 @@ if (UNIX AND NOT APPLE AND NOT ANDROID)
|
|||||||
BASENAME viewporter)
|
BASENAME viewporter)
|
||||||
add_library(CemuWaylandProtocols STATIC ${WAYLAND_PROTOCOL_SRCS})
|
add_library(CemuWaylandProtocols STATIC ${WAYLAND_PROTOCOL_SRCS})
|
||||||
target_include_directories(CemuWaylandProtocols PUBLIC "${CMAKE_CURRENT_BINARY_DIR}")
|
target_include_directories(CemuWaylandProtocols PUBLIC "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
|
target_include_directories(CemuWaylandProtocols PRIVATE ${Wayland_INCLUDE_DIRS})
|
||||||
add_compile_definitions(HAS_WAYLAND)
|
add_compile_definitions(HAS_WAYLAND)
|
||||||
endif()
|
endif()
|
||||||
find_package(GTK3 REQUIRED)
|
find_package(GTK3 REQUIRED)
|
||||||
|
|
||||||
|
if(ENABLE_BLUEZ)
|
||||||
|
find_package(bluez REQUIRED)
|
||||||
|
set(SUPPORTS_WIIMOTE ON)
|
||||||
|
add_compile_definitions(HAS_BLUEZ)
|
||||||
|
endif()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_VULKAN)
|
if (ENABLE_VULKAN)
|
||||||
@@ -206,13 +195,11 @@ endif()
|
|||||||
|
|
||||||
if (ENABLE_DISCORD_RPC)
|
if (ENABLE_DISCORD_RPC)
|
||||||
add_compile_definitions(ENABLE_DISCORD_RPC)
|
add_compile_definitions(ENABLE_DISCORD_RPC)
|
||||||
add_subdirectory(dependencies/discord-rpc EXCLUDE_FROM_ALL)
|
|
||||||
target_include_directories(discord-rpc INTERFACE ./dependencies/discord-rpc/include)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_HIDAPI)
|
if (ENABLE_HIDAPI)
|
||||||
find_package(hidapi REQUIRED)
|
find_package(hidapi REQUIRED)
|
||||||
set(ENABLE_WIIMOTE ON)
|
set(SUPPORTS_WIIMOTE ON)
|
||||||
add_compile_definitions(HAS_HIDAPI)
|
add_compile_definitions(HAS_HIDAPI)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
@@ -225,7 +212,7 @@ if(UNIX AND NOT APPLE AND NOT ANDROID)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_WXWIDGETS)
|
if (ENABLE_WXWIDGETS)
|
||||||
find_package(wxWidgets 3.2 REQUIRED COMPONENTS base core gl propgrid xrc)
|
find_package(wxWidgets 3.3 REQUIRED COMPONENTS base core gl propgrid xrc)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_CUBEB)
|
if (ENABLE_CUBEB)
|
||||||
@@ -246,7 +233,12 @@ endif()
|
|||||||
|
|
||||||
add_subdirectory("dependencies/ih264d" EXCLUDE_FROM_ALL)
|
add_subdirectory("dependencies/ih264d" EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(AARCH64)")
|
if (CMAKE_OSX_ARCHITECTURES)
|
||||||
|
set(CEMU_ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES})
|
||||||
|
else()
|
||||||
|
set(CEMU_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
|
endif()
|
||||||
|
if(CEMU_ARCHITECTURE MATCHES "(aarch64)|(AARCH64)|(arm64)|(ARM64)")
|
||||||
add_subdirectory("dependencies/xbyak_aarch64" EXCLUDE_FROM_ALL)
|
add_subdirectory("dependencies/xbyak_aarch64" EXCLUDE_FROM_ALL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -255,4 +247,12 @@ if (NOT ZArchive_FOUND)
|
|||||||
add_subdirectory("dependencies/ZArchive" EXCLUDE_FROM_ALL)
|
add_subdirectory("dependencies/ZArchive" EXCLUDE_FROM_ALL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(ANDROID)
|
||||||
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(AARCH64)")
|
||||||
|
add_subdirectory("dependencies/libadrenotools" EXCLUDE_FROM_ALL)
|
||||||
|
endif()
|
||||||
|
add_subdirectory("dependencies/libucontext" EXCLUDE_FROM_ALL)
|
||||||
|
add_subdirectory("dependencies/stb" EXCLUDE_FROM_ALL)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# Coding style guidelines for Cemu
|
# Coding style guidelines for Cemu
|
||||||
|
|
||||||
This document describes the latest version of our coding-style guidelines. Since we did not use this style from the beginning, older code may not adhere to these guidelines. Nevertheless, use these rules even if the surrounding code does not match.
|
This document describes the latest version of our coding-style guidelines. Since we did not use this style from the beginning, older code may not adhere to these guidelines. Nevertheless, use these rules even if the surrounding code does not match.
|
||||||
|
These coding-style guidelines apply only to the C/C++ codebase. For Kotlin, we follow the official Kotlin Coding Conventions as outlined in the [Kotlin documentation](https://kotlinlang.org/docs/coding-conventions.html).
|
||||||
|
|
||||||
Cemu comes with a `.clang-format` file which is supported by most IDEs for formatting. Avoid auto-reformatting whole files, PRs with a lot of formatting changes are difficult to review.
|
Cemu comes with a `.clang-format` file which is supported by most IDEs for formatting. Avoid auto-reformatting whole files, PRs with a lot of formatting changes are difficult to review.
|
||||||
|
|
||||||
|
|||||||
@@ -1,54 +1,14 @@
|
|||||||
# **Cemu - Wii U emulator**
|
# **Cemu - Android Port (Wii U Emulator)**
|
||||||
|
|
||||||
[](https://github.com/cemu-project/Cemu/actions/workflows/build.yml)
|
This is the Android port of **Cemu**, a Wii U emulator written in C/C++.
|
||||||
[](https://discord.gg/5psYsup)
|
It is still early and experimental. Stability, performance, and features are not guaranteed, and some functionality may be missing compared to the desktop version.
|
||||||
[](https://matrix.to/#/#cemu:cemu.info)
|
|
||||||
|
|
||||||
This is the code repository of Cemu, a Wii U emulator that is able to run most Wii U games and homebrew in a playable state.
|
There is no timeline for when this port will be finished or when new features will be implemented.
|
||||||
It's written in C/C++ and is being actively developed with new features and fixes.
|
|
||||||
|
|
||||||
Cemu is currently only available for 64-bit Windows, Linux & macOS devices.
|
**Please do not open issues or pull requests yet.**
|
||||||
|
Development is ongoing, and contributions will be welcome once the project is more stable.
|
||||||
|
|
||||||
### Links:
|
For general information about Cemu, see the [official website](https://cemu.info) and [main repository](https://github.com/cemu-project/Cemu).
|
||||||
- [Open Source Announcement](https://www.reddit.com/r/cemu/comments/wwa22c/cemu_20_announcement_linux_builds_opensource_and/)
|
|
||||||
- [Official Website](https://cemu.info)
|
|
||||||
- [Compatibility List/Wiki](https://wiki.cemu.info/wiki/Main_Page)
|
|
||||||
- [Official Subreddit](https://reddit.com/r/Cemu)
|
|
||||||
- [Official Discord](https://discord.gg/5psYsup)
|
|
||||||
- [Official Matrix Server](https://matrix.to/#/#cemu:cemu.info)
|
|
||||||
- [Setup Guide](https://cemu.cfw.guide)
|
|
||||||
|
|
||||||
#### Other relevant repositories:
|
|
||||||
- [Cemu-Language](https://github.com/cemu-project/Cemu-Language)
|
|
||||||
- [Cemu's Community Graphic Packs](https://github.com/cemu-project/cemu_graphic_packs)
|
|
||||||
|
|
||||||
## Download
|
|
||||||
|
|
||||||
You can download the latest Cemu releases for Windows, Linux and Mac from the [GitHub Releases](https://github.com/cemu-project/Cemu/releases/). For Linux you can also find Cemu on [flathub](https://flathub.org/apps/info.cemu.Cemu).
|
|
||||||
|
|
||||||
On Windows Cemu is currently only available in a portable format so no installation is required besides extracting it in a safe place.
|
|
||||||
|
|
||||||
The native macOS build is currently purely experimental and should not be considered stable or ready for issue-free gameplay. There are also known issues with degraded performance due to the use of MoltenVK and Rosetta for ARM Macs. We appreciate your patience while we improve Cemu for macOS.
|
|
||||||
|
|
||||||
Pre-2.0 releases can be found on Cemu's [changelog page](https://cemu.info/changelog.html).
|
|
||||||
|
|
||||||
## Build Instructions
|
|
||||||
|
|
||||||
To compile Cemu yourself on Windows, Linux or macOS, view [BUILD.md](/BUILD.md).
|
|
||||||
|
|
||||||
## Issues
|
|
||||||
|
|
||||||
Issues with the emulator should be filed using [GitHub Issues](https://github.com/cemu-project/Cemu/issues).
|
|
||||||
The old bug tracker can be found at [bugs.cemu.info](https://bugs.cemu.info) and still contains relevant issues and feature suggestions.
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Pull requests are very welcome. For easier coordination you can visit the developer discussion channel on [Discord](https://discord.gg/5psYsup) or alternatively the [Matrix Server](https://matrix.to/#/#cemu:cemu.info).
|
|
||||||
Before submitting a pull request, please read and follow our code style guidelines listed in [CODING_STYLE.md](/CODING_STYLE.md).
|
|
||||||
|
|
||||||
If coding isn't your thing, testing games and making detailed bug reports or updating the (usually outdated) compatibility wiki is also appreciated!
|
|
||||||
|
|
||||||
Questions about Cemu's software architecture can also be answered on Discord (or through the Matrix bridge).
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
Cemu is licensed under [Mozilla Public License 2.0](/LICENSE.txt). Exempt from this are all files in the dependencies directory for which the licenses of the original code apply as well as some individual files in the src folder, as specified in those file headers respectively.
|
Cemu is licensed under [Mozilla Public License 2.0](/LICENSE.txt). Exempt from this are all files in the dependencies directory for which the licenses of the original code apply as well as some individual files in the src folder, as specified in those file headers respectively.
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user