summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2021-11-03 23:26:19 +0100
committerAleksa Vučković <aleksav013@gmail.com>2021-11-03 23:26:19 +0100
commit7952ca48be2f8ec4f1277ccd72b5cc87e0138561 (patch)
tree6b42dc0869c3ea67ee8d5b14febfe8a881e54c91
parentf575a0dd796106af502e8693870c49af5bee2a5d (diff)
Moving install_headers to Makefile
-rw-r--r--Makefile74
-rwxr-xr-xheaders.sh8
-rw-r--r--src/c/kernel.c1
3 files changed, 60 insertions, 23 deletions
diff --git a/Makefile b/Makefile
index debc6d0..a9048a0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,53 +1,99 @@
+# HOST ARCH
ARCH=i686-elf-
+
+# GCC CROSS COMPILER
export CC=$(ARCH)gcc
export AS=$(ARCH)as
export CFLAGS=-ffreestanding -O2 -Wall -Wextra -fstack-protector-all
+
+# TOOLS
MKDIR=mkdir -p
RM=rm -rf
-CP=cp
+CP=cp -r
QEMU=qemu-system-x86_64
#QEMU_DEBUG=-d int -D qemu.log
+
+
+# DIRS
+
+## SOURCE
SOURCE_DIR=src
-BUILD_DIR=${CURDIR}/build
-ISO_DIR=isodir
AS_SOURCE_DIR=$(SOURCE_DIR)/as
C_SOURCE_DIR=$(SOURCE_DIR)/c
+INCLUDE_DIR=$(SOURCE_DIR)/include
+
+## BUILD
+ISO_DIR=isodir
+BUILD_DIR=${CURDIR}/build
export AS_OBJECT_DIR=$(BUILD_DIR)/as
export C_OBJECT_DIR=$(BUILD_DIR)/c
+## SYSROOT
+SYSROOT_DIR=sysroot
+SYSROOT_USR_DIR=$(SYSROOT_DIR)/usr
+SYSROOT_INCLUDE_DIR=$(SYSROOT_USR_DIR)/include
+
+## GCC USR
+GCC_USR_DIR=$(shell $(CC) -print-file-name=)
+GCC_INCLUDE_DIR=$(GCC_USR_DIR)/include
+
+
+
+# TARGET
TARGET=myos
BINARY=$(BUILD_DIR)/$(TARGET).bin
ISO=$(TARGET).iso
+
+
+# OBJECTS
+
+## AS OBJECTS
CRTI_OBJ=crti.o
CRTN_OBJ=crtn.o
AS_OBJ=boot.o irq.o paging.o
-C_OBJ=gdt.o heap.o idt.o kernel.o keyboard.o keymap.o stdio.o string.o tty.o vga.o irq.o stack_protector.o timer.o paging.o
-
-export C_OBJECTS=$(patsubst %,$(C_OBJECT_DIR)/%,$(C_OBJ))
AS_OBJECT=$(patsubst %,$(AS_OBJECT_DIR)/%,$(AS_OBJ))
CRTI_OBJECT=$(patsubst %,$(AS_OBJECT_DIR)/%,$(CRTI_OBJ))
CRTN_OBJECT=$(patsubst %,$(AS_OBJECT_DIR)/%,$(CRTN_OBJ))
-
export AS_OBJECTS=$(AS_OBJECT) $(CRTI_OBJECT) $(CRTN_OBJECT)
-CRTBEGIN_OBJECT=$(shell $(CC) -print-file-name=crtbegin.o)
-CRTEND_OBJECT=$(shell $(CC) -print-file-name=crtend.o)
+CRTBEGIN_OBJECT=$(GCC_USR_DIR)/crtbegin.o
+CRTEND_OBJECT=$(GCC_USR_DIR)/crtend.o
+
+## C OBJECTS
+C_OBJ=gdt.o heap.o idt.o kernel.o keyboard.o keymap.o stdio.o string.o tty.o vga.o irq.o stack_protector.o timer.o paging.o
+
+export C_OBJECTS=$(patsubst %,$(C_OBJECT_DIR)/%,$(C_OBJ))
+
+## ALL OBJECTS IN ORDER
OBJ=$(CRTI_OBJECT) $(CRTBEGIN_OBJECT) $(AS_OBJECT) $(C_OBJECTS) $(CRTEND_OBJECT) $(CRTN_OBJECT)
-.PHONY: all compile run run-iso clean
+
+# OTHER FILES
+LINKER=$(SOURCE_DIR)/linker.ld
+GRUB.CFG=$(SOURCE_DIR)/grub.cfg
+
+
+# RULES
+.PHONY: all compile run run-iso clean install_headers
all: compile
$(BINARY): $(OBJ)
- $(CC) -T $(SOURCE_DIR)/linker.ld -o $(BINARY) $(CFLAGS) -nostdlib -lgcc $(OBJ)
+ $(CC) -T $(LINKER) -o $(BINARY) $(CFLAGS) -nostdlib -lgcc $(OBJ)
+
+install_headers:
+ $(RM) $(SYSROOT_INCLUDE_DIR)
+ $(MKDIR) $(SYSROOT_INCLUDE_DIR)
+ $(CP) $(GCC_INCLUDE_DIR)/* $(SYSROOT_INCLUDE_DIR)
+ $(CP) $(INCLUDE_DIR)/* $(SYSROOT_INCLUDE_DIR)
compile:
- ./headers.sh
+ $(MAKE) install_headers
$(MKDIR) $(AS_OBJECT_DIR)
$(MKDIR) $(C_OBJECT_DIR)
$(MAKE) --directory $(AS_SOURCE_DIR)
@@ -56,9 +102,9 @@ compile:
$(ISO): $(BINARY)
grub-file --is-x86-multiboot $(BINARY)
- mkdir -p $(ISO_DIR)/boot/grub
+ $(MKDIR) $(ISO_DIR)/boot/grub
$(CP) $(BINARY) $(ISO_DIR)/boot/$(TARGET).bin
- $(CP) $(SOURCE_DIR)/grub.cfg $(ISO_DIR)/boot/grub/grub.cfg
+ $(CP) $(GRUB.CFG) $(ISO_DIR)/boot/grub/grub.cfg
grub-mkrescue -o $(ISO) $(ISO_DIR)
run: compile
diff --git a/headers.sh b/headers.sh
deleted file mode 100755
index 6e6425d..0000000
--- a/headers.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-rm -rf sysroot/usr/include
-mkdir -p sysroot/usr/include
-cp /usr/lib/gcc/i686-elf/11.1.0/include/stdbool.h sysroot/usr/include
-cp /usr/lib/gcc/i686-elf/11.1.0/include/stddef.h sysroot/usr/include
-cp /usr/lib/gcc/i686-elf/11.1.0/include/stdint.h sysroot/usr/include/stdint.h
-cp /usr/lib/gcc/i686-elf/11.1.0/include/stdint-gcc.h sysroot/usr/include/stdint-gcc.h
-cp /usr/lib/gcc/i686-elf/11.1.0/include/stdarg.h sysroot/usr/include
-cp -r src/include/* sysroot/usr/include
diff --git a/src/c/kernel.c b/src/c/kernel.c
index df12193..849a356 100644
--- a/src/c/kernel.c
+++ b/src/c/kernel.c
@@ -1,4 +1,3 @@
-#include<stdio.h>
#include<heap.h>
void terminal_initialize(void);