Add riscv64 builder and pre-cache android builder
Some checks are pending
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux32 flags:32 name:Linux GCC 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux64 flags:64 name:Linux GCC x64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm32 flags:arm32 name:Linux GCC ARM 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm64 flags:arm64 name:Linux GCC ARM 64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:macos name:macOS Apple Silicon os:macos-14]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win32 flags:-A Win32 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 Win32 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win64 flags:-A x64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 x64 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:winarm64 flags:-A ARM64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 ARM os:windows-2022]) (push) Waiting to run
CD / Create Pi Mono Setup (push) Blocked by required conditions
CD / Publishing (push) Blocked by required conditions

This commit is contained in:
Lorenzooone 2025-09-17 18:21:51 +02:00
parent e59bdd54b9
commit d7a00209fe
8 changed files with 66 additions and 16 deletions

View File

@ -76,7 +76,7 @@ cmake -B build -DCMAKE_BUILD_TYPE=Release -DRASPBERRY_PI_COMPILATION=TRUE ; cmak
### Docker Compilation
Alternatively, one may use Docker to compile the Linux version for its different architectures by running: `docker run --rm -it -v ${PWD}:/home/builder/cc3dsfs lorenzooone/cc3dsfs:<builder>`
The following builders are available: builder32, builder64, builderarm32, builderarm64 and builderandroid (in beta).
The following builders are available: builder32, builder64, builderarm32, builderarm64, builderriscv64 and builderandroid (in beta).
## Controls

View File

@ -86,10 +86,22 @@ USER builder
CMD /docker_build_starter docker-scripts/docker_build_arm64
################################################################################
### Build Android ###
### Build riscv 64 ###
################################################################################
FROM base_builder as builderriscv64
COPY linux_install_packages.sh /
RUN chmod +x /linux_install_packages.sh ; /linux_install_packages.sh riscv64
WORKDIR /home/builder/building
COPY docker_build_starter /
RUN chmod +x /docker_build_starter
USER builder
CMD /docker_build_starter docker-scripts/docker_build_riscv64
################################################################################
### Build Android without caching ###
################################################################################
# Different from all others
FROM saschpe/android-ndk:31-jdk11.0.13_8-ndk23.0.7599858-cmake3.18.1 as builderandroid
FROM saschpe/android-ndk:31-jdk11.0.13_8-ndk23.0.7599858-cmake3.18.1 as builderandroid_nocache
ARG CMAKE_VERSION_SDKMANAGER_ANDROID
RUN apt update && apt install -y lsb-release g++ build-essential wget git libssl-dev pkg-config zip unzip
RUN curl -s "https://get.sdkman.io" | bash
@ -118,3 +130,14 @@ COPY --from=cmake_builder_focal cmake.tar.gz /cmake.tar.gz
RUN mkdir -p /cmake_folder && cd /cmake_folder && tar -xvf /cmake.tar.gz --strip-components=1 && cp -rf * /usr/local/
USER builder
CMD /docker_build_starter docker-scripts/docker_build_android
################################################################################
### Build Android with caching ###
################################################################################
# Different from all others
FROM builderandroid_nocache as builderandroid
RUN git clone https://github.com/Lorenzooone/cc3dsfs.git
RUN mv cc3dsfs ../cc3dsfs_to_cache
RUN cd ../cc3dsfs_to_cache ; chmod -R +x . ; ./docker-scripts/docker_build_android
RUN rm -rf ../cc3dsfs_to_cache
CMD /docker_build_starter docker-scripts/docker_build_android

View File

@ -7,5 +7,7 @@ docker image rm lorenzooone/cc3dsfs:builderarm32
docker build --target builderarm32 . -t lorenzooone/cc3dsfs:builderarm32
docker image rm lorenzooone/cc3dsfs:builderarm64
docker build --target builderarm64 . -t lorenzooone/cc3dsfs:builderarm64
docker image rm lorenzooone/cc3dsfs:builderriscv64
docker build --target builderriscv64 . -t lorenzooone/cc3dsfs:builderriscv64
docker image rm lorenzooone/cc3dsfs:builderandroid
docker build --target builderandroid . -t lorenzooone/cc3dsfs:builderandroid

View File

@ -2,7 +2,7 @@
BASE_AMD_STR="deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu/ "
BASE_SECURITY_AMD_STR="deb [arch=amd64,i386] http://security.ubuntu.com/ubuntu/ "
BASE_ARM_STR="deb [arch=arm64,armhf] http://ports.ubuntu.com/ "
BASE_ARM_STR="deb [arch=arm64,armhf,riscv64] http://ports.ubuntu.com/ "
NO_SPECIAL_STR=" main multiverse universe"
SECURITY_STR="-security main multiverse universe"
BACKPORTS_STR="-backports main multiverse universe"
@ -12,9 +12,9 @@ LOCATION_BASE="/etc/apt/sources.list.d"
LOCATION_AMD="${LOCATION_BASE}/x86_compilers.list"
LOCATION_ARM="${LOCATION_BASE}/arm_compilers.list"
LIST_ARCHITECTURES=("amd64" "i386" "arm64" "armhf")
LIST_ARCHITECTURES=("amd64" "i386" "arm64" "armhf" "riscv64")
LIST_PACKAGES_BASE=("libxinerama-dev" "libxi-dev" "libxss-dev" "libxxf86vm-dev" "libxkbfile-dev" "libxv-dev" "libx11-dev" "libxrandr-dev" "libxcursor-dev" "libudev-dev" "libflac-dev" "libvorbis-dev" "libgl1-mesa-dev" "libegl1-mesa-dev" "libdrm-dev" "libgbm-dev" "libfreetype-dev" "libharfbuzz-dev")
LIST_PACKAGES_NORMAL=("g++-multilib-i686-linux-gnu" "g++-aarch64-linux-gnu" "g++-arm-linux-gnueabihf" "g++:amd64" "g++" "git" "xorg-dev")
LIST_PACKAGES_NORMAL=("g++-riscv64-linux-gnu" "g++-multilib-i686-linux-gnu" "g++-aarch64-linux-gnu" "g++-arm-linux-gnueabihf" "g++:amd64" "g++" "git" "xorg-dev")
LIST_PACKAGES_SPECIAL=("libgpiod-dev")
echo "${BASE_AMD_STR}$(lsb_release -sc)${NO_SPECIAL_STR}" > ${LOCATION_AMD}

View File

@ -3,7 +3,9 @@
SFML_EXTRACTED_TO_FOLDER=~
LIBUSB_EXTRACTED_TO_FOLDER=~
SFML_BRANCH_NAME=master
SFML_AUTHOR=SFML
LIBUSB_BRANCH_NAME=android-rebase-2022-07
LIBUSB_AUTHOR=jagheterfredrik
SFML_EXTRACTED_FOLDER=${SFML_EXTRACTED_TO_FOLDER}/SFML-${SFML_BRANCH_NAME}
LIBUSB_EXTRACTED_FOLDER=${LIBUSB_EXTRACTED_TO_FOLDER}/libusb-${LIBUSB_BRANCH_NAME}
BUILD_APK_COMMAND=docker-scripts/docker_build_android_apk
@ -16,8 +18,8 @@ ANDROID_FOLDER=android
export LANG=C.UTF-8
(cd ${SFML_EXTRACTED_TO_FOLDER} ; rm -f ${SFML_BRANCH_NAME}.zip ; wget https://github.com/SFML/SFML/archive/refs/heads/${SFML_BRANCH_NAME}.zip ; unzip ${SFML_BRANCH_NAME}.zip)
(cd ${LIBUSB_EXTRACTED_TO_FOLDER} ; rm -f ${LIBUSB_BRANCH_NAME}.zip ; wget https://github.com/jagheterfredrik/libusb/archive/refs/heads/${LIBUSB_BRANCH_NAME}.zip ; unzip ${LIBUSB_BRANCH_NAME}.zip)
(cd ${SFML_EXTRACTED_TO_FOLDER} ; rm -f ${SFML_BRANCH_NAME}.zip ; rm -rf ${SFML_EXTRACTED_FOLDER} ; wget https://github.com/${SFML_AUTHOR}/SFML/archive/refs/heads/${SFML_BRANCH_NAME}.zip ; unzip ${SFML_BRANCH_NAME}.zip)
(cd ${LIBUSB_EXTRACTED_TO_FOLDER} ; rm -f ${LIBUSB_BRANCH_NAME}.zip ; rm -rf ${LIBUSB_EXTRACTED_FOLDER} ; wget https://github.com/${LIBUSB_AUTHOR}/libusb/archive/refs/heads/${LIBUSB_BRANCH_NAME}.zip ; unzip ${LIBUSB_BRANCH_NAME}.zip)
${BUILD_LIBS_COMMAND} ${LIBUSB_EXTRACTED_FOLDER} ${SFML_EXTRACTED_FOLDER} ${STL_CHOSEN} ${RELEASE_TYPE}

View File

@ -1,5 +1,8 @@
#!/bin/sh
LIST_ARCHITECTURES='armeabi-v7a arm64-v8a x86 x86_64'
LIBUSB_FOLDER=$1
SFML_FOLDER=$2
STL_CHOSEN=$3
@ -10,15 +13,15 @@ BUILD_SINGLE_ARCH_SFML_COMMAND=docker-scripts/docker_build_android_sfml_single_a
(cd ${LIBUSB_FOLDER}/android/jni ; ndk-build APP_PLATFORM=${ANDROID_SDK_VERSION} -j ; mkdir -p ${ANDROID_NDK_HOME}/sources/third_party/libusb/include ; cp -r ../libs/ ${ANDROID_NDK_HOME}/sources/third_party/libusb ; cp -r ../../libusb ${ANDROID_NDK_HOME}/sources/third_party/libusb/include)
${CONFIGURE_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} armeabi-v7a ${STL_CHOSEN} ${RELEASE_TYPE} &
${CONFIGURE_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} arm64-v8a ${STL_CHOSEN} ${RELEASE_TYPE} &
${CONFIGURE_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} x86 ${STL_CHOSEN} ${RELEASE_TYPE} &
${CONFIGURE_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} x86_64 ${STL_CHOSEN} ${RELEASE_TYPE}
for target_arch in ${LIST_ARCHITECTURES};
do
${CONFIGURE_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} ${target_arch} ${STL_CHOSEN} ${RELEASE_TYPE} &
done
wait $(jobs -p)
echo "All libraries configured..."
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} armeabi-v7a
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} arm64-v8a
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} x86
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} x86_64
for target_arch in ${LIST_ARCHITECTURES};
do
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} ${target_arch}
done

View File

@ -0,0 +1,3 @@
#!/bin/sh
docker-scripts/docker_build_base buildriscv64 "-DCMAKE_TOOLCHAIN_FILE=toolchains/linux_riscv64.cmake"

View File

@ -0,0 +1,17 @@
# the name of the target operating system
SET(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR riscv64)
# which C and C++ compiler to use
set(CMAKE_C_COMPILER "/usr/bin/riscv64-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "/usr/bin/riscv64-linux-gnu-g++")
# here is the target environment located
SET(CMAKE_FIND_ROOT_PATH /usr/lib/riscv64-linux-gnu)
# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)