mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-25 00:11:07 +00:00
f0cfaaa147
Issue #2654
134 lines
3.7 KiB
Makefile
Executable File
134 lines
3.7 KiB
Makefile
Executable File
#!/usr/bin/make -f
|
|
|
|
#
|
|
# \brief Tool for creating an MMC image with a platform specific U-Boot setup
|
|
# \author Martin Stein
|
|
# \date 2015-09-30
|
|
#
|
|
|
|
#
|
|
# Print help text
|
|
#
|
|
help:
|
|
$(ECHO)
|
|
$(ECHO) "Tool for creating an MMC image with a platform specific U-Boot setup"
|
|
$(ECHO)
|
|
$(ECHO) "usage:"
|
|
$(ECHO)
|
|
$(ECHO) " create_uboot <platform> [BUILD_DIR=<build-dir>]"
|
|
$(ECHO)
|
|
$(ECHO) " <platform> can be:"
|
|
$(ECHO) " 'wand_quad'"
|
|
$(ECHO) " 'usb_armory'"
|
|
$(ECHO)
|
|
$(ECHO) " The image will be located at:"
|
|
$(ECHO) " $(UBOOT_BUILD_DIR)<platform>/$(shell basename $(MMC_IMG))"
|
|
$(ECHO)
|
|
|
|
PLATFORMS_ARM := wand_quad usb_armory
|
|
PLATFORMS := $(PLATFORMS_ARM)
|
|
|
|
# get targeted platform based on the make target
|
|
PLATFORM := $(firstword $(filter $(PLATFORMS),$(MAKECMDGOALS)))
|
|
|
|
# get Genode base directory based on the known location of this tool
|
|
GENODE_DIR := $(realpath $(dir $(firstword $(MAKEFILE_LIST)))/..)
|
|
|
|
UBOOT_URL := https://github.com/m-stein/uboot
|
|
UBOOT_DIR := $(GENODE_DIR)/contrib/uboot
|
|
UBOOT_TAG := $(UBOOT_DIR)/.gitignore
|
|
UBOOT_BRANCH := genode_$(PLATFORM)
|
|
UBOOT_BRANCH_TAG := $(UBOOT_DIR)/$(UBOOT_BRANCH)
|
|
UBOOT_BUILD_ROOT := $(UBOOT_DIR)/build
|
|
UBOOT_BUILD_DIR := $(UBOOT_BUILD_ROOT)/$(PLATFORM)
|
|
UBOOT_BUILD_CONF := $(UBOOT_BUILD_DIR)/.config
|
|
MMC_IMG := $(UBOOT_BUILD_DIR)/mmc_img
|
|
MMC_IMG_SIZE := 8M
|
|
SHELL := bash
|
|
VERBOSE := @
|
|
ECHO := @echo -e
|
|
BRIGHT_COL := \033[01;33m
|
|
DEFAULT_COL := \033[0m
|
|
|
|
#
|
|
# Determine architecture based on the given platform
|
|
#
|
|
ifeq ($(filter-out $(PLATFORMS_ARM),$(PLATFORM)),)
|
|
ARCH := arm
|
|
endif
|
|
|
|
UBOOT_MAKE := \
|
|
$(VERBOSE)make ARCH=$(ARCH) \
|
|
CROSS_COMPILE=/usr/local/genode-gcc/bin/genode-$(ARCH)- \
|
|
O=$(UBOOT_BUILD_DIR) \
|
|
-j4
|
|
|
|
#
|
|
# Platform settings
|
|
#
|
|
|
|
ifeq ($(PLATFORM), wand_quad)
|
|
UBOOT_IMG := $(UBOOT_BUILD_DIR)/u-boot.img
|
|
UBOOT_IMG_SPL := $(UBOOT_BUILD_DIR)/SPL
|
|
UBOOT_IMGS := $(UBOOT_IMG) $(UBOOT_IMG_SPL)
|
|
UBOOT_CONF := wandboard_config
|
|
FINISH_IMAGE := \
|
|
dd if=$(UBOOT_IMG_SPL) of=$(MMC_IMG) bs=1k seek=0 conv=notrunc,fsync; \
|
|
dd if=$(UBOOT_IMG) of=$(MMC_IMG) bs=1k seek=68 conv=notrunc,fsync;
|
|
endif
|
|
|
|
ifeq ($(PLATFORM), usb_armory)
|
|
UBOOT_IMG := $(UBOOT_BUILD_DIR)/u-boot.imx
|
|
UBOOT_IMGS := $(UBOOT_IMG)
|
|
UBOOT_CONF := usbarmory_config
|
|
FINISH_IMAGE := dd if=$(UBOOT_IMG) of=$(MMC_IMG) bs=512 seek=0 conv=fsync
|
|
endif
|
|
|
|
#
|
|
# Generic rules for the creation of the image
|
|
#
|
|
|
|
$(PLATFORM): $(MMC_IMG)
|
|
|
|
$(MMC_IMG): $(UBOOT_IMGS)
|
|
$(ECHO) "$(BRIGHT_COL)Composing MMC image...$(DEFAULT_COL)"
|
|
$(VERBOSE)dd if=/dev/zero of=$(MMC_IMG) bs=$(MMC_IMG_SIZE) seek=1 count=0
|
|
$(VERBOSE)$(FINISH_IMAGE)
|
|
$(ECHO)
|
|
$(ECHO) "Successfully created MMC image."
|
|
$(ECHO) "You can install the image on an empty MMC via"
|
|
$(ECHO)
|
|
$(ECHO) "! sudo dd if=$(MMC_IMG) of=/dev/<YOUR_MMC> bs=1K seek=1 conv=fsync"
|
|
$(ECHO)
|
|
$(ECHO) "This way, it'll end at $(MMC_IMG_SIZE) + 1 byte. To be safe, let"
|
|
$(ECHO) "your individual data (e.g. file system) start at $(MMC_IMG_SIZE) + 1M byte"
|
|
$(ECHO)
|
|
|
|
$(UBOOT_IMGS): $(UBOOT_BUILD_CONF) $(UBOOT_DIR)
|
|
$(ECHO) "$(BRIGHT_COL)Building U-Boot images...$(DEFAULT_COL)"
|
|
$(UBOOT_MAKE) -C $(UBOOT_BUILD_DIR)
|
|
|
|
$(UBOOT_BUILD_CONF): $(UBOOT_BRANCH_TAG)
|
|
$(ECHO) "$(BRIGHT_COL)Building U-Boot config...$(DEFAULT_COL)"
|
|
$(VERBOSE)mkdir -p $(UBOOT_BUILD_DIR)
|
|
$(UBOOT_MAKE) -C $(UBOOT_DIR) $(UBOOT_CONF)
|
|
|
|
$(UBOOT_BRANCH_TAG): $(UBOOT_TAG)
|
|
$(VERBOSE)git -C $(UBOOT_DIR) checkout $(UBOOT_BRANCH)
|
|
|
|
$(UBOOT_TAG):
|
|
$(ECHO) "$(BRIGHT_COL)Downloading U-Boot sources...$(DEFAULT_COL)"
|
|
$(VERBOSE)git clone $(UBOOT_URL) $(UBOOT_DIR)
|
|
|
|
.PHONY: $(PLATFORM)
|
|
|
|
#
|
|
# Clean-up rules
|
|
#
|
|
|
|
clean:
|
|
rm -rf $(UBOOT_BUILD_ROOT)
|
|
|
|
cleanall:
|
|
rm -rf $(UBOOT_DIR)
|