diff --git a/.cargo/config.toml b/.cargo/config.toml index 487f767..dda585b 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,5 @@ [target.armv7-unknown-linux-gnueabihf] -linker = "lld" +linker = "arm-linux-gnueabihf-gcc" [target.aarch64-unknown-linux-gnu] -linker = "lld" \ No newline at end of file +linker = "aarch64-linux-gnu-gcc" \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 45b2df8..174f1d5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -75,25 +75,67 @@ jobs: src-tauri/target/ key: ${{ runner.os }}-${{ matrix.config.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - name: (Linux) ARM sources.list + if: matrix.config.target == 'aarch64-unknown-linux-gnu' || matrix.config.target == 'armv7-unknown-linux-gnueabihf' + run: | + # Add [arch=amd64] to the initial entries of the sources.list + sudo sed -i 's/^deb /deb [arch=amd64] /' /etc/apt/sources.list + + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs) main restricted" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs)-updates main restricted" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs) universe" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs)-updates universe" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs) multiverse" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs)-updates multiverse" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs)-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs)-security main restricted" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs)-security universe" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ $(lsb_release -cs)-security multiverse" | sudo tee -a /etc/apt/sources.list + + # ARM-linux related sources and dpkg config and such + - name: (Linux) ARM setup + if: matrix.config.target == 'aarch64-unknown-linux-gnu' || matrix.config.target == 'armv7-unknown-linux-gnueabihf' + run: | + sudo dpkg --add-architecture arm64 + sudo dpkg --add-architecture armhf + sudo apt-get update + - name: (Linux) Install dependencies if: matrix.config.platform == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev \ + libsoup-3.0-dev \ build-essential \ curl \ wget \ libssl-dev \ libgtk-3-dev \ - libayatana-appindicator3-dev \ librsvg2-dev + - name: (Linux) (ARMv7) Install dependencies + if: matrix.config.target == 'armv7-unknown-linux-gnueabihf' + run: | + sudo apt-get install -y \ + libc6:armhf \ + libwebkit2gtk-4.1-dev:armhf \ + libssl-dev:armhf \ + libsoup-3.0-dev:armhf \ + gcc-arm-linux-gnueabihf + + - name: (Linux) (ARM64) Install dependencies + if: matrix.config.target == 'aarch64-unknown-linux-gnu' + run: | + sudo apt-get install -y \ + libc6:arm64 \ + libwebkit2gtk-4.1-dev:arm64 \ + libssl-dev:arm64 \ + libsoup-3.0-dev:arm64 \ + gcc-aarch64-linux-gnu + - name: Add target run: rustup target add ${{ matrix.config.target }} - - name: Install Cargo tauri CLI - run: cargo install tauri-cli --version "^2.0.0-beta" - - name: Install dependencies run: pnpm install @@ -101,13 +143,32 @@ jobs: if: matrix.features == 'offline' run: git clone https://github.com/pagefaultgames/pokerogue.git src-ext --depth 1 && cd src-ext && pnpm install && pnpm build && cd .. - - name: Build + - name: (Most) Build # If we are compiling for Windows ARM, we can only support NSIS - run: cargo tauri build --target ${{ matrix.config.target }} ${{ matrix.config.target == 'aarch64-pc-windows-msvc' && '--bundles nsis' || '' }} --features ${{ matrix.features }} + run: pnpm tauri build --target ${{ matrix.config.target }} ${{ matrix.config.target == 'aarch64-pc-windows-msvc' && '--bundles nsis' || '' }} --features ${{ matrix.features }} + if: matrix.config.target != 'aarch64-unknown-linux-gnu' && matrix.config.target != 'armv7-unknown-linux-gnueabihf' env: RUSTFLAGS: -Awarnings CC: clang + - name: (Linux) (ARMv7) Build + if: matrix.config.target == 'armv7-unknown-linux-gnueabihf' + run: pnpm tauri build --target ${{ matrix.config.target }} --features ${{ matrix.features }} --bundles deb,rpm + env: + RUSTFLAGS: -Awarnings -L/usr/lib/arm-linux-gnueabihf + CC: arm-linux-gnueabihf-gcc + PKG_CONFIG_SYSROOT_DIR: /usr/lib/arm-linux-gnueabihf + PKG_CONFIG_PATH: /usr/lib/arm-linux-gnueabihf/pkgconfig + + - name: (Linux) (ARM64) Build + if: matrix.config.target == 'aarch64-unknown-linux-gnu' + run: pnpm tauri build --target ${{ matrix.config.target }} --features ${{ matrix.features }} --bundles deb,rpm + env: + RUSTFLAGS: -Awarnings -L/usr/lib/aarch64-linux-gnu + CC: aarch64-linux-gnu-gcc + PKG_CONFIG_SYSROOT_DIR: /usr/lib/aarch64-linux-gnu + PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig + # For portable installs - name: Create empty config.json run: cd src-tauri/target/${{ matrix.config.target }}/release && echo {} > config.json