ARG TAG=dev ARG DOCKER_IMAGE_ROOT=monok8s FROM --platform=linux/amd64 ${DOCKER_IMAGE_ROOT}/build-base:${TAG} ARG NXP_VERSION ARG ARCH ARG CROSS_COMPILE ARG DEVICE_TREE_TARGET WORKDIR /build RUN test -n "${NXP_VERSION}" || (echo "Please specify NXP_VERSION" >&2; exit 1); \ test -n "${ARCH}" || (echo "Please specify ARCH" >&2; exit 1); \ test -n "${CROSS_COMPILE}" || (echo "Please specify CROSS_COMPILE" >&2; exit 1); \ test -n "${DEVICE_TREE_TARGET}" || (echo "Please specify DEVICE_TREE_TARGET" >&2; exit 1) COPY packages/${NXP_VERSION}.tar.gz ./ RUN tar -xf ${NXP_VERSION}.tar.gz \ && mv "linux-${NXP_VERSION}" nxplinux \ && rm -f ${NXP_VERSION}.tar.gz WORKDIR /build/nxplinux COPY kernel-extra.config /tmp/kernel-extra.config COPY kernel-build/dts/*.dts ./arch/arm64/boot/dts/freescale/ RUN grep -q "^dtb-\\\$(CONFIG_ARCH_LAYERSCAPE) += ${DEVICE_TREE_TARGET}.dtb$" \ arch/arm64/boot/dts/freescale/Makefile \ || echo "dtb-\$(CONFIG_ARCH_LAYERSCAPE) += ${DEVICE_TREE_TARGET}.dtb" \ >> arch/arm64/boot/dts/freescale/Makefile # NXP tree: use the LSDK defconfig target RUN make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" defconfig lsdk.config \ && ./scripts/kconfig/merge_config.sh -m .config /tmp/kernel-extra.config \ && make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" olddefconfig \ && make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" -j"$(nproc)" # artifact collection RUN mkdir -p /out/kernel /out/rootfs \ && cp -av arch/arm64/boot/Image* /out/kernel/ 2>/dev/null || true \ && cp -av arch/arm64/boot/dts /out/kernel/dts 2>/dev/null || true \ && cp -av System.map .config /out/kernel/ \ && make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} modules_install INSTALL_MOD_PATH=/out/rootfs RUN depmod -b /out/rootfs $(ls /out/rootfs/lib/modules/) RUN find /out/kernel -name "${DEVICE_TREE_TARGET}.dtb" -exec cp {} /out/ \; RUN test -f "/out/${DEVICE_TREE_TARGET}.dtb"