Compare commits
3 Commits
d083a9ef7c
...
45fc49d08c
Author | SHA1 | Date |
---|---|---|
g1n | 45fc49d08c | |
g1n | edf0613390 | |
g1n | 79ed6ccff2 |
|
@ -1,2 +1,4 @@
|
|||
*~
|
||||
src/build
|
||||
src/sysroot
|
||||
src/isodir
|
||||
|
|
75
src/Makefile
75
src/Makefile
|
@ -2,6 +2,11 @@ ARCH=i386
|
|||
CC=i686-elf-gcc
|
||||
|
||||
BUILDDIR=build
|
||||
ISODIR=isodir
|
||||
ORION_SYSROOT?=sysroot
|
||||
DESTDIR?=$(ORION_SYSROOT)
|
||||
BOOTDIR=/boot
|
||||
INCLUDEDIR=/usr/local/include
|
||||
|
||||
ASMFILES=$(wildcard arch/$(ARCH)/*.asm)
|
||||
ASMOBJS=$(patsubst %.asm, $(BUILDDIR)/%.o, $(ASMFILES))
|
||||
|
@ -12,8 +17,9 @@ COBJS=$(patsubst %.c, $(BUILDDIR)/%.o, $(CFILES))
|
|||
LIBKFILES=$(wildcard libk/*.c)
|
||||
LIBKOBJS=$(patsubst %.c, $(BUILDDIR)/%.o, $(LIBKFILES))
|
||||
|
||||
INCLUDEFLAGS=-Iinclude -Ilibk/include
|
||||
DEBUGFLAGS=
|
||||
INCLUDEFLAGS?=
|
||||
INCLUDEFLAGS:=-Iinclude -Ilibk/include
|
||||
DEBUGFLAGS?=
|
||||
CFLAGS=-std=c99 -ffreestanding -fstack-protector-all $(INCLUDEFLAGS) $(DEBUGFLAGS) -Wall -Wextra
|
||||
|
||||
CRTI_OBJ = $(BUILDDIR)/arch/$(ARCH)/crti.o
|
||||
|
@ -31,21 +37,21 @@ $(CRTEND_OBJ) \
|
|||
$(CRTN_OBJ)
|
||||
|
||||
DIRS = $(BUILDDIR)/arch/$(ARCH) $(BUILDDIR)/libk
|
||||
KERNELFILE = $(BUILDDIR)/orion.bin
|
||||
ISOFILE = $(BUILDDIR)/orion.iso
|
||||
KERNELFILE =orion-$(ARCH).bin
|
||||
ISOFILE =orion-$(ARCH).iso
|
||||
|
||||
.PHONY: all makedirs build link run run-grub clean
|
||||
.PHONY: all clean iso install install-headers run run-grub
|
||||
.SUFFIXES: .o .c .asm
|
||||
|
||||
all: makedirs build link
|
||||
all: $(DIRS) $(ASMOBJS) $(COBJS) $(LIBKOBJS) $(BUILDDIR)/$(KERNELFILE)
|
||||
|
||||
makedirs $(DIRS):
|
||||
mkdir -p build/arch/$(ARCH)
|
||||
mkdir -p build/libk
|
||||
$(DIRS):
|
||||
mkdir -p $(BUILDDIR)
|
||||
mkdir -p $(BUILDDIR)/arch/$(ARCH)
|
||||
mkdir -p $(BUILDDIR)/libk
|
||||
|
||||
build: $(ASMOBJS) $(COBJS) $(LIBKOBJS)
|
||||
|
||||
link:
|
||||
$(CC) -T linker.ld -o $(KERNELFILE) $(CFLAGS) -nostdlib $(OBJFILES) -lgcc
|
||||
$(BUILDDIR)/$(KERNELFILE): $(OBJFILES)
|
||||
$(CC) -T linker.ld -o $@ $(CFLAGS) $(OBJFILES) -nostdlib -lgcc
|
||||
|
||||
$(BUILDDIR)/%.o: %.asm
|
||||
nasm -f elf32 $< -o $@
|
||||
|
@ -56,23 +62,40 @@ $(BUILDDIR)/%.o: %.c
|
|||
$(BUILDDIR)/%.o: libk/%.c
|
||||
$(CC) -c $< -o $@ $(CFLAGS) -lgcc
|
||||
|
||||
install: all install-headers install-kernel
|
||||
|
||||
install-headers:
|
||||
mkdir -p $(DESTDIR)$(INCLUDEDIR)
|
||||
cp -R --preserve=timestamps include/. $(DESTDIR)$(INCLUDEDIR)/.
|
||||
cp -R --preserve=timestamps libk/include/. $(DESTDIR)$(INCLUDEDIR)/.
|
||||
|
||||
install-kernel: $(BUILDDIR)/$(KERNELFILE)
|
||||
mkdir -p $(DESTDIR)$(BOOTDIR)
|
||||
cp $(BUILDDIR)/$(KERNELFILE) $(DESTDIR)$(BOOTDIR)
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)/*
|
||||
rm -rf $(BUILDDIR)
|
||||
rm -rf $(ISODIR)
|
||||
rm -rf $(DESTDIR)
|
||||
|
||||
run:
|
||||
qemu-system-$(ARCH) -kernel $(KERNELFILE) -serial stdio -S -s
|
||||
run: install
|
||||
qemu-system-$(ARCH) -kernel $(BUILDDIR)/$(KERNELFILE) -serial stdio -S -s
|
||||
|
||||
run-grub:
|
||||
mkdir -p $(BUILDDIR)/isodir
|
||||
mkdir -p $(BUILDDIR)/isodir/boot
|
||||
mkdir -p $(BUILDDIR)/isodir/boot/grub
|
||||
$(BUILDDIR)/$(ISOFILE): install
|
||||
mkdir -p $(ISODIR)
|
||||
mkdir -p $(ISODIR)/boot
|
||||
mkdir -p $(ISODIR)/boot/grub
|
||||
|
||||
cp $(KERNELFILE) $(BUILDDIR)/isodir/boot/orion.kernel
|
||||
cp $(DESTDIR)$(BOOTDIR)/$(KERNELFILE) $(ISODIR)/boot/$(KERNELFILE)
|
||||
|
||||
echo 'menuentry "orion" { ' > $(BUILDDIR)/isodir/boot/grub/grub.cfg
|
||||
echo ' multiboot /boot/orion.kernel' >> $(BUILDDIR)/isodir/boot/grub/grub.cfg
|
||||
echo '}' >> $(BUILDDIR)/isodir/boot/grub/grub.cfg
|
||||
echo 'menuentry "orion" { ' > $(ISODIR)/boot/grub/grub.cfg
|
||||
echo ' multiboot /boot/$(KERNELFILE)' >> $(ISODIR)/boot/grub/grub.cfg
|
||||
echo '}' >> $(ISODIR)/boot/grub/grub.cfg
|
||||
|
||||
grub-mkrescue -o $(ISOFILE) $(BUILDDIR)/isodir
|
||||
qemu-system-$(ARCH) -cdrom $(BUILDDIR)/orion.iso -serial stdio -S -s
|
||||
grub-mkrescue -o $(BUILDDIR)/$(ISOFILE) $(ISODIR)
|
||||
|
||||
iso: $(BUILDDIR)/$(ISOFILE)
|
||||
|
||||
run-grub: iso
|
||||
qemu-system-$(ARCH) -cdrom $(BUILDDIR)/$(ISOFILE) -serial stdio -S -s
|
||||
|
||||
|
|
Loading…
Reference in New Issue