diff --git a/README.md b/README.md index 279ef27..b466172 100755 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ sudo apt install \ libdrm-dev \ libgbm-dev \ libfreetype-dev \ + libharfbuzz-dev \ xorg-dev ``` @@ -75,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:` -The following builders are available: builder32, builder64, builderarm32 and builderarm64. +The following builders are available: builder32, builder64, builderarm32, builderarm64 and builderandroid (in beta). ## Controls diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 7f91a6d..9f861be 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -3,6 +3,7 @@ val MIN_SDK by extra((project.properties["MIN_SDK"] as? String ?: "21").toInt()) val TARGET_SDK by extra((project.properties["TARGET_SDK"] as? String ?: "33").toInt()) val STL_TYPE by extra(project.properties["STL_TYPE"] as? String ?: "c++_shared") val SFML_STATIC by extra(project.properties["SFML_STATIC"] as? String ?: "OFF") +val CMAKE_VERSION by extra(project.properties["CMAKE_VERSION"] as? String ?: "3.30.5") plugins { id("com.android.application") @@ -47,6 +48,7 @@ android { externalNativeBuild { cmake { path("../../CMakeLists.txt") + version = "${CMAKE_VERSION}" } } } diff --git a/docker-scripts/build-dockers/Dockerfile b/docker-scripts/build-dockers/Dockerfile index c2b4c80..dd07b02 100644 --- a/docker-scripts/build-dockers/Dockerfile +++ b/docker-scripts/build-dockers/Dockerfile @@ -1,11 +1,37 @@ +ARG CMAKE_VERSION_SYSTEM="3.30.9" +ARG CMAKE_VERSION_SDKMANAGER_ANDROID="3.30.5" + ################################################################################ ### Build cmake ### ################################################################################ +FROM ubuntu:jammy as cmake_builder +ARG CMAKE_VERSION_SYSTEM +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/Paris +RUN apt update && apt install -y lsb-release g++ build-essential wget git libssl-dev pkg-config +RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION_SYSTEM}/cmake-${CMAKE_VERSION_SYSTEM}.tar.gz +RUN tar -xvf cmake-${CMAKE_VERSION_SYSTEM}.tar.gz +RUN cd cmake-${CMAKE_VERSION_SYSTEM} && ./bootstrap && make -j && make install && cpack -G TGZ -C Release && mv cmake-${CMAKE_VERSION_SYSTEM}-Linux-x86_64.tar.gz ../cmake.tar.gz + +################################################################################ +### Build cmake (focal) ### +################################################################################ +FROM ubuntu:focal as cmake_builder_focal +ARG CMAKE_VERSION_SYSTEM +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/Paris +RUN apt update && apt install -y lsb-release g++ build-essential wget git libssl-dev pkg-config +RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION_SYSTEM}/cmake-${CMAKE_VERSION_SYSTEM}.tar.gz +RUN tar -xvf cmake-${CMAKE_VERSION_SYSTEM}.tar.gz +RUN cd cmake-${CMAKE_VERSION_SYSTEM} && ./bootstrap && make -j && make install && cpack -G TGZ -C Release && mv cmake-${CMAKE_VERSION_SYSTEM}-Linux-x86_64.tar.gz ../cmake.tar.gz + +################################################################################ +### Prepare generic builder ### +################################################################################ FROM ubuntu:jammy as base_builder RUN apt update && apt install -y lsb-release g++ build-essential wget git libssl-dev pkg-config -RUN wget https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2.tar.gz -RUN tar -xvf cmake-3.30.2.tar.gz -RUN cd cmake-3.30.2 && ./bootstrap && make -j && make install +COPY --from=cmake_builder 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/ && cd .. RUN useradd builder -m RUN mkdir -p /home/builder/cc3dsfs RUN mkdir -p /home/builder/building @@ -58,3 +84,37 @@ COPY docker_build_starter / RUN chmod +x /docker_build_starter USER builder CMD /docker_build_starter docker-scripts/docker_build_arm64 + +################################################################################ +### Build Android ### +################################################################################ +# Different from all others +FROM saschpe/android-ndk:31-jdk11.0.13_8-ndk23.0.7599858-cmake3.18.1 as builderandroid +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 +RUN /bin/bash -c "source /root/.sdkman/bin/sdkman-init.sh ; sdk install gradle 7.6.2" +RUN sdkmanager "build-tools;30.0.3" "cmake;${CMAKE_VERSION_SDKMANAGER_ANDROID}" +ENV ANDROID_SDK_VERSION="31" +ENV ANDROID_HOME="/opt/android-sdk-linux" +ENV ANDROID_NDK_VERSION="23.0.7599858" +ENV ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$ANDROID_NDK_VERSION" +ENV GRADLE_DIR="/home/builder/gradle" +ENV GRADLE_HOME="$GRADLE_DIR/current" +ENV GRADLE_USER_HOME=$GRADLE_HOME +ENV PATH="$ANDROID_HOME:$GRADLE_HOME/bin:$ANDROID_NDK_HOME:$PATH" +RUN useradd builder -m +RUN mkdir -p /home/builder/cc3dsfs +RUN mkdir -p /home/builder/building +RUN chown -R builder:builder /home/builder +WORKDIR /home/builder/building +COPY docker_build_starter / +RUN chmod +x /docker_build_starter +RUN chown -R builder:builder $ANDROID_HOME +RUN mkdir -p $GRADLE_DIR +RUN mv /root/.sdkman/candidates/gradle/* $GRADLE_DIR/ +RUN chown -R builder:builder $GRADLE_DIR +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 diff --git a/docker-scripts/build-dockers/Dockerfile_Android b/docker-scripts/build-dockers/Dockerfile_Android deleted file mode 100644 index 8afb577..0000000 --- a/docker-scripts/build-dockers/Dockerfile_Android +++ /dev/null @@ -1,33 +0,0 @@ -################################################################################ -### Build Android ### -################################################################################ -# Different from all others -FROM saschpe/android-ndk:31-jdk11.0.13_8-ndk23.0.7599858-cmake3.18.1 as builderandroid -RUN apt update && apt install -y lsb-release g++ build-essential wget git libssl-dev pkg-config zip unzip -RUN wget https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2.tar.gz -RUN tar -xvf cmake-3.30.2.tar.gz -RUN cd cmake-3.30.2 && ./bootstrap && make -j && make install -RUN curl -s "https://get.sdkman.io" | bash -RUN /bin/bash -c "source /root/.sdkman/bin/sdkman-init.sh ; sdk install gradle 7.6.2" -RUN sdkmanager "build-tools;30.0.3" "cmake;3.22.1" -ENV ANDROID_SDK_VERSION="31" -ENV ANDROID_HOME="/opt/android-sdk-linux" -ENV ANDROID_NDK_VERSION="23.0.7599858" -ENV ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$ANDROID_NDK_VERSION" -ENV GRADLE_DIR="/home/builder/gradle" -ENV GRADLE_HOME="$GRADLE_DIR/current" -ENV GRADLE_USER_HOME=$GRADLE_HOME -ENV PATH="$ANDROID_HOME:$GRADLE_HOME/bin:$ANDROID_NDK_HOME:$PATH" -RUN useradd builder -m -RUN mkdir -p /home/builder/cc3dsfs -RUN mkdir -p /home/builder/building -RUN chown -R builder:builder /home/builder -WORKDIR /home/builder/building -COPY docker_build_starter / -RUN chmod +x /docker_build_starter -RUN chown -R builder:builder $ANDROID_HOME -RUN mkdir -p $GRADLE_DIR -RUN mv /root/.sdkman/candidates/gradle/* $GRADLE_DIR/ -RUN chown -R builder:builder $GRADLE_DIR -USER builder -CMD /docker_build_starter docker-scripts/docker_build_android diff --git a/docker-scripts/build-dockers/build-builder.sh b/docker-scripts/build-dockers/build-builder.sh index edb7a4b..9088c58 100644 --- a/docker-scripts/build-dockers/build-builder.sh +++ b/docker-scripts/build-dockers/build-builder.sh @@ -8,4 +8,4 @@ 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:builderandroid -docker build --target builderandroid . -f Dockerfile_Android -t lorenzooone/cc3dsfs:builderandroid +docker build --target builderandroid . -t lorenzooone/cc3dsfs:builderandroid diff --git a/docker-scripts/build-dockers/linux_install_packages.sh b/docker-scripts/build-dockers/linux_install_packages.sh index 694b3db..8d10fd7 100644 --- a/docker-scripts/build-dockers/linux_install_packages.sh +++ b/docker-scripts/build-dockers/linux_install_packages.sh @@ -13,7 +13,7 @@ LOCATION_AMD="${LOCATION_BASE}/x86_compilers.list" LOCATION_ARM="${LOCATION_BASE}/arm_compilers.list" LIST_ARCHITECTURES=("amd64" "i386" "arm64" "armhf") -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") +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_SPECIAL=("libgpiod-dev") diff --git a/rpi_setup/setup.sh b/rpi_setup/setup.sh index 79e3b06..66eca12 100755 --- a/rpi_setup/setup.sh +++ b/rpi_setup/setup.sh @@ -9,7 +9,7 @@ PROGRAM_NAME=cc3dsfs DEFAULT_SCRIPT_KIOSK_MODE=${PROGRAM_NAME}_script_tv_kit_2.sh sudo apt update -sudo apt -y install xterm gpiod xserver-xorg xinit libxcursor1 x11-xserver-utils pipewire pipewire-alsa +sudo apt -y install xterm gpiod xserver-xorg xinit libxcursor1 x11-xserver-utils pipewire pipewire-alsa libharfbuzz-icu0 sudo raspi-config nonint do_boot_behaviour B2