diff --git a/.github/workflows/fast-build.yml b/.github/workflows/fast-build.yml new file mode 100644 index 00000000000..00aba037933 --- /dev/null +++ b/.github/workflows/fast-build.yml @@ -0,0 +1,160 @@ +name: Fast-Build + +on: + push: + branches-ignore: + - gh-readonly-queue/** + +jobs: + build-cmake: + runs-on: ${{ matrix.os }} + env: + CARGO_HTTP_MULTIPLEXING: false + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macOS-latest, windows-latest] + include: + - os: ubuntu-latest + cmake-args: -G Ninja -DCMAKE_BUILD_TYPE=Release -DDISCORD=ON -DDISCORD_DYNAMIC=ON -DWEBSOCKETS=OFF -DPREFER_BUNDLED_LIBS=ON + cmake-init-env: CXXFLAGS=-Werror + package-file: "*-linux_x86_64.tar.xz" + fancy: true + - os: macOS-latest + cmake-args: -G Ninja -DCMAKE_BUILD_TYPE=Release -DDISCORD=ON -DWEBSOCKETS=OFF -DPREFER_BUNDLED_LIBS=ON + cmake-init-env: CXXFLAGS=-Werror + package-file: "*-macos.dmg" + fancy: false + - os: windows-latest + cmake-args: -A x64 -DDISCORD=ON + cmake-init-env: CXXFLAGS=/WX LDFLAGS=/WX + package-file: "*-win64.zip" + fancy: false + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Prepare Linux + if: contains(matrix.os, 'ubuntu') + run: | + sudo apt-get update -y + # mount: /var/lib/grub/esp: special device /dev/disk/by-id/scsi-... does not exist. + # sudo apt-get upgrade -y + sudo apt-get install pkg-config cmake ninja-build libfreetype6-dev libnotify-dev libsdl2-dev libsqlite3-dev libvulkan-dev glslang-tools spirv-tools libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev libx264-dev libpng-dev valgrind gcovr libglew-dev -y + + - name: Prepare Linux (fancy) + if: contains(matrix.os, 'ubuntu') && matrix.fancy + run: | + sudo apt-get install libmariadb-dev libwebsockets-dev mariadb-server -y + sudo systemctl stop mysql + sudo rm -rf /var/lib/mysql/ + sudo mysql_install_db --user=mysql --datadir=/var/lib/mysql/ + cd /usr; sudo mysqld_safe --datadir='/var/lib/mysql/' --no-watch + sleep 10 + sudo mysql <> $GITHUB_PATH + sudo rm -rf /Library/Developer/CommandLineTools + + - name: Set Version + shell: bash + run: | + printf '%s' "${{ secrets.VERSION }}" > versioninfo.h + + - name: Cache Rust dependencies + uses: Swatinem/rust-cache@v2 + + - name: Build in release mode + run: | + mkdir release + cd release + ${{ matrix.cmake-path }}cmake -E env ${{ matrix.cmake-init-env }} ${{ secrets.VERSION_FLAGS }} ${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=Release -Werror=dev -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. .. + ${{ matrix.cmake-path }}cmake --build . --config Release --target everything ${{ matrix.build-args }} + + - name: Package + run: | + cd release + ${{ matrix.cmake-path }}cmake --build . --config Release --target package_default ${{ matrix.build-args }} + mkdir artifacts + mv ${{ matrix.package-file }} artifacts + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: ddnet-${{ matrix.os }} + path: release/artifacts + + build-android: + runs-on: ubuntu-24.04 + env: + CARGO_HTTP_MULTIPLEXING: false + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Prepare + run: | + sudo apt-get update -y + sudo apt-get install cmake ninja-build openjdk-21-jdk p7zip-full curl glslang-tools openssl + cargo install cargo-ndk + rustup target add armv7-linux-androideabi + rustup target add i686-linux-android + rustup target add aarch64-linux-android + rustup target add x86_64-linux-android + mkdir ~/Android + cd ~/Android + mkdir Sdk + cd Sdk + mkdir ndk + cd ndk + wget --quiet https://dl.google.com/android/repository/android-ndk-r26d-linux.zip + unzip android-ndk-r26d-linux.zip + rm android-ndk-r26d-linux.zip + cd ~/Android/Sdk + mkdir build-tools + cd build-tools + wget --quiet https://dl.google.com/android/repository/build-tools_r30.0.3-linux.zip + unzip build-tools_r30.0.3-linux.zip + rm build-tools_r30.0.3-linux.zip + mv android-11 30.0.3 + cd ~/Android/Sdk + mkdir cmdline-tools + cd cmdline-tools + wget --quiet https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip + unzip commandlinetools-linux-11076708_latest.zip + rm commandlinetools-linux-11076708_latest.zip + mv cmdline-tools latest + yes | latest/bin/sdkmanager --licenses + + - name: Build + env: + TW_KEY_NAME: /home/runner/DDNet.jks + TW_KEY_ALIAS: DDNet-Key + run: | + export TW_KEY_PW="$(openssl rand -base64 32)" + keytool -genkey -v -keystore "$TW_KEY_NAME" -keyalg RSA -keysize 2048 -validity 10000 -alias "$TW_KEY_ALIAS" -storepass "$TW_KEY_PW" -dname "CN=DDNet CI, OU=DDNet, O=DDNet" + mkdir build-android + scripts/android/cmake_android.sh all DDNet org.ddnet.client Release build-android + mkdir artifacts + mv build-android/DDNet.apk artifacts + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: ddnet-android + path: artifacts diff --git a/CMakeLists.txt b/CMakeLists.txt index 436a09c6187..856c5058d75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1839,6 +1839,7 @@ set(EXPECTED_DATA skins7/xmas_hat.png strong_weak.png tclient/fonts/Cabin-Regular.ttf + tclient/fonts/FreeSansBold.ttf tclient/fonts/GoogleSans-Regular.ttf tclient/fonts/Inter_24pt-Regular.ttf tclient/fonts/Inter_24pt-SemiBold.ttf diff --git a/src/game/version.h b/src/game/version.h index 973c6958fcd..972b2b0a4ef 100644 --- a/src/game/version.h +++ b/src/game/version.h @@ -17,5 +17,8 @@ extern const char *GIT_SHORTREV_HASH; #define GAME_NAME "DDNet" #define CLIENT_NAME "TClient" +#ifndef TCLIENT_VERSION #define TCLIENT_VERSION "10.0.4" #endif + +#endif