Android.mk revision d48111f800dc67dec87e0da0648293c93beb4b39
1## Copyright 2008, The Android Open Source Project 2## 3## Licensed under the Apache License, Version 2.0 (the "License"); 4## you may not use this file except in compliance with the License. 5## You may obtain a copy of the License at 6## 7## http://www.apache.org/licenses/LICENSE-2.0 8## 9## Unless required by applicable law or agreed to in writing, software 10## distributed under the License is distributed on an "AS IS" BASIS, 11## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12## See the License for the specific language governing permissions and 13## limitations under the License. 14## 15 16 17LOCAL_PATH := $(call my-dir) 18 19ifneq ($(TARGET_SIMULATOR),true) 20ifeq ($(TARGET_ARCH),x86) 21 22include $(CLEAR_VARS) 23 24############################ 25# First, build stage1 26 27LOCAL_SRC_FILES := \ 28 stage1/stage1.S 29 30LOCAL_CFLAGS := \ 31 -Wall -Wmissing-prototypes -Wunused -Wshadow \ 32 -Wpointer-arith -falign-jumps=1 -falign-loops=1 \ 33 -falign-functions=1 -Wundef 34LOCAL_CFLAGS += -m32 -O2 -fno-builtin -nostdinc 35 36LOCAL_C_INCLUDES := $(LOCAL_PATH)/stage1 37 38LOCAL_MODULE := grub_stage1 39LOCAL_MODULE_TAGS := eng 40LOCAL_MODULE_PATH := $(PRODUCT_OUT)/grub 41 42LOCAL_SYSTEM_SHARED_LIBRARIES := 43LOCAL_SHARED_LIBRARIES := 44 45include $(BUILD_RAW_EXECUTABLE) 46 47$(LOCAL_BUILT_MODULE) : PRIVATE_LINK_SCRIPT := 48$(LOCAL_BUILT_MODULE) : PRIVATE_LIBS := 49$(LOCAL_BUILT_MODULE) : PRIVATE_RAW_EXECUTABLE_LDFLAGS := \ 50 -nostdlib -N -Ttext=7C00 -melf_i386 51 52################################################################### 53################################################################### 54## For stage2, we have to do it in several parts. 55## 1) Build pre_stage2 that contains all the source. 56## 2) Get the size of pre_stage2 from (1) and generate a header file. 57## 3) Build the "start sector" with the header file. 58## 4) concatenate start + pre_stage2 into stage2. 59################################################################### 60################################################################### 61 62################################### 63## So, build pre_stage2 target (1) 64 65include $(CLEAR_VARS) 66 67LOCAL_SRC_FILES := \ 68 stage2/asm.S \ 69 stage2/bios.c \ 70 stage2/boot.c \ 71 stage2/builtins.c \ 72 stage2/char_io.c \ 73 stage2/cmdline.c \ 74 stage2/common.c \ 75 stage2/console.c \ 76 stage2/disk_io.c \ 77 stage2/fsys_ext2fs.c \ 78 stage2/gunzip.c \ 79 stage2/serial.c \ 80 stage2/smp-imps.c \ 81 stage2/stage2.c \ 82 stage2/terminfo.c \ 83 stage2/tparm.c \ 84 stage2/preset_menu.c 85 86LOCAL_CFLAGS := \ 87 -Wall -Wmissing-prototypes -Wunused -Wshadow \ 88 -Wpointer-arith -falign-jumps=1 -falign-loops=1 \ 89 -falign-functions=1 -Wundef 90 91LOCAL_CFLAGS += -m32 -Os -fno-builtin -nostdinc 92 93LOCAL_CFLAGS += -DHAVE_CONFIG_H -DFSYS_EXT2FS=1 -DSUPPORT_SERIAL=1 94 95LOCAL_CFLAGS += -DPRESET_MENU_EXTERNAL 96 97LOCAL_C_INCLUDES := \ 98 $(LOCAL_PATH)/stage1 \ 99 $(LOCAL_PATH)/stage2 100 101LOCAL_MODULE := grub_pre_stage2 102LOCAL_MODULE_TAGS := eng 103LOCAL_MODULE_PATH := $(PRODUCT_OUT)/grub 104 105LOCAL_SYSTEM_SHARED_LIBRARIES := 106LOCAL_SHARED_LIBRARIES := 107 108include $(BUILD_RAW_EXECUTABLE) 109 110$(LOCAL_BUILT_MODULE) : PRIVATE_LINK_SCRIPT := 111$(LOCAL_BUILT_MODULE) : PRIVATE_LIBS := 112$(LOCAL_BUILT_MODULE) : PRIVATE_RAW_EXECUTABLE_LDFLAGS := \ 113 -nostdlib -N -Ttext=8200 -melf_i386 114 115############################################# 116## Generate the stage2 start file (2) + (3) 117 118include $(CLEAR_VARS) 119 120LOCAL_SRC_FILES := \ 121 stage2/start.S 122 123LOCAL_CFLAGS := \ 124 -Wall -Wmissing-prototypes -Wunused -Wshadow \ 125 -Wpointer-arith -falign-jumps=1 -falign-loops=1 \ 126 -falign-functions=1 -Wundef 127 128LOCAL_CFLAGS += -m32 -Os -fno-builtin -nostdinc 129 130LOCAL_CFLAGS += -DHAVE_CONFIG_H -DFSYS_EXT2FS=1 -DSUPPORT_SERIAL=1 131 132LOCAL_C_INCLUDES := \ 133 $(LOCAL_PATH)/stage1 \ 134 $(LOCAL_PATH)/stage2 135 136LOCAL_SYSTEM_SHARED_LIBRARIES := 137LOCAL_SHARED_LIBRARIES := 138 139LOCAL_MODULE := grub_start_stage2 140LOCAL_MODULE_TAGS := eng 141LOCAL_MODULE_PATH := $(PRODUCT_OUT)/grub 142 143# <generate the header file> 144LOCAL_MODULE_CLASS := EXECUTABLES 145intermediates := $(call local-intermediates-dir) 146 147STAGE2_SIZE_OBJ := $(intermediates)/stage2_size.h 148$(STAGE2_SIZE_OBJ) : PRIVATE_CUSTOM_TOOL = \ 149 echo "\#define STAGE2_SIZE `stat -c '%s' $<`" > $@ 150 151LOCAL_GENERATED_SOURCES := $(STAGE2_SIZE_OBJ) 152$(STAGE2_SIZE_OBJ): $(PRODUCT_OUT)/grub/grub_pre_stage2 153 @echo "target Generating: $@" 154 $(transform-generated-source) 155# </generate the header file> 156 157include $(BUILD_RAW_EXECUTABLE) 158 159$(all_objects): $(STAGE2_SIZE_OBJ) 160$(LOCAL_BUILT_MODULE) : PRIVATE_LINK_SCRIPT := 161$(LOCAL_BUILT_MODULE) : PRIVATE_LIBS := 162$(LOCAL_BUILT_MODULE) : PRIVATE_RAW_EXECUTABLE_LDFLAGS := \ 163 -nostdlib -N -Ttext=8200 -melf_i386 164 165############################################# 166## Generate the real deal stage2 (4) 167 168include $(CLEAR_VARS) 169 170my_files := $(PRODUCT_OUT)/grub/grub_start_stage2 \ 171 $(PRODUCT_OUT)/grub/grub_pre_stage2 172 173file := $(PRODUCT_OUT)/grub/grub_stage2 174$(file) : $(my_files) 175 @echo "target Creating: $@" 176 $(hide) cat $^ > $@ 177#ALL_PREBUILT += $(file) 178 179 180############################################################################# 181## Generate a full stage1+stage2 bin that we can just drop @ offset 0 on disk 182include $(CLEAR_VARS) 183grub_stage1 := $(PRODUCT_OUT)/grub/grub_stage1 184grub_stage2 := $(PRODUCT_OUT)/grub/grub_stage2 185grub_full := $(PRODUCT_OUT)/grub/grub.bin 186 187$(grub_full) : $(grub_stage1) $(grub_stage2) 188 @echo "target Generating GRUB bin: $@" 189 $(hide) rm -f $@ 190 $(hide) dd if=$(grub_stage1) of=$@ bs=512 count=1 2>/dev/null 191 $(hide) dd if=$(grub_stage2) of=$@ bs=512 seek=1 2>/dev/null 192#ALL_PREBUILT += $(grub_full) 193 194endif # x86 195endif # ! sim 196