1 # This is the common code included by all the targets
3 ifeq ($(CONFIG_USE_LZMA),y)
4 CBV2_CONFIG=Config-lab.lb
5 CBV2_PAYLOAD_FILE_EXT=elf.lzma
6 ifeq ($(COREBOOT_BOARD),s2881)
7 CBV2_PATCHES += $(PACKAGE_DIR)/coreboot-v2/patches/s2881-lab-vga-fix.patch
11 CBV2_PAYLOAD_FILE_EXT=elf
14 ifeq ($(CONFIG_CB_CUSTOM_REV),y)
15 $(warning Using custom rev $(CONFIG_CB_REVISION))
16 CBV2_TAG=$(CONFIG_CB_REVISION)
20 CBV2_URL=svn://coreboot.org/repos/trunk/coreboot-v2
21 CBV2_TARBALL=coreboot-svn-$(CBV2_TAG).tar.gz
22 CBV2_PAYLOAD_TARGET=$(CBV2_BUILD_DIR)/payload.$(CBV2_PAYLOAD_FILE_EXT)
23 TARGET_ROM=$(COREBOOT_VENDOR)-$(COREBOOT_BOARD).rom
25 ifeq ($(CONFIG_PLATFORM),y)
27 $(error You need to specify a version to pull in your platform config)
29 ifeq ($(COREBOOT_VENDOR),)
30 $(error No coreboot vendor specified)
32 ifeq ($(COREBOOT_BOARD),)
33 $(error No coreboot board specified)
35 ifeq ($(CBV2_CONFIG),)
36 $(error No coreboot config specified)
39 $(error No coreboot TDIR specified)
43 CBV2_OUTPUT=$(CBV2_BUILD_DIR)/coreboot.rom
44 CBV2_DIR=$(BUILD_DIR)/coreboot
46 # This is the list of components that comprise the ROM (excluding the payload)
47 CBV2_COMPONENTS= $(CBV2_PREPEND) $(CBV2_OUTPUT)
49 # If the user wanted to override the build directory - obey that now
51 ifeq ($(CONFIG_CB_USE_BUILD),y)
52 CBV2_SRC_DIR=$(subst ",,$(CONFIG_CB_BUILDDIR))
54 CBV2_SRC_DIR=$(CBV2_DIR)/$(CBV2_BASE_DIR)
57 CBV2_TARGET_DIR=$(CBV2_SRC_DIR)/targets/
58 CBV2_TARGET_NAME=$(COREBOOT_VENDOR)/$(COREBOOT_BOARD)
59 CBV2_CONFIG_NAME=$(CBV2_TARGET_NAME)/$(CBV2_CONFIG)
61 CBV2_BUILD_DIR=$(CBV2_TARGET_DIR)/$(CBV2_TARGET_NAME)/$(CBV2_TDIR)
63 CBV2_STAMP_DIR=$(CBV2_DIR)/stamps
64 CBV2_LOG_DIR=$(CBV2_DIR)/logs
66 ifeq ($(CONFIG_VERBOSE),y)
67 CBV2_FETCH_LOG=/dev/stdout
68 CBV2_CONFIG_LOG=/dev/stdout
69 CBV2_BUILD_LOG=/dev/stdout
70 CBV2_INSTALL_LOG=/dev/stdout
72 CBV2_FETCH_LOG=$(CBV2_LOG_DIR)/fetch.log
73 CBV2_BUILD_LOG=$(CBV2_LOG_DIR)/build.log
74 CBV2_CONFIG_LOG=$(CBV2_LOG_DIR)/config.log
75 CBV2_INSTALL_LOG=$(CBV2_LOG_DIR)/install.log
78 # This allows us to skip the unpack/patch/configure stage
80 ifeq ($(CONFIG_CB_USE_BUILD),y)
83 CBV2_DIR_TARGET=$(CBV2_STAMP_DIR)/.configured-$(COREBOOT_BOARD)
86 # If an optionrom was specified in the configuration, then use it
88 ifneq ($(OPTIONROM_ID),)
89 include $(PACKAGE_DIR)/coreboot-v2/optionroms.inc
91 # Add it to the front of the list so it is prepended to the coreboot output
92 CBV2_COMPONENTS := $(SOURCE_DIR)/$(OPTIONROM_ID).rom $(CBV2_COMPONENTS)
95 $(CBV2_PAYLOAD_TARGET): $(PAYLOAD_TARGET)
98 $(CBV2_STAMP_DIR)/.unpacked-$(CBV2_TAG): $(SOURCE_DIR)/$(CBV2_TARBALL) | $(CBV2_STAMP_DIR) $(CBV2_LOG_DIR)
99 @ rm -f $(CBV2_STAMP_DIR)/.unpacked*
100 @ echo "Unpacking coreboot ($(CBV2_TARBALL))..."
101 @ tar -C $(CBV2_DIR) -zxf $(SOURCE_DIR)/$(CBV2_TARBALL)
104 $(CBV2_STAMP_DIR)/.patched: $(CBV2_STAMP_DIR)/.unpacked-$(CBV2_TAG)
105 @ echo "Patching coreboot..."
106 @ $(BIN_DIR)/doquilt.sh $(CBV2_SRC_DIR) $(CBV2_PATCHES)
109 $(CBV2_STAMP_DIR)/.configured-$(COREBOOT_BOARD): $(CBV2_STAMP_DIR)/.patched
110 @ echo "Building target..."
111 @( cd $(CBV2_TARGET_DIR); \
112 ./buildtarget $(CBV2_CONFIG_NAME) > $(CBV2_CONFIG_LOG) 2>&1)
115 $(CBV2_STAMP_DIR) $(CBV2_LOG_DIR):
118 $(CBV2_OUTPUT): $(CBV2_STAMP_DIR) $(CBV2_LOG_DIR) $(CBV2_DIR_TARGET) $(CBV2_PAYLOAD_TARGET)
119 @ echo "Building coreboot..."
120 @ (export CPU_OPT="$(STACKPROTECT)"; \
121 make -C $(CBV2_BUILD_DIR) > $(CBV2_BUILD_LOG) 2>&1)
122 @ mkdir -p $(OUTPUT_DIR)/config/coreboot-v2/
123 @ cp $(CBV2_BUILD_DIR)/../$(CBV2_CONFIG) $(OUTPUT_DIR)/config/coreboot-v2/
124 @ cp $(BASE_DIR)/.config $(OUTPUT_DIR)/config/
125 @ mkdir -p $(OUTPUT_DIR)/config/system/
126 @ uname -a >$(OUTPUT_DIR)/config/system/uname-a
127 @ if [ -f /etc/lsb-release ]; then \
128 cp /etc/lsb-release $(OUTPUT_DIR)/config/system/; \
130 @ if [ -f /etc/debian-version ]; then \
131 cp /etc/debian-version $(OUTPUT_DIR)/config/system/; \
133 @ if [ -f /etc/redhat-version ]; then \
134 cp /etc/redhat-version $(OUTPUT_DIR)/config/system/; \
136 @ mkdir -p $(OUTPUT_DIR)/config/toolchain/
137 @ $(MAKE) --version >$(OUTPUT_DIR)/config/toolchain/$(MAKE)-version
138 @ $(CC) --version >$(OUTPUT_DIR)/config/toolchain/$(CC)-version
139 @ $(LD) --version >$(OUTPUT_DIR)/config/toolchain/$(LD)-version
140 ifeq ($(CONFIG_STORE_SVN_INFO),y)
141 @ mkdir -p $(OUTPUT_DIR)/config/svn/
142 @ svn diff > $(OUTPUT_DIR)/config/svn/svn.diff
143 @ svn info > $(OUTPUT_DIR)/config/svn/svn.info
144 @ svn status > $(OUTPUT_DIR)/config/svn/svn.status
147 $(SOURCE_DIR)/$(CBV2_TARBALL): | $(CBV2_LOG_DIR)
148 @ echo "Fetching the coreboot rev $(CBV2_TAG) code..."
149 @ mkdir -p $(SOURCE_DIR)/coreboot
150 @ $(BIN_DIR)/fetchsvn.sh $(CBV2_URL) $(SOURCE_DIR)/coreboot \
151 $(CBV2_TAG) $(SOURCE_DIR)/$(CBV2_TARBALL) \
152 > $(CBV2_FETCH_LOG) 2>&1
154 $(OUTPUT_DIR)/$(TARGET_ROM): $(CBV2_COMPONENTS)
155 @ mkdir -p $(OUTPUT_DIR)
156 @ $(BIN_DIR)/construct-rom.sh $(PLATFORM_DOPAD) $(CBV2_COMPONENTS) > $@
158 generic-coreboot: $(OUTPUT_DIR)/$(TARGET_ROM)
160 generic-coreboot-clean:
161 @ echo "Cleaning coreboot..."
162 @ rm -f $(CBV2_STAMP_DIR)/.configured*
163 @ rm -f $(CBV2_PAYLOAD_TARGET)
164 ifneq ($(wildcard $(CBV2_BUILD_DIR)/Makefile),)
165 @ $(MAKE) -C $(CBV2_BUILD_DIR) clean > /dev/null 2>&1;
167 @ rm -f $(CBV2_OUTPUT)
169 generic-coreboot-distclean:
170 @ if [ "$(CONFIG_CB_USE_BUILD)" = "y" ]; then \
171 echo "Cleaning coreboot build..."; \
172 $(MAKE) -C $(CBV2_BUILD_DIR) clean > /dev/null 2>&1; \
173 rm -f $(CBV2_OUTPUT); \
176 @ rm -rf $(CBV2_DIR)/*
178 coreboot-extract: $(CBV2_STAMP_DIR)/.patched