Home | History | Annotate | Download | only in bootstub
      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