Add support for the Barebox bootloader
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 30 May 2010 20:46:45 +0000 (22:46 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 12 Jun 2010 14:03:24 +0000 (16:03 +0200)
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
boot/Config.in
boot/barebox/Config.in [new file with mode: 0644]
boot/barebox/barebox.mk [new file with mode: 0644]

index 78ff82c965373d14449c1446904d095021d0ee98..6bcc98af54f5c99b1fb43e1f35906f62fb5e7c4e 100644 (file)
@@ -1,5 +1,6 @@
 menu "Bootloaders"
 
+source "boot/barebox/Config.in"
 source "boot/grub/Config.in"
 source "boot/grub2/Config.in"
 source "boot/syslinux/Config.in"
diff --git a/boot/barebox/Config.in b/boot/barebox/Config.in
new file mode 100644 (file)
index 0000000..0c90f03
--- /dev/null
@@ -0,0 +1,14 @@
+menuconfig BR2_TARGET_BAREBOX
+       bool "Barebox"
+       help
+         The Barebox bootloader, formerly known as U-Boot v2.
+
+         http://www.barebox.org
+
+if BR2_TARGET_BAREBOX
+config BR2_TARGET_BAREBOX_BOARD_DEFCONFIG
+       string "board defconfig"
+       help
+         Name of the board for which Barebox should be built, without
+         the _defconfig suffix.
+endif
diff --git a/boot/barebox/barebox.mk b/boot/barebox/barebox.mk
new file mode 100644 (file)
index 0000000..7c2cbc1
--- /dev/null
@@ -0,0 +1,61 @@
+#############################################################
+#
+# Barebox
+#
+#############################################################
+
+BAREBOX_VERSION:=2010.05.0
+BAREBOX_SOURCE:=barebox-$(BAREBOX_VERSION).tar.bz2
+BAREBOX_SITE:=http://www.barebox.org/download/
+BAREBOX_DIR:=$(BUILD_DIR)/barebox-$(BAREBOX_VERSION)
+BAREBOX_CAT:=$(BZCAT)
+BAREBOX_BOARD_DEFCONFIG:=$(call qstrip,$(BR2_TARGET_BAREBOX_BOARD_DEFCONFIG))
+
+ifeq ($(KERNEL_ARCH),i386)
+BAREBOX_ARCH=x86
+else ifeq ($(KERNEL_ARCH),powerpc)
+BAREBOX_ARCH=ppc
+else
+BAREBOX_ARCH=$(KERNEL_ARCH)
+endif
+
+BAREBOX_MAKE_FLAGS = ARCH=$(BAREBOX_ARCH) CROSS_COMPILE=$(TARGET_CROSS)
+
+$(DL_DIR)/$(BAREBOX_SOURCE):
+        $(call DOWNLOAD,$(BAREBOX_SITE),$(BAREBOX_SOURCE))
+
+$(BAREBOX_DIR)/.unpacked: $(DL_DIR)/$(BAREBOX_SOURCE)
+       mkdir -p $(@D)
+       $(INFLATE$(suffix $(BAREBOX_SOURCE))) $(DL_DIR)/$(BAREBOX_SOURCE) \
+               | tar $(TAR_STRIP_COMPONENTS)=1 -C $(@D) $(TAR_OPTIONS) -
+       touch $@
+
+$(BAREBOX_DIR)/.patched: $(BAREBOX_DIR)/.unpacked
+       toolchain/patch-kernel.sh $(BAREBOX_DIR) boot/barebox \
+               barebox-$(BAREBOX_VERSION)-\*.patch \
+               barebox-$(BAREBOX_VERSION)-\*.patch.$(ARCH)
+       touch $@
+
+$(BAREBOX_DIR)/.configured: $(BAREBOX_DIR)/.patched
+       $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(BAREBOX_DIR) $(BAREBOX_BOARD_DEFCONFIG)_defconfig
+       touch $@
+
+$(BAREBOX_DIR)/.built: $(BAREBOX_DIR)/.configured
+       $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(BAREBOX_DIR)
+       touch $@
+
+$(BAREBOX_DIR)/.installed: $(BAREBOX_DIR)/.built
+       cp $(BAREBOX_DIR)/barebox.bin $(BINARIES_DIR)
+       touch $@
+
+barebox: $(BAREBOX_DIR)/.installed
+
+ifeq ($(BR2_TARGET_BAREBOX),y)
+TARGETS+=barebox
+
+# we NEED a board defconfig file
+ifeq ($(BAREBOX_BOARD_DEFCONFIG),)
+$(error No Barebox defconfig file. Check your BR2_TARGET_BAREBOX_BOARD_DEFCONFIG setting)
+endif
+
+endif