25bd3be167
The main objective is to determine if the examples really work or if they have been obsoleted. The languages included in the list promote good interoperability with the NuttX API (C predominant). This will show if they are worth integrating in NuttX. **FFI method** - Rust: bindgen or c2rust - D: importC - Swift: Bridging header or clang modulemap. - Zig: `@cImport/@cInclude` or translate-c
520 lines
22 KiB
Docker
520 lines
22 KiB
Docker
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright ownership. The
|
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance with the
|
|
# License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
FROM ubuntu:22.04 AS builder-base
|
|
# NOTE WE ARE NOT REMOVEING APT CACHE.
|
|
# This should only be used for temp build images that artifacts will be copied from
|
|
RUN apt-get update -qq && apt-get install -y -qq \
|
|
curl \
|
|
patch \
|
|
xz-utils
|
|
|
|
###############################################################################
|
|
# Base image that should be used to prepare tools from nuttx-tools
|
|
###############################################################################
|
|
FROM builder-base AS nuttx-tools
|
|
|
|
RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -qq \
|
|
bison \
|
|
clang \
|
|
cmake \
|
|
flex \
|
|
g++ \
|
|
gawk \
|
|
git \
|
|
gperf \
|
|
libncurses5-dev \
|
|
make \
|
|
ninja-build \
|
|
nodejs \
|
|
npm \
|
|
unzip
|
|
|
|
RUN mkdir /tools
|
|
WORKDIR /tools
|
|
|
|
RUN mkdir -p /tools/nuttx-tools
|
|
RUN curl -s -L https://bitbucket.org/nuttx/tools/get/9ad3e1ee75c7.tar.gz \
|
|
| tar -C nuttx-tools --strip-components=1 -xz
|
|
|
|
RUN mkdir bloaty -p \
|
|
&& git clone --depth 1 --branch v1.1 https://github.com/google/bloaty bloaty \
|
|
&& cd bloaty \
|
|
&& cmake -DCMAKE_SYSTEM_PREFIX_PATH=/tools/bloaty \
|
|
&& make install
|
|
|
|
RUN cd nuttx-tools/kconfig-frontends \
|
|
&& ./configure --enable-mconf --disable-gconf --disable-qconf --enable-static --prefix=/tools/kconfig-frontends \
|
|
&& make install
|
|
|
|
# Install Rust and targets supported from NuttX
|
|
ENV RUST_HOME=/tools/rust
|
|
ENV CARGO_HOME=$RUST_HOME/cargo
|
|
ENV RUSTUP_HOME=$RUST_HOME/rustup
|
|
RUN mkdir -p $CARGO_HOME \
|
|
&& curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
|
|
&& $CARGO_HOME/bin/rustup target add thumbv6m-none-eabi \
|
|
&& $CARGO_HOME/bin/rustup target add thumbv7m-none-eabi \
|
|
&& $CARGO_HOME/bin/rustup target add riscv64gc-unknown-none-elf
|
|
|
|
# Install Swift
|
|
ENV SWIFT_VERSION=6.0-DEVELOPMENT-SNAPSHOT-2024-08-22-a
|
|
ENV SWIFT_HOME=/tools/swift
|
|
RUN mkdir -p ${SWIFT_HOME} \
|
|
&& curl -s -O -L https://download.swift.org/swift-6.0-branch/ubuntu2204/swift-${SWIFT_VERSION}/swift-${SWIFT_VERSION}-ubuntu22.04.tar.gz \
|
|
&& tar xzf swift-${SWIFT_VERSION}-ubuntu22.04.tar.gz -C ${SWIFT_HOME} \
|
|
&& rm swift-${SWIFT_VERSION}-ubuntu22.04.tar.gz
|
|
|
|
# Install Zig latest release
|
|
ENV ZIG_VERSION=0.13.0
|
|
ENV ZIG_HOME=/tools/zig
|
|
RUN mkdir -p ${ZIG_HOME} \
|
|
&& curl -s -O -L https://github.com/marler8997/zigup/releases/download/v2024_05_05/zigup-x86_64-linux.tar.gz \
|
|
&& tar xzf zigup-x86_64-linux.tar.gz -C ${ZIG_HOME} \
|
|
&& rm zigup-x86_64-linux.tar.gz \
|
|
&& chmod +x ${ZIG_HOME}/zigup \
|
|
&& ${ZIG_HOME}/zigup fetch --install-dir ${ZIG_HOME} ${ZIG_VERSION} \
|
|
&& chmod +x ${ZIG_HOME}/${ZIG_VERSION}/files/zig
|
|
|
|
|
|
# Install LDC2 latest release
|
|
ENV LDC_VERSION=1.39.0
|
|
ENV D_HOME=/tools/ldc2
|
|
RUN mkdir -p ${D_HOME} \
|
|
&& curl -s -O -L https://github.com/ldc-developers/ldc/releases/download/v${LDC_VERSION}/ldc2-${LDC_VERSION}-linux-x86_64.tar.xz \
|
|
&& tar xf ldc2-${LDC_VERSION}-linux-x86_64.tar.xz -C ${D_HOME} \
|
|
&& rm ldc2-${LDC_VERSION}-linux-x86_64.tar.xz
|
|
|
|
RUN mkdir /tools/gn -p \
|
|
&& cd /tools/gn \
|
|
&& git clone https://gn.googlesource.com/gn gn \
|
|
&& cd gn && ./build/gen.py && cd out && ninja
|
|
|
|
ENV ZAP_INSTALL_PATH=/tools/zap_release
|
|
RUN mkdir $ZAP_INSTALL_PATH -p \
|
|
&& cd $ZAP_INSTALL_PATH \
|
|
&& curl -s -O -L https://github.com/project-chip/zap/releases/download/v2023.10.09-nightly/zap-linux-x64.zip \
|
|
&& unzip zap-linux-x64.zip
|
|
|
|
ENV ZAP_DEVELOPMENT_PATH=/tools/zap
|
|
RUN cd /tools \
|
|
&& curl -s -O -L https://github.com/project-chip/zap/archive/refs/tags/v2023.10.09-nightly.zip \
|
|
&& unzip v2023.10.09-nightly.zip && mv zap-2023.10.09-nightly zap \
|
|
&& cd zap && npm install cross-spawn folder-hash
|
|
|
|
CMD [ "/bin/bash" ]
|
|
|
|
###############################################################################
|
|
# Base image that should be used to prepare arch build images
|
|
###############################################################################
|
|
FROM builder-base AS nuttx-toolchain-base
|
|
|
|
RUN mkdir /tools
|
|
WORKDIR /tools
|
|
|
|
###############################################################################
|
|
# Build image for tool required by ARM builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-arm
|
|
# Download the latest ARM clang toolchain prebuilt by ARM
|
|
RUN mkdir clang-arm-none-eabi && \
|
|
curl -s -L "https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-17.0.1/LLVMEmbeddedToolchainForArm-17.0.1-Linux-x86_64.tar.xz" \
|
|
| tar -C clang-arm-none-eabi --strip-components 1 -xJ
|
|
|
|
# Download the latest ARM GCC toolchain prebuilt by ARM
|
|
RUN mkdir gcc-arm-none-eabi && \
|
|
curl -s -L "https://developer.arm.com/-/media/Files/downloads/gnu/13.2.Rel1/binrel/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi.tar.xz" \
|
|
| tar -C gcc-arm-none-eabi --strip-components 1 -xJ
|
|
|
|
###############################################################################
|
|
# Build image for tool required by ARM64 builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-arm64
|
|
# Download the latest ARM64 GCC toolchain prebuilt by ARM
|
|
RUN mkdir gcc-aarch64-none-elf && \
|
|
curl -s -L "https://developer.arm.com/-/media/Files/downloads/gnu/13.2.Rel1/binrel/arm-gnu-toolchain-13.2.Rel1-x86_64-aarch64-none-elf.tar.xz" \
|
|
| tar -C gcc-aarch64-none-elf --strip-components 1 -xJ
|
|
|
|
###############################################################################
|
|
# Build image for tool required by AVR32 builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-avr32
|
|
# Download the prebuilt AVR32 GCC toolchain
|
|
RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -qq \
|
|
git
|
|
# Clone Main Repository
|
|
RUN mkdir -p gcc-avr32-gnu && \
|
|
git clone --depth 1 https://github.com/ramangopalan/avr32-gnu-toolchain-linux_x86 gcc-avr32-gnu
|
|
|
|
###############################################################################
|
|
# Build image for tool required by Pinguino builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-pinguino
|
|
# Download the pinguino compilers. Note this includes both 8bit and 32bit
|
|
# toolchains and builds for multiple host systems. Only copy what is needed.
|
|
RUN mkdir pinguino-compilers && \
|
|
curl -s -L "https://github.com/PinguinoIDE/pinguino-compilers/archive/62db5158d7f6d41c6fadb05de81cc31dd81a1958.tar.gz" \
|
|
| tar -C pinguino-compilers --strip-components=2 --wildcards -xz */linux64
|
|
|
|
###############################################################################
|
|
# Build image for tool required by Renesas builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-renesas
|
|
# Build Renesas RX GCC toolchain
|
|
RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -qq \
|
|
bison \
|
|
flex \
|
|
g++ \
|
|
gcc \
|
|
libncurses5-dev \
|
|
m4 \
|
|
make \
|
|
texinfo \
|
|
wget \
|
|
bzip2
|
|
|
|
# Download toolchain source code
|
|
RUN mkdir -p /tools/renesas-tools/source/binutils && \
|
|
curl -s -L "https://llvm-gcc-renesas.com/downloads/d.php?f=rx/binutils/8.3.0.202305-gnurx/binutils-2.36.1.tar.gz" \
|
|
| tar -C renesas-tools/source/binutils --strip-components=1 -xz
|
|
RUN mkdir -p /tools/renesas-tools/source/gcc && \
|
|
curl -s -L "https://llvm-gcc-renesas.com/downloads/d.php?f=rx/gcc/8.3.0.202305-gnurx/gcc-8.3.0.tar.gz" \
|
|
| tar -C renesas-tools/source/gcc --strip-components=1 -xz
|
|
RUN mkdir -p /tools/renesas-tools/source/newlib && \
|
|
curl -s -L "https://llvm-gcc-renesas.com/downloads/d.php?f=rx/newlib/8.3.0.202305-gnurx/newlib-4.1.0.tar.gz" \
|
|
| tar -C renesas-tools/source/newlib --strip-components=1 -xz
|
|
|
|
# Install binutils
|
|
RUN cd renesas-tools/source/binutils && \
|
|
chmod +x ./configure ./mkinstalldirs && \
|
|
mkdir -p /tools/renesas-tools/build/binutils && cd /tools/renesas-tools/build/binutils && \
|
|
/tools/renesas-tools/source/binutils/configure --target=rx-elf --prefix=/tools/renesas-toolchain/rx-elf-gcc --disable-werror &&\
|
|
make && make install
|
|
ENV PATH="/tools/renesas-toolchain/rx-elf-gcc/bin:$PATH"
|
|
|
|
# Install gcc
|
|
RUN cd renesas-tools/source/gcc && \
|
|
chmod +x ./contrib/download_prerequisites ./configure ./move-if-change ./libgcc/mkheader.sh && \
|
|
./contrib/download_prerequisites && \
|
|
sed -i '1s/^/@documentencoding ISO-8859-1\n/' ./gcc/doc/gcc.texi && \
|
|
sed -i 's/@tex/\n&/g' ./gcc/doc/gcc.texi && sed -i 's/@end tex/\n&/g' ./gcc/doc/gcc.texi && \
|
|
mkdir -p /tools/renesas-tools/build/gcc && cd /tools/renesas-tools/build/gcc && \
|
|
/tools/renesas-tools/source/gcc/configure --target=rx-elf --prefix=/tools/renesas-toolchain/rx-elf-gcc \
|
|
--disable-shared --disable-multilib --disable-libssp --disable-libstdcxx-pch --disable-werror --enable-lto \
|
|
--enable-gold --with-pkgversion=GCC_Build_1.02 --with-newlib --enable-languages=c && \
|
|
make && make install
|
|
ENV PATH="/tools/renesas-toolchain/rx-elf-gcc/bin:$PATH"
|
|
|
|
# Install newlib
|
|
RUN cd renesas-tools/source/newlib && \
|
|
chmod +x ./configure && \
|
|
mkdir -p /tools/renesas-tools/build/newlib && cd /tools/renesas-tools/build/newlib && \
|
|
/tools/renesas-tools/source/newlib/configure --target=rx-elf --prefix=/tools/renesas-toolchain/rx-elf-gcc && \
|
|
make && make install
|
|
RUN cd /tools/renesas-tools/build/gcc && \
|
|
make && make install
|
|
|
|
###############################################################################
|
|
# Build image for tool required by RISCV builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-riscv
|
|
# Download the latest RISCV GCC toolchain prebuilt by xPack
|
|
RUN mkdir riscv-none-elf-gcc && \
|
|
curl -s -L "https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v13.2.0-2/xpack-riscv-none-elf-gcc-13.2.0-2-linux-x64.tar.gz" \
|
|
| tar -C riscv-none-elf-gcc --strip-components 1 -xz
|
|
|
|
###############################################################################
|
|
# Build image for tool required by SPARC builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-sparc
|
|
# Download the SPARC GCC toolchain prebuilt by Gaisler
|
|
RUN mkdir sparc-gaisler-elf-gcc && \
|
|
curl -s -L "https://www.gaisler.com/anonftp/bcc2/bin/bcc-2.1.0-gcc-linux64.tar.xz" \
|
|
| tar -C sparc-gaisler-elf-gcc --strip-components 1 -xJ
|
|
|
|
###############################################################################
|
|
# Build image for tool required by ESP32 builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-esp32
|
|
# Download the latest ESP32 GCC toolchain prebuilt by Espressif
|
|
RUN mkdir -p xtensa-esp32-elf-gcc && \
|
|
curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32-elf-12.2.0_20230208-x86_64-linux-gnu.tar.xz" \
|
|
| tar -C xtensa-esp32-elf-gcc --strip-components 1 -xJ
|
|
|
|
RUN mkdir -p xtensa-esp32s2-elf-gcc && \
|
|
curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s2-elf-12.2.0_20230208-x86_64-linux-gnu.tar.xz" \
|
|
| tar -C xtensa-esp32s2-elf-gcc --strip-components 1 -xJ
|
|
|
|
RUN mkdir -p xtensa-esp32s3-elf-gcc && \
|
|
curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-12.2.0_20230208/xtensa-esp32s3-elf-12.2.0_20230208-x86_64-linux-gnu.tar.xz" \
|
|
| tar -C xtensa-esp32s3-elf-gcc --strip-components 1 -xJ
|
|
|
|
RUN echo "ESP Binaries: 2022/01/26"
|
|
RUN mkdir -p /tools/blobs && cd /tools/blobs \
|
|
&& curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32.bin" -o bootloader-esp32.bin \
|
|
&& curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32c3.bin" -o bootloader-esp32c3.bin \
|
|
&& curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32s2.bin" -o bootloader-esp32s2.bin \
|
|
&& curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32s3.bin" -o bootloader-esp32s3.bin \
|
|
&& curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32.bin" -o partition-table-esp32.bin \
|
|
&& curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32c3.bin" -o partition-table-esp32c3.bin \
|
|
&& curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32s2.bin" -o partition-table-esp32s2.bin \
|
|
&& curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32s3.bin" -o partition-table-esp32s3.bin
|
|
|
|
###############################################################################
|
|
# Build image for tool required by WASM builds
|
|
###############################################################################
|
|
FROM nuttx-toolchain-base AS nuttx-toolchain-wasm
|
|
# Download the latest WASI-enabled WebAssembly C/C++ toolchain prebuilt by WASM
|
|
RUN mkdir wasi-sdk && \
|
|
curl -s -L "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-19/wasi-sdk-19.0-linux.tar.gz" \
|
|
| tar -C wasi-sdk --strip-components 1 -xz
|
|
|
|
# Download the latest "wamrc" AOT compiler prebuilt by WAMR
|
|
RUN mkdir wamrc && \
|
|
curl -s -L "https://github.com/bytecodealliance/wasm-micro-runtime/releases/download/WAMR-1.1.2/wamrc-1.1.2-x86_64-ubuntu-20.04.tar.gz" \
|
|
| tar -C wamrc -xz
|
|
|
|
###############################################################################
|
|
# Final Docker image used for running CI system. This includes all toolchains
|
|
# supported by the CI system.
|
|
###############################################################################
|
|
FROM ubuntu:22.04
|
|
LABEL maintainer="dev@nuttx.apache.org"
|
|
|
|
RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -qq \
|
|
build-essential \
|
|
curl \
|
|
gcc \
|
|
libssl-dev
|
|
|
|
RUN mkdir -p cmake && \
|
|
curl -s -L wget https://cmake.org/files/v3.26/cmake-3.26.0.tar.gz \
|
|
| tar -C cmake --strip-components=1 -xz && \
|
|
cd cmake && ./bootstrap && make && make install && rm -rf cmake
|
|
|
|
RUN dpkg --add-architecture i386
|
|
# This is used for the final images so make sure to not store apt cache
|
|
# Note: xtensa-esp32-elf-gdb is linked to libpython2.7
|
|
RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" TZ=Etc/UTC apt-get install -y -qq --no-install-recommends \
|
|
-o APT::Immediate-Configure=0 \
|
|
avr-libc \
|
|
ccache \
|
|
clang \
|
|
clang-tidy \
|
|
g++-12-multilib \
|
|
gcc-avr \
|
|
gcc-12-multilib \
|
|
genromfs \
|
|
gettext \
|
|
git \
|
|
lib32z1-dev \
|
|
libasound2-dev libasound2-dev:i386 \
|
|
libc6-dev-i386 \
|
|
libcurl4-openssl-dev \
|
|
libmp3lame-dev:i386 \
|
|
libmad0-dev:i386 \
|
|
libncurses5-dev \
|
|
libpulse-dev libpulse-dev:i386 \
|
|
libpython2.7 \
|
|
libtinfo5 \
|
|
libusb-1.0-0-dev libusb-1.0-0-dev:i386 \
|
|
libv4l-dev libv4l-dev:i386 \
|
|
libx11-dev libx11-dev:i386 \
|
|
libxext-dev libxext-dev:i386 \
|
|
linux-headers-generic \
|
|
linux-libc-dev:i386 \
|
|
ninja-build \
|
|
npm \
|
|
qemu-system-arm \
|
|
qemu-system-misc \
|
|
python3 \
|
|
python3-pip \
|
|
python-is-python3 \
|
|
u-boot-tools \
|
|
unzip \
|
|
wget \
|
|
xxd \
|
|
file \
|
|
tclsh \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Set GCC-12 as Default compiler
|
|
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 20 && \
|
|
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 20 && \
|
|
update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 && \
|
|
update-alternatives --set cc /usr/bin/gcc && \
|
|
update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 && \
|
|
update-alternatives --set c++ /usr/bin/g++
|
|
|
|
# Configure out base setup for adding python packages
|
|
ENV PIP_DISABLE_PIP_VERSION_CHECK=true
|
|
# This disables the cache with value 0. We do not want caching as it
|
|
# increases the images size.
|
|
ENV PIP_NO_CACHE_DIR=0
|
|
# We are using the minimal python installation from the system so include
|
|
# setuptools and also wheel so we can use the binary releases of packages
|
|
# instead of requiring them to be compiled.
|
|
RUN pip3 install setuptools
|
|
RUN pip3 install wheel
|
|
RUN pip3 install cmake-format
|
|
# Install CodeChecker and use it to statically analyze the code.
|
|
# RUN pip3 install CodeChecker
|
|
# Install cvt2utf to check for non-UTF characters.
|
|
RUN pip3 install cvt2utf
|
|
# Install pytest
|
|
RUN pip3 install cxxfilt
|
|
RUN pip3 install esptool==4.8.dev4
|
|
RUN pip3 install imgtool
|
|
RUN pip3 install kconfiglib
|
|
RUN pip3 install pexpect==4.8.0
|
|
RUN pip3 install pyelftools
|
|
RUN pip3 install pyserial==3.5
|
|
RUN pip3 install pytest==6.2.5
|
|
RUN pip3 install pytest-json==0.4.0
|
|
RUN pip3 install pytest-ordering==0.6
|
|
RUN pip3 install pytest-repeat==0.9.1
|
|
# Install lark stringcase jinja2 and coloredlogs for matter build
|
|
RUN pip3 install lark
|
|
RUN pip3 install stringcase
|
|
RUN pip3 install jinja2
|
|
RUN pip3 install coloredlogs
|
|
|
|
# Upgrade nodejs to the latest version
|
|
RUN npm install -g n && n stable && hash -r
|
|
|
|
# Used to generate symbol table files
|
|
|
|
RUN mkdir /tools
|
|
WORKDIR /tools
|
|
|
|
# Pull in the tools we just built for nuttx
|
|
COPY --from=nuttx-tools /tools/bloaty/ bloaty/
|
|
ENV PATH="/tools/bloaty/bin:$PATH"
|
|
COPY --from=nuttx-tools /tools/kconfig-frontends/ kconfig-frontends/
|
|
ENV PATH="/tools/kconfig-frontends/bin:$PATH"
|
|
|
|
# Pull in the Rust toolchain including supported targets
|
|
COPY --from=nuttx-tools /tools/rust/ /tools/rust/
|
|
ENV CARGO_HOME=/tools/rust/cargo
|
|
ENV RUSTUP_HOME=/tools/rust/rustup
|
|
ENV PATH="/tools/rust/cargo/bin:$PATH"
|
|
|
|
# Pull in the Zig v0.13.0 toolchain
|
|
COPY --from=nuttx-tools /tools/zig/ /tools/zig/
|
|
ENV PATH="/tools/zig/0.13.0/files:$PATH"
|
|
|
|
# Pull in the ldc2 1.39.0 toolchain
|
|
COPY --from=nuttx-tools /tools/ldc2/ /tools/ldc2/
|
|
ENV PATH="/tools/ldc2/ldc2-1.39.0-linux-x86_64/bin:$PATH"
|
|
|
|
# Pull in the swift 6.0 toolchain
|
|
COPY --from=nuttx-tools /tools/swift/ /tools/swift/
|
|
ENV PATH="/tools/swift/swift-6.0-DEVELOPMENT-SNAPSHOT-2024-08-22-a/bin:$PATH"
|
|
|
|
# ARM toolchain
|
|
COPY --from=nuttx-toolchain-arm /tools/clang-arm-none-eabi/ clang-arm-none-eabi/
|
|
# RUN cp /usr/bin/clang-extdef-mapping-10 clang-arm-none-eabi/bin/clang-extdef-mapping
|
|
ENV PATH="/tools/clang-arm-none-eabi/bin:$PATH"
|
|
|
|
COPY --from=nuttx-toolchain-arm /tools/gcc-arm-none-eabi/ gcc-arm-none-eabi/
|
|
ENV PATH="/tools/gcc-arm-none-eabi/bin:$PATH"
|
|
|
|
# ARM64 toolchain
|
|
COPY --from=nuttx-toolchain-arm64 /tools/gcc-aarch64-none-elf/ gcc-aarch64-none-elf/
|
|
ENV PATH="/tools/gcc-aarch64-none-elf/bin:$PATH"
|
|
|
|
# AVR32 toolchain
|
|
COPY --from=nuttx-toolchain-avr32 /tools/gcc-avr32-gnu/ gcc-avr32-gnu/
|
|
ENV PATH="/tools/gcc-avr32-gnu/bin:$PATH"
|
|
|
|
# MIPS toolchain
|
|
COPY --from=nuttx-toolchain-pinguino /tools/pinguino-compilers/p32/ pinguino-compilers/p32/
|
|
ENV PATH="/tools/pinguino-compilers/p32/bin:$PATH"
|
|
|
|
# Renesas toolchain
|
|
COPY --from=nuttx-toolchain-renesas /tools/renesas-toolchain/rx-elf-gcc/ renesas-toolchain/rx-elf-gcc/
|
|
ENV PATH="/tools/renesas-toolchain/rx-elf-gcc/bin:$PATH"
|
|
|
|
# RISCV toolchain
|
|
COPY --from=nuttx-toolchain-riscv /tools/riscv-none-elf-gcc/ riscv-none-elf-gcc/
|
|
ENV PATH="/tools/riscv-none-elf-gcc/bin:$PATH"
|
|
|
|
# SPARC toolchain
|
|
COPY --from=nuttx-toolchain-sparc /tools/sparc-gaisler-elf-gcc/ sparc-gaisler-elf-gcc/
|
|
ENV PATH="/tools/sparc-gaisler-elf-gcc/bin:$PATH"
|
|
|
|
# ESP32 toolchain
|
|
COPY --from=nuttx-toolchain-esp32 /tools/xtensa-esp32-elf-gcc/ xtensa-esp32-elf-gcc/
|
|
ENV PATH="/tools/xtensa-esp32-elf-gcc/bin:$PATH"
|
|
|
|
# ESP32-S2 toolchain
|
|
COPY --from=nuttx-toolchain-esp32 /tools/xtensa-esp32s2-elf-gcc/ xtensa-esp32s2-elf-gcc/
|
|
ENV PATH="/tools/xtensa-esp32s2-elf-gcc/bin:$PATH"
|
|
|
|
# ESP32-S3 toolchain
|
|
COPY --from=nuttx-toolchain-esp32 /tools/xtensa-esp32s3-elf-gcc/ xtensa-esp32s3-elf-gcc/
|
|
ENV PATH="/tools/xtensa-esp32s3-elf-gcc/bin:$PATH"
|
|
|
|
RUN mkdir -p /tools/blobs/esp-bins
|
|
COPY --from=nuttx-toolchain-esp32 /tools/blobs/* /tools/blobs/esp-bins/
|
|
|
|
# WASI-enabled WebAssembly C/C++ toolchain
|
|
COPY --from=nuttx-toolchain-wasm /tools/wasi-sdk/ wasi-sdk/
|
|
ENV WASI_SDK_PATH="/tools/wasi-sdk"
|
|
ENV PATH="/tools/wamr:$PATH"
|
|
|
|
# gn tool
|
|
RUN mkdir -p /tools/gn
|
|
COPY --from=nuttx-tools /tools/gn/gn/out/gn /tools/gn
|
|
ENV PATH="/tools/gn:$PATH"
|
|
|
|
# ZAP tool and nodejs packet
|
|
COPY --from=nuttx-tools /tools/zap/ /tools/zap/
|
|
COPY --from=nuttx-tools /tools/zap_release/ /tools/zap_release/
|
|
ENV ZAP_INSTALL_PATH=/tools/zap_release
|
|
ENV ZAP_DEVELOPMENT_PATH=/tools/zap
|
|
|
|
# Configure ccache
|
|
RUN mkdir -p /tools/ccache/bin && \
|
|
ln -sf `which ccache` /tools/ccache/bin/aarch64-none-elf-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/aarch64-none-elf-g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/arm-none-eabi-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/arm-none-eabi-g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/avr-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/avr-g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/avr32-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/avr32-g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/cc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/c++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/clang && \
|
|
ln -sf `which ccache` /tools/ccache/bin/clang++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/p32-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/rx-elf-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/riscv-none-elf-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/riscv-none-elf-g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/sparc-gaisler-elf-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/sparc-gaisler-elf-g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32-elf-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32-elf-g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s2-elf-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s2-elf-g++ && \
|
|
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s3-elf-gcc && \
|
|
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s3-elf-g++
|
|
ENV PATH="/tools/ccache/bin:$PATH"
|
|
|
|
CMD [ "/bin/bash" ]
|