Create toolchain for multiple architectures on linux

This commit is contained in:
Lorenzooone
2024-08-09 22:31:50 +02:00
parent 8d76e38a37
commit 08420c916f
19 changed files with 302 additions and 28 deletions

View File

@@ -0,0 +1,60 @@
################################################################################
### Build cmake ###
################################################################################
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
RUN useradd builder -m
RUN mkdir -p /home/builder/cc3dsfs
RUN mkdir -p /home/builder/building
RUN chown -R builder:builder /home/builder
################################################################################
### Build x86_32 ###
################################################################################
FROM base_builder as builder32
COPY linux_install_packages.sh /
RUN chmod +x /linux_install_packages.sh ; /linux_install_packages.sh i386
WORKDIR /home/builder/building
COPY docker_build_starter /
RUN chmod +x /docker_build_starter
USER builder
CMD /docker_build_starter docker-scripts/docker_build_x86_32
################################################################################
### Build x86_64 ###
################################################################################
FROM base_builder as builder64
COPY linux_install_packages.sh /
RUN chmod +x /linux_install_packages.sh ; /linux_install_packages.sh amd64
WORKDIR /home/builder/building
COPY docker_build_starter /
RUN chmod +x /docker_build_starter
USER builder
CMD /docker_build_starter docker-scripts/docker_build_x86_64
################################################################################
### Build arm 32 ###
################################################################################
FROM base_builder as builderarm32
COPY linux_install_packages.sh /
RUN chmod +x /linux_install_packages.sh ; /linux_install_packages.sh armhf
WORKDIR /home/builder/building
COPY docker_build_starter /
RUN chmod +x /docker_build_starter
USER builder
CMD /docker_build_starter docker-scripts/docker_build_arm32
################################################################################
### Build arm 64 ###
################################################################################
FROM base_builder as builderarm64
COPY linux_install_packages.sh /
RUN chmod +x /linux_install_packages.sh ; /linux_install_packages.sh arm64
WORKDIR /home/builder/building
COPY docker_build_starter /
RUN chmod +x /docker_build_starter
USER builder
CMD /docker_build_starter docker-scripts/docker_build_arm64

View File

@@ -0,0 +1,9 @@
#!/bin/bash
docker image rm lorenzooone/cc3dsfs:builder32
docker build --target builder32 . -t lorenzooone/cc3dsfs:builder32
docker image rm lorenzooone/cc3dsfs:builder64
docker build --target builder64 . -t lorenzooone/cc3dsfs:builder64
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

View File

@@ -0,0 +1,6 @@
#!/bin/sh
cp -R /home/builder/cc3dsfs/. .
chmod -R +x .
$1

View File

@@ -0,0 +1,68 @@
#!/bin/bash
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/ "
NO_SPECIAL_STR=" main multiverse universe"
SECURITY_STR="-security main multiverse universe"
BACKPORTS_STR="-backports main multiverse universe"
UPDATES_STR="-updates main multiverse universe"
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_PACKAGES_BASE=("libxinerama-dev" "libxi-dev" "libxss-dev" "libxxf86vm-dev" "libxkbfile-dev" "libxv-dev" "libx11-dev" "libxrandr-dev" "libxcursor-dev" "libudev-dev" "libopenal-dev" "libflac-dev" "libvorbis-dev" "libgl1-mesa-dev" "libegl1-mesa-dev" "libdrm-dev" "libgbm-dev" "libfreetype-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")
echo "${BASE_AMD_STR}$(lsb_release -sc)${NO_SPECIAL_STR}" > ${LOCATION_AMD}
echo "${BASE_SECURITY_AMD_STR}$(lsb_release -sc)${SECURITY_STR}" >> ${LOCATION_AMD}
echo "${BASE_AMD_STR}$(lsb_release -sc)${BACKPORTS_STR}" >> ${LOCATION_AMD}
echo "${BASE_AMD_STR}$(lsb_release -sc)${UPDATES_STR}" >> ${LOCATION_AMD}
echo "${BASE_ARM_STR}$(lsb_release -sc)${NO_SPECIAL_STR}" > ${LOCATION_ARM}
echo "${BASE_ARM_STR}$(lsb_release -sc)${SECURITY_STR}" >> ${LOCATION_ARM}
echo "${BASE_ARM_STR}$(lsb_release -sc)${BACKPORTS_STR}" >> ${LOCATION_ARM}
echo "${BASE_ARM_STR}$(lsb_release -sc)${UPDATES_STR}" >> ${LOCATION_ARM}
#for a in ${LIST_ARCHITECTURES[@]};
#do
# dpkg --add-architecture ${a}
#done
dpkg --add-architecture $1
apt update
#for a in ${LIST_ARCHITECTURES[@]};
#do
# PACKAGES=""
# for p in ${LIST_PACKAGES_BASE[@]};
# do
# PACKAGES="${PACKAGES} ${p}:${a}"
# done
# apt install -y ${PACKAGES}
#done
PACKAGES=""
for p in ${LIST_PACKAGES_SPECIAL[@]};
do
PACKAGES="${PACKAGES} ${p}:$1"
done
apt install -y ${PACKAGES}
PACKAGES=""
for p in ${LIST_PACKAGES_BASE[@]};
do
PACKAGES="${PACKAGES} ${p}:$1"
done
apt install -y ${PACKAGES}
PACKAGES=""
for p in ${LIST_PACKAGES_NORMAL[@]};
do
PACKAGES="${PACKAGES} ${p}"
done
apt install -y ${PACKAGES}

View File

@@ -0,0 +1,4 @@
#!/bin/sh
docker-scripts/docker_build_base buildarm32 "-DCMAKE_TOOLCHAIN_FILE=toolchains/linux_arm32.cmake"
docker-scripts/docker_build_base buildarm32 "-DRASPBERRY_PI_COMPILATION=TRUE -DCMAKE_TOOLCHAIN_FILE=toolchains/linux_arm32.cmake"

View File

@@ -0,0 +1,4 @@
#!/bin/sh
docker-scripts/docker_build_base buildarm64 "-DCMAKE_TOOLCHAIN_FILE=toolchains/linux_arm64.cmake"
docker-scripts/docker_build_base buildarm64 "-DRASPBERRY_PI_COMPILATION=TRUE -DCMAKE_TOOLCHAIN_FILE=toolchains/linux_arm64.cmake"

View File

@@ -0,0 +1,9 @@
#!/bin/sh
cmake -S . -B $1 $2
cmake --build $1 --config Release -j
cd $1
cpack -G ZIP
mkdir -p /home/builder/cc3dsfs/build
cp cc3dsfs*.zip /home/builder/cc3dsfs/build
cd ..

View File

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

View File

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