mcbin

mcbin.git
git clone git://git.lenczewski.org/mcbin.git
Log | Files | Refs | README

commit cf68f5ff906616842f9816701c0c45185a3cf5c5
parent e048aca80df598025dc38491abf28718c72af649
Author: MikoĊ‚aj Lenczewski <mblenczewski@gmail.com>
Date:   Sun,  6 Sep 2026 17:07:40 +0100

Fix clang build. Update packages.

Diffstat:
Mbuild.sh | 36++++++++++++++----------------------
Mclean.sh | 16++++++++++++----
Dmrvl_scp_bl2_pm.img | 0
Mpatches/mv-ddr-clang-got.patch | 4++--
Apatches/u-boot-clang.patch | 25+++++++++++++++++++++++++
Msetup.sh | 6++++--
Atoolchain.sh | 12++++++++++++
7 files changed, 69 insertions(+), 30 deletions(-)

diff --git a/build.sh b/build.sh @@ -1,41 +1,33 @@ #!/bin/sh -export CROSS_COMPILE=aarch64-linux-gnu- - -USE_EDK2=false +. "$(dirname $0)/toolchain.sh" set -ex if $USE_EDK2; then + # build edk2 + export WORKSPACE="$PWD" + export PACKAGES_PATH="$PWD/edk2:$PWD/edk2-platforms:$PWD/edk2-non-osi" -# build edk2 -export WORKSPACE="$PWD" -export PACKAGES_PATH="$PWD/edk2:$PWD/edk2-platforms:$PWD/edk2-non-osi" - -. edk2/edksetup.sh - -make -C edk2/BaseTools + . edk2/edksetup.sh -export GCC5_AARCH64_PREFIX=$CROSS_COMPILE -build -a AARCH64 -t GCC5 -b RELEASE -D X64EMU_ENABLE -D INCLUDE_TFTP_COMMAND -p Platform/SolidRun/Armada80x0McBin/Armada80x0McBin.dsc -export BL33=$PWD/Build/Armada80x0McBin-AARCH64/RELEASE_GCC5/FV/ARMADA_EFI.fd + make -C edk2/BaseTools + export GCC5_AARCH64_PREFIX=$CROSS_COMPILE + build -a AARCH64 -t GCC5 -b RELEASE -D X64EMU_ENABLE -D INCLUDE_TFTP_COMMAND -p Platform/SolidRun/Armada80x0McBin/Armada80x0McBin.dsc + export BL33=$PWD/Build/Armada80x0McBin-AARCH64/RELEASE_GCC5/FV/ARMADA_EFI.fd else - -# build u-boot -make -C u-boot mvebu_mcbin-88f8040_defconfig -make -C u-boot - -export BL33=$PWD/u-boot/u-boot.bin - + # build u-boot + make -C u-boot HOSTCC=$HOSTCC CC=clang mvebu_mcbin-88f8040_defconfig + make -C u-boot HOSTCC=$HOSTCC HOSTLD=$HOSTLD CROSS_COMPILE=$UBOOT_TARGET CC=clang LD=ld.lld + export BL33=$PWD/u-boot/u-boot.bin fi # build arm-trusted-firmware export SCP_BL2=$PWD/mv-bin/mrvl_scp_bl2.img -#export SCP_BL2=$PWD/mrvl_scp_bl2_pm.img # TODO: find real pm-enabled blob export MV_DDR_PATH=$PWD/mv-ddr -make -C tfa USE_COHERENT_MEM=0 LOG_LEVEL=20 PLAT=a80x0_mcbin all fip mrvl_flash +make -C tfa CC=clang USE_COHERENT_MEM=0 LOG_LEVEL=20 PLAT=a80x0_mcbin all fip mrvl_flash cp tfa/build/a80x0_mcbin/release/flash-image.bin flash-image.bin diff --git a/clean.sh b/clean.sh @@ -1,9 +1,17 @@ #!/bin/sh -export CROSS_COMPILE=aarch64-linux-gnu- +. "$(dirname $0)/toolchain.sh" set -ex -rm -rf Build/ -make -C u-boot clean -make -C tfa CROSS_COMPILE=$CROSS_COMPILE realclean +if $USE_EDK2; then + rm -rf Build/ + make -C tfa CROSS_COMPILE=$CROSS_COMPILE realclean +else + make -C u-boot distclean +fi + +make -C tfa CC=clang realclean +make -C mv-ddr clean + +rm -rf boot.scr flash-image.bin diff --git a/mrvl_scp_bl2_pm.img b/mrvl_scp_bl2_pm.img Binary files differ. diff --git a/patches/mv-ddr-clang-got.patch b/patches/mv-ddr-clang-got.patch @@ -8,8 +8,8 @@ index 045284c..4733ba4 100644 LD = $(CROSS)ld -CC = $(CROSS)gcc -AS = $(CROSS)gcc -+CC = $(CROSS)cc -+AS = $(CROSS)cc ++CC ?= $(CROSS)cc ++AS ?= $(CROSS)cc AR = $(CROSS)ar OBJCOPY = $(CROSS)objcopy OBJDUMP = $(CROSS)objdump diff --git a/patches/u-boot-clang.patch b/patches/u-boot-clang.patch @@ -0,0 +1,25 @@ +diff --git a/Makefile b/Makefile +index 4c86f5ac409..3140fcd9a42 100644 +--- a/Makefile ++++ b/Makefile +@@ -656,11 +656,19 @@ endif + ifneq ($(GCC_TOOLCHAIN),) + CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN) + endif +-CLANG_FLAGS += -no-integrated-as + KBUILD_CFLAGS += $(CLANG_FLAGS) + KBUILD_CPPFLAGS += $(CLANG_FLAGS) + KBUILD_AFLAGS += $(CLANG_FLAGS) + export CLANG_FLAGS ++ ++# use llvm-provided alternatives to gnu toolchain tools ++AR := llvm-ar ++NM := llvm-nm ++STRIP := llvm-strip ++OBJCOPY := llvm-objcopy ++OBJDUMP := llvm-objdump ++READELF := llvm-readelf ++ + endif + + RETPOLINE_CFLAGS_GCC := -mindirect-branch=thunk-extern -mindirect-branch-register diff --git a/setup.sh b/setup.sh @@ -12,12 +12,14 @@ git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git # (cd edk2-non-osi; git submodule update --init) git clone https://github.com/u-boot/u-boot.git -( cd u-boot; git checkout v2026.01 ) +( cd u-boot; git checkout v2026.04; git apply ../patches/u-boot-clang.patch ) git clone https://github.com/ARM-software/arm-trusted-firmware.git tfa -( cd tfa; git checkout lts-v2.12.9 ) +( cd tfa; git checkout lts-v2.14.0; git apply ../patches/tfa-clang.patch ) git clone https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell.git mv-ddr +( cd mv-ddr; git apply ../patches/mv-ddr-clang-got.patch ) +# NOTE: mrvl_scp_bl2.img from the sdk 10.0.1.0 is power-management enabled git clone https://github.com/MarvellEmbeddedProcessors/binaries-marvell.git mv-bin ( cd mv-bin; git checkout binaries-marvell-armada-SDK10.0.1.0 ) diff --git a/toolchain.sh b/toolchain.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +USE_EDK2=false + +UBOOT_TARGET=aarch64-linux-gnueabi- +TFA_TARGET=aarch64-none-elf- +DDR_TARGET=aarch64-none-elf- + +HOSTCC=$(which cc) +HOSTLD=$(which ld) + +CC=clang