1 LOCAL_PATH := $(call my-dir) 2 3 ifeq ($(TARGET_BOARD_PLATFORM),moorefield) 4 5 CMDLINE_SIZE ?= 0x400 6 BOOTSTUB_SIZE ?= 8192 7 8 BOOTSTUB_SRC_FILES := bootstub.c sfi.c ssp-uart.c imr_toc.c spi-uart.c 9 BOOTSTUB_SRC_FILES_x86 := head.S e820_bios.S 10 11 include $(CLEAR_VARS) 12 13 # bootstub.bin 14 LOCAL_SRC_FILES := $(BOOTSTUB_SRC_FILES) 15 LOCAL_SRC_FILES_x86 := $(BOOTSTUB_SRC_FILES_x86) 16 ANDROID_TOOLCHAIN_FLAGS := -m32 -ffreestanding 17 LOCAL_CFLAGS := $(ANDROID_TOOLCHAIN_FLAGS) -Wall -O1 -DCMDLINE_SIZE=${CMDLINE_SIZE} 18 LOCAL_MODULE := bootstub.bin 19 LOCAL_MODULE_TAGS := optional 20 LOCAL_MODULE_PATH := $(PRODUCT_OUT) 21 LOCAL_MODULE_CLASS := EXECUTABLES 22 LOCAL_FORCE_STATIC_EXECUTABLE := true 23 24 25 include $(BUILD_SYSTEM)/binary.mk 26 27 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CFLAGS := $(LOCAL_CFLAGS) 28 $(LOCAL_BUILT_MODULE) : PRIVATE_ELF_FILE := $(intermediates)/$(PRIVATE_MODULE).elf 29 $(LOCAL_BUILT_MODULE) : PRIVATE_LINK_SCRIPT := $(LOCAL_PATH)/bootstub.lds 30 $(LOCAL_BUILT_MODULE) : BOOTSTUB_OBJS := $(patsubst %.c, %.o , $(LOCAL_SRC_FILES)) 31 $(LOCAL_BUILT_MODULE) : BOOTSTUB_OBJS += $(patsubst %.S, %.o , $(LOCAL_SRC_FILES_x86)) 32 $(LOCAL_BUILT_MODULE) : BOOTSTUB_OBJS := $(addprefix $(intermediates)/, $(BOOTSTUB_OBJS)) 33 34 $(LOCAL_BUILT_MODULE): $(all_objects) 35 @$(mkdir -p $(dir $@) 36 @echo "Generating bootstub.bin: $@" 37 $(hide) $(TARGET_LD) \ 38 -m elf_i386 \ 39 -T $(PRIVATE_LINK_SCRIPT) \ 40 $(BOOTSTUB_OBJS) \ 41 -o $(PRIVATE_ELF_FILE) 42 $(hide) $(TARGET_OBJCOPY) -O binary -R .note -R .comment -S $(PRIVATE_ELF_FILE) $@ 43 44 # Then assemble the final bootstub file 45 bootstub_bin := $(PRODUCT_OUT)/bootstub.bin 46 bootstub_full := $(PRODUCT_OUT)/bootstub 47 48 CHECK_BOOTSTUB_SIZE : $(bootstub_bin) 49 $(hide) ACTUAL_SIZE=`$(call get-file-size,$(bootstub_bin))`; \ 50 if [ "$$ACTUAL_SIZE" -gt "$(BOOTSTUB_SIZE)" ]; then \ 51 echo "$(bootstub_bin): $$ACTUAL_SIZE exceeds size limit of $(BOOTSTUB_SIZE) bytes, aborting."; \ 52 exit 1; \ 53 fi 54 55 $(bootstub_full) : CHECK_BOOTSTUB_SIZE 56 @echo "Generating bootstub: $@" 57 $(hide) cat $(bootstub_bin) /dev/zero | dd bs=$(BOOTSTUB_SIZE) count=1 > $@ 58 59 # build specific bootstub for GPT/AOSP image support 60 include $(CLEAR_VARS) 61 62 # 2ndbootloader.bin 63 LOCAL_SRC_FILES := $(BOOTSTUB_SRC_FILES) 64 LOCAL_SRC_FILES_x86 := $(BOOTSTUB_SRC_FILES_x86) 65 ANDROID_TOOLCHAIN_FLAGS := -m32 -ffreestanding 66 LOCAL_CFLAGS := $(ANDROID_TOOLCHAIN_FLAGS) -Wall -O1 -DCMDLINE_SIZE=${CMDLINE_SIZE} -DBUILD_RAMDUMP 67 LOCAL_MODULE := 2ndbootloader.bin 68 LOCAL_MODULE_TAGS := optional 69 LOCAL_MODULE_PATH := $(PRODUCT_OUT) 70 LOCAL_MODULE_CLASS := EXECUTABLES 71 LOCAL_FORCE_STATIC_EXECUTABLE := true 72 73 include $(BUILD_SYSTEM)/binary.mk 74 75 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CFLAGS := $(LOCAL_CFLAGS) 76 $(LOCAL_BUILT_MODULE) : PRIVATE_ELF_FILE := $(intermediates)/$(PRIVATE_MODULE).elf 77 $(LOCAL_BUILT_MODULE) : PRIVATE_LINK_SCRIPT := $(LOCAL_PATH)/2ndbootloader.lds 78 $(LOCAL_BUILT_MODULE) : BOOTSTUB_OBJS := $(patsubst %.c, %.o , $(LOCAL_SRC_FILES)) 79 $(LOCAL_BUILT_MODULE) : BOOTSTUB_OBJS += $(patsubst %.S, %.o , $(LOCAL_SRC_FILES_x86)) 80 $(LOCAL_BUILT_MODULE) : BOOTSTUB_OBJS := $(addprefix $(intermediates)/, $(BOOTSTUB_OBJS)) 81 82 $(LOCAL_BUILT_MODULE): $(all_objects) 83 @$(mkdir -p $(dir $@) 84 @echo "Generating bootstub $@" 85 $(hide) $(TARGET_LD) \ 86 -m elf_i386 \ 87 -T $(PRIVATE_LINK_SCRIPT) \ 88 $(BOOTSTUB_OBJS) \ 89 -o $(PRIVATE_ELF_FILE) 90 $(hide) $(TARGET_OBJCOPY) -O binary -R .note -R .comment -S $(PRIVATE_ELF_FILE) $@ 91 92 # Then assemble the final 2ndbootloader file 93 bootstub_aosp_bin := $(PRODUCT_OUT)/2ndbootloader.bin 94 bootstub_aosp_full := $(PRODUCT_OUT)/2ndbootloader 95 96 CHECK_BOOTSTUB_AOSP_SIZE : $(bootstub_aosp_bin) 97 $(hide) ACTUAL_SIZE=`$(call get-file-size,$(bootstub_aosp_bin))`; \ 98 if [ "$$ACTUAL_SIZE" -gt "$(BOOTSTUB_SIZE)" ]; then \ 99 echo "$(bootstub_aosp_bin): $$ACTUAL_SIZE exceeds size limit of $(BOOTSTUB_SIZE) bytes, aborting."; \ 100 exit 1; \ 101 fi 102 103 $(bootstub_aosp_full) : CHECK_BOOTSTUB_AOSP_SIZE 104 @echo "Generating bootstub $@" 105 $(hide) cat $(bootstub_aosp_bin) /dev/zero | dd bs=$(BOOTSTUB_SIZE) count=1 > $@ 106 107 endif #($(TARGET_BOARD_PLATFORM),moorefield) 108