LDFLAGS = -Bstatic
EXTRA_GENERAL_D_DEP = .redo-change-tracker
INCLUDE_MAKE_RULES = $(SRC_DIR)/*/Make.rules
+BOOTSTRAP_LD_dep := $(SRC_DIR)/ldscript.inc
#REQUIRES_LIBS = libbsd-lite
include $(L4DIR)/mk/Makeconf
SUPPORT_CC_arm-imx21 := support_imx.cc
SUPPORT_CC_arm-imx51 := support_imx.cc
SUPPORT_CC_arm-om := support_om.cc
+SUPPORT_CC_arm-kirkwood := support_kirkwood.cc
DEFAULT_RELOC_arm-imx21 := 0x00200000 # because of blob
ifneq ($(DEFAULT_RELOC_arm-$(PLATFORM_TYPE)),)
ARCH-ppc32/reboot.cc
SRC_CC += $(SUPPORT_CC_$(ARCH)-$(PLATFORM_TYPE))
SRC_S += ARCH-$(ARCH)/crt0.S
-ASFLAGS_ARCH-arm/crt0.S += -march=armv6zk
OPTS = -g -Os $(CARCHFLAGS_$(ARCH)) $(CARCHFLAGS_$(ARCH)_$(CPU))
DEFINES += -DRAM_BASE=$(RAM_BASE)
# we need to re-do if some things change
# we do not need to track BOOTSTRACE_CMDLINE as it's only used in startup.cc
# and that is regenerated every time
-REDO_TEXT_CMD = echo "$(ENTRY) '$(COMPRESS)' '$(RAM_SIZE_MB)' '$(PLATFORM_TYPE)'"
+REDO_TEXT_CMD = echo "$(ENTRY) '$(COMPRESS)' '$(RAM_SIZE_MB)' '$(PLATFORM_TYPE)' '$(LOADER_MBI)'"
.redo-change-tracker: FORCE
$(VERBOSE)if test ! -r "$@" || \
! $(REDO_TEXT_CMD) | cmp -s "$@"; then \
ifneq ($(ENTRY),)
-INSTALL_TARGET = $(BOOTSTRAP_ELF_NAME) bootstrap_$(ENTRY_FN) bootstrap_$(ENTRY_FN).elf
+INSTALL_TARGET = $(BOOTSTRAP_ELF_NAME) bootstrap_$(ENTRY_FN) bootstrap_$(ENTRY_FN).elf
+ifeq ($(ARCH),amd64)
+INSTALL_TARGET += bootstrap32.elf
+BOOTSTRAP_LINK_SOURCE = bootstrap32.elf
+else
+BOOTSTRAP_LINK_SOURCE = $(BOOTSTRAP_ELF_NAME)
+endif
-bootstrap_$(ENTRY_FN).elf: $(BOOTSTRAP_ELF_NAME)
+bootstrap_$(ENTRY_FN): $(BOOTSTRAP_LINK_SOURCE)
+ $(VERBOSE)$(LN) -f $< $@
+
+bootstrap_$(ENTRY_FN).elf: $(BOOTSTRAP_LINK_SOURCE)
$(VERBOSE)$(LN) -f $< $@
bootstrap_$(ENTRY_FN).raw: bootstrap.raw
$(IMAGES_DIR)/Makefile: $(SRC_DIR)/Make.rules
@echo " ==> Preparing image directory"
$(VERBOSE)install -d $(dir $@)
- $(VERBOSE)$(ECHO) "# Automatically generated by bootstrap" > $@
- $(VERBOSE)$(ECHO) "a:" >> $@
- $(VERBOSE)$(ECHO) " \$$(MAKE) -C .. image" >> $@
- $(VERBOSE)$(ECHO) "%:" >> $@
- $(VERBOSE)$(ECHO) " \$$(MAKE) -C .. image E=\"\$$@\"" >> $@
+ $(VERBOSE)$(ECHO) "# Automatically generated by bootstrap" > $@
+ $(VERBOSE)$(ECHO) "\$$(if \$$(MAKECMDGOALS),%,a):" >> $@
+ $(VERBOSE)$(ECHO) " \$$(MAKE) -C .. image \$$(if \$$(MAKECMDGOALS),E=\"\$$@\")" >> $@
else
INSTALL_TARGET = bootstrap
-endif
+endif # ENTRY
ifneq ($(REALMODE_LOADING),0)
LOADER_MBI = 1
CPPFLAGS += -DRAM_SIZE_MB=$(RAM_SIZE_MB)
endif
-ifeq ($(ARCH),amd64)
-all:: $(OBJ_DIR)/ARCH-amd64/libc32/OBJ-$(ARCH)_$(CPU)/libc32.a
-endif
-
CXXFLAGS += -fno-rtti -fno-exceptions
CXXFLAGS += $(call checkcxx,-fno-threadsafe-statics)
OBJS_$(BOOTSTRAP_ELF_NAME) += $(MODULE_OBJECT_FILES)
CPPFLAGS += -DIMAGE_MODE
- BOOTSTRAP_LD_dep := mod.make.inc
+ BOOTSTRAP_LD_dep += mod.make.inc
STARTUP_C_dep := mod.make.inc
endif
$(OBJ_DIR)/ARCH-amd64/libc32/OBJ-$(ARCH)_$(CPU)/libc32.a: FORCE
$(VERBOSE)$(MAKE) O=$(OBJ_BASE) -C $(SRC_DIR)/ARCH-amd64/libc32
-bootstrap: $(OBJ32) bootstrap32.bin $(OBJ_DIR)/ARCH-amd64/libc32/OBJ-$(ARCH)_$(CPU)/libc32.a
+bootstrap32.elf: $(OBJ32) bootstrap32.bin $(OBJ_DIR)/ARCH-amd64/libc32/OBJ-$(ARCH)_$(CPU)/libc32.a
@$(LINK_MESSAGE)
$(VERBOSE)$(CC32) -o $@ -nostdlib -static \
-Wl,-T,$(SRC_DIR)/ARCH-amd64/boot32/bootstrap32.ld,--gc-sections $^ -lgcc
$(VERBOSE)chmod 755 $@
-bootstrap32.bin: $(TARGET)
+bootstrap: bootstrap32.elf
+ $(VERBOSE)$(LN) -f $^ $@
+
+bootstrap32.bin: $(BOOTSTRAP_ELF_NAME)
@$(GEN_MESSAGE)
$(VERBOSE)$(OBJCOPY) -S $< bootstrap64.bin
$(VERBOSE)chmod -x bootstrap64.bin
else
bootstrap: $(BOOTSTRAP_ELF_NAME)
$(VERBOSE)$(LN) -f $^ $@
-
-bootstrap_$(ENTRY_FN): $(BOOTSTRAP_ELF_NAME)
- $(VERBOSE)$(LN) -f $^ $@
endif