From a8a6fce250d083b9324df3abc63fb6b62301361a Mon Sep 17 00:00:00 2001 From: Kevin Lange Date: Sun, 20 Feb 2011 20:15:39 -0600 Subject: [PATCH] [boot] Integrate stage 2 into build process --- .gitignore | 1 + Makefile | 46 +++++++++++++++++++++++++++++++++++---------- bootloader/stage2.c | 2 +- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index dcafc58c..769619aa 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ toaruos-initrd bootloader/stage1 bootloader/stage2 bootloader/stage2.s +initrd/boot diff --git a/Makefile b/Makefile index 9df523c8..5a2abbe7 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ CC = clang CFLAGS = -Wall -Wextra -pedantic -m32 -O0 -std=c99 -finline-functions -fno-stack-protector -nostdinc -ffreestanding -Wno-unused-function -Wno-unused-parameter LD = ld -m elf_i386 NASM = nasm +YASM = yasm ECHO = `which echo` -e MODULES = $(patsubst %.c,%.o,$(wildcard kernel/core/*.c)) FILESYSTEMS = $(patsubst %.c,%.o,$(wildcard kernel/core/fs/*.c)) @@ -32,9 +33,9 @@ toaruos-kernel: kernel/start.o kernel/link.ld kernel/main.o ${MODULES} ${FILESYS @${ECHO} "\r\033[32;1m LD $<\033[0m" kernel/start.o: kernel/start.asm - @${ECHO} -n "\033[32m nasm kernel/start.asm\033[0m" + @${ECHO} -n "\033[32m nasm $<\033[0m" @${NASM} -f elf -o kernel/start.o kernel/start.asm - @${ECHO} "\r\033[32;1m nasm kernel/start.asm\033[0m" + @${ECHO} "\r\033[32;1m nasm $<\033[0m" %.o: %.c @${ECHO} -n "\033[32m CC $<\033[0m" @@ -44,28 +45,53 @@ kernel/start.o: kernel/start.asm ################ # Ram disk # ################ -toaruos-initrd: initrd bootloader/stage1 - @${ECHO} -n "\033[32m initrd Generating initial RAM disk\033[0m" +toaruos-initrd: initrd bootloader/stage1 initrd/boot/stage2 initrd/boot/kernel + @${ECHO} -n "\033[32m initrd Generating initial RAM disk\033[0m" @-rm -f toaruos-initrd @${GENEXT} -d initrd -q -b 249 toaruos-initrd @${DD} if=bootloader/stage1 of=toaruos-initrd 2>/dev/null - @${ECHO} "\r\033[32;1m initrd Generated initial RAM disk image\033[0m" + @${ECHO} "\r\033[32;1m initrd Generated initial RAM disk image\033[0m" + +### Ram Disk installers... + +# Kernel +initrd/boot/kernel: toaruos-kernel + @mkdir -p initrd/boot + @cp toaruos-kernel initrd/boot/kernel + +# Second-stage bootloader +initrd/boot/stage2: bootloader/stage2 + @mkdir -p initrd/boot + @cp bootloader/stage2 initrd/boot/stage2 ################ # Bootloader # ################ bootloader/stage1: bootloader/stage1.s - @${ECHO} -n "\033[32m nasm bootloader/stage1.s\033[0m" - @${NASM} -f bin -o bootloader/stage1 bootloader/stage1.s - @${ECHO} "\r\033[32;1m nasm bootloader/stage1.s\033[0m" + @${ECHO} -n "\033[32m nasm $<\033[0m" + @${NASM} -f bin -o $@ $< + @${ECHO} "\r\033[32;1m nasm $<\033[0m" +bootloader/stage2: bootloader/stage2.s + @${ECHO} -n "\033[32m yasm $<\033[0m" + @${YASM} -p gas -f bin -w: -o $@ $< + @${ECHO} "\r\033[32;1m yasm $<\033[0m" + +bootloader/stage2.s: bootloader/stage2.c + @${ECHO} -n "\033[32m CC $<\033[0m" + @${CC} ${CFLAGS} -S -o $@ $< + @${ECHO} "\r\033[32;1m CC $<\033[0m" clean: - @${ECHO} -n "\033[31m RM Cleaning...\033[0m" + @${ECHO} -n "\033[31m RM Cleaning... \033[0m" @-rm -f toaruos-kernel @-rm -f toaruos-initrd @-rm -f kernel/*.o @-rm -f kernel/core/*.o @-rm -f kernel/core/fs/*.o @-rm -f bootloader/stage1 - @${ECHO} "\r\033[31;1m RM Finished cleaning.\033[0m" + @-rm -f bootloader/stage2 + @-rm -f bootloader/stage2.s + @-rm -f initrd/boot/stage2 + @-rm -f initrd/boot/kernel + @${ECHO} "\r\033[31;1m RM Finished cleaning.\033[0m\033[K" diff --git a/bootloader/stage2.c b/bootloader/stage2.c index 2a73a53e..3430e344 100644 --- a/bootloader/stage2.c +++ b/bootloader/stage2.c @@ -11,5 +11,5 @@ __asm__(".code16\n"); * Main entry point */ int main() { - // derp? + return 0; }