diff --git a/.github/workflows/build-appimage.yml b/.github/workflows/build-appimage.yml new file mode 100644 index 00000000..7e7df583 --- /dev/null +++ b/.github/workflows/build-appimage.yml @@ -0,0 +1,55 @@ +name: CMake Build (AppImage x86-64) + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v1 + - name: Install dependencies + run: | + sudo rm -f /etc/apt/sources.list.d/dotnetdev.list /etc/apt/sources.list.d/microsoft-prod.list + sudo apt update + sudo apt install cmake extra-cmake-modules libcurl4-gnutls-dev libpcap0.8-dev libsdl2-dev libqt5multimedia5-plugins qt5-default qtbase5-private-dev qtmultimedia5-dev libslirp0 libslirp-dev libarchive-dev zstd libzstd-dev --allow-downgrades + - name: Create build environment + run: mkdir ${{runner.workspace}}/build + - name: Configure + working-directory: ${{runner.workspace}}/build + run: cmake $GITHUB_WORKSPACE + - name: Make + working-directory: ${{runner.workspace}}/build + run: | + make -j$(nproc --all) + - name: Prepare AppDir for AppImage + working-directory: ${{runner.workspace}}/build + run: | + make install DESTDIR=AppDir + mv ./AppDir/usr/local/bin ./AppDir/usr/bin + mv ./AppDir/usr/local/share ./AppDir/usr/share + rm -rf ./AppDir/usr/local + - name: Prepare necessary Tools for building the AppImage + working-directory: ${{runner.workspace}}/build + run: | + wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage + wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage + chmod a+x linuxdeploy-x86_64.AppImage + chmod a+x linuxdeploy-plugin-qt-x86_64.AppImage + - name: Build the AppImage + working-directory: ${{runner.workspace}}/build + run: | + ./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin qt --output appimage + mkdir dist + cp ./melonDS*.AppImage ./dist + - uses: actions/upload-artifact@v1 + with: + name: melonDS-appimage-x86_64 + path: ${{runner.workspace}}/build/dist diff --git a/.github/workflows/build-ubuntu-aarch64.yml b/.github/workflows/build-ubuntu-aarch64.yml new file mode 100644 index 00000000..096bc0b9 --- /dev/null +++ b/.github/workflows/build-ubuntu-aarch64.yml @@ -0,0 +1,50 @@ +name: CMake Build (Ubuntu aarch64) + +on: + push: + branches: + - master + pull_request: + branches: + - master + +env: + BUILD_TYPE: Release + +jobs: + build: + runs-on: ubuntu-20.04 + container: ubuntu:20.04 + + steps: + - name: Prepare system + shell: bash + run: | + apt update + apt -y full-upgrade + apt -y install git + - name: Check out source + uses: actions/checkout@v1 + - name: Install dependencies + shell: bash + run: | + dpkg --add-architecture arm64 + sh -c "sed \"s|^deb \([a-z\.:/]*\) \([a-z\-]*\) \(.*\)$|deb [arch=amd64] \1 \2 \3\ndeb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports \2 \3|\" /etc/apt/sources.list > /etc/apt/sources.list.new" + rm /etc/apt/sources.list + mv /etc/apt/sources.list{.new,} + apt update + DEBIAN_FRONTEND=noninteractive apt install -y {gcc-10,g++-10,pkg-config}-aarch64-linux-gnu {libsdl2,qtbase5,qtbase5-private,qtmultimedia5,libslirp,libarchive,libzstd}-dev:arm64 zstd:arm64 cmake extra-cmake-modules dpkg-dev + - name: Configure + shell: bash + run: | + CC=aarch64-linux-gnu-gcc-10 CXX=aarch64-linux-gnu-g++-10 cmake -DPKG_CONFIG_EXECUTABLE=/usr/bin/aarch64-linux-gnu-pkg-config $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -B build + - name: Make + shell: bash + run: | + cmake --build build -j$(nproc --all) + mkdir dist + cp build/melonDS dist + - uses: actions/upload-artifact@v1 + with: + name: melonDS-ubuntu-aarch64 + path: dist diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml new file mode 100644 index 00000000..b6c50e9a --- /dev/null +++ b/.github/workflows/build-ubuntu.yml @@ -0,0 +1,37 @@ +name: CMake Build (Ubuntu x86-64) + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v1 + - name: Install dependencies + run: | + sudo rm -f /etc/apt/sources.list.d/dotnetdev.list /etc/apt/sources.list.d/microsoft-prod.list + sudo apt update + sudo apt install cmake extra-cmake-modules libcurl4-gnutls-dev libpcap0.8-dev libsdl2-dev qt5-default qtbase5-private-dev qtmultimedia5-dev libslirp0 libslirp-dev libarchive-dev zstd libzstd-dev --allow-downgrades + - name: Create build environment + run: mkdir ${{runner.workspace}}/build + - name: Configure + working-directory: ${{runner.workspace}}/build + run: cmake $GITHUB_WORKSPACE + - name: Make + working-directory: ${{runner.workspace}}/build + run: | + make -j$(nproc --all) + mkdir dist + cp melonDS dist + - uses: actions/upload-artifact@v1 + with: + name: melonDS-ubuntu-x86_64 + path: ${{runner.workspace}}/build/dist diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml new file mode 100644 index 00000000..70b11c05 --- /dev/null +++ b/.github/workflows/build-windows.yml @@ -0,0 +1,43 @@ +name: CMake Build (Windows x86-64) + +on: + push: + branches: + - master + pull_request: + branches: + - master + +env: + BUILD_TYPE: Release + +jobs: + build: + + runs-on: windows-latest + + defaults: + run: + shell: msys2 {0} + steps: + - uses: actions/checkout@v1 + - uses: msys2/setup-msys2@v2 + with: + msystem: MINGW64 + update: true + + - name: Install dependencies + run: pacman -Sq --noconfirm git pkgconf mingw-w64-x86_64-{cmake,SDL2,qt5-static,libslirp,libarchive,toolchain} + + - name: Configure + working-directory: ${{runner.workspace}} + run: cmake -B build $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_STATIC=ON -DCMAKE_PREFIX_PATH=C:/tools/msys64/mingw64/qt5-static + + - name: Make + working-directory: ${{runner.workspace}}/build + run: cmake --build . + + - uses: actions/upload-artifact@v1 + with: + name: melonDS-windows-x86_64 + path: ${{runner.workspace}}\build\melonDS.exe