#############################################################
#
# 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 unless we're at make source
ifeq ($(filter source,$(MAKECMDGOALS)),)
ifeq ($(BAREBOX_BOARD_DEFCONFIG),)
$(error No Barebox defconfig file. Check your BR2_TARGET_BAREBOX_BOARD_DEFCONFIG setting)
endif
endif

endif
