Added build type detection, simplified legacy BIOS booting on x86_64
This commit is contained in:
parent
0236209e95
commit
1fc97f9c5f
18 changed files with 298 additions and 107 deletions
|
@ -17,7 +17,7 @@
|
|||
## SOFTWARE. ##
|
||||
###################################################################################
|
||||
|
||||
BOOTFILE := $(BUILD_DIR)/boot/raspi4/axboot.elf
|
||||
BOOTFILE := $(BUILD_DIR)/boot/raspi4/kernel8.img
|
||||
|
||||
INCLUDE_DIRS += $(BOOT_ROOT)/include \
|
||||
$(BOOT_ROOT)/include/arch/$(ARCH) \
|
||||
|
@ -26,14 +26,18 @@ INCLUDE_DIRS += $(BOOT_ROOT)/include \
|
|||
BOOT_AS := $(ARCH)-elf-gcc
|
||||
BOOT_CC := $(ARCH)-elf-gcc
|
||||
BOOT_LD := $(ARCH)-elf-ld
|
||||
BOOT_OBJCOPY := $(ARCH)-elf-objcopy
|
||||
|
||||
BOOT_ASFLAGS := $(ASFLAGS) \
|
||||
$(foreach d, $(INCLUDE_DIRS), -I$d)
|
||||
|
||||
BOOT_CFLAGS := $(CFLAGS) \
|
||||
$(foreach d, $(INCLUDE_DIRS), -I$d)
|
||||
$(foreach d, $(INCLUDE_DIRS), -I$d) \
|
||||
-mstrict-align \
|
||||
-nostartfiles
|
||||
|
||||
BOOT_LDFLAGS := $(LDFLAGS)
|
||||
BOOT_LDFLAGS := $(LDFLAGS) \
|
||||
-T$(BOOT_ROOT)/arch/$(ARCH)/linker.ld
|
||||
|
||||
COMMON_CFILES := $(shell find $(BOOT_ROOT)/common -name '*.c')
|
||||
COMMON_ARCH_CFILES := $(shell find $(BOOT_ROOT)/arch/$(ARCH)/common -name '*.c')
|
||||
|
@ -41,11 +45,11 @@ COMMON_ARCH_ASFILES := $(shell find $(BOOT_ROOT)/arch/$(ARCH)/common -name '*.S'
|
|||
PLATFORM_CFILES := $(shell find $(BOOT_ROOT)/platform/$(PLATFORM) -name '*.c')
|
||||
PLATFORM_ASFILES := $(shell find $(BOOT_ROOT)/platform/$(PLATFORM) -name '*.S')
|
||||
|
||||
BOOT_OBJ := $(COMMON_CFILES:$(BOOT_ROOT)/common/%.c=$(BUILD_DIR)/boot/raspi4/common/%.c.o) \
|
||||
$(COMMON_ARCH_CFILES:$(BOOT_ROOT)/arch/$(ARCH)/common/%.c=$(BUILD_DIR)/boot/raspi4/arch/%.c.o) \
|
||||
$(COMMON_ARCH_ASFILES:$(BOOT_ROOT)/arch/$(ARCH)/common/%.S=$(BUILD_DIR)/boot/raspi4/arch/%.S.o) \
|
||||
$(PLATFORM_CFILES:$(BOOT_ROOT)/platform/$(PLATFORM)/%.c=$(BUILD_DIR)/boot/raspi4/%.c.o) \
|
||||
$(PLATFORM_ASFILES:$(BOOT_ROOT)/platform/$(PLATFORM)/%.S=$(BUILD_DIR)/boot/raspi4/%.S.o)
|
||||
BOOT_OBJ := $(COMMON_CFILES:$(BOOT_ROOT)/common/%.c=$(BUILD_DIR)/boot/$(PLATFORM)/common/%.c.o) \
|
||||
$(COMMON_ARCH_CFILES:$(BOOT_ROOT)/arch/$(ARCH)/common/%.c=$(BUILD_DIR)/boot/$(PLATFORM)/arch/%.c.o) \
|
||||
$(COMMON_ARCH_ASFILES:$(BOOT_ROOT)/arch/$(ARCH)/common/%.S=$(BUILD_DIR)/boot/$(PLATFORM)/arch/%.S.o) \
|
||||
$(PLATFORM_CFILES:$(BOOT_ROOT)/platform/$(PLATFORM)/%.c=$(BUILD_DIR)/boot/$(PLATFORM)/%.c.o) \
|
||||
$(PLATFORM_ASFILES:$(BOOT_ROOT)/platform/$(PLATFORM)/%.S=$(BUILD_DIR)/boot/$(PLATFORM)/%.S.o)
|
||||
|
||||
.PHONY: all
|
||||
all: $(BOOTFILE)
|
||||
|
@ -54,13 +58,15 @@ all: $(BOOTFILE)
|
|||
.PHONY: install
|
||||
install: all
|
||||
@mkdir -p $(SYSROOT_DIR)
|
||||
@printf " INSTALL\t/kernel.elf\n"
|
||||
@cp $(BOOTFILE) $(SYSROOT_DIR)/kernel.elf
|
||||
@printf " INSTALL\t/kernel8.img\n"
|
||||
@cp $(BOOTFILE) $(SYSROOT_DIR)/kernel8.img
|
||||
|
||||
$(BOOTFILE): $(BOOT_OBJ)
|
||||
@mkdir -p $(@D)
|
||||
@printf " LD\t$(notdir $@)\n"
|
||||
@$(BOOT_LD) $(BOOT_LDFLAGS) $^ -o $@
|
||||
@printf " LD\taxboot.elf\n"
|
||||
@$(BOOT_LD) $(BOOT_LDFLAGS) $^ -o $(BUILD_DIR)/boot/raspi4/axboot.elf
|
||||
@printf " OCOPY\t$(notdir $@)\n"
|
||||
@$(BOOT_OBJCOPY) -O binary $(BUILD_DIR)/boot/raspi4/axboot.elf $@
|
||||
|
||||
-include $(wildcard $(BUILD_DIR)/boot/*.d)
|
||||
|
||||
|
@ -69,6 +75,11 @@ $(BUILD_DIR)/boot/raspi4/%.c.o: $(BOOT_ROOT)/platform/$(PLATFORM)/%.c
|
|||
@printf " CC\t$(subst $(ROOT_DIR)/,,$<)\n"
|
||||
@$(BOOT_CC) $(BOOT_CFLAGS) -c $< -o $@
|
||||
|
||||
$(BUILD_DIR)/boot/raspi4/%.S.o: $(BOOT_ROOT)/platform/$(PLATFORM)/%.S
|
||||
@mkdir -p $(@D)
|
||||
@printf " AS\t$(subst $(ROOT_DIR)/,,$<)\n"
|
||||
@$(BOOT_AS) $(BOOT_ASFLAGS) -c $< -o $@
|
||||
|
||||
$(BUILD_DIR)/boot/raspi4/common/%.c.o: $(BOOT_ROOT)/common/%.c
|
||||
@mkdir -p $(@D)
|
||||
@printf " CC\t$(subst $(ROOT_DIR)/,,$<)\n"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue