diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 01fe706..f44c3d3 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -35,9 +35,11 @@ jobs: matrix: include: - imageName: linux-x64 - - imageName: linux-arm64 - - imageName: linux-riscv64 - imageName: linux-x86 + - imageName: linux-arm64 + - imageName: linux-arm + - imageName: linux-ppc + - imageName: linux-riscv64 runs-on: ubuntu-latest steps: diff --git a/containers/linux-arm/Dockerfile b/containers/linux-arm/Dockerfile new file mode 100644 index 0000000..0fbe689 --- /dev/null +++ b/containers/linux-arm/Dockerfile @@ -0,0 +1,18 @@ +FROM docker.gitea.com/runner-images:ubuntu-24.04 + +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get -y update && apt-get -y install wget curl cmake ninja-build make tar gzip + +RUN mkdir nfpm && cd nfpm && wget "https://github.com/goreleaser/nfpm/releases/download/v2.46.3/nfpm_2.46.3_Linux_x86_64.tar.gz" && tar xf nfpm_2.46.3_Linux_x86_64.tar.gz && mv nfpm /usr/local/bin/ && cd .. && rm -rf nfpm + + + +WORKDIR /root + + +RUN mkdir -p /opt/cross && wget https://downloads.tesses.net/cache/my-compilers/arm-unknown-linux-gnueabi.tar.gz && tar -C /opt/cross -xzf arm-unknown-linux-gnueabi.tar.gz && rm arm-unknown-linux-gnueabi.tar.gz + +RUN mkdir -p /opt/cross/staging + +COPY --chmod=755 cmake-cross /usr/local/bin/cmake-cross +COPY toolchain.cmake /opt/cross/toolchain.cmake \ No newline at end of file diff --git a/containers/linux-arm/cmake-cross b/containers/linux-arm/cmake-cross new file mode 100644 index 0000000..e03fbab --- /dev/null +++ b/containers/linux-arm/cmake-cross @@ -0,0 +1,2 @@ +#!/bin/bash +exec cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_TOOLCHAIN_FILE=/opt/cross/toolchain.cmake "$@" \ No newline at end of file diff --git a/containers/linux-arm/toolchain.cmake b/containers/linux-arm/toolchain.cmake new file mode 100644 index 0000000..e2dfd59 --- /dev/null +++ b/containers/linux-arm/toolchain.cmake @@ -0,0 +1,11 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm) + +set(CMAKE_C_COMPILER ${CMAKE_CURRENT_LIST_DIR}/bin/arm-unknown-linux-gnueabi-gcc) +set(CMAKE_CXX_COMPILER ${CMAKE_CURRENT_LIST_DIR}/bin/arm-unknown-linux-gnueabi-g++) +set(CMAKE_SYSROOT ${CMAKE_CURRENT_LIST_DIR}/arm-unknown-linux-gnueabi/sysroot) +set(CMAKE_FIND_ROOT_PATH ${CMAKE_CURRENT_LIST_DIR}/staging) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/containers/linux-ppc/Dockerfile b/containers/linux-ppc/Dockerfile new file mode 100644 index 0000000..8577249 --- /dev/null +++ b/containers/linux-ppc/Dockerfile @@ -0,0 +1,14 @@ +FROM docker.gitea.com/runner-images:ubuntu-24.04 + +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get -y update && apt-get -y install wget curl cmake ninja-build make tar gzip makepkg + +WORKDIR /root + + +RUN mkdir -p /opt/cross && wget https://downloads.tesses.net/cache/my-compilers/powerpc-unknown-linux-gnu.tar.gz && tar -C /opt/cross -xzf powerpc-unknown-linux-gnu.tar.gz && rm powerpc-unknown-linux-gnu.tar.gz + +RUN mkdir -p /opt/cross/staging + +COPY --chmod=755 cmake-cross /usr/local/bin/cmake-cross +COPY toolchain.cmake /opt/cross/toolchain.cmake \ No newline at end of file diff --git a/containers/linux-ppc/cmake-cross b/containers/linux-ppc/cmake-cross new file mode 100644 index 0000000..e03fbab --- /dev/null +++ b/containers/linux-ppc/cmake-cross @@ -0,0 +1,2 @@ +#!/bin/bash +exec cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_TOOLCHAIN_FILE=/opt/cross/toolchain.cmake "$@" \ No newline at end of file diff --git a/containers/linux-ppc/toolchain.cmake b/containers/linux-ppc/toolchain.cmake new file mode 100644 index 0000000..a86c485 --- /dev/null +++ b/containers/linux-ppc/toolchain.cmake @@ -0,0 +1,11 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR powerpc) + +set(CMAKE_C_COMPILER ${CMAKE_CURRENT_LIST_DIR}/bin/powerpc-unknown-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER ${CMAKE_CURRENT_LIST_DIR}/bin/powerpc-unknown-linux-gnu-g++) +set(CMAKE_SYSROOT ${CMAKE_CURRENT_LIST_DIR}/powerpc-unknown-linux-gnu/sysroot) +set(CMAKE_FIND_ROOT_PATH ${CMAKE_CURRENT_LIST_DIR}/staging) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)