From 36af1b08747c03fc08e08c36f4a57cd5903a9193 Mon Sep 17 00:00:00 2001 From: NADAL Jean-Baptiste Date: Fri, 25 Oct 2019 18:35:14 +0200 Subject: [PATCH] Add toolchain rules --- README.md | 6 +++- bsp/board/rpi/main.mk | 12 +++++++ bsp/include/buildroot.mk | 13 ++++++- bsp/include/toolchain.mk | 26 ++++++++++++++ bsp/scripts/clean_external_packages.sh | 0 bsp/scripts/toolchain_build.sh | 35 +++++++++++++++++++ projects/rpi_minimal/Makefile | 10 ++++++ .../rpi_minimal/configs/toolchain_defconfig | 13 +++++++ .../configs/toolchain_defconfig.ok | 28 +++++++++++++++ projects/rpi_minimal/post-build.sh | 29 +++++++++++++++ 10 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 bsp/board/rpi/main.mk create mode 100644 bsp/include/toolchain.mk mode change 100644 => 100755 bsp/scripts/clean_external_packages.sh create mode 100755 bsp/scripts/toolchain_build.sh create mode 100644 projects/rpi_minimal/Makefile create mode 100644 projects/rpi_minimal/configs/toolchain_defconfig create mode 100644 projects/rpi_minimal/configs/toolchain_defconfig.ok create mode 100755 projects/rpi_minimal/post-build.sh diff --git a/README.md b/README.md index ff38a10c..db7e6cdd 100644 --- a/README.md +++ b/README.md @@ -17,4 +17,8 @@ Scanning ... 98:D3:35:00:A6:1C HC-05 ``` -https://askubuntu.com/questions/248817/how-to-i-connect-a-raw-serial-terminal-to-a-bluetooth-connection \ No newline at end of file +https://askubuntu.com/questions/248817/how-to-i-connect-a-raw-serial-terminal-to-a-bluetooth-connection + + +# System buidlroot complet. +https://www.blaess.fr/christophe/articles/creer-un-systeme-complet-avec-buildroot/ diff --git a/bsp/board/rpi/main.mk b/bsp/board/rpi/main.mk new file mode 100644 index 00000000..322b9fd9 --- /dev/null +++ b/bsp/board/rpi/main.mk @@ -0,0 +1,12 @@ +# +# Main rules for domo board targets. +# +# + +.PHONY: all +all: msg buildroot + +include ../../bsp/include/rules.mk +include ../../bsp/include/buildroot.mk +include ../../bsp/include/toolchain.mk +include ../../bsp/include/dtb.mk diff --git a/bsp/include/buildroot.mk b/bsp/include/buildroot.mk index 23be6f9c..220db1a2 100644 --- a/bsp/include/buildroot.mk +++ b/bsp/include/buildroot.mk @@ -14,6 +14,12 @@ buildroot.menuconfig: buildroot.config $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ savedefconfig @echo "Saving defconfig done." +toolchain.menuconfig: toolchain.config + $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ menuconfig + @echo "Saving defconfig (Waiting) ...." + $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ savedefconfig + @echo "Saving defconfig done." + buildroot.nconfig: buildroot.config $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ nconfig @echo "Saving defconfig (Waiting) ...." @@ -30,6 +36,11 @@ buildroot.shell: buildroot.config buildroot.config: $(BR_STAGING)/buildroot/.config +toolchain.config: $(BR_PROJECT)/configs/toolchain_defconfig + @mkdir -p $(BR_STAGING)/buildroot/ + @cp $(BR_PROJECT)/configs/toolchain_defconfig $(BR_STAGING)/buildroot/.config + $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ defconfig + $(BR_STAGING)/buildroot/.config: $(BR_PROJECT)/configs/buildroot_defconfig @mkdir -p $(BR_STAGING)/buildroot/ @cp $(BR_PROJECT)/configs/buildroot_defconfig $(BR_STAGING)/buildroot/.config @@ -39,4 +50,4 @@ buildroot.check-package: find $(BR_PROJECT)/../../bsp/buildroot_external/package/ -type f \( -name '*.mk' -o -name '*.hash' -o -name 'Config.*' \) -exec $(BR_PROJECT)/../../bsp/buildroot/utils/check-package -b {} \; install.sd: - sudo dd if=$(BR_STAGING)/buildroot/images/sdcard.img of=/dev/sdb && sync && sync + sudo dd if=$(BR_STAGING)/buildroot/images/sdcard.img of=/dev/sdc && sync && sync diff --git a/bsp/include/toolchain.mk b/bsp/include/toolchain.mk new file mode 100644 index 00000000..9c057e3b --- /dev/null +++ b/bsp/include/toolchain.mk @@ -0,0 +1,26 @@ +# +# + +BR2_EXTERNAL ?= $(BR_PROJECT)/../../bsp/buildroot_external/ + +BR_ENV = BR2_EXTERNAL=$(BR2_EXTERNAL) O=$(BR_STAGING)/buildroot/ WORKSPACE_DIR=$(BR_STAGING) +BR_ENV += BUILDS_ROOT=$(BR_LOCAL_BUILDS_ROOT) BOARD=$(BR_BOARD) PROJECT=$(BR_PROJECT) +BR_ENV += BR2_DEFCONFIG=$(BR_PROJECT)/configs/toolchain_defconfig BR2_DEFCONFIG_FROM_ENV=1 +BR_ENV += LD_LIBRARY_PATH=$(BR_STAGING)/cross/opt/ext-toolchain/lib/ + +toolchain.menuconfig: toolchain.config + $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ menuconfig + @echo "Saving defconfig (Waiting) ...." + $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ savedefconfig + @echo "Saving defconfig done." + +toolchain.config: $(BR_PROJECT)/configs/toolchain_defconfig + @mkdir -p $(BR_STAGING)/buildroot/ + @cp $(BR_PROJECT)/configs/toolchain_defconfig $(BR_STAGING)/buildroot/.config + $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ defconfig + +toolchain: toolchain.config + $(MAKE) $(BR_ENV) -C $(BR_PROJECT)/../../bsp/buildroot/ $(BR_TARGET) + +toolchain.archive: + $(BR_PROJECT)/../../bsp/scripts/toolchain_build.sh $(BR_STAGING)/cross $(BR_LOCAL_BUILDS_ROOT)/delivery/ diff --git a/bsp/scripts/clean_external_packages.sh b/bsp/scripts/clean_external_packages.sh old mode 100644 new mode 100755 diff --git a/bsp/scripts/toolchain_build.sh b/bsp/scripts/toolchain_build.sh new file mode 100755 index 00000000..43eac584 --- /dev/null +++ b/bsp/scripts/toolchain_build.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Catch build Error +function error { + + echo "Docker build Failed." + exit 1; +} + +cross_compiler_path=$1 +delivery_path=$2 + +echo "Cross Compiler Path: $cross_compiler_path" +echo "Delivery Path: $delivery_path" + +BASE=`$cross_compiler_path/bin/*-*-gcc --version | head -n 1 | cut -d ' ' -f 1 | cut -d '.' -f 1` +GCC_VERSION=`$cross_compiler_path/bin/*-*-gcc --version | head -n 1 | cut -d ' ' -f 4` +VERSION=`$cross_compiler_path/bin/*-*-gcc --version | head -n 1 | cut -d ' ' -f 3 | cut -d '-' -f 1` + +LIBC=unknown +cat configs/toolchain_defconfig | grep BR2_TOOLCHAIN_BUILDROOT_GLIBC +if test $? -eq 0; then LIBC=glibc; fi +cat configs/toolchain_defconfig | grep BR2_TOOLCHAIN_BUILDROOT_UCLIBC +if test $? -eq 0; then LIBC=uclibc; fi +cat configs/toolchain_defconfig | grep BR2_TOOLCHAIN_BUILDROOT_MUSL +if test $? -eq 0; then LIBC=musl; fi + +echo "BASE: $BASE" +echo "GCC_VERSION: $GCC_VERSION" +echo "VERSION: $VERSION" +echo "LIBC: $LIBC" + +mkdir -p $delivery_path +cd $cross_compiler_path +tar cvzf $delivery_path/toochain_${BASE}-${GCC_VERSION}-${LIBC}-${VERSION}.tgz . diff --git a/projects/rpi_minimal/Makefile b/projects/rpi_minimal/Makefile new file mode 100644 index 00000000..113a541b --- /dev/null +++ b/projects/rpi_minimal/Makefile @@ -0,0 +1,10 @@ +# +# Entry point for the project. + +# Define the target. +export BR_PROJECT:=$(shell pwd) +export BR_PROJECT_NAME:=rpi_minimal + +export BR_BOARD:=$(shell pwd)/../../bsp/board/rpi/ + +include $(BR_BOARD)/main.mk diff --git a/projects/rpi_minimal/configs/toolchain_defconfig b/projects/rpi_minimal/configs/toolchain_defconfig new file mode 100644 index 00000000..7d12e117 --- /dev/null +++ b/projects/rpi_minimal/configs/toolchain_defconfig @@ -0,0 +1,13 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_DL_DIR="$(BUILDS_ROOT)/dl" +BR2_HOST_DIR="$(WORKSPACE_DIR)/cross" +BR2_PRIMARY_SITE="http://cdn.nadal-fr.com/buildroot" +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_KERNEL_HEADERS_4_14=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_PACKAGE_HOST_GDB=y +BR2_INIT_NONE=y +BR2_SYSTEM_BIN_SH_NONE=y +# BR2_PACKAGE_BUSYBOX is not set +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/projects/rpi_minimal/configs/toolchain_defconfig.ok b/projects/rpi_minimal/configs/toolchain_defconfig.ok new file mode 100644 index 00000000..a870cbc8 --- /dev/null +++ b/projects/rpi_minimal/configs/toolchain_defconfig.ok @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_DL_DIR="$(BUILDS_ROOT)/dl" +BR2_HOST_DIR="$(WORKSPACE_DIR)/cross" +BR2_PRIMARY_SITE="http://cdn.nadal-fr.com/buildroot" +BR2_PACKAGE_OVERRIDE_FILE="$(BOARD)/local.mk" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL)/patches" +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_PACKAGE_HOST_GDB=y +BR2_TARGET_GENERIC_HOSTNAME="rpi_Domo" +BR2_TARGET_GENERIC_ISSUE="Welcome to Domo" +BR2_INIT_NONE=y +BR2_ROOTFS_DEVICE_TABLE="" +BR2_SYSTEM_BIN_SH_NONE=y +# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set +# BR2_PACKAGE_BUSYBOX is not set +BR2_PACKAGE_WIRINGPI=y +BR2_PACKAGE_LIBDAEMON=y +BR2_PACKAGE_LIBUBOX=y +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_DTC=y +BR2_PACKAGE_HOST_E2FSPROGS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/projects/rpi_minimal/post-build.sh b/projects/rpi_minimal/post-build.sh new file mode 100755 index 00000000..f8277f3e --- /dev/null +++ b/projects/rpi_minimal/post-build.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Catch Postbuild Error +function error { + + echo "Postbuild Failed." + exit 1; +} + +set -e +trap error ERR + +echo "==> POSTBUILD:" + +echo "BR_STAGING: ${BR_STAGING}" +echo "BR_PROJECT: " ${BR_PROJECT} + +cp -a ${BR_PROJECT}/configs/config.txt ${BR_STAGING}/buildroot/images/ + +if [ ! -f ${AW_STAGING}/buildroot/images/data.ext2 ]; +then + echo "generate data image (10M)." + dd if=/dev/zero of=${BR_STAGING}/buildroot/images/data.ext2 bs=1k count=10000 + ${BR_STAGING}/cross/usr/sbin/mkfs.ext2 -i 1024 -b 1024 -F ${BR_STAGING}/buildroot/images/data.ext2 +fi + +cp -a ${BR_STAGING}/buildroot/images/uboot-env.bin ${BR_STAGING}/buildroot/images/uboot.env + +make -C ${BR_PROJECT} dtb