summaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2010-05-30 22:46:45 +0200
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>2010-06-12 16:03:24 +0200
commit6cc9d936a978d558211a0553ba3cdf9113ab9c96 (patch)
treed0112417badde5c8395aa414f22c2214240fc52c /boot
parentef81363d69b7293e3c8088a0939d34a10845e675 (diff)
Add support for the Barebox bootloader
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'boot')
-rw-r--r--boot/Config.in1
-rw-r--r--boot/barebox/Config.in14
-rw-r--r--boot/barebox/barebox.mk61
3 files changed, 76 insertions, 0 deletions
diff --git a/boot/Config.in b/boot/Config.in
index 78ff82c96..6bcc98af5 100644
--- a/boot/Config.in
+++ b/boot/Config.in
@@ -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
index 000000000..0c90f0382
--- /dev/null
+++ b/boot/barebox/Config.in
@@ -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
index 000000000..7c2cbc123
--- /dev/null
+++ b/boot/barebox/barebox.mk
@@ -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