New repo setup

This commit is contained in:
2024-05-28 14:26:46 -05:00
commit 9ee197f57b
97 changed files with 11047 additions and 0 deletions

87
Makefile Normal file
View File

@@ -0,0 +1,87 @@
CC = aarch64-none-elf-gcc
CXX = aarch64-none-elf-g++
AS = aarch64-none-elf-as
LD = aarch64-none-elf-ld
AR = aarch64-none-elf-ar
OBJCOPY = aarch64-none-elf-objcopy
prefix:=$(HOME)/.cros/root
aarch64_ldscript = src/aarch64/aarch64.ld
aarch64_objs = src/aarch64/boot.o src/aarch64/aarch64.o \
src/aarch64/irq/exceptions.o src/aarch64/irq/irq.o \
src/aarch64/bootstrap.o src/aarch64/sysreg.o src/aarch64/irq/interrupts.o
memory_objs_common = src/memory/addressspace.o src/memory/heap.o src/memory/memorymap.o \
src/memory/mmap.o src/memory/new.o src/memory/pageallocator.o
memory_objs_aarch64 = src/memory/aarch64/mmu.o
fs_objs_common = src/fs/fat32/helpers.o src/fs/fat32/entry_helpers.o src/fs/fat32/entry.o \
src/fs/fat32/fat32.o src/fs/fat32/fs_helpers.o \
src/fs/fat32/disk_interface/disk_interface.o src/fs/fat32/filecontextfat32.o \
src/fs/pipe.o src/fs/filecontext.o
loader_objs_common = src/loader/elf.o
sched_objs_common = src/sched/process.o src/sched/queue.o
sched_objs_aarch64 = src/sched/aarch64/context.o src/sched/aarch64/loadcontext.o
device_objs_common = src/devices/timer.o src/devices/uart.o
util_objs_common = src/util/log.o src/util/string.o src/util/hasrefcount.o
util_objs_aarch64 = src/util/aarch64/hacf.o
objs = src/kernel.o src/irq/interrupts.o src/containers/string.o \
$(memory_objs_common) $(memory_objs_aarch64) $(loader_objs_common) $(fs_objs_common) $(device_objs_common) $(sched_objs_common) $(sched_objs_aarch64) $(util_objs_common) $(util_objs_aarch64)
CRTI_OBJ=src/aarch64/crti.o
CRTBEGIN_OBJ:=$(shell $(CC) $(CFLAGS) -print-file-name=crtbegin.o)
CRTEND_OBJ:=$(shell $(CC) $(CFLAGS) -print-file-name=crtend.o)
CRTN_OBJ=src/aarch64/crtn.o
kernel_elf = kernel.elf
kernel_binary = kernel8.img
libsyscall = libsyscall.a
libsyscall_obj = src/aarch64/dosyscall.o
testprog_bin = init
testprog_obj = test/entry.o test/main.o
CFLAGS = -Iinclude/ -Isrc/ -ffreestanding -Wall -Wextra -ggdb -O0 -mgeneral-regs-only
CXXFLAGS = -Iinclude/ -Isrc/ -ffreestanding -fpermissive -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -Wextra -ggdb -O0 -mgeneral-regs-only
LDFLAGS = -T $(aarch64_ldscript) -nostdlib
.PHONY: all
all: $(libsyscall) $(testprog_bin) $(kernel_binary)
.PHONY: clean
clean:
rm -f $(CRTI_OBJ) $(CRTN_OBJ) $(objs) $(aarch64_objs) $(kernel_elf) $(kernel_binary) $(libsyscall) $(libsyscall_obj) $(testprog_bin) $(testprog_obj)
.PHONY: install
install:
./../scripts/create_and_mount_img.sh $(prefix)
mkdir -p $(prefix)/include
mkdir -p $(prefix)/boot
mkdir -p $(prefix)/lib
mkdir -p $(prefix)/bin
cp kernel8.img $(prefix)/boot
cp -r include/* $(prefix)/include
cp libsyscall.a $(prefix)/lib
cp $(testprog_bin) $(prefix)/bin
$(kernel_binary): $(kernel_elf)
$(OBJCOPY) $(kernel_elf) -O binary $@
$(kernel_elf): $(CRTI_OBJ) $(CRTBEGIN_OBJ) $(objs) $(aarch64_objs) $(CRTEND_OBJ) $(CRTN_OBJ) $(aarch64_ldscript) $(testprog_bin)
$(CXX) -o $@ $(LDFLAGS) $(CRTI_OBJ) $(CRTBEGIN_OBJ) $(objs) $(aarch64_objs) $(CRTEND_OBJ) $(CRTN_OBJ) -lgcc
$(libsyscall): $(libsyscall_obj)
$(AR) -rcs $@ $^
$(testprog_bin): $(testprog_obj)
$(CC) -o $@ -T test/linker.ld -nostdlib $^ -L. -lgcc -lsyscall
.PHONY: clobber
clobber:
./../scripts/unmount_img.sh $(prefix)