diff --git a/Makefile b/Makefile index 288ddc28cd..98f4a34777 100644 --- a/Makefile +++ b/Makefile @@ -1,58 +1,63 @@ -ARCH=x86 -TARGET=$(ARCH)-unknown-none +TARGET?=x86-unknown-none -export LD=ld -m elf_i386 -export OBJCOPY=objcopy -export PARTED=parted -export QEMU=qemu-system-x86_64 +ifeq ($(TARGET),x86-unknown-none) + export LD=ld -m elf_i386 + export OBJCOPY=objcopy + export PARTED=parted + export QEMU=qemu-system-x86_64 +else + $(error target $(TARGET) not supported by bootloader yet) +endif + +BUILD=build/$(TARGET) export RUST_TARGET_PATH=$(CURDIR)/targets -all: build/bootloader.bin +all: $(BUILD)/bootloader.bin clean: rm -rf build -build/libbootloader.a: Cargo.lock Cargo.toml src/** - mkdir -p build +$(BUILD)/libbootloader.a: Cargo.lock Cargo.toml src/** + mkdir -p $(BUILD) cargo rustc --lib --target $(TARGET) --release -- -C soft-float -C debuginfo=2 --emit link=$@ -build/bootloader.elf: linkers/$(ARCH).ld build/libbootloader.a - mkdir -p build - $(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libbootloader.a && \ +$(BUILD)/bootloader.elf: linkers/$(TARGET).ld $(BUILD)/libbootloader.a + mkdir -p $(BUILD) + $(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ $(BUILD)/libbootloader.a && \ $(OBJCOPY) --only-keep-debug $@ $@.sym && \ $(OBJCOPY) --strip-debug $@ -build/bootloader.bin: build/bootloader.elf $(ARCH)/** - mkdir -p build - nasm -f bin -o $@ -l $@.lst -D STAGE3=$< -i$(ARCH) $(ARCH)/bootloader.asm +$(BUILD)/bootloader.bin: $(BUILD)/bootloader.elf asm/$(TARGET)/** + mkdir -p $(BUILD) + nasm -f bin -o $@ -l $@.lst -D STAGE3=$< -iasm/$(TARGET) asm/$(TARGET)/bootloader.asm -build/filesystem: - mkdir -p build +$(BUILD)/filesystem: + mkdir -p $(BUILD) rm -f $@.partial mkdir $@.partial fallocate -l 1MiB $@.partial/kernel mv $@.partial $@ -build/filesystem.bin: build/filesystem - mkdir -p build +$(BUILD)/filesystem.bin: $(BUILD)/filesystem + mkdir -p $(BUILD) rm -f $@.partial fallocate -l 255MiB $@.partial redoxfs-ar $@.partial $< mv $@.partial $@ -build/harddrive.bin: build/bootloader.bin build/filesystem.bin - mkdir -p build +$(BUILD)/harddrive.bin: $(BUILD)/bootloader.bin $(BUILD)/filesystem.bin + mkdir -p $(BUILD) rm -f $@.partial fallocate -l 256MiB $@.partial $(PARTED) -s -a minimal $@.partial mklabel msdos $(PARTED) -s -a minimal $@.partial mkpart primary 1MiB 100% dd if=$< of=$@.partial bs=1 count=446 conv=notrunc dd if=$< of=$@.partial bs=512 skip=1 seek=1 conv=notrunc - dd if=build/filesystem.bin of=$@.partial bs=1MiB seek=1 conv=notrunc + dd if=$(BUILD)/filesystem.bin of=$@.partial bs=1MiB seek=1 conv=notrunc mv $@.partial $@ -qemu: build/harddrive.bin +qemu: $(BUILD)/harddrive.bin $(QEMU) \ -d cpu_reset \ -d guest_errors \ diff --git a/aarch64/dummy.S b/asm/aarch64/dummy.S similarity index 100% rename from aarch64/dummy.S rename to asm/aarch64/dummy.S diff --git a/arm/start.s b/asm/arm/start.s similarity index 100% rename from arm/start.s rename to asm/arm/start.s diff --git a/x86/bootloader.asm b/asm/x86-unknown-none/bootloader.asm similarity index 100% rename from x86/bootloader.asm rename to asm/x86-unknown-none/bootloader.asm diff --git a/x86/descriptor_flags.inc b/asm/x86-unknown-none/descriptor_flags.inc similarity index 100% rename from x86/descriptor_flags.inc rename to asm/x86-unknown-none/descriptor_flags.inc diff --git a/x86/gdt_entry.inc b/asm/x86-unknown-none/gdt_entry.inc similarity index 100% rename from x86/gdt_entry.inc rename to asm/x86-unknown-none/gdt_entry.inc diff --git a/x86/memory_map.asm b/asm/x86-unknown-none/memory_map.asm similarity index 100% rename from x86/memory_map.asm rename to asm/x86-unknown-none/memory_map.asm diff --git a/old/cpuid.asm b/asm/x86-unknown-none/old/cpuid.asm similarity index 100% rename from old/cpuid.asm rename to asm/x86-unknown-none/old/cpuid.asm diff --git a/old/cpuid.inc b/asm/x86-unknown-none/old/cpuid.inc similarity index 100% rename from old/cpuid.inc rename to asm/x86-unknown-none/old/cpuid.inc diff --git a/old/initialize.asm b/asm/x86-unknown-none/old/initialize.asm similarity index 100% rename from old/initialize.asm rename to asm/x86-unknown-none/old/initialize.asm diff --git a/old/vesa.asm b/asm/x86-unknown-none/old/vesa.asm similarity index 100% rename from old/vesa.asm rename to asm/x86-unknown-none/old/vesa.asm diff --git a/old/vesa.inc b/asm/x86-unknown-none/old/vesa.inc similarity index 100% rename from old/vesa.inc rename to asm/x86-unknown-none/old/vesa.inc diff --git a/x86/print.asm b/asm/x86-unknown-none/print.asm similarity index 100% rename from x86/print.asm rename to asm/x86-unknown-none/print.asm diff --git a/x86/stage1.asm b/asm/x86-unknown-none/stage1.asm similarity index 100% rename from x86/stage1.asm rename to asm/x86-unknown-none/stage1.asm diff --git a/x86/stage2.asm b/asm/x86-unknown-none/stage2.asm similarity index 100% rename from x86/stage2.asm rename to asm/x86-unknown-none/stage2.asm diff --git a/x86/thunk.asm b/asm/x86-unknown-none/thunk.asm similarity index 100% rename from x86/thunk.asm rename to asm/x86-unknown-none/thunk.asm diff --git a/x86/unreal.asm b/asm/x86-unknown-none/unreal.asm similarity index 100% rename from x86/unreal.asm rename to asm/x86-unknown-none/unreal.asm diff --git a/linkers/x86.ld b/linkers/x86-unknown-none.ld similarity index 100% rename from linkers/x86.ld rename to linkers/x86-unknown-none.ld