From dc4bf71b5a157846cc8715da462ef66a1273ccef Mon Sep 17 00:00:00 2001 From: Rick Rongen Date: Tue, 9 Mar 2021 19:45:20 +0100 Subject: [PATCH] feat: added cross compiler and moved headers to include dir --- .gitignore | 3 +- CMakeLists.txt | 14 +- {kernel => include}/attributes.h | 0 {kernel => include}/command.h | 0 {kernel => include}/cpu/cpu.h | 0 {kernel => include}/cpu/cpuidx.h | 0 {kernel => include}/cpu/idt.h | 0 {kernel => include}/cpu/isr.h | 0 {kernel => include}/cpu/syscall_handler.h | 0 {kernel => include}/cpu/timer.h | 0 {kernel => include}/debug/debug.h | 0 {kernel => include}/driver.h | 0 {kernel => include}/drivers/ide.h | 0 {kernel => include}/drivers/keyboard.h | 0 {kernel => include}/drivers/pci.h | 0 {kernel => include}/drivers/pci_devices.h | 0 {kernel => include}/drivers/ports.h | 0 {kernel => include}/drivers/serial.h | 0 {kernel => include}/drivers/vgascreen.h | 0 {kernel => include}/elf.h | 0 {kernel => include}/fs/blockdev.h | 0 {kernel => include}/fs/fat.h | 0 {kernel => include}/fs/mbr.h | 0 {kernel => include}/libc/kprintf.h | 0 {kernel => include}/libc/libc.h | 0 {kernel => include}/libc/readline.h | 0 {kernel => include}/libc/ringqueue.h | 0 {kernel => include}/libc/sort.h | 0 {kernel => include}/libc/string.h | 0 {kernel => include}/libk/kprint.h | 0 {kernel => include}/libk/libk.h | 0 {kernel => include}/libk/syscall.h | 0 {kernel => include}/mem/malloc.h | 0 {kernel => include}/mem/mem.h | 0 {kernel => include}/mem/paging.h | 0 {kernel => include}/mem/pmm.h | 0 {kernel => include}/multiboot.h | 0 .../preprocessor_format_zero.h | 0 {kernel => include}/tasks/locking.h | 0 {kernel => include}/tasks/task.h | 0 {kernel => include}/types.h | 0 {kernel => include}/util/power.h | 0 {kernel => include}/util/stream.h | 0 kernel/command.c | 2 +- kernel/cpu/cpuidx.c | 2 +- kernel/cpu/idt.c | 2 +- kernel/cpu/isr.c | 2 +- kernel/cpu/syscall_handler.c | 2 +- kernel/cpu/timer.c | 6 +- kernel/debug/debug.c | 2 +- kernel/drivers/ide.c | 4 +- kernel/drivers/keyboard.c | 2 +- kernel/drivers/pci.c | 2 +- kernel/drivers/ports.c | 2 +- kernel/drivers/serial.c | 2 +- kernel/drivers/vgascreen.c | 2 +- kernel/fs/blockdev.c | 2 +- kernel/fs/fat.c | 4 +- kernel/fs/mbr.c | 2 +- kernel/libc/kprintf.c | 4 +- kernel/libc/libc.c | 2 +- kernel/libc/readline.c | 2 +- kernel/libc/ringqueue.c | 2 +- kernel/libc/sort.c | 4 +- kernel/libc/string.c | 4 +- kernel/libk/kprint.c | 2 +- kernel/libk/libk.c | 2 +- kernel/libk/syscall.c | 2 +- kernel/mem/malloc.c | 4 +- kernel/mem/mem.c | 2 +- kernel/mem/paging.c | 2 +- kernel/mem/pmm.c | 2 +- kernel/tasks/locking.c | 2 +- kernel/tasks/task.c | 2 +- kernel/util/power.c | 2 +- kernel/util/stream.c | 2 +- mkbuildenv.sh | 126 ++++++++++++++++++ 77 files changed, 180 insertions(+), 45 deletions(-) rename {kernel => include}/attributes.h (100%) rename {kernel => include}/command.h (100%) rename {kernel => include}/cpu/cpu.h (100%) rename {kernel => include}/cpu/cpuidx.h (100%) rename {kernel => include}/cpu/idt.h (100%) rename {kernel => include}/cpu/isr.h (100%) rename {kernel => include}/cpu/syscall_handler.h (100%) rename {kernel => include}/cpu/timer.h (100%) rename {kernel => include}/debug/debug.h (100%) rename {kernel => include}/driver.h (100%) rename {kernel => include}/drivers/ide.h (100%) rename {kernel => include}/drivers/keyboard.h (100%) rename {kernel => include}/drivers/pci.h (100%) rename {kernel => include}/drivers/pci_devices.h (100%) rename {kernel => include}/drivers/ports.h (100%) rename {kernel => include}/drivers/serial.h (100%) rename {kernel => include}/drivers/vgascreen.h (100%) rename {kernel => include}/elf.h (100%) rename {kernel => include}/fs/blockdev.h (100%) rename {kernel => include}/fs/fat.h (100%) rename {kernel => include}/fs/mbr.h (100%) rename {kernel => include}/libc/kprintf.h (100%) rename {kernel => include}/libc/libc.h (100%) rename {kernel => include}/libc/readline.h (100%) rename {kernel => include}/libc/ringqueue.h (100%) rename {kernel => include}/libc/sort.h (100%) rename {kernel => include}/libc/string.h (100%) rename {kernel => include}/libk/kprint.h (100%) rename {kernel => include}/libk/libk.h (100%) rename {kernel => include}/libk/syscall.h (100%) rename {kernel => include}/mem/malloc.h (100%) rename {kernel => include}/mem/mem.h (100%) rename {kernel => include}/mem/paging.h (100%) rename {kernel => include}/mem/pmm.h (100%) rename {kernel => include}/multiboot.h (100%) rename {kernel => include}/preprocessor_format_zero.h (100%) rename {kernel => include}/tasks/locking.h (100%) rename {kernel => include}/tasks/task.h (100%) rename {kernel => include}/types.h (100%) rename {kernel => include}/util/power.h (100%) rename {kernel => include}/util/stream.h (100%) create mode 100755 mkbuildenv.sh diff --git a/.gitignore b/.gitignore index 289793f..b7452bf 100644 --- a/.gitignore +++ b/.gitignore @@ -114,4 +114,5 @@ modules.xml *.old **/__pycache__ *.img -later/ \ No newline at end of file +later/ +compiler/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 26f18dc..e6d50be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,20 @@ cmake_minimum_required(VERSION 3.15) project(new_kernel C ASM) + +# Define compiler run time +SET(COMPILER_RT ${CMAKE_CURRENT_LIST_DIR}/compiler/target/bin) +SET(CMAKE_C_COMPILER ${COMPILER_RT}/i686-elf-gcc) +SET(CMAKE_ASM_COMPILER ${COMPILER_RT}/i686-elf-gcc) + +# Optionally enable cmake debugging #SET(CMAKE_VERBOSE_MAKEFILE ON) -SET(GCC_INCLUDE_DIR "/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include") -SET(CMAKE_C_FLAGS "-I${GCC_INCLUDE_DIR} -mno-sse -g -ffreestanding -Wall -Wextra -fno-exceptions -fno-stack-protector -nostdinc -nostdlib -fno-pie -m32") + +# Set compile flags +SET(CMAKE_C_FLAGS "-g -ffreestanding -Wall -Wextra -fno-exceptions -fno-stack-protector -fno-pie -m32") SET(CMAKE_ASM_FLAGS "${CFLAGS} -m32 -x assembler-with-cpp") SET(CMAKE_EXE_LINKER_FLAGS "-T${CMAKE_CURRENT_LIST_DIR}/linker.ld -lgcc -ffreestanding -nostdlib -no-pie") -include_directories(AFTER kernel boot) +include_directories(AFTER include) set(CMAKE_C_STANDARD 99) diff --git a/kernel/attributes.h b/include/attributes.h similarity index 100% rename from kernel/attributes.h rename to include/attributes.h diff --git a/kernel/command.h b/include/command.h similarity index 100% rename from kernel/command.h rename to include/command.h diff --git a/kernel/cpu/cpu.h b/include/cpu/cpu.h similarity index 100% rename from kernel/cpu/cpu.h rename to include/cpu/cpu.h diff --git a/kernel/cpu/cpuidx.h b/include/cpu/cpuidx.h similarity index 100% rename from kernel/cpu/cpuidx.h rename to include/cpu/cpuidx.h diff --git a/kernel/cpu/idt.h b/include/cpu/idt.h similarity index 100% rename from kernel/cpu/idt.h rename to include/cpu/idt.h diff --git a/kernel/cpu/isr.h b/include/cpu/isr.h similarity index 100% rename from kernel/cpu/isr.h rename to include/cpu/isr.h diff --git a/kernel/cpu/syscall_handler.h b/include/cpu/syscall_handler.h similarity index 100% rename from kernel/cpu/syscall_handler.h rename to include/cpu/syscall_handler.h diff --git a/kernel/cpu/timer.h b/include/cpu/timer.h similarity index 100% rename from kernel/cpu/timer.h rename to include/cpu/timer.h diff --git a/kernel/debug/debug.h b/include/debug/debug.h similarity index 100% rename from kernel/debug/debug.h rename to include/debug/debug.h diff --git a/kernel/driver.h b/include/driver.h similarity index 100% rename from kernel/driver.h rename to include/driver.h diff --git a/kernel/drivers/ide.h b/include/drivers/ide.h similarity index 100% rename from kernel/drivers/ide.h rename to include/drivers/ide.h diff --git a/kernel/drivers/keyboard.h b/include/drivers/keyboard.h similarity index 100% rename from kernel/drivers/keyboard.h rename to include/drivers/keyboard.h diff --git a/kernel/drivers/pci.h b/include/drivers/pci.h similarity index 100% rename from kernel/drivers/pci.h rename to include/drivers/pci.h diff --git a/kernel/drivers/pci_devices.h b/include/drivers/pci_devices.h similarity index 100% rename from kernel/drivers/pci_devices.h rename to include/drivers/pci_devices.h diff --git a/kernel/drivers/ports.h b/include/drivers/ports.h similarity index 100% rename from kernel/drivers/ports.h rename to include/drivers/ports.h diff --git a/kernel/drivers/serial.h b/include/drivers/serial.h similarity index 100% rename from kernel/drivers/serial.h rename to include/drivers/serial.h diff --git a/kernel/drivers/vgascreen.h b/include/drivers/vgascreen.h similarity index 100% rename from kernel/drivers/vgascreen.h rename to include/drivers/vgascreen.h diff --git a/kernel/elf.h b/include/elf.h similarity index 100% rename from kernel/elf.h rename to include/elf.h diff --git a/kernel/fs/blockdev.h b/include/fs/blockdev.h similarity index 100% rename from kernel/fs/blockdev.h rename to include/fs/blockdev.h diff --git a/kernel/fs/fat.h b/include/fs/fat.h similarity index 100% rename from kernel/fs/fat.h rename to include/fs/fat.h diff --git a/kernel/fs/mbr.h b/include/fs/mbr.h similarity index 100% rename from kernel/fs/mbr.h rename to include/fs/mbr.h diff --git a/kernel/libc/kprintf.h b/include/libc/kprintf.h similarity index 100% rename from kernel/libc/kprintf.h rename to include/libc/kprintf.h diff --git a/kernel/libc/libc.h b/include/libc/libc.h similarity index 100% rename from kernel/libc/libc.h rename to include/libc/libc.h diff --git a/kernel/libc/readline.h b/include/libc/readline.h similarity index 100% rename from kernel/libc/readline.h rename to include/libc/readline.h diff --git a/kernel/libc/ringqueue.h b/include/libc/ringqueue.h similarity index 100% rename from kernel/libc/ringqueue.h rename to include/libc/ringqueue.h diff --git a/kernel/libc/sort.h b/include/libc/sort.h similarity index 100% rename from kernel/libc/sort.h rename to include/libc/sort.h diff --git a/kernel/libc/string.h b/include/libc/string.h similarity index 100% rename from kernel/libc/string.h rename to include/libc/string.h diff --git a/kernel/libk/kprint.h b/include/libk/kprint.h similarity index 100% rename from kernel/libk/kprint.h rename to include/libk/kprint.h diff --git a/kernel/libk/libk.h b/include/libk/libk.h similarity index 100% rename from kernel/libk/libk.h rename to include/libk/libk.h diff --git a/kernel/libk/syscall.h b/include/libk/syscall.h similarity index 100% rename from kernel/libk/syscall.h rename to include/libk/syscall.h diff --git a/kernel/mem/malloc.h b/include/mem/malloc.h similarity index 100% rename from kernel/mem/malloc.h rename to include/mem/malloc.h diff --git a/kernel/mem/mem.h b/include/mem/mem.h similarity index 100% rename from kernel/mem/mem.h rename to include/mem/mem.h diff --git a/kernel/mem/paging.h b/include/mem/paging.h similarity index 100% rename from kernel/mem/paging.h rename to include/mem/paging.h diff --git a/kernel/mem/pmm.h b/include/mem/pmm.h similarity index 100% rename from kernel/mem/pmm.h rename to include/mem/pmm.h diff --git a/kernel/multiboot.h b/include/multiboot.h similarity index 100% rename from kernel/multiboot.h rename to include/multiboot.h diff --git a/kernel/preprocessor_format_zero.h b/include/preprocessor_format_zero.h similarity index 100% rename from kernel/preprocessor_format_zero.h rename to include/preprocessor_format_zero.h diff --git a/kernel/tasks/locking.h b/include/tasks/locking.h similarity index 100% rename from kernel/tasks/locking.h rename to include/tasks/locking.h diff --git a/kernel/tasks/task.h b/include/tasks/task.h similarity index 100% rename from kernel/tasks/task.h rename to include/tasks/task.h diff --git a/kernel/types.h b/include/types.h similarity index 100% rename from kernel/types.h rename to include/types.h diff --git a/kernel/util/power.h b/include/util/power.h similarity index 100% rename from kernel/util/power.h rename to include/util/power.h diff --git a/kernel/util/stream.h b/include/util/stream.h similarity index 100% rename from kernel/util/stream.h rename to include/util/stream.h diff --git a/kernel/command.c b/kernel/command.c index 3200cd7..de38ae6 100644 --- a/kernel/command.c +++ b/kernel/command.c @@ -2,7 +2,7 @@ // Created by rick on 23-02-21. // -#include "command.h" +#include #include "libk/kprint.h" #include "libk/libk.h" #include diff --git a/kernel/cpu/cpuidx.c b/kernel/cpu/cpuidx.c index d381ea7..c374705 100644 --- a/kernel/cpu/cpuidx.c +++ b/kernel/cpu/cpuidx.c @@ -2,7 +2,7 @@ // Created by rick on 12-02-21. // -#include "cpuidx.h" +#include #include #include diff --git a/kernel/cpu/idt.c b/kernel/cpu/idt.c index a560d74..56bb512 100644 --- a/kernel/cpu/idt.c +++ b/kernel/cpu/idt.c @@ -2,7 +2,7 @@ // Created by rick on 8/18/19. // -#include "idt.h" +#include idt_gate_t idt[IDT_REGISTERS]; idt_register_t idt_reg; diff --git a/kernel/cpu/isr.c b/kernel/cpu/isr.c index 38e722f..dcb8eb3 100644 --- a/kernel/cpu/isr.c +++ b/kernel/cpu/isr.c @@ -2,7 +2,7 @@ // Created by rick on 8/18/19. // -#include "isr.h" +#include #include #include diff --git a/kernel/cpu/syscall_handler.c b/kernel/cpu/syscall_handler.c index 03d6182..530f0c1 100644 --- a/kernel/cpu/syscall_handler.c +++ b/kernel/cpu/syscall_handler.c @@ -2,7 +2,7 @@ // Created by rick on 24-02-21. // -#include "syscall_handler.h" +#include #include #include diff --git a/kernel/cpu/timer.c b/kernel/cpu/timer.c index 43471b3..9f6eea3 100644 --- a/kernel/cpu/timer.c +++ b/kernel/cpu/timer.c @@ -2,7 +2,7 @@ // Created by rick on 9/22/19. // -#include "timer.h" +#include #include #include @@ -63,8 +63,8 @@ int init_timer(uint32_t freq) { register_interrupt_handler(IRQ0, timer_callback); uint32_t divisor = 1193180 / freq; - uint8_t low = (uint8_t) (divisor & 0xFF); - uint8_t high = (uint8_t) ((divisor >> 8) & 0xFF); + uint8_t low = (uint8_t)(divisor & 0xFF); + uint8_t high = (uint8_t)((divisor >> 8) & 0xFF); port_byte_out(PORT_PIT_COMMAND, PIT_MODE_BIN | PIT_MODE_HARDWARE_SQUARE_WAVE_GENERATOR | PIT_ACCESS_MODE_LH | PIT_CHANNEL_0); port_byte_out(PORT_PIT_DATA_0, low); diff --git a/kernel/debug/debug.c b/kernel/debug/debug.c index aae5183..a1998e3 100644 --- a/kernel/debug/debug.c +++ b/kernel/debug/debug.c @@ -2,7 +2,7 @@ // Created by rick on 08-03-21. // -#include "debug.h" +#include #include #include #include diff --git a/kernel/drivers/ide.c b/kernel/drivers/ide.c index 32d43b7..9653112 100644 --- a/kernel/drivers/ide.c +++ b/kernel/drivers/ide.c @@ -3,9 +3,9 @@ // // https://wiki.osdev.org/PCI_IDE_Controller -#include "ide.h" +#include #include -#include "ports.h" +#include #include #include #include diff --git a/kernel/drivers/keyboard.c b/kernel/drivers/keyboard.c index 73cc35e..ff957f8 100644 --- a/kernel/drivers/keyboard.c +++ b/kernel/drivers/keyboard.c @@ -1,7 +1,7 @@ // // Created by rick on 23-03-20. // -#include "keyboard.h" +#include #include #include diff --git a/kernel/drivers/pci.c b/kernel/drivers/pci.c index 071cc7d..34cc59b 100644 --- a/kernel/drivers/pci.c +++ b/kernel/drivers/pci.c @@ -3,7 +3,7 @@ // // https://wiki.osdev.org/PCI -#include "pci.h" +#include #include #include diff --git a/kernel/drivers/ports.c b/kernel/drivers/ports.c index 3a72570..2e0c05d 100644 --- a/kernel/drivers/ports.c +++ b/kernel/drivers/ports.c @@ -6,7 +6,7 @@ */ -#include "ports.h" +#include /** * Read a byte from the specified port diff --git a/kernel/drivers/serial.c b/kernel/drivers/serial.c index a57a68c..5544c61 100644 --- a/kernel/drivers/serial.c +++ b/kernel/drivers/serial.c @@ -2,7 +2,7 @@ // Created by rick on 28-01-21. // -#include "serial.h" +#include #include #include diff --git a/kernel/drivers/vgascreen.c b/kernel/drivers/vgascreen.c index 6ddb257..5f07807 100644 --- a/kernel/drivers/vgascreen.c +++ b/kernel/drivers/vgascreen.c @@ -2,7 +2,7 @@ // Created by rick on 8/18/19. // -#include "vgascreen.h" +#include #include #include diff --git a/kernel/fs/blockdev.c b/kernel/fs/blockdev.c index 5712746..714e600 100644 --- a/kernel/fs/blockdev.c +++ b/kernel/fs/blockdev.c @@ -9,7 +9,7 @@ #include #include #include -#include "blockdev.h" +#include #define MAX_BLOCK_DEVS 64 diff --git a/kernel/fs/fat.c b/kernel/fs/fat.c index a1f1887..74089d2 100644 --- a/kernel/fs/fat.c +++ b/kernel/fs/fat.c @@ -2,8 +2,8 @@ // Created by rick on 07-02-21. // -#include "fat.h" -#include "blockdev.h" +#include +#include #include #include diff --git a/kernel/fs/mbr.c b/kernel/fs/mbr.c index 1de233a..4d9d2f3 100644 --- a/kernel/fs/mbr.c +++ b/kernel/fs/mbr.c @@ -2,7 +2,7 @@ // Created by rick on 06-02-21. // -#include "mbr.h" +#include #include #include #include diff --git a/kernel/libc/kprintf.c b/kernel/libc/kprintf.c index 56ea77c..aa92ed2 100644 --- a/kernel/libc/kprintf.c +++ b/kernel/libc/kprintf.c @@ -2,8 +2,8 @@ // Created by rick on 06-02-21. // -#include "kprintf.h" -#include "libc.h" +#include +#include #include #include #include diff --git a/kernel/libc/libc.c b/kernel/libc/libc.c index 32e9261..41cae02 100644 --- a/kernel/libc/libc.c +++ b/kernel/libc/libc.c @@ -6,7 +6,7 @@ */ #include -#include "libc.h" +#include int memcpy(uint8_t *dst, const uint8_t *src, int amount) { for (int i = 0; i < amount; i++) { diff --git a/kernel/libc/readline.c b/kernel/libc/readline.c index 943ba31..8ba1599 100644 --- a/kernel/libc/readline.c +++ b/kernel/libc/readline.c @@ -2,7 +2,7 @@ // Created by rick on 01-02-21. // -#include "readline.h" +#include #include #include #include diff --git a/kernel/libc/ringqueue.c b/kernel/libc/ringqueue.c index dd454f4..03ad3a3 100644 --- a/kernel/libc/ringqueue.c +++ b/kernel/libc/ringqueue.c @@ -2,7 +2,7 @@ // Created by rick on 30-01-21. // -#include "ringqueue.h" +#include #include #include diff --git a/kernel/libc/sort.c b/kernel/libc/sort.c index 580e8cb..b1d053d 100644 --- a/kernel/libc/sort.c +++ b/kernel/libc/sort.c @@ -2,8 +2,8 @@ // Created by rick on 06-03-21. // -#include "sort.h" -#include "libc.h" +#include +#include #include // taken from https://github.com/DevSolar/pdclib/blob/master/functions/stdlib/qsort.c diff --git a/kernel/libc/string.c b/kernel/libc/string.c index 1cbcba7..f73146b 100644 --- a/kernel/libc/string.c +++ b/kernel/libc/string.c @@ -2,8 +2,8 @@ // Created by rick on 01-02-21. // -#include "string.h" -#include "stdbool.h" +#include +#include #include #include diff --git a/kernel/libk/kprint.c b/kernel/libk/kprint.c index ec88f6f..db8ac53 100644 --- a/kernel/libk/kprint.c +++ b/kernel/libk/kprint.c @@ -8,7 +8,7 @@ #include #include #include -#include "kprint.h" +#include #define MAX_HANDLERS 8 #define STREAM_SIZE (32*1024) diff --git a/kernel/libk/libk.c b/kernel/libk/libk.c index 4018381..b5ad0da 100644 --- a/kernel/libk/libk.c +++ b/kernel/libk/libk.c @@ -5,7 +5,7 @@ #include #include #include -#include "libk.h" +#include bool k_addr_in_kspace(void* addr) { return addr > kernel_start && addr < kernel_end; diff --git a/kernel/libk/syscall.c b/kernel/libk/syscall.c index ba53df9..f6a8920 100644 --- a/kernel/libk/syscall.c +++ b/kernel/libk/syscall.c @@ -2,7 +2,7 @@ // Created by rick on 22-02-21. // -#include "syscall.h" +#include #include #include diff --git a/kernel/mem/malloc.c b/kernel/mem/malloc.c index 92b2e9b..63c32e5 100644 --- a/kernel/mem/malloc.c +++ b/kernel/mem/malloc.c @@ -4,8 +4,8 @@ #include #include -#include "malloc.h" -#include "pmm.h" +#include +#include // retrieved from https://github.com/blanham/liballoc diff --git a/kernel/mem/mem.c b/kernel/mem/mem.c index 6d4d606..91086b2 100644 --- a/kernel/mem/mem.c +++ b/kernel/mem/mem.c @@ -2,7 +2,7 @@ // Created by rick on 22-04-20. // -#include "pmm.h" +#include #include #include #include diff --git a/kernel/mem/paging.c b/kernel/mem/paging.c index 84abf40..e1e1a36 100644 --- a/kernel/mem/paging.c +++ b/kernel/mem/paging.c @@ -2,7 +2,7 @@ // Created by rick on 21-02-21. // -#include "paging.h" +#include #include #include #include diff --git a/kernel/mem/pmm.c b/kernel/mem/pmm.c index 3b5cc34..bde9984 100644 --- a/kernel/mem/pmm.c +++ b/kernel/mem/pmm.c @@ -5,7 +5,7 @@ #include #include #include -#include "pmm.h" +#include #define NUM_PAGING_INFOS 16 diff --git a/kernel/tasks/locking.c b/kernel/tasks/locking.c index edb6e6b..5476474 100644 --- a/kernel/tasks/locking.c +++ b/kernel/tasks/locking.c @@ -2,7 +2,7 @@ // Created by rick on 27-02-21. // -#include "locking.h" +#include #include #include #include diff --git a/kernel/tasks/task.c b/kernel/tasks/task.c index 03d3250..e8f786b 100644 --- a/kernel/tasks/task.c +++ b/kernel/tasks/task.c @@ -2,7 +2,7 @@ // Created by rick on 22-02-21. // -#include "task.h" +#include #include #include #include diff --git a/kernel/util/power.c b/kernel/util/power.c index e98b241..b48b2fa 100644 --- a/kernel/util/power.c +++ b/kernel/util/power.c @@ -5,7 +5,7 @@ #include #include #include -#include "power.h" +#include void noreturn power_shutdown() { port_word_out(PORT_ACPI, PORT_ACPI_SHUTDOWN); diff --git a/kernel/util/stream.c b/kernel/util/stream.c index 9b33b82..cf56909 100644 --- a/kernel/util/stream.c +++ b/kernel/util/stream.c @@ -5,7 +5,7 @@ #include #include #include -#include "stream.h" +#include struct stream { uint8_t *data; diff --git a/mkbuildenv.sh b/mkbuildenv.sh new file mode 100755 index 0000000..47013da --- /dev/null +++ b/mkbuildenv.sh @@ -0,0 +1,126 @@ +#!/usr/bin/bash +COMPILER_DIR="${PWD}/compiler" +DOWNLOAD_DIR="${COMPILER_DIR}/download" +SOURCES_DIR="${COMPILER_DIR}/sources" +BUILD_DIR="${COMPILER_DIR}/build" + +GCC_VER=10.2.0 +GCC_TAR_FILE="gcc-${GCC_VER}.tar.xz" +GCC_TAR_URL="https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VER}/${GCC_TAR_FILE}" +GCC_SOURCE="${SOURCES_DIR}/gcc-${GCC_VER}" +GCC_BUILD="${BUILD_DIR}/gcc-${GCC_VER}" + +BINUTILS_VER=2.36 +BINUTILS_TAR_FILE="binutils-${BINUTILS_VER}.tar.xz" +BINUTILS_TAR_URL="https://ftp.gnu.org/gnu/binutils/${BINUTILS_TAR_FILE}" +BINUTILS_SOURCE="${SOURCES_DIR}/binutils-${BINUTILS_VER}" +BINUTILS_BUILD="${BUILD_DIR}/binutils-${BINUTILS_VER}" + +TARGET_COMPILER="${COMPILER_DIR}/target" + +export MAKEFLAGS="-j$(nproc)" + +export PREFIX="${TARGET_COMPILER}" +export TARGET=i686-elf +export PATH="${PREFIX}/bin:${PATH}" + +function log() { + echo "$*" +} + +function yes_or_no() { + while true; do + read -p "$* [y/n]: " yn + case $yn in + [Yy]*) return 0 ;; + [Nn]*) + echo "Aborted" + return 1 + ;; + esac + done +} + +function download() { + if [ -f "${DOWNLOAD_DIR}/$2" ]; then + log "Not downloading $2" + return 0 + fi + log "Downloading $2" + curl -o "${DOWNLOAD_DIR}/$2" "$1" +} + +function extract_source() { + if [ -d "$1" ]; then + log "already extracted $2, skipping" + return 0 + fi + log "Extracting $2" + tar -C "${SOURCES_DIR}" -xf "${DOWNLOAD_DIR}/$2" +} + +function ensure_dir() { + if [ ! -d "$1" ]; then + mkdir -p "$1" + fi +} + +# Verify + +if [ -d "${COMPILER_DIR}" ]; then + if ! yes_or_no "Do you want to rebuild?"; then + exit 1 + fi +fi + +# Download sources +ensure_dir "${COMPILER_DIR}" + +ensure_dir "${DOWNLOAD_DIR}" +ensure_dir "${TARGET_COMPILER}" +ensure_dir "${BUILD_DIR}" +ensure_dir "${GCC_BUILD}" +ensure_dir "${BINUTILS_BUILD}" + +download "${GCC_TAR_URL}" "${GCC_TAR_FILE}" +download "${BINUTILS_TAR_URL}" "${BINUTILS_TAR_FILE}" + +extract_source "${GCC_SOURCE}" "${GCC_TAR_FILE}" +extract_source "${BINUTILS_SOURCE}" "${BINUTILS_TAR_FILE}" + +# Build +function build_binutils() { + pushd . || return 1 + cd "${BINUTILS_BUILD}" || return 1 + "${BINUTILS_SOURCE}/configure" --target=${TARGET} --prefix=${PREFIX} --with-sysroot --disable-nls --disable-werror || return 1 + make || return 1 + make install || return 1 + popd || return 1 + return 0 +} + +function build_gcc() { + if ! which -- "${TARGET}-as"; then + log "Could not find ${TARGET}-as!" + return 1 + fi + pushd . || return 1 + cd "${GCC_BUILD}" || return 1 + "${GCC_SOURCE}/configure" --target=${TARGET} --prefix=${PREFIX} --disable-nls --enable-languages=c --without-headers || return 1 + make all-gcc || return 1 + make all-target-libgcc || return 1 + make install-gcc || return 1 + make install-target-libgcc || return 1 + popd || return 1 + return 0 +} + +if ! build_binutils; then + log "Failed to build binutils!" + exit 1 +fi + +if ! build_gcc; then + log "Failed to build binutils!" + exit 1 +fi