From eca55dfed8b606d28576d471fbcfb4b072351b86 Mon Sep 17 00:00:00 2001 From: "Enrico Fraccaroli (Galfurian)" Date: Wed, 17 Jan 2024 13:34:32 +0100 Subject: [PATCH] Clean up cmake files (Part 2) I've kept just one cmake project, in the root directory. The subdirectories just set up the targets. The asm compiler is serached just one time, from the root directory cmake file. Global compilation flags are set in the root cmake file, and each subdirectory cmake file sets specific flags if necessary (e.g., programs need the -u_start specified) --- CMakeLists.txt | 85 +++++- doc/CMakeLists.txt | 526 +++++++++++++++++----------------- libc/CMakeLists.txt | 205 +++++-------- mentos/CMakeLists.txt | 243 ++++++---------- programs/CMakeLists.txt | 64 +---- programs/tests/CMakeLists.txt | 64 +---- 6 files changed, 500 insertions(+), 687 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ae93e3..40b8b2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,14 +1,13 @@ # ============================================================================= +# PROJECT SETUP +# ============================================================================= + # Set the minimum required version of cmake. cmake_minimum_required(VERSION 3.1...3.22) # Initialize the project. project(mentos C ASM) -# ============================================================================= -# BUILD TYPE (Debug/Release) -# ============================================================================= - # Set the default build type to Debug. if(NOT CMAKE_BUILD_TYPE) message(STATUS "Setting build type to 'Debug' as none was specified.") @@ -16,12 +15,7 @@ if(NOT CMAKE_BUILD_TYPE) endif() # ============================================================================= -# DOCUMENTATION -# ============================================================================= -add_subdirectory(doc) - -# ============================================================================= -# OS-SPECIFIC COMPILERS +# OS-SPECIFIC COMPILERS SETUP # ============================================================================= # Add operating system specific option. @@ -62,7 +56,73 @@ else() endif() # ============================================================================= -# COMPILATION +# ASSEMBLY COMPILER +# ============================================================================= + +# Find the NASM compiler. +find_program(ASM_COMPILER NAMES nasm HINTS /usr/bin/ /usr/local/bin/) +# Mark the variable ASM_COMPILER as advanced. +mark_as_advanced(ASM_COMPILER) +# Check that we have found the compiler. +if(NOT ASM_COMPILER) + message(FATAL_ERROR "ASM compiler not found!") +endif(NOT ASM_COMPILER) +# Set the asm compiler. +set(CMAKE_ASM_COMPILER ${ASM_COMPILER}) +# Set the assembly compiler flags. +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_ASM_COMPILE_OBJECT " -f elf -g -O0 -F dwarf -o ") +else() + set(CMAKE_ASM_COMPILE_OBJECT " -f elf -g -O3 -o ") +endif() + +# ============================================================================= +# GLOBAL COMPILATION FLAGS +# ============================================================================= + +# Warning flags. +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") + +# Disable some specific warnings. +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-command-line-argument") + +# Set the compiler options. +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") + +if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon") +endif() + +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0") +elseif(CMAKE_BUILD_TYPE STREQUAL "Release") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") +endif(CMAKE_BUILD_TYPE STREQUAL "Debug") + +# Set the assembly compiler flags. +set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -m32") + +# ============================================================================= +# SUB-DIRECTORIES SETUP # ============================================================================= # Add the sub-directories. @@ -70,6 +130,7 @@ add_subdirectory(programs) add_subdirectory(programs/tests) add_subdirectory(mentos) add_subdirectory(libc) +add_subdirectory(doc) # ============================================================================= # FILESYSTEM @@ -131,7 +192,7 @@ set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -drive file=${CMAKE_BINARY_DIR}/rootfs.img, # Booting with QEMU for fun # ============================================================================= -# This first target runs the emualtor passing the kernel binary file. +# This first target runs the emulator passing the kernel binary file. add_custom_target( qemu COMMAND test -e ${CMAKE_BINARY_DIR}/rootfs.img || ${CMAKE_COMMAND} -E cmake_echo_color --red "No filesystem file detected, you need to run: make filesystem" diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index bf307ae..d128b5a 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -3,7 +3,7 @@ find_package(Doxygen) if (DOXYGEN_FOUND) # Read the file with the version. - file(READ ${PROJECT_SOURCE_DIR}/mentos/inc/version.h version_file) + file(READ ${CMAKE_SOURCE_DIR}/mentos/inc/version.h version_file) # Extract the OS version. string(REGEX MATCH "OS_MAJOR_VERSION ([0-9]*)" _ ${version_file}) set(OS_MAJOR_VERSION ${CMAKE_MATCH_1}) @@ -15,8 +15,8 @@ if (DOXYGEN_FOUND) set(DOXYGEN_PROJECT_NAME "MentOS") set(DOXYGEN_PROJECT_NUMBER "${OS_MAJOR_VERSION}.${OS_MINOR_VERSION}.${OS_MICRO_VERSION}") set(DOXYGEN_PROJECT_BRIEF "The Mentoring Operating System") - set(DOXYGEN_USE_MDFILE_AS_MAINPAGE ${PROJECT_SOURCE_DIR}/README.md) - set(DOXYGEN_IMAGE_PATH ${PROJECT_SOURCE_DIR}/doc/resources) + set(DOXYGEN_USE_MDFILE_AS_MAINPAGE ${CMAKE_SOURCE_DIR}/README.md) + set(DOXYGEN_IMAGE_PATH ${CMAKE_SOURCE_DIR}/doc/resources) set(DOXYGEN_SHOW_INCLUDE_FILES NO) set(DOXYGEN_GENERATE_TREEVIEW NO) set(DOXYGEN_WARN_NO_PARAMDOC YES) @@ -28,272 +28,272 @@ if (DOXYGEN_FOUND) set(DOXYGEN_PREDEFINED "__attribute__((x))= _syscall0= _syscall0(x)= _syscall1(x)= _syscall2(x)= _syscall3(x)=") set(DOXYGEN_WARN_FORMAT "$file($line): $text") - set(DOXYGEN_HTML_STYLESHEET ${PROJECT_SOURCE_DIR}/doc/doxygen.css) + set(DOXYGEN_HTML_STYLESHEET ${CMAKE_SOURCE_DIR}/doc/doxygen.css) doxygen_add_docs( - ${PROJECT_NAME}_documentation - ${PROJECT_SOURCE_DIR}/README.md - ${PROJECT_SOURCE_DIR}/LICENSE.md - ${PROJECT_SOURCE_DIR}/doc/signal.md - ${PROJECT_SOURCE_DIR}/doc/syscall.md + mentos_documentation + ${CMAKE_SOURCE_DIR}/README.md + ${CMAKE_SOURCE_DIR}/LICENSE.md + ${CMAKE_SOURCE_DIR}/doc/signal.md + ${CMAKE_SOURCE_DIR}/doc/syscall.md - ${PROJECT_SOURCE_DIR}/mentos/inc/boot.h - ${PROJECT_SOURCE_DIR}/mentos/inc/descriptor_tables/gdt.h - ${PROJECT_SOURCE_DIR}/mentos/inc/descriptor_tables/idt.h - ${PROJECT_SOURCE_DIR}/mentos/inc/descriptor_tables/isr.h - ${PROJECT_SOURCE_DIR}/mentos/inc/descriptor_tables/tss.h - ${PROJECT_SOURCE_DIR}/mentos/inc/devices/fpu.h - ${PROJECT_SOURCE_DIR}/mentos/inc/devices/pci.h - ${PROJECT_SOURCE_DIR}/mentos/inc/drivers/ata/ata.h - ${PROJECT_SOURCE_DIR}/mentos/inc/drivers/ata/ata_types.h - ${PROJECT_SOURCE_DIR}/mentos/inc/drivers/fdc.h - ${PROJECT_SOURCE_DIR}/mentos/inc/drivers/keyboard/keyboard.h - ${PROJECT_SOURCE_DIR}/mentos/inc/drivers/keyboard/keymap.h - ${PROJECT_SOURCE_DIR}/mentos/inc/drivers/mouse.h - ${PROJECT_SOURCE_DIR}/mentos/inc/drivers/ps2.h - ${PROJECT_SOURCE_DIR}/mentos/inc/drivers/rtc.h - ${PROJECT_SOURCE_DIR}/mentos/inc/elf/elf.h - ${PROJECT_SOURCE_DIR}/mentos/inc/fs/ext2.h - ${PROJECT_SOURCE_DIR}/mentos/inc/fs/ioctl.h - ${PROJECT_SOURCE_DIR}/mentos/inc/fs/procfs.h - ${PROJECT_SOURCE_DIR}/mentos/inc/fs/vfs.h - ${PROJECT_SOURCE_DIR}/mentos/inc/fs/vfs_types.h - ${PROJECT_SOURCE_DIR}/mentos/inc/hardware/cpuid.h - ${PROJECT_SOURCE_DIR}/mentos/inc/hardware/pic8259.h - ${PROJECT_SOURCE_DIR}/mentos/inc/hardware/timer.h - ${PROJECT_SOURCE_DIR}/mentos/inc/io/proc_modules.h - ${PROJECT_SOURCE_DIR}/mentos/inc/io/vga/vga.h - ${PROJECT_SOURCE_DIR}/mentos/inc/io/vga/vga_font.h - ${PROJECT_SOURCE_DIR}/mentos/inc/io/vga/vga_mode.h - ${PROJECT_SOURCE_DIR}/mentos/inc/io/vga/vga_palette.h - ${PROJECT_SOURCE_DIR}/mentos/inc/io/video.h - ${PROJECT_SOURCE_DIR}/mentos/inc/kernel.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/compiler.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/hashmap.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/irqflags.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/list.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/list_head.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/mutex.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/ndtree.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/rbtree.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/spinlock.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/stack_helper.h - ${PROJECT_SOURCE_DIR}/mentos/inc/klib/stdatomic.h - ${PROJECT_SOURCE_DIR}/mentos/inc/link_access.h - ${PROJECT_SOURCE_DIR}/mentos/inc/mem/buddysystem.h - ${PROJECT_SOURCE_DIR}/mentos/inc/mem/gfp.h - ${PROJECT_SOURCE_DIR}/mentos/inc/mem/kheap.h - ${PROJECT_SOURCE_DIR}/mentos/inc/mem/paging.h - ${PROJECT_SOURCE_DIR}/mentos/inc/mem/slab.h - ${PROJECT_SOURCE_DIR}/mentos/inc/mem/vmem_map.h - ${PROJECT_SOURCE_DIR}/mentos/inc/mem/zone_allocator.h - ${PROJECT_SOURCE_DIR}/mentos/inc/multiboot.h - ${PROJECT_SOURCE_DIR}/mentos/inc/process/prio.h - ${PROJECT_SOURCE_DIR}/mentos/inc/process/process.h - ${PROJECT_SOURCE_DIR}/mentos/inc/process/scheduler.h - ${PROJECT_SOURCE_DIR}/mentos/inc/process/wait.h - ${PROJECT_SOURCE_DIR}/mentos/inc/proc_access.h - ${PROJECT_SOURCE_DIR}/mentos/inc/sys/errno.h - ${PROJECT_SOURCE_DIR}/mentos/inc/sys/ipc.h - ${PROJECT_SOURCE_DIR}/mentos/inc/sys/module.h - ${PROJECT_SOURCE_DIR}/mentos/inc/sys/reboot.h - ${PROJECT_SOURCE_DIR}/mentos/inc/sys/types.h - ${PROJECT_SOURCE_DIR}/mentos/inc/sys/utsname.h - ${PROJECT_SOURCE_DIR}/mentos/inc/system/panic.h - ${PROJECT_SOURCE_DIR}/mentos/inc/system/printk.h - ${PROJECT_SOURCE_DIR}/mentos/inc/system/signal.h - ${PROJECT_SOURCE_DIR}/mentos/inc/system/syscall.h - ${PROJECT_SOURCE_DIR}/mentos/inc/version.h + ${CMAKE_SOURCE_DIR}/mentos/inc/boot.h + ${CMAKE_SOURCE_DIR}/mentos/inc/descriptor_tables/gdt.h + ${CMAKE_SOURCE_DIR}/mentos/inc/descriptor_tables/idt.h + ${CMAKE_SOURCE_DIR}/mentos/inc/descriptor_tables/isr.h + ${CMAKE_SOURCE_DIR}/mentos/inc/descriptor_tables/tss.h + ${CMAKE_SOURCE_DIR}/mentos/inc/devices/fpu.h + ${CMAKE_SOURCE_DIR}/mentos/inc/devices/pci.h + ${CMAKE_SOURCE_DIR}/mentos/inc/drivers/ata/ata.h + ${CMAKE_SOURCE_DIR}/mentos/inc/drivers/ata/ata_types.h + ${CMAKE_SOURCE_DIR}/mentos/inc/drivers/fdc.h + ${CMAKE_SOURCE_DIR}/mentos/inc/drivers/keyboard/keyboard.h + ${CMAKE_SOURCE_DIR}/mentos/inc/drivers/keyboard/keymap.h + ${CMAKE_SOURCE_DIR}/mentos/inc/drivers/mouse.h + ${CMAKE_SOURCE_DIR}/mentos/inc/drivers/ps2.h + ${CMAKE_SOURCE_DIR}/mentos/inc/drivers/rtc.h + ${CMAKE_SOURCE_DIR}/mentos/inc/elf/elf.h + ${CMAKE_SOURCE_DIR}/mentos/inc/fs/ext2.h + ${CMAKE_SOURCE_DIR}/mentos/inc/fs/ioctl.h + ${CMAKE_SOURCE_DIR}/mentos/inc/fs/procfs.h + ${CMAKE_SOURCE_DIR}/mentos/inc/fs/vfs.h + ${CMAKE_SOURCE_DIR}/mentos/inc/fs/vfs_types.h + ${CMAKE_SOURCE_DIR}/mentos/inc/hardware/cpuid.h + ${CMAKE_SOURCE_DIR}/mentos/inc/hardware/pic8259.h + ${CMAKE_SOURCE_DIR}/mentos/inc/hardware/timer.h + ${CMAKE_SOURCE_DIR}/mentos/inc/io/proc_modules.h + ${CMAKE_SOURCE_DIR}/mentos/inc/io/vga/vga.h + ${CMAKE_SOURCE_DIR}/mentos/inc/io/vga/vga_font.h + ${CMAKE_SOURCE_DIR}/mentos/inc/io/vga/vga_mode.h + ${CMAKE_SOURCE_DIR}/mentos/inc/io/vga/vga_palette.h + ${CMAKE_SOURCE_DIR}/mentos/inc/io/video.h + ${CMAKE_SOURCE_DIR}/mentos/inc/kernel.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/compiler.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/hashmap.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/irqflags.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/list.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/list_head.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/mutex.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/ndtree.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/rbtree.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/spinlock.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/stack_helper.h + ${CMAKE_SOURCE_DIR}/mentos/inc/klib/stdatomic.h + ${CMAKE_SOURCE_DIR}/mentos/inc/link_access.h + ${CMAKE_SOURCE_DIR}/mentos/inc/mem/buddysystem.h + ${CMAKE_SOURCE_DIR}/mentos/inc/mem/gfp.h + ${CMAKE_SOURCE_DIR}/mentos/inc/mem/kheap.h + ${CMAKE_SOURCE_DIR}/mentos/inc/mem/paging.h + ${CMAKE_SOURCE_DIR}/mentos/inc/mem/slab.h + ${CMAKE_SOURCE_DIR}/mentos/inc/mem/vmem_map.h + ${CMAKE_SOURCE_DIR}/mentos/inc/mem/zone_allocator.h + ${CMAKE_SOURCE_DIR}/mentos/inc/multiboot.h + ${CMAKE_SOURCE_DIR}/mentos/inc/process/prio.h + ${CMAKE_SOURCE_DIR}/mentos/inc/process/process.h + ${CMAKE_SOURCE_DIR}/mentos/inc/process/scheduler.h + ${CMAKE_SOURCE_DIR}/mentos/inc/process/wait.h + ${CMAKE_SOURCE_DIR}/mentos/inc/proc_access.h + ${CMAKE_SOURCE_DIR}/mentos/inc/sys/errno.h + ${CMAKE_SOURCE_DIR}/mentos/inc/sys/ipc.h + ${CMAKE_SOURCE_DIR}/mentos/inc/sys/module.h + ${CMAKE_SOURCE_DIR}/mentos/inc/sys/reboot.h + ${CMAKE_SOURCE_DIR}/mentos/inc/sys/types.h + ${CMAKE_SOURCE_DIR}/mentos/inc/sys/utsname.h + ${CMAKE_SOURCE_DIR}/mentos/inc/system/panic.h + ${CMAKE_SOURCE_DIR}/mentos/inc/system/printk.h + ${CMAKE_SOURCE_DIR}/mentos/inc/system/signal.h + ${CMAKE_SOURCE_DIR}/mentos/inc/system/syscall.h + ${CMAKE_SOURCE_DIR}/mentos/inc/version.h - ${PROJECT_SOURCE_DIR}/mentos/src/boot.c - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/exception.c - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/gdt.c - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/idt.c - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/interrupt.c - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/tss.c - ${PROJECT_SOURCE_DIR}/mentos/src/devices/fpu.c - ${PROJECT_SOURCE_DIR}/mentos/src/devices/pci.c - ${PROJECT_SOURCE_DIR}/mentos/src/drivers/ata.c - ${PROJECT_SOURCE_DIR}/mentos/src/drivers/fdc.c - ${PROJECT_SOURCE_DIR}/mentos/src/drivers/keyboard/keyboard.c - ${PROJECT_SOURCE_DIR}/mentos/src/drivers/keyboard/keymap.c - ${PROJECT_SOURCE_DIR}/mentos/src/drivers/mouse.c - ${PROJECT_SOURCE_DIR}/mentos/src/drivers/ps2.c - ${PROJECT_SOURCE_DIR}/mentos/src/drivers/rtc.c - ${PROJECT_SOURCE_DIR}/mentos/src/elf/elf.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/ext2.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/ioctl.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/namei.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/open.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/procfs.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/readdir.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/read_write.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/stat.c - ${PROJECT_SOURCE_DIR}/mentos/src/fs/vfs.c - ${PROJECT_SOURCE_DIR}/mentos/src/hardware/cpuid.c - ${PROJECT_SOURCE_DIR}/mentos/src/hardware/pic8259.c - ${PROJECT_SOURCE_DIR}/mentos/src/hardware/timer.c - ${PROJECT_SOURCE_DIR}/mentos/src/io/debug.c - ${PROJECT_SOURCE_DIR}/mentos/src/io/mm_io.c - ${PROJECT_SOURCE_DIR}/mentos/src/io/proc_running.c - ${PROJECT_SOURCE_DIR}/mentos/src/io/proc_system.c - ${PROJECT_SOURCE_DIR}/mentos/src/io/proc_video.c - ${PROJECT_SOURCE_DIR}/mentos/src/io/stdio.c - ${PROJECT_SOURCE_DIR}/mentos/src/io/vga/vga.c - ${PROJECT_SOURCE_DIR}/mentos/src/io/video.c - ${PROJECT_SOURCE_DIR}/mentos/src/ipc/msg.c - ${PROJECT_SOURCE_DIR}/mentos/src/ipc/sem.c - ${PROJECT_SOURCE_DIR}/mentos/src/ipc/shm.c - ${PROJECT_SOURCE_DIR}/mentos/src/kernel/sys.c - ${PROJECT_SOURCE_DIR}/mentos/src/kernel.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/assert.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/ctype.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/fcvt.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/hashmap.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/libgen.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/list.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/math.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/mutex.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/ndtree.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/rbtree.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/spinlock.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/strerror.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/string.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/time.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/vscanf.c - ${PROJECT_SOURCE_DIR}/mentos/src/klib/vsprintf.c - ${PROJECT_SOURCE_DIR}/mentos/src/mem/buddysystem.c - ${PROJECT_SOURCE_DIR}/mentos/src/mem/kheap.c - ${PROJECT_SOURCE_DIR}/mentos/src/mem/paging.c - ${PROJECT_SOURCE_DIR}/mentos/src/mem/slab.c - ${PROJECT_SOURCE_DIR}/mentos/src/mem/vmem_map.c - ${PROJECT_SOURCE_DIR}/mentos/src/mem/zone_allocator.c - ${PROJECT_SOURCE_DIR}/mentos/src/multiboot.c - ${PROJECT_SOURCE_DIR}/mentos/src/process/process.c - ${PROJECT_SOURCE_DIR}/mentos/src/process/scheduler.c - ${PROJECT_SOURCE_DIR}/mentos/src/process/scheduler_algorithm.c - ${PROJECT_SOURCE_DIR}/mentos/src/process/wait.c - ${PROJECT_SOURCE_DIR}/mentos/src/sys/module.c - ${PROJECT_SOURCE_DIR}/mentos/src/sys/utsname.c - ${PROJECT_SOURCE_DIR}/mentos/src/system/errno.c - ${PROJECT_SOURCE_DIR}/mentos/src/system/panic.c - ${PROJECT_SOURCE_DIR}/mentos/src/system/printk.c - ${PROJECT_SOURCE_DIR}/mentos/src/system/signal.c - ${PROJECT_SOURCE_DIR}/mentos/src/system/syscall.c + ${CMAKE_SOURCE_DIR}/mentos/src/boot.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/exception.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/gdt.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/idt.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/interrupt.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/tss.c + ${CMAKE_SOURCE_DIR}/mentos/src/devices/fpu.c + ${CMAKE_SOURCE_DIR}/mentos/src/devices/pci.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/ata.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/fdc.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/keyboard/keyboard.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/keyboard/keymap.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/mouse.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/ps2.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/rtc.c + ${CMAKE_SOURCE_DIR}/mentos/src/elf/elf.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/ext2.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/ioctl.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/namei.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/open.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/procfs.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/readdir.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/read_write.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/stat.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/vfs.c + ${CMAKE_SOURCE_DIR}/mentos/src/hardware/cpuid.c + ${CMAKE_SOURCE_DIR}/mentos/src/hardware/pic8259.c + ${CMAKE_SOURCE_DIR}/mentos/src/hardware/timer.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/debug.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/mm_io.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/proc_running.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/proc_system.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/proc_video.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/stdio.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/vga/vga.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/video.c + ${CMAKE_SOURCE_DIR}/mentos/src/ipc/msg.c + ${CMAKE_SOURCE_DIR}/mentos/src/ipc/sem.c + ${CMAKE_SOURCE_DIR}/mentos/src/ipc/shm.c + ${CMAKE_SOURCE_DIR}/mentos/src/kernel/sys.c + ${CMAKE_SOURCE_DIR}/mentos/src/kernel.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/assert.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/ctype.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/fcvt.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/hashmap.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/libgen.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/list.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/math.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/mutex.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/ndtree.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/rbtree.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/spinlock.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/strerror.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/string.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/time.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/vscanf.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/vsprintf.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/buddysystem.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/kheap.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/paging.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/slab.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/vmem_map.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/zone_allocator.c + ${CMAKE_SOURCE_DIR}/mentos/src/multiboot.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/process.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/scheduler.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/scheduler_algorithm.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/wait.c + ${CMAKE_SOURCE_DIR}/mentos/src/sys/module.c + ${CMAKE_SOURCE_DIR}/mentos/src/sys/utsname.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/errno.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/panic.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/printk.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/signal.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/syscall.c - ${PROJECT_SOURCE_DIR}/mentos/src/boot.S - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/exception.S - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/gdt.S - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/idt.S - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/interrupt.S - ${PROJECT_SOURCE_DIR}/mentos/src/descriptor_tables/tss.S - ${PROJECT_SOURCE_DIR}/mentos/src/process/user.S + ${CMAKE_SOURCE_DIR}/mentos/src/boot.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/exception.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/gdt.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/idt.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/interrupt.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/tss.S + ${CMAKE_SOURCE_DIR}/mentos/src/process/user.S - ${PROJECT_SOURCE_DIR}/libc/inc/array.h - ${PROJECT_SOURCE_DIR}/libc/inc/assert.h - ${PROJECT_SOURCE_DIR}/libc/inc/bits/ioctls.h - ${PROJECT_SOURCE_DIR}/libc/inc/bits/stat.h - ${PROJECT_SOURCE_DIR}/libc/inc/bits/termios-struct.h - ${PROJECT_SOURCE_DIR}/libc/inc/ctype.h - ${PROJECT_SOURCE_DIR}/libc/inc/fcntl.h - ${PROJECT_SOURCE_DIR}/libc/inc/fcvt.h - ${PROJECT_SOURCE_DIR}/libc/inc/grp.h - ${PROJECT_SOURCE_DIR}/libc/inc/io/ansi_colors.h - ${PROJECT_SOURCE_DIR}/libc/inc/io/debug.h - ${PROJECT_SOURCE_DIR}/libc/inc/io/mm_io.h - ${PROJECT_SOURCE_DIR}/libc/inc/io/port_io.h - ${PROJECT_SOURCE_DIR}/libc/inc/ipc/ipc.h - ${PROJECT_SOURCE_DIR}/libc/inc/ipc/msg.h - ${PROJECT_SOURCE_DIR}/libc/inc/ipc/sem.h - ${PROJECT_SOURCE_DIR}/libc/inc/ipc/shm.h - ${PROJECT_SOURCE_DIR}/libc/inc/libgen.h - ${PROJECT_SOURCE_DIR}/libc/inc/limits.h - ${PROJECT_SOURCE_DIR}/libc/inc/math.h - ${PROJECT_SOURCE_DIR}/libc/inc/pwd.h - ${PROJECT_SOURCE_DIR}/libc/inc/ring_buffer.h - ${PROJECT_SOURCE_DIR}/libc/inc/sched.h - ${PROJECT_SOURCE_DIR}/libc/inc/signal.h - ${PROJECT_SOURCE_DIR}/libc/inc/stdarg.h - ${PROJECT_SOURCE_DIR}/libc/inc/stdbool.h - ${PROJECT_SOURCE_DIR}/libc/inc/stddef.h - ${PROJECT_SOURCE_DIR}/libc/inc/stdint.h - ${PROJECT_SOURCE_DIR}/libc/inc/stdio.h - ${PROJECT_SOURCE_DIR}/libc/inc/stdlib.h - ${PROJECT_SOURCE_DIR}/libc/inc/strerror.h - ${PROJECT_SOURCE_DIR}/libc/inc/string.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/bitops.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/dirent.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/errno.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/ioctl.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/kernel_levels.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/reboot.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/stat.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/types.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/unistd.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/utsname.h - ${PROJECT_SOURCE_DIR}/libc/inc/sys/wait.h - ${PROJECT_SOURCE_DIR}/libc/inc/system/syscall_types.h - ${PROJECT_SOURCE_DIR}/libc/inc/termios.h - ${PROJECT_SOURCE_DIR}/libc/inc/time.h + ${CMAKE_SOURCE_DIR}/libc/inc/array.h + ${CMAKE_SOURCE_DIR}/libc/inc/assert.h + ${CMAKE_SOURCE_DIR}/libc/inc/bits/ioctls.h + ${CMAKE_SOURCE_DIR}/libc/inc/bits/stat.h + ${CMAKE_SOURCE_DIR}/libc/inc/bits/termios-struct.h + ${CMAKE_SOURCE_DIR}/libc/inc/ctype.h + ${CMAKE_SOURCE_DIR}/libc/inc/fcntl.h + ${CMAKE_SOURCE_DIR}/libc/inc/fcvt.h + ${CMAKE_SOURCE_DIR}/libc/inc/grp.h + ${CMAKE_SOURCE_DIR}/libc/inc/io/ansi_colors.h + ${CMAKE_SOURCE_DIR}/libc/inc/io/debug.h + ${CMAKE_SOURCE_DIR}/libc/inc/io/mm_io.h + ${CMAKE_SOURCE_DIR}/libc/inc/io/port_io.h + ${CMAKE_SOURCE_DIR}/libc/inc/ipc/ipc.h + ${CMAKE_SOURCE_DIR}/libc/inc/ipc/msg.h + ${CMAKE_SOURCE_DIR}/libc/inc/ipc/sem.h + ${CMAKE_SOURCE_DIR}/libc/inc/ipc/shm.h + ${CMAKE_SOURCE_DIR}/libc/inc/libgen.h + ${CMAKE_SOURCE_DIR}/libc/inc/limits.h + ${CMAKE_SOURCE_DIR}/libc/inc/math.h + ${CMAKE_SOURCE_DIR}/libc/inc/pwd.h + ${CMAKE_SOURCE_DIR}/libc/inc/ring_buffer.h + ${CMAKE_SOURCE_DIR}/libc/inc/sched.h + ${CMAKE_SOURCE_DIR}/libc/inc/signal.h + ${CMAKE_SOURCE_DIR}/libc/inc/stdarg.h + ${CMAKE_SOURCE_DIR}/libc/inc/stdbool.h + ${CMAKE_SOURCE_DIR}/libc/inc/stddef.h + ${CMAKE_SOURCE_DIR}/libc/inc/stdint.h + ${CMAKE_SOURCE_DIR}/libc/inc/stdio.h + ${CMAKE_SOURCE_DIR}/libc/inc/stdlib.h + ${CMAKE_SOURCE_DIR}/libc/inc/strerror.h + ${CMAKE_SOURCE_DIR}/libc/inc/string.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/bitops.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/dirent.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/errno.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/ioctl.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/kernel_levels.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/reboot.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/stat.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/types.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/unistd.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/utsname.h + ${CMAKE_SOURCE_DIR}/libc/inc/sys/wait.h + ${CMAKE_SOURCE_DIR}/libc/inc/system/syscall_types.h + ${CMAKE_SOURCE_DIR}/libc/inc/termios.h + ${CMAKE_SOURCE_DIR}/libc/inc/time.h - ${PROJECT_SOURCE_DIR}/libc/src/abort.c - ${PROJECT_SOURCE_DIR}/libc/src/assert.c - ${PROJECT_SOURCE_DIR}/libc/src/ctype.c - ${PROJECT_SOURCE_DIR}/libc/src/fcvt.c - ${PROJECT_SOURCE_DIR}/libc/src/grp.c - ${PROJECT_SOURCE_DIR}/libc/src/io/debug.c - ${PROJECT_SOURCE_DIR}/libc/src/io/mm_io.c - ${PROJECT_SOURCE_DIR}/libc/src/ipc/ipc.c - ${PROJECT_SOURCE_DIR}/libc/src/libc_start.c - ${PROJECT_SOURCE_DIR}/libc/src/libgen.c - ${PROJECT_SOURCE_DIR}/libc/src/math.c - ${PROJECT_SOURCE_DIR}/libc/src/pwd.c - ${PROJECT_SOURCE_DIR}/libc/src/sched.c - ${PROJECT_SOURCE_DIR}/libc/src/setenv.c - ${PROJECT_SOURCE_DIR}/libc/src/stdio.c - ${PROJECT_SOURCE_DIR}/libc/src/stdlib.c - ${PROJECT_SOURCE_DIR}/libc/src/strerror.c - ${PROJECT_SOURCE_DIR}/libc/src/string.c - ${PROJECT_SOURCE_DIR}/libc/src/sys/errno.c - ${PROJECT_SOURCE_DIR}/libc/src/sys/ioctl.c - ${PROJECT_SOURCE_DIR}/libc/src/sys/unistd.c - ${PROJECT_SOURCE_DIR}/libc/src/sys/utsname.c - ${PROJECT_SOURCE_DIR}/libc/src/termios.c - ${PROJECT_SOURCE_DIR}/libc/src/time.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/chdir.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/close.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/creat.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/exec.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/exit.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/fork.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/getcwd.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/getdents.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/getgid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/getpgid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/getpid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/getppid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/getsid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/getuid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/interval.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/kill.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/lseek.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/mkdir.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/nice.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/open.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/read.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/reboot.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/rmdir.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/setgid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/setpgid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/setsid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/setuid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/signal.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/stat.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/unlink.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/waitpid.c - ${PROJECT_SOURCE_DIR}/libc/src/unistd/write.c - ${PROJECT_SOURCE_DIR}/libc/src/vscanf.c - ${PROJECT_SOURCE_DIR}/libc/src/vsprintf.c + ${CMAKE_SOURCE_DIR}/libc/src/abort.c + ${CMAKE_SOURCE_DIR}/libc/src/assert.c + ${CMAKE_SOURCE_DIR}/libc/src/ctype.c + ${CMAKE_SOURCE_DIR}/libc/src/fcvt.c + ${CMAKE_SOURCE_DIR}/libc/src/grp.c + ${CMAKE_SOURCE_DIR}/libc/src/io/debug.c + ${CMAKE_SOURCE_DIR}/libc/src/io/mm_io.c + ${CMAKE_SOURCE_DIR}/libc/src/ipc/ipc.c + ${CMAKE_SOURCE_DIR}/libc/src/libc_start.c + ${CMAKE_SOURCE_DIR}/libc/src/libgen.c + ${CMAKE_SOURCE_DIR}/libc/src/math.c + ${CMAKE_SOURCE_DIR}/libc/src/pwd.c + ${CMAKE_SOURCE_DIR}/libc/src/sched.c + ${CMAKE_SOURCE_DIR}/libc/src/setenv.c + ${CMAKE_SOURCE_DIR}/libc/src/stdio.c + ${CMAKE_SOURCE_DIR}/libc/src/stdlib.c + ${CMAKE_SOURCE_DIR}/libc/src/strerror.c + ${CMAKE_SOURCE_DIR}/libc/src/string.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/errno.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/ioctl.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/unistd.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/utsname.c + ${CMAKE_SOURCE_DIR}/libc/src/termios.c + ${CMAKE_SOURCE_DIR}/libc/src/time.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/chdir.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/close.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/creat.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/exec.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/exit.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/fork.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getcwd.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getdents.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getgid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getpgid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getpid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getppid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getsid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getuid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/interval.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/kill.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/lseek.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/mkdir.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/nice.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/open.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/read.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/reboot.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/rmdir.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/setgid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/setpgid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/setsid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/setuid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/signal.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/stat.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/unlink.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/waitpid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/write.c + ${CMAKE_SOURCE_DIR}/libc/src/vscanf.c + ${CMAKE_SOURCE_DIR}/libc/src/vsprintf.c - ${PROJECT_SOURCE_DIR}/libc/src/crt0.S + ${CMAKE_SOURCE_DIR}/libc/src/crt0.S ) endif (DOXYGEN_FOUND) \ No newline at end of file diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt index 4fbdf51..0e73194 100644 --- a/libc/CMakeLists.txt +++ b/libc/CMakeLists.txt @@ -1,148 +1,77 @@ # ============================================================================= -# Author: Enrico Fraccaroli +# LIBRARY # ============================================================================= -# Set the minimum required version of cmake. -cmake_minimum_required(VERSION 3.1...3.22) - -# Initialize the project. -project(libc C ASM) - -# ============================================================================= -# ASSEMBLY -# ============================================================================= - -# Enable the assembly language. -enable_language(ASM) -# Find the NASM compiler. -find_program(ASM_COMPILER NAMES nasm HINTS /usr/bin/ /usr/local/bin/) -# Mark the variable ASM_COMPILER as advanced. -mark_as_advanced(ASM_COMPILER) -# Check that we have found the compiler. -if(NOT ASM_COMPILER) - message(FATAL_ERROR "ASM compiler not found!") -endif(NOT ASM_COMPILER) -# Set the asm compiler. -set(CMAKE_ASM_COMPILER ${ASM_COMPILER}) -# Set the assembly compiler flags. -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_ASM_COMPILE_OBJECT " -f elf -g -O0 -F dwarf -o ") -else() - set(CMAKE_ASM_COMPILE_OBJECT " -f elf -g -O3 -o ") -endif() - -# ============================================================================= -# C WARNINGs -# ============================================================================= - -# Warning flags. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") - -# Disable some specific warnings. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces") - -# Set the compiler options. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") -if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon") -endif() - -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0") -elseif(CMAKE_BUILD_TYPE STREQUAL "Release") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") -endif(CMAKE_BUILD_TYPE STREQUAL "Debug") - -# ============================================================================= # Add the library. add_library( - ${PROJECT_NAME} - - ${PROJECT_SOURCE_DIR}/src/stdio.c - ${PROJECT_SOURCE_DIR}/src/ctype.c - ${PROJECT_SOURCE_DIR}/src/string.c - ${PROJECT_SOURCE_DIR}/src/stdlib.c - ${PROJECT_SOURCE_DIR}/src/math.c - ${PROJECT_SOURCE_DIR}/src/fcvt.c - ${PROJECT_SOURCE_DIR}/src/time.c - ${PROJECT_SOURCE_DIR}/src/strerror.c - ${PROJECT_SOURCE_DIR}/src/termios.c - ${PROJECT_SOURCE_DIR}/src/libgen.c - ${PROJECT_SOURCE_DIR}/src/vsprintf.c - ${PROJECT_SOURCE_DIR}/src/vscanf.c - ${PROJECT_SOURCE_DIR}/src/pwd.c - ${PROJECT_SOURCE_DIR}/src/grp.c - ${PROJECT_SOURCE_DIR}/src/sched.c - ${PROJECT_SOURCE_DIR}/src/readline.c - ${PROJECT_SOURCE_DIR}/src/setenv.c - ${PROJECT_SOURCE_DIR}/src/assert.c - ${PROJECT_SOURCE_DIR}/src/abort.c - ${PROJECT_SOURCE_DIR}/src/io/mm_io.c - ${PROJECT_SOURCE_DIR}/src/io/debug.c - ${PROJECT_SOURCE_DIR}/src/sys/ipc.c - ${PROJECT_SOURCE_DIR}/src/sys/unistd.c - ${PROJECT_SOURCE_DIR}/src/sys/errno.c - ${PROJECT_SOURCE_DIR}/src/sys/utsname.c - ${PROJECT_SOURCE_DIR}/src/sys/mman.c - ${PROJECT_SOURCE_DIR}/src/sys/ioctl.c - ${PROJECT_SOURCE_DIR}/src/unistd/creat.c - ${PROJECT_SOURCE_DIR}/src/unistd/getppid.c - ${PROJECT_SOURCE_DIR}/src/unistd/getpid.c - ${PROJECT_SOURCE_DIR}/src/unistd/exit.c - ${PROJECT_SOURCE_DIR}/src/unistd/setsid.c - ${PROJECT_SOURCE_DIR}/src/unistd/getsid.c - ${PROJECT_SOURCE_DIR}/src/unistd/setpgid.c - ${PROJECT_SOURCE_DIR}/src/unistd/getpgid.c - ${PROJECT_SOURCE_DIR}/src/unistd/setgid.c - ${PROJECT_SOURCE_DIR}/src/unistd/getgid.c - ${PROJECT_SOURCE_DIR}/src/unistd/setuid.c - ${PROJECT_SOURCE_DIR}/src/unistd/getuid.c - ${PROJECT_SOURCE_DIR}/src/unistd/fork.c - ${PROJECT_SOURCE_DIR}/src/unistd/read.c - ${PROJECT_SOURCE_DIR}/src/unistd/write.c - ${PROJECT_SOURCE_DIR}/src/unistd/exec.c - ${PROJECT_SOURCE_DIR}/src/unistd/nice.c - ${PROJECT_SOURCE_DIR}/src/unistd/open.c - ${PROJECT_SOURCE_DIR}/src/unistd/reboot.c - ${PROJECT_SOURCE_DIR}/src/unistd/waitpid.c - ${PROJECT_SOURCE_DIR}/src/unistd/chdir.c - ${PROJECT_SOURCE_DIR}/src/unistd/getcwd.c - ${PROJECT_SOURCE_DIR}/src/unistd/close.c - ${PROJECT_SOURCE_DIR}/src/unistd/stat.c - ${PROJECT_SOURCE_DIR}/src/unistd/rmdir.c - ${PROJECT_SOURCE_DIR}/src/unistd/mkdir.c - ${PROJECT_SOURCE_DIR}/src/unistd/unlink.c - ${PROJECT_SOURCE_DIR}/src/unistd/getdents.c - ${PROJECT_SOURCE_DIR}/src/unistd/lseek.c - ${PROJECT_SOURCE_DIR}/src/unistd/kill.c - ${PROJECT_SOURCE_DIR}/src/unistd/signal.c - ${PROJECT_SOURCE_DIR}/src/unistd/interval.c - ${PROJECT_SOURCE_DIR}/src/unistd/symlink.c - ${PROJECT_SOURCE_DIR}/src/unistd/readlink.c - ${PROJECT_SOURCE_DIR}/src/libc_start.c - ${PROJECT_SOURCE_DIR}/src/crt0.S + libc + ${CMAKE_SOURCE_DIR}/libc/src/stdio.c + ${CMAKE_SOURCE_DIR}/libc/src/ctype.c + ${CMAKE_SOURCE_DIR}/libc/src/string.c + ${CMAKE_SOURCE_DIR}/libc/src/stdlib.c + ${CMAKE_SOURCE_DIR}/libc/src/math.c + ${CMAKE_SOURCE_DIR}/libc/src/fcvt.c + ${CMAKE_SOURCE_DIR}/libc/src/time.c + ${CMAKE_SOURCE_DIR}/libc/src/strerror.c + ${CMAKE_SOURCE_DIR}/libc/src/termios.c + ${CMAKE_SOURCE_DIR}/libc/src/libgen.c + ${CMAKE_SOURCE_DIR}/libc/src/vsprintf.c + ${CMAKE_SOURCE_DIR}/libc/src/vscanf.c + ${CMAKE_SOURCE_DIR}/libc/src/pwd.c + ${CMAKE_SOURCE_DIR}/libc/src/grp.c + ${CMAKE_SOURCE_DIR}/libc/src/sched.c + ${CMAKE_SOURCE_DIR}/libc/src/readline.c + ${CMAKE_SOURCE_DIR}/libc/src/setenv.c + ${CMAKE_SOURCE_DIR}/libc/src/assert.c + ${CMAKE_SOURCE_DIR}/libc/src/abort.c + ${CMAKE_SOURCE_DIR}/libc/src/io/mm_io.c + ${CMAKE_SOURCE_DIR}/libc/src/io/debug.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/ipc.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/unistd.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/errno.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/utsname.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/mman.c + ${CMAKE_SOURCE_DIR}/libc/src/sys/ioctl.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/creat.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getppid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getpid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/exit.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/setsid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getsid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/setpgid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getpgid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/setgid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getgid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/setuid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getuid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/fork.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/read.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/write.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/exec.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/nice.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/open.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/reboot.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/waitpid.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/chdir.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getcwd.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/close.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/stat.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/rmdir.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/mkdir.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/unlink.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/getdents.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/lseek.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/kill.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/signal.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/interval.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/symlink.c + ${CMAKE_SOURCE_DIR}/libc/src/unistd/readlink.c + ${CMAKE_SOURCE_DIR}/libc/src/libc_start.c + ${CMAKE_SOURCE_DIR}/libc/src/crt0.S ) # Add the includes. -target_include_directories(${PROJECT_NAME} PUBLIC inc) +target_include_directories(libc PUBLIC inc) # Remove the 'lib' prefix. -set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "") +set_target_properties(libc PROPERTIES PREFIX "") diff --git a/mentos/CMakeLists.txt b/mentos/CMakeLists.txt index 53f03d8..4e78f93 100644 --- a/mentos/CMakeLists.txt +++ b/mentos/CMakeLists.txt @@ -1,19 +1,11 @@ # ============================================================================= -# Author: Enrico Fraccaroli +# KERNEL COMPILATION SETUP # ============================================================================= -# Set the minimum required version of cmake. -cmake_minimum_required(VERSION 3.1...3.22) - -# Initialize the project. -project(kernel C ASM) - -# ============================================================================= -# Set the main file names. +# Set the target naming. set(KERNEL_NAME kernel) set(BOOTLOADER_NAME bootloader) -set(BUDDY_SYSTEM_NAME kernel_memory) -set(BUDDY_SYSTEM_FILE ${PROJECT_SOURCE_DIR}/src/mem/libbuddysystem.a) +set(BUDDY_SYSTEM_FILE ${CMAKE_SOURCE_DIR}/mentos/src/mem/libbuddysystem.a) # ============================================================================= # OPTIONS @@ -28,157 +20,96 @@ option(ENABLE_ALLOC_TRACE "Enables memory allocation tracing." OFF) # Enables scheduling feedback on terminal. option(ENABLE_SCHEDULER_FEEDBACK "Enables scheduling feedback on terminal." OFF) -# ============================================================================= -# ASSEMBLY -# ============================================================================= - -# Find the NASM compiler. -find_program(ASM_COMPILER NAMES nasm HINTS /usr/bin/ /usr/local/bin/) -# Mark the variable ASM_COMPILER as advanced. -mark_as_advanced(ASM_COMPILER) -# Check that we have found the compiler. -if(NOT ASM_COMPILER) - message(FATAL_ERROR "ASM compiler not found!") -endif(NOT ASM_COMPILER) -# Set the asm compiler. -set(CMAKE_ASM_COMPILER ${ASM_COMPILER}) -# Set the assembly compiler flags. -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_ASM_COMPILE_OBJECT " -f elf -g -O0 -F dwarf -o ") -else() - set(CMAKE_ASM_COMPILE_OBJECT " -f elf -g -O3 -o ") -endif() - -# ============================================================================= -# C WARNINGs -# ============================================================================= - -# Warning flags. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") - -# Disable some specific warnings. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces") - -# Set the compiler options. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") -if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon") -endif() - -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0") -elseif(CMAKE_BUILD_TYPE STREQUAL "Release") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") -endif(CMAKE_BUILD_TYPE STREQUAL "Debug") - # ============================================================================= # SOURCES # ============================================================================= # Define the list of files. set(KERNEL_SOURCES - ${PROJECT_SOURCE_DIR}/src/kernel.c - ${PROJECT_SOURCE_DIR}/src/multiboot.c - ${PROJECT_SOURCE_DIR}/src/devices/pci.c - ${PROJECT_SOURCE_DIR}/src/devices/fpu.c - ${PROJECT_SOURCE_DIR}/src/drivers/ata.c - ${PROJECT_SOURCE_DIR}/src/drivers/rtc.c - ${PROJECT_SOURCE_DIR}/src/drivers/fdc.c - ${PROJECT_SOURCE_DIR}/src/drivers/mouse.c - ${PROJECT_SOURCE_DIR}/src/drivers/ps2.c - ${PROJECT_SOURCE_DIR}/src/drivers/keyboard/keyboard.c - ${PROJECT_SOURCE_DIR}/src/drivers/keyboard/keymap.c - ${PROJECT_SOURCE_DIR}/src/fs/vfs.c - ${PROJECT_SOURCE_DIR}/src/fs/read_write.c - ${PROJECT_SOURCE_DIR}/src/fs/open.c - ${PROJECT_SOURCE_DIR}/src/fs/stat.c - ${PROJECT_SOURCE_DIR}/src/fs/readdir.c - ${PROJECT_SOURCE_DIR}/src/fs/procfs.c - ${PROJECT_SOURCE_DIR}/src/fs/ioctl.c - ${PROJECT_SOURCE_DIR}/src/fs/namei.c - ${PROJECT_SOURCE_DIR}/src/fs/ext2.c - ${PROJECT_SOURCE_DIR}/src/hardware/timer.c - ${PROJECT_SOURCE_DIR}/src/hardware/cpuid.c - ${PROJECT_SOURCE_DIR}/src/hardware/pic8259.c - ${PROJECT_SOURCE_DIR}/src/io/debug.c - ${PROJECT_SOURCE_DIR}/src/io/mm_io.c - ${PROJECT_SOURCE_DIR}/src/io/video.c - ${PROJECT_SOURCE_DIR}/src/io/stdio.c - ${PROJECT_SOURCE_DIR}/src/io/proc_video.c - ${PROJECT_SOURCE_DIR}/src/io/proc_running.c - ${PROJECT_SOURCE_DIR}/src/io/proc_feedback.c - ${PROJECT_SOURCE_DIR}/src/io/proc_system.c - ${PROJECT_SOURCE_DIR}/src/io/proc_ipc.c - ${PROJECT_SOURCE_DIR}/src/io/vga/vga.c - ${PROJECT_SOURCE_DIR}/src/ipc/ipc.c - ${PROJECT_SOURCE_DIR}/src/ipc/msg.c - ${PROJECT_SOURCE_DIR}/src/ipc/sem.c - ${PROJECT_SOURCE_DIR}/src/ipc/shm.c - ${PROJECT_SOURCE_DIR}/src/kernel/sys.c - ${PROJECT_SOURCE_DIR}/src/klib/assert.c - ${PROJECT_SOURCE_DIR}/src/klib/ctype.c - ${PROJECT_SOURCE_DIR}/src/klib/mutex.c - ${PROJECT_SOURCE_DIR}/src/klib/string.c - ${PROJECT_SOURCE_DIR}/src/klib/vsprintf.c - ${PROJECT_SOURCE_DIR}/src/klib/vscanf.c - ${PROJECT_SOURCE_DIR}/src/klib/time.c - ${PROJECT_SOURCE_DIR}/src/klib/libgen.c - ${PROJECT_SOURCE_DIR}/src/klib/strerror.c - ${PROJECT_SOURCE_DIR}/src/klib/math.c - ${PROJECT_SOURCE_DIR}/src/klib/fcvt.c - ${PROJECT_SOURCE_DIR}/src/klib/spinlock.c - ${PROJECT_SOURCE_DIR}/src/klib/stdlib.c - ${PROJECT_SOURCE_DIR}/src/klib/rbtree.c - ${PROJECT_SOURCE_DIR}/src/klib/ndtree.c - ${PROJECT_SOURCE_DIR}/src/klib/hashmap.c - ${PROJECT_SOURCE_DIR}/src/klib/list.c - ${PROJECT_SOURCE_DIR}/src/mem/kheap.c - ${PROJECT_SOURCE_DIR}/src/mem/paging.c - ${PROJECT_SOURCE_DIR}/src/mem/slab.c - ${PROJECT_SOURCE_DIR}/src/mem/vmem_map.c - ${PROJECT_SOURCE_DIR}/src/mem/zone_allocator.c - ${PROJECT_SOURCE_DIR}/src/elf/elf.c - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/gdt.c - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/gdt.S - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/interrupt.c - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/exception.c - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/interrupt.S - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/exception.S - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/idt.c - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/idt.S - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/tss.c - ${PROJECT_SOURCE_DIR}/src/descriptor_tables/tss.S - ${PROJECT_SOURCE_DIR}/src/process/scheduler_algorithm.c - ${PROJECT_SOURCE_DIR}/src/process/scheduler_feedback.c - ${PROJECT_SOURCE_DIR}/src/process/scheduler.c - ${PROJECT_SOURCE_DIR}/src/process/process.c - ${PROJECT_SOURCE_DIR}/src/process/wait.c - ${PROJECT_SOURCE_DIR}/src/process/user.S - ${PROJECT_SOURCE_DIR}/src/sys/utsname.c - ${PROJECT_SOURCE_DIR}/src/sys/module.c - ${PROJECT_SOURCE_DIR}/src/system/errno.c - ${PROJECT_SOURCE_DIR}/src/system/panic.c - ${PROJECT_SOURCE_DIR}/src/system/printk.c - ${PROJECT_SOURCE_DIR}/src/system/signal.c - ${PROJECT_SOURCE_DIR}/src/system/syscall.c + ${CMAKE_SOURCE_DIR}/mentos/src/kernel.c + ${CMAKE_SOURCE_DIR}/mentos/src/multiboot.c + ${CMAKE_SOURCE_DIR}/mentos/src/devices/pci.c + ${CMAKE_SOURCE_DIR}/mentos/src/devices/fpu.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/ata.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/rtc.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/fdc.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/mouse.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/ps2.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/keyboard/keyboard.c + ${CMAKE_SOURCE_DIR}/mentos/src/drivers/keyboard/keymap.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/vfs.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/read_write.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/open.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/stat.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/readdir.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/procfs.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/ioctl.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/namei.c + ${CMAKE_SOURCE_DIR}/mentos/src/fs/ext2.c + ${CMAKE_SOURCE_DIR}/mentos/src/hardware/timer.c + ${CMAKE_SOURCE_DIR}/mentos/src/hardware/cpuid.c + ${CMAKE_SOURCE_DIR}/mentos/src/hardware/pic8259.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/debug.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/mm_io.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/video.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/stdio.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/proc_video.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/proc_running.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/proc_feedback.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/proc_system.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/proc_ipc.c + ${CMAKE_SOURCE_DIR}/mentos/src/io/vga/vga.c + ${CMAKE_SOURCE_DIR}/mentos/src/ipc/ipc.c + ${CMAKE_SOURCE_DIR}/mentos/src/ipc/msg.c + ${CMAKE_SOURCE_DIR}/mentos/src/ipc/sem.c + ${CMAKE_SOURCE_DIR}/mentos/src/ipc/shm.c + ${CMAKE_SOURCE_DIR}/mentos/src/kernel/sys.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/assert.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/ctype.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/mutex.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/string.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/vsprintf.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/vscanf.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/time.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/libgen.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/strerror.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/math.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/fcvt.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/spinlock.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/stdlib.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/rbtree.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/ndtree.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/hashmap.c + ${CMAKE_SOURCE_DIR}/mentos/src/klib/list.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/kheap.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/paging.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/slab.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/vmem_map.c + ${CMAKE_SOURCE_DIR}/mentos/src/mem/zone_allocator.c + ${CMAKE_SOURCE_DIR}/mentos/src/elf/elf.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/gdt.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/gdt.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/interrupt.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/exception.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/interrupt.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/exception.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/idt.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/idt.S + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/tss.c + ${CMAKE_SOURCE_DIR}/mentos/src/descriptor_tables/tss.S + ${CMAKE_SOURCE_DIR}/mentos/src/process/scheduler_algorithm.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/scheduler_feedback.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/scheduler.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/process.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/wait.c + ${CMAKE_SOURCE_DIR}/mentos/src/process/user.S + ${CMAKE_SOURCE_DIR}/mentos/src/sys/utsname.c + ${CMAKE_SOURCE_DIR}/mentos/src/sys/module.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/errno.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/panic.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/printk.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/signal.c + ${CMAKE_SOURCE_DIR}/mentos/src/system/syscall.c ) # ============================================================================= diff --git a/programs/CMakeLists.txt b/programs/CMakeLists.txt index 968a4eb..02c6173 100644 --- a/programs/CMakeLists.txt +++ b/programs/CMakeLists.txt @@ -1,61 +1,4 @@ -# ============================================================================= -# Author: Enrico Fraccaroli -# ============================================================================= - -# Set the minimum required version of cmake. -cmake_minimum_required(VERSION 3.1...3.22) - -# Initialize the project. -project(programs C) - -# ============================================================================= -# C WARNINGs -# ============================================================================= - -# We need to specify the name of the entry function. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -u_start") - -# Warning flags. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") - -# Disable some specific warnings. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-command-line-argument") - -# Set the compiler options. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") -if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon") -endif() - -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0") -elseif(CMAKE_BUILD_TYPE STREQUAL "Release") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") -endif(CMAKE_BUILD_TYPE STREQUAL "Debug") - -# ============================================================================= -# BUILD -# ============================================================================= -# Add the executables (manually). +# List of programs. set(PROGRAM_LIST nice.c ls.c @@ -86,13 +29,16 @@ set(PROGRAM_LIST pwd.c env.c ) + # Set the directory where the compiled binaries will be placed. set(MENTOS_BIN_DIR ${CMAKE_SOURCE_DIR}/files/bin) foreach(FILE_NAME ${PROGRAM_LIST}) + # ========================================================================= + # TARGET NAMING + # ========================================================================= # Prepare the program name. string(REPLACE ".c" "" EXECUTABLE_NAME ${FILE_NAME}) - # Set the name of the target. set(TARGET_NAME prog_${EXECUTABLE_NAME}) diff --git a/programs/tests/CMakeLists.txt b/programs/tests/CMakeLists.txt index aaedd02..3b366ed 100644 --- a/programs/tests/CMakeLists.txt +++ b/programs/tests/CMakeLists.txt @@ -1,61 +1,4 @@ -# ============================================================================= -# Author: Enrico Fraccaroli -# ============================================================================= - -# Set the minimum required version of cmake. -cmake_minimum_required(VERSION 3.1...3.22) - -# Initialize the project. -project(tests C) - -# ============================================================================= -# C WARNINGs -# ============================================================================= - -# We need to specify the name of the entry function. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -u_start") - -# Warning flags. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpedantic") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") - -# Disable some specific warnings. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-command-line-argument") - -# Set the compiler options. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdlib") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") -if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon") -endif() - -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0") -elseif(CMAKE_BUILD_TYPE STREQUAL "Release") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") -endif(CMAKE_BUILD_TYPE STREQUAL "Debug") - -# ============================================================================= -# BUILD -# ============================================================================= -# Add your file in this list. +# List of programs. set(TEST_LIST t_gid.c t_alarm.c @@ -88,13 +31,16 @@ set(TEST_LIST t_mem.c t_shm_read.c ) + # Set the directory where the compiled binaries will be placed. set(MENTOS_TESTS_DIR ${CMAKE_SOURCE_DIR}/files/bin/tests) foreach(FILE_NAME ${TEST_LIST}) + # ========================================================================= + # TARGET NAMING + # ========================================================================= # Prepare the program name. string(REPLACE ".c" "" EXECUTABLE_NAME ${FILE_NAME}) - # Set the name of the target. set(TARGET_NAME test_${EXECUTABLE_NAME})