summaryrefslogtreecommitdiffstats
path: root/boot/uboot/uboot.mk
diff options
context:
space:
mode:
Diffstat (limited to 'boot/uboot/uboot.mk')
-rw-r--r--boot/uboot/uboot.mk129
1 files changed, 129 insertions, 0 deletions
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
new file mode 100644
index 000000000..3e945c7f2
--- /dev/null
+++ b/boot/uboot/uboot.mk
@@ -0,0 +1,129 @@
+#############################################################
+#
+# U-Boot
+#
+#############################################################
+UBOOT_VERSION = $(call qstrip,$(BR2_TARGET_UBOOT_VERSION))
+UBOOT_BOARD_NAME = $(call qstrip,$(BR2_TARGET_UBOOT_BOARDNAME))
+
+UBOOT_INSTALL_IMAGES = YES
+
+ifeq ($(UBOOT_VERSION),custom)
+# Handle custom U-Boot tarballs as specified by the configuration
+UBOOT_TARBALL = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION))
+UBOOT_SITE = $(dir $(UBOOT_TARBALL))
+UBOOT_SOURCE = $(notdir $(UBOOT_TARBALL))
+else
+# Handle stable official U-Boot versions
+UBOOT_SITE = ftp://ftp.denx.de/pub/u-boot
+UBOOT_SOURCE = u-boot-$(UBOOT_VERSION).tar.bz2
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)
+UBOOT_BIN = u-boot.kwb
+UBOOT_MAKE_TARGET = $(U_BOOT_BIN)
+else ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y)
+UBOOT_BIN = u-boot.ldr
+else
+UBOOT_BIN = u-boot.bin
+endif
+
+UBOOT_ARCH=$(KERNEL_ARCH)
+
+# u-boot in the past used arch=ppc for powerpc
+ifneq ($(findstring x2010.03,x$(UBOOT_VERSION)),)
+UBOOT_ARCH=$(KERNEL_ARCH:powerpc=ppc)
+endif
+
+UBOOT_CONFIGURE_OPTS += CONFIG_NOSOFTFLOAT=1
+UBOOT_MAKE_OPTS += \
+ CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \
+ ARCH=$(UBOOT_ARCH)
+
+# Helper function to fill the U-Boot config.h file.
+# Argument 1: option name
+# Argument 2: option value
+# If the option value is empty, this function does nothing.
+define insert_define
+$(if $(call qstrip,$(2)),
+ @echo "#ifdef $(strip $(1))" >> $(@D)/include/config.h
+ @echo "#undef $(strip $(1))" >> $(@D)/include/config.h
+ @echo "#endif" >> $(@D)/include/config.h
+ @echo '#define $(strip $(1)) $(call qstrip,$(2))' >> $(@D)/include/config.h)
+endef
+
+ifneq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR)),)
+define UBOOT_APPLY_CUSTOM_PATCHES
+ toolchain/patch-kernel.sh $(@D) $(BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR) \
+ uboot-$(UBOOT_VERSION)-\*.patch
+endef
+
+UBOOT_POST_PATCH_HOOKS += U_BOOT_APPLY_CUSTOM_PATCHES
+endif
+
+define UBOOT_CONFIGURE_CMDS
+ $(TARGET_CONFIGURE_OPTS) $(UBOOT_CONFIGURE_OPTS) \
+ $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \
+ $(UBOOT_BOARD_NAME)_config
+ @echo >> $(@D)/include/config.h
+ @echo "/* Add a wrapper around the values Buildroot sets. */" >> $(@D)/include/config.h
+ @echo "#ifndef __BR2_ADDED_CONFIG_H" >> $(@D)/include/config.h
+ @echo "#define __BR2_ADDED_CONFIG_H" >> $(@D)/include/config.h
+ $(call insert_define,DATE,$(DATE))
+ $(call insert_define,CONFIG_LOAD_SCRIPTS,1)
+ $(call insert_define,CONFIG_IPADDR,$(BR2_TARGET_UBOOT_IPADDR))
+ $(call insert_define,CONFIG_GATEWAYIP,$(BR2_TARGET_UBOOT_GATEWAY))
+ $(call insert_define,CONFIG_NETMASK,$(BR2_TARGET_UBOOT_NETMASK))
+ $(call insert_define,CONFIG_SERVERIP,$(BR2_TARGET_UBOOT_SERVERIP))
+ $(call insert_define,CONFIG_ETHADDR,$(BR2_TARGET_UBOOT_ETHADDR))
+ $(call insert_define,CONFIG_ETH1ADDR,$(BR2_TARGET_UBOOT_ETH1ADDR))
+ @echo "#endif /* __BR2_ADDED_CONFIG_H */" >> $(@D)/include/config.h
+endef
+
+ifeq ($(BR2_TARGET_UBOOT_TOOL_ENV),y)
+define UBOOT_BUILD_TARGET_ENV_UTILS
+ $(TARGET_CONFIGURE_OPTS) $(MAKE) HOSTCC="$(TARGET_CC)" -C $(@D) env
+endef
+endif
+
+define UBOOT_BUILD_CMDS
+ $(TARGET_CONFIGURE_OPTS) $(UBOOT_CONFIGURE_OPTS) \
+ $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \
+ $(UBOOT_MAKE_TARGET)
+ $(UBOOT_BUILD_TARGET_ENV_UTILS)
+endef
+
+define UBOOT_INSTALL_IMAGES_CMDS
+ cp -dpf $(@D)/$(UBOOT_BIN) $(BINARIES_DIR)/
+endef
+
+ifeq ($(BR2_TARGET_UBOOT_TOOL_ENV),y)
+define UBOOT_INSTALL_TARGET_ENV_UTILS
+ $(INSTALL) -m 0755 -D $(@D)/tools/env/fw_printenv \
+ $(TARGET_DIR)/usr/sbin/fw_printenv
+ ln -sf fw_printenv $(TARGET_DIR)/usr/sbin/fw_setenv
+endef
+endif
+
+define UBOOT_INSTALL_TARGET_CMDS
+ $(UBOOT_INSTALL_TARGET_ENV_UTILS)
+endef
+
+$(eval $(call GENTARGETS,boot,uboot))
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(BR2_TARGET_UBOOT),y)
+TARGETS+=u-boot
+
+# we NEED a board name unless we're at make source
+ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(UBOOT_BOARD_NAME),)
+$(error NO U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting)
+endif
+endif
+
+endif