moved everything to chookspace
This commit is contained in:
62
kernel/Makefile
Normal file
62
kernel/Makefile
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
OSNAME = CustomOS
|
||||
|
||||
GNUEFI = ../gnu-efi
|
||||
OVMFDIR = ../OVMFbin
|
||||
LDS = kernel.ld
|
||||
CC = gcc
|
||||
LD = ld
|
||||
|
||||
CFLAGS = -ffreestanding -fshort-wchar
|
||||
LDFLAGS = -T $(LDS) -static -Bsymbolic -nostdlib
|
||||
OSNAME = CustomOS
|
||||
|
||||
GNUEFI = ../gnu-efi
|
||||
OVMFDIR = ../OVMFbin
|
||||
LDS = kernel.ld
|
||||
CC = gcc
|
||||
LD = ld
|
||||
|
||||
CFLAGS = -ffreestanding -fshort-wchar
|
||||
LDFLAGS = -T $(LDS) -static -Bsymbolic -nostdlib
|
||||
|
||||
SRCDIR := src
|
||||
OBJDIR := lib
|
||||
BUILDDIR = bin
|
||||
BOOTEFI := $(GNUEFI)/x86_64/bootloader/main.efi
|
||||
|
||||
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
|
||||
|
||||
SRC = $(call rwildcard,$(SRCDIR),*.cpp)
|
||||
OBJS = $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(SRC))
|
||||
DIRS = $(wildcard $(SRCDIR)/*)
|
||||
|
||||
kernel: $(OBJS) link
|
||||
|
||||
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
|
||||
@ echo !==== COMPILING $^
|
||||
@ mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $^ -o $@
|
||||
|
||||
link:
|
||||
@ echo !==== LINKING
|
||||
@echo $(OBJS)
|
||||
$(LD) $(LDFLAGS) -o $(BUILDDIR)/kernel.elf $(OBJS)
|
||||
|
||||
setup:
|
||||
@mkdir $(BUILDDIR)
|
||||
@mkdir $(SRCDIR)
|
||||
@mkdir $(OBJDIR)
|
||||
|
||||
buildimg:
|
||||
dd if=/dev/zero of=$(BUILDDIR)/$(OSNAME).img bs=512 count=93750
|
||||
mformat -i $(BUILDDIR)/$(OSNAME).img ::
|
||||
mmd -i $(BUILDDIR)/$(OSNAME).img ::/EFI
|
||||
mmd -i $(BUILDDIR)/$(OSNAME).img ::/EFI/BOOT
|
||||
mcopy -i $(BUILDDIR)/$(OSNAME).img $(BOOTEFI) ::/EFI/BOOT
|
||||
mcopy -i $(BUILDDIR)/$(OSNAME).img startup.nsh ::
|
||||
mcopy -i $(BUILDDIR)/$(OSNAME).img $(BUILDDIR)/kernel.elf ::
|
||||
mcopy -i $(BUILDDIR)/$(OSNAME).img $(BUILDDIR)/zap-light18.psf ::
|
||||
|
||||
run:
|
||||
qemu-system-x86_64 -drive file=$(BUILDDIR)/$(OSNAME).img -m 256M -cpu qemu64 -drive if=pflash,format=raw,unit=0,file="$(OVMFDIR)/OVMF_CODE-pure-efi.fd",readonly=on -drive if=pflash,format=raw,unit=1,file="$(OVMFDIR)/OVMF_VARS-pure-efi.fd" -net none
|
||||
Reference in New Issue
Block a user