Initial commit
This commit is contained in:
commit
cbc51f523e
125 changed files with 34817 additions and 0 deletions
102
Makefile
Normal file
102
Makefile
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
BUILD_DIR=build
|
||||
CC = gcc
|
||||
AS = nasm
|
||||
LD = ld
|
||||
CFLAGS += -Wall \
|
||||
-Wextra \
|
||||
-std=gnu11 \
|
||||
-ffreestanding \
|
||||
-fno-stack-protector \
|
||||
-fno-stack-check \
|
||||
-fno-lto \
|
||||
-fPIE \
|
||||
-m64 \
|
||||
-march=x86-64 \
|
||||
-mno-80387 \
|
||||
-mno-mmx \
|
||||
-mno-sse \
|
||||
-mno-sse2 \
|
||||
-mno-red-zone \
|
||||
-I src/include \
|
||||
-O0 \
|
||||
-ggdb3 \
|
||||
-g
|
||||
CDEBUG = -g
|
||||
LDFLAGS += -m elf_x86_64 \
|
||||
-nostdlib \
|
||||
-static \
|
||||
-pie \
|
||||
--no-dynamic-linker \
|
||||
-z text \
|
||||
-z max-page-size=0x1000 \
|
||||
-T linker.ld
|
||||
NASMFLAGS = -f elf64
|
||||
dependencies:
|
||||
# build limine
|
||||
rm -rf limine
|
||||
git clone https://github.com/limine-bootloader/limine.git --branch=v8.x-binary --depth=1
|
||||
make -C limine
|
||||
# clone flanterm
|
||||
rm -rf src/flanterm
|
||||
|
||||
git clone https://codeberg.org/mintsuki/flanterm src/flanterm
|
||||
all:
|
||||
# make build directory
|
||||
mkdir -p $(BUILD_DIR) || true
|
||||
# build & link boot and kernel files
|
||||
$(CC) -c src/main.c -o $(BUILD_DIR)/main.o $(CFLAGS)
|
||||
$(CC) -c src/flanterm/src/flanterm.c -o $(BUILD_DIR)/flanterm.o $(CFLAGS)
|
||||
$(CC) -c src/flanterm/src/flanterm_backends/fb.c -o $(BUILD_DIR)/fb.o $(CFLAGS)
|
||||
$(CC) -c src/lib/string.c -o $(BUILD_DIR)/string.o $(CFLAGS)
|
||||
$(CC) -c src/lib/stdio.c -o $(BUILD_DIR)/stdio.o $(CFLAGS)
|
||||
$(CC) -c src/lib/io.c -o $(BUILD_DIR)/io.o $(CFLAGS)
|
||||
$(CC) -c src/lib/spinlock.c -o $(BUILD_DIR)/spinlock.o $(CFLAGS)
|
||||
|
||||
$(CC) -c src/hal/gdt.c -o $(BUILD_DIR)/gdt.o $(CFLAGS)
|
||||
$(AS) src/hal/gdt.asm -o $(BUILD_DIR)/gdt_asm.o $(NASMFLAGS)
|
||||
$(CC) -c src/hal/idt.c -o $(BUILD_DIR)/idt.o $(CFLAGS)
|
||||
$(AS) src/hal/idt.asm -o $(BUILD_DIR)/idt_asm.o $(NASMFLAGS)
|
||||
$(CC) -c src/hal/apic.c -o $(BUILD_DIR)/apic.o $(CFLAGS)
|
||||
$(CC) -c src/hal/ioapic.c -o $(BUILD_DIR)/ioapic.o $(CFLAGS)
|
||||
$(CC) -c src/hal/timer.c -o $(BUILD_DIR)/timer.o $(CFLAGS)
|
||||
$(CC) -c src/hal/smp.c -o $(BUILD_DIR)/smp.o $(CFLAGS)
|
||||
$(CC) -c src/hal/tsc.c -o $(BUILD_DIR)/tsc.o $(CFLAGS)
|
||||
$(CC) -c src/mm/pmm.c -o $(BUILD_DIR)/pmm.o $(CFLAGS)
|
||||
$(CC) -c src/mm/vmm.c -o $(BUILD_DIR)/vmm.o $(CFLAGS)
|
||||
$(CC) -c src/mm/kmalloc.c -o $(BUILD_DIR)/kmalloc.o $(CFLAGS)
|
||||
$(CC) -c src/sys/acpi.c -o $(BUILD_DIR)/acpi.o $(CFLAGS)
|
||||
$(CC) -c src/sys/pci.c -o $(BUILD_DIR)/pci.o $(CFLAGS)
|
||||
|
||||
$(CC) -c src/drivers/serial.c -o $(BUILD_DIR)/serial.o $(CFLAGS)
|
||||
$(CC) -c src/drivers/pmt.c -o $(BUILD_DIR)/pmt.o $(CFLAGS)
|
||||
$(CC) -c src/drivers/ahci.c -o $(BUILD_DIR)/ahci.o $(CFLAGS)
|
||||
|
||||
$(CC) -c src/scheduler/sched.c -o $(BUILD_DIR)/sched.o $(CFLAGS)
|
||||
$(AS) src/scheduler/sched.asm -o $(BUILD_DIR)/sched_asm.o $(NASMFLAGS)
|
||||
|
||||
|
||||
|
||||
|
||||
# link everything to an elf
|
||||
$(LD) -o $(BUILD_DIR)/SFB25.elf $(BUILD_DIR)/*.o $(LDFLAGS)
|
||||
# Create a directory which will be our ISO root.
|
||||
mkdir -p iso_root
|
||||
# Copy the relevant files over.
|
||||
cp -v $(BUILD_DIR)/SFB25.elf limine.conf limine/limine-bios.sys \
|
||||
limine/limine-bios-cd.bin limine/limine-uefi-cd.bin iso_root/
|
||||
# Create the EFI boot tree and copy Limine's EFI executables over.
|
||||
mkdir -p iso_root/EFI/BOOT
|
||||
cp -v limine/BOOTX64.EFI iso_root/EFI/BOOT/
|
||||
cp -v limine/BOOTIA32.EFI iso_root/EFI/BOOT/
|
||||
# Create the bootable ISO.
|
||||
xorriso -as mkisofs -b limine-bios-cd.bin \
|
||||
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
||||
--efi-boot limine-uefi-cd.bin \
|
||||
-efi-boot-part --efi-boot-image --protective-msdos-label \
|
||||
iso_root -o $(BUILD_DIR)/SFB25.iso
|
||||
# Install Limine stage 1 and 2 for legacy BIOS boot.
|
||||
./limine/limine bios-install $(BUILD_DIR)/SFB25.iso
|
||||
disk:
|
||||
dd if=/dev/zero of=disk.img bs=1M count=128
|
||||
elftest:
|
||||
$(CC) src/elf/elftest.c -o $(BUILD_DIR)/elftest -ffreestanding -Isrc/include -static -fPIE -nostdlib
|
||||
Loading…
Add table
Add a link
Reference in a new issue