From 22fbbf849497c32f5b237ab70e9ed8aef63e54cf Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 15:21:32 +0000 Subject: libs: extract multiboot library --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index c0e45f8..8fef2f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,6 +77,12 @@ add_compile_options( "$<$:-pedantic-errors>" ) +#[============================================================================[ +# Global Libraries +#]============================================================================] + +add_subdirectory("libs/multiboot2" EXCLUDE_FROM_ALL SYSTEM) + #[============================================================================[ # Global Directories #]============================================================================] -- cgit v1.2.3 From e7eedd234954509f4f5ec52b2d62cbc4a1723936 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 15:39:09 +0000 Subject: libs: begin extraction of kernel std --- CMakeLists.txt | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fef2f5..75ac1b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,6 +81,7 @@ add_compile_options( # Global Libraries #]============================================================================] +add_subdirectory("libs/kstd" EXCLUDE_FROM_ALL SYSTEM) add_subdirectory("libs/multiboot2" EXCLUDE_FROM_ALL SYSTEM) #[============================================================================[ @@ -133,13 +134,6 @@ add_library("teachos::interrupt_handling" ALIAS "_interrupt_handling") # https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html#index-interrupt-function-attribute_002c-x86 target_compile_options("_interrupt_handling" PRIVATE "-mgeneral-regs-only") -#[============================================================================[ -# The Stub Standard Library -#]============================================================================] - -add_library("_stl" OBJECT) -add_library("teachos::stl" ALIAS "_stl") - #[============================================================================[ # The Kernel #]============================================================================] @@ -154,7 +148,6 @@ target_link_libraries("_kernel" PRIVATE "teachos::video" "teachos::memory" "teachos::exception" - "teachos::stl" "teachos::context_switching" "teachos::interrupt_handling" ) -- cgit v1.2.3 From 25483b7af8df6b08d460f807fda04c6d409bd44e Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 16:02:43 +0000 Subject: ide: start large-scale restructuring --- CMakeLists.txt | 268 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 142 insertions(+), 126 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 75ac1b5..e10da55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,138 +22,154 @@ set(CMAKE_CXX_STANDARD_REQUIRED YES) set(CMAKE_CXX_EXTENSIONS NO) #[============================================================================[ -# Documentation -#]============================================================================] - -find_package("Doxygen") - -set(DOXYGEN_GENERATE_HTML YES) -set(DOXYGEN_GENERATE_XML YES) -set(DOXYGEN_EXCLUDE_PATTERNS "*.cpp") -set(DOXYGEN_OUTPUT_DIRECTORY "doxygen") -set(DOXYGEN_QUIET YES) - -file(GLOB_RECURSE DOXYGEN_SOURCES CONFIGURE_DEPENDS "*.hpp") - -message(STATUS "${SPHINX_SOURCES}") - -doxygen_add_docs("docs_xml" - ${DOXYGEN_SOURCES} - ALL - USE_STAMP_FILE - COMMENT "Generating developer documentation sources" -) - -set_target_properties("docs_xml" PROPERTIES - ADDITIONAL_CLEAN_FILES - "${PROJECT_BINARY_DIR}/doxygen" -) - -file(GLOB_RECURSE SPHINX_SOURCES CONFIGURE_DEPENDS "../docs/**.rst") - -add_custom_target("docs" ALL - COMMAND "${SPHINX_BUILD_EXE}" - "../docs" - "docs" - "-q" - DEPENDS "docs_xml" - SOURCES ${SPHINX_SOURCES} - COMMENT "Generating developer documentation html" -) - -set_target_properties("docs" PROPERTIES - ADDITIONAL_CLEAN_FILES - "${PROJECT_BINARY_DIR}/docs" -) - -#[============================================================================[ -# Global Compiler Configuration -#]============================================================================] - -add_compile_options( - "$<$:-Wall>" - "$<$:-Wextra>" - "$<$:-Werror>" - "$<$:-pedantic-errors>" -) - -#[============================================================================[ -# Global Libraries +# Global Build System Configuration #]============================================================================] -add_subdirectory("libs/kstd" EXCLUDE_FROM_ALL SYSTEM) -add_subdirectory("libs/multiboot2" EXCLUDE_FROM_ALL SYSTEM) +add_subdirectory("libs") +add_subdirectory("kern") +add_subdirectory("arch") -#[============================================================================[ -# Global Directories -#]============================================================================] +add_executable("kernel") -include_directories( - "include" - "arch/${CMAKE_SYSTEM_PROCESSOR}/include" +target_link_libraries("kernel" PRIVATE + "kern" + "arch::all" + # "arch-${CMAKE_SYSTEM_PROCESSOR}" ) -#[============================================================================[ -# The Bootstrap Library -#]============================================================================] +# #[============================================================================[ +# # Documentation +# #]============================================================================] -add_library("_boot" OBJECT) -add_library("teachos::boot" ALIAS "_boot") +# find_package("Doxygen") -#[============================================================================[ -# The Video Library -#]============================================================================] - -add_library("_video" OBJECT) -add_library("teachos::video" ALIAS "_video") - -#[============================================================================[ -# THE Memory Library -#]============================================================================] - -add_library("_memory" OBJECT) -add_library("teachos::memory" ALIAS "_memory") - -#[============================================================================[ -# The Exception handling Library -#]============================================================================] - -add_library("_exception" OBJECT) -add_library("teachos::exception" ALIAS "_exception") - -#[============================================================================[ -# The Context switching Library -#]============================================================================] - -add_library("_context" OBJECT) -add_library("teachos::context_switching" ALIAS "_context") - -add_library("_interrupt_handling" OBJECT) -add_library("teachos::interrupt_handling" ALIAS "_interrupt_handling") -# https://forum.osdev.org/viewtopic.php?f=1&t=36712 -# https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html#index-interrupt-function-attribute_002c-x86 -target_compile_options("_interrupt_handling" PRIVATE "-mgeneral-regs-only") - -#[============================================================================[ -# The Kernel -#]============================================================================] - -add_executable("_kernel" - "src/kernel/main.cpp" -) -add_executable("teachos::kernel" ALIAS "_kernel") - -target_link_libraries("_kernel" PRIVATE - "teachos::boot" - "teachos::video" - "teachos::memory" - "teachos::exception" - "teachos::context_switching" - "teachos::interrupt_handling" -) - -#[============================================================================[ -# Platform Specific Components -#]============================================================================] +# set(DOXYGEN_GENERATE_HTML YES) +# set(DOXYGEN_GENERATE_XML YES) +# set(DOXYGEN_EXCLUDE_PATTERNS "*.cpp") +# set(DOXYGEN_OUTPUT_DIRECTORY "doxygen") +# set(DOXYGEN_QUIET YES) + +# file(GLOB_RECURSE DOXYGEN_SOURCES CONFIGURE_DEPENDS "*.hpp") -add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}") +# message(STATUS "${SPHINX_SOURCES}") + +# doxygen_add_docs("docs_xml" +# ${DOXYGEN_SOURCES} +# ALL +# USE_STAMP_FILE +# COMMENT "Generating developer documentation sources" +# ) + +# set_target_properties("docs_xml" PROPERTIES +# ADDITIONAL_CLEAN_FILES +# "${PROJECT_BINARY_DIR}/doxygen" +# ) + +# file(GLOB_RECURSE SPHINX_SOURCES CONFIGURE_DEPENDS "../docs/**.rst") + +# add_custom_target("docs" ALL +# COMMAND "${SPHINX_BUILD_EXE}" +# "../docs" +# "docs" +# "-q" +# DEPENDS "docs_xml" +# SOURCES ${SPHINX_SOURCES} +# COMMENT "Generating developer documentation html" +# ) + +# set_target_properties("docs" PROPERTIES +# ADDITIONAL_CLEAN_FILES +# "${PROJECT_BINARY_DIR}/docs" +# ) + +# #[============================================================================[ +# # Global Compiler Configuration +# #]============================================================================] + +# add_compile_options( +# "$<$:-Wall>" +# "$<$:-Wextra>" +# "$<$:-Werror>" +# "$<$:-pedantic-errors>" +# ) + +# #[============================================================================[ +# # Global Libraries +# #]============================================================================] + +# add_subdirectory("libs/kstd" EXCLUDE_FROM_ALL SYSTEM) +# add_subdirectory("libs/multiboot2" EXCLUDE_FROM_ALL SYSTEM) + +# #[============================================================================[ +# # Global Directories +# #]============================================================================] + +# include_directories( +# "include" +# "arch/${CMAKE_SYSTEM_PROCESSOR}/include" +# ) + +# #[============================================================================[ +# # The Bootstrap Library +# #]============================================================================] + +# add_library("_boot" OBJECT) +# add_library("teachos::boot" ALIAS "_boot") + +# #[============================================================================[ +# # The Video Library +# #]============================================================================] + +# add_library("_video" OBJECT) +# add_library("teachos::video" ALIAS "_video") + +# #[============================================================================[ +# # THE Memory Library +# #]============================================================================] + +# add_library("_memory" OBJECT) +# add_library("teachos::memory" ALIAS "_memory") + +# #[============================================================================[ +# # The Exception handling Library +# #]============================================================================] + +# add_library("_exception" OBJECT) +# add_library("teachos::exception" ALIAS "_exception") + +# #[============================================================================[ +# # The Context switching Library +# #]============================================================================] + +# add_library("_context" OBJECT) +# add_library("teachos::context_switching" ALIAS "_context") + +# add_library("_interrupt_handling" OBJECT) +# add_library("teachos::interrupt_handling" ALIAS "_interrupt_handling") +# # https://forum.osdev.org/viewtopic.php?f=1&t=36712 +# # https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html#index-interrupt-function-attribute_002c-x86 +# target_compile_options("_interrupt_handling" PRIVATE "-mgeneral-regs-only") + +# #[============================================================================[ +# # The Kernel +# #]============================================================================] + +# add_executable("_kernel" +# "src/kernel/main.cpp" +# ) +# add_executable("teachos::kernel" ALIAS "_kernel") + +# target_link_libraries("_kernel" PRIVATE +# "teachos::boot" +# "teachos::video" +# "teachos::memory" +# "teachos::exception" +# "teachos::context_switching" +# "teachos::interrupt_handling" +# ) + +# #[============================================================================[ +# # Platform Specific Components +# #]============================================================================] + +# add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}") -- cgit v1.2.3 From ec572bff8150e2f8cd2dc99e053c5e8c8a0b99e3 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 16:25:00 +0000 Subject: arch: prepare interfaces --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index e10da55..c08753b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,16 +25,16 @@ set(CMAKE_CXX_EXTENSIONS NO) # Global Build System Configuration #]============================================================================] +add_executable("kernel") + add_subdirectory("libs") add_subdirectory("kern") add_subdirectory("arch") -add_executable("kernel") - target_link_libraries("kernel" PRIVATE "kern" - "arch::all" - # "arch-${CMAKE_SYSTEM_PROCESSOR}" + "arch::any" + "arch::${CMAKE_SYSTEM_PROCESSOR}" ) # #[============================================================================[ -- cgit v1.2.3 From d1aaaeb615e148a13f46223c84819ba828e5209f Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 16:42:26 +0000 Subject: arch: make linkable --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index c08753b..a00b043 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,9 +32,8 @@ add_subdirectory("kern") add_subdirectory("arch") target_link_libraries("kernel" PRIVATE - "kern" - "arch::any" "arch::${CMAKE_SYSTEM_PROCESSOR}" + "os::kern" ) # #[============================================================================[ -- cgit v1.2.3 From 05ac8c2bdd000d27b38411db2223eabb649c318f Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 21:29:10 +0000 Subject: build: reintroduce bootable ISO --- CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index a00b043..27500ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,10 @@ project("kernel" LANGUAGES ASM C CXX ) +set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules") + +include("GenerateBootableIso") + #[============================================================================[ # Global Build System Configuration #]============================================================================] @@ -15,8 +19,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") set(CMAKE_INTERPROCEDURAL_OPTIMIZATION YES) -set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules") - set(CMAKE_CXX_STANDARD "20") set(CMAKE_CXX_STANDARD_REQUIRED YES) set(CMAKE_CXX_EXTENSIONS NO) @@ -36,6 +38,9 @@ target_link_libraries("kernel" PRIVATE "os::kern" ) +target_generate_bootable_iso("kernel") + + # #[============================================================================[ # # Documentation # #]============================================================================] -- cgit v1.2.3 From 9b12522f37c3f8704e8f8ca8736689dbbf30ce8b Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 21:35:43 +0000 Subject: cmake: introduce ELF utility module --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 27500ed..6f7d5a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ project("kernel" set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules") +include("ElfTransformations") include("GenerateBootableIso") #[============================================================================[ @@ -38,8 +39,11 @@ target_link_libraries("kernel" PRIVATE "os::kern" ) -target_generate_bootable_iso("kernel") +target_disassemble("kernel") +target_extract_debug_symbols("kernel") +target_strip("kernel") +target_generate_bootable_iso("kernel") # #[============================================================================[ # # Documentation -- cgit v1.2.3 From b794fc9e4427f63aba624700af2e1df250aa41ef Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 21:38:04 +0000 Subject: cmake: remove lefover main configuration --- CMakeLists.txt | 104 ++++++--------------------------------------------------- 1 file changed, 10 insertions(+), 94 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f7d5a8..9ddb4ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,13 @@ set(CMAKE_CXX_STANDARD "20") set(CMAKE_CXX_STANDARD_REQUIRED YES) set(CMAKE_CXX_EXTENSIONS NO) +add_compile_options( + "$<$:-Wall>" + "$<$:-Wextra>" + "$<$:-Werror>" + "$<$:-pedantic-errors>" +) + #[============================================================================[ # Global Build System Configuration #]============================================================================] @@ -45,9 +52,9 @@ target_strip("kernel") target_generate_bootable_iso("kernel") -# #[============================================================================[ -# # Documentation -# #]============================================================================] +#[============================================================================[ +# Documentation +#]============================================================================] # find_package("Doxygen") @@ -90,94 +97,3 @@ target_generate_bootable_iso("kernel") # "${PROJECT_BINARY_DIR}/docs" # ) -# #[============================================================================[ -# # Global Compiler Configuration -# #]============================================================================] - -# add_compile_options( -# "$<$:-Wall>" -# "$<$:-Wextra>" -# "$<$:-Werror>" -# "$<$:-pedantic-errors>" -# ) - -# #[============================================================================[ -# # Global Libraries -# #]============================================================================] - -# add_subdirectory("libs/kstd" EXCLUDE_FROM_ALL SYSTEM) -# add_subdirectory("libs/multiboot2" EXCLUDE_FROM_ALL SYSTEM) - -# #[============================================================================[ -# # Global Directories -# #]============================================================================] - -# include_directories( -# "include" -# "arch/${CMAKE_SYSTEM_PROCESSOR}/include" -# ) - -# #[============================================================================[ -# # The Bootstrap Library -# #]============================================================================] - -# add_library("_boot" OBJECT) -# add_library("teachos::boot" ALIAS "_boot") - -# #[============================================================================[ -# # The Video Library -# #]============================================================================] - -# add_library("_video" OBJECT) -# add_library("teachos::video" ALIAS "_video") - -# #[============================================================================[ -# # THE Memory Library -# #]============================================================================] - -# add_library("_memory" OBJECT) -# add_library("teachos::memory" ALIAS "_memory") - -# #[============================================================================[ -# # The Exception handling Library -# #]============================================================================] - -# add_library("_exception" OBJECT) -# add_library("teachos::exception" ALIAS "_exception") - -# #[============================================================================[ -# # The Context switching Library -# #]============================================================================] - -# add_library("_context" OBJECT) -# add_library("teachos::context_switching" ALIAS "_context") - -# add_library("_interrupt_handling" OBJECT) -# add_library("teachos::interrupt_handling" ALIAS "_interrupt_handling") -# # https://forum.osdev.org/viewtopic.php?f=1&t=36712 -# # https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html#index-interrupt-function-attribute_002c-x86 -# target_compile_options("_interrupt_handling" PRIVATE "-mgeneral-regs-only") - -# #[============================================================================[ -# # The Kernel -# #]============================================================================] - -# add_executable("_kernel" -# "src/kernel/main.cpp" -# ) -# add_executable("teachos::kernel" ALIAS "_kernel") - -# target_link_libraries("_kernel" PRIVATE -# "teachos::boot" -# "teachos::video" -# "teachos::memory" -# "teachos::exception" -# "teachos::context_switching" -# "teachos::interrupt_handling" -# ) - -# #[============================================================================[ -# # Platform Specific Components -# #]============================================================================] - -# add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}") -- cgit v1.2.3 From a832505d9696ae66248b53602d41637bef4868aa Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 18 Jul 2025 10:49:03 +0000 Subject: kernel: turn into a PIE --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ddb4ed..821640c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,10 @@ target_link_libraries("kernel" PRIVATE "os::kern" ) +target_link_options("kernel" PRIVATE + "-no-pie" +) + target_disassemble("kernel") target_extract_debug_symbols("kernel") target_strip("kernel") -- cgit v1.2.3 From 2ebf8d525e6a030efc8ca23bcbdf92c2d0cb8985 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 24 Jul 2025 10:17:53 +0000 Subject: x86_64: implement high/low split --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 821640c..7c7cc22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,7 @@ target_link_libraries("kernel" PRIVATE target_link_options("kernel" PRIVATE "-no-pie" + "-nostdlib" ) target_disassemble("kernel") -- cgit v1.2.3 From 20aed7283195c1b9ac86e4e98a61f083f05b1513 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 24 Jul 2025 13:16:44 +0000 Subject: build: fix doc comment in main configuration --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c7cc22..91b4b6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,7 @@ add_compile_options( ) #[============================================================================[ -# Global Build System Configuration +# Kernel Executable #]============================================================================] add_executable("kernel") -- cgit v1.2.3 From 187788deaf81a0ef6709aea8f3c4d906f1669762 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 24 Jul 2025 13:17:13 +0000 Subject: build: remove unused code in main configuration --- CMakeLists.txt | 46 ---------------------------------------------- 1 file changed, 46 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 91b4b6d..9a6dabc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,49 +56,3 @@ target_extract_debug_symbols("kernel") target_strip("kernel") target_generate_bootable_iso("kernel") - -#[============================================================================[ -# Documentation -#]============================================================================] - -# find_package("Doxygen") - -# set(DOXYGEN_GENERATE_HTML YES) -# set(DOXYGEN_GENERATE_XML YES) -# set(DOXYGEN_EXCLUDE_PATTERNS "*.cpp") -# set(DOXYGEN_OUTPUT_DIRECTORY "doxygen") -# set(DOXYGEN_QUIET YES) - -# file(GLOB_RECURSE DOXYGEN_SOURCES CONFIGURE_DEPENDS "*.hpp") - -# message(STATUS "${SPHINX_SOURCES}") - -# doxygen_add_docs("docs_xml" -# ${DOXYGEN_SOURCES} -# ALL -# USE_STAMP_FILE -# COMMENT "Generating developer documentation sources" -# ) - -# set_target_properties("docs_xml" PROPERTIES -# ADDITIONAL_CLEAN_FILES -# "${PROJECT_BINARY_DIR}/doxygen" -# ) - -# file(GLOB_RECURSE SPHINX_SOURCES CONFIGURE_DEPENDS "../docs/**.rst") - -# add_custom_target("docs" ALL -# COMMAND "${SPHINX_BUILD_EXE}" -# "../docs" -# "docs" -# "-q" -# DEPENDS "docs_xml" -# SOURCES ${SPHINX_SOURCES} -# COMMENT "Generating developer documentation html" -# ) - -# set_target_properties("docs" PROPERTIES -# ADDITIONAL_CLEAN_FILES -# "${PROJECT_BINARY_DIR}/docs" -# ) - -- cgit v1.2.3 From 2b8fafa2bddc48ddec047de517115c8e65ee61e8 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 24 Jul 2025 15:05:17 +0000 Subject: build: move linker script dependency to kernel --- CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a6dabc..aa1f6a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,10 +47,17 @@ target_link_libraries("kernel" PRIVATE ) target_link_options("kernel" PRIVATE + "-T${KERNEL_LINKER_SCRIPT}" "-no-pie" "-nostdlib" ) +set_property(TARGET "kernel" + APPEND + PROPERTY LINK_DEPENDS + "${KERNEL_LINKER_SCRIPT}" +) + target_disassemble("kernel") target_extract_debug_symbols("kernel") target_strip("kernel") -- cgit v1.2.3 From 4edbe94ce1266c9acc6a695fedf1d2edd4ce11cd Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 24 Jul 2025 15:31:31 +0000 Subject: build: factor out kernel API --- CMakeLists.txt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index aa1f6a9..5dd4044 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,15 +35,19 @@ add_compile_options( # Kernel Executable #]============================================================================] -add_executable("kernel") - -add_subdirectory("libs") -add_subdirectory("kern") add_subdirectory("arch") +add_subdirectory("kapi") +add_subdirectory("libs") + +add_executable("kernel" + "src/abort.cpp" + "src/kstd.cpp" + "src/main.cpp" +) target_link_libraries("kernel" PRIVATE "arch::${CMAKE_SYSTEM_PROCESSOR}" - "os::kern" + "api::kapi" ) target_link_options("kernel" PRIVATE -- cgit v1.2.3 From c6629ba11c17601695b0542d7d1d1bf5dc036d84 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 24 Jul 2025 15:37:36 +0000 Subject: build: clean up configuration --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 5dd4044..64fb08f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ add_compile_options( # Kernel Executable #]============================================================================] -add_subdirectory("arch") +add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}") add_subdirectory("kapi") add_subdirectory("libs") -- cgit v1.2.3 From f00a0149b55a0fd57cc731b015c6f425bc720aba Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 24 Jul 2025 15:41:58 +0000 Subject: build: rename targets --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 64fb08f..3251847 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,8 +46,8 @@ add_executable("kernel" ) target_link_libraries("kernel" PRIVATE - "arch::${CMAKE_SYSTEM_PROCESSOR}" - "api::kapi" + "os::arch" + "os::kapi" ) target_link_options("kernel" PRIVATE -- cgit v1.2.3 From 12dedc7e2e51390fdf2caec3700e75db19be1cd4 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Tue, 28 Oct 2025 18:31:39 +0100 Subject: kstd: don't rely on newlib --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 3251847..ed4b16c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,6 @@ add_subdirectory("kapi") add_subdirectory("libs") add_executable("kernel" - "src/abort.cpp" "src/kstd.cpp" "src/main.cpp" ) -- cgit v1.2.3 From 27a00c67d0110ddaebb4035e68860e00e32a3b8f Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Tue, 28 Oct 2025 18:36:55 +0100 Subject: build: upgrade to C++23 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index ed4b16c..2d45997 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") set(CMAKE_INTERPROCEDURAL_OPTIMIZATION YES) -set(CMAKE_CXX_STANDARD "20") +set(CMAKE_CXX_STANDARD "23") set(CMAKE_CXX_STANDARD_REQUIRED YES) set(CMAKE_CXX_EXTENSIONS NO) -- cgit v1.2.3 From b1143bde71bb029ac2bf7d08ba422fcdaedd56a6 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 31 Oct 2025 07:19:16 +0100 Subject: build: enable linting --- CMakeLists.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d45997..8e53923 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,12 @@ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules") include("ElfTransformations") include("GenerateBootableIso") +#[============================================================================[ +# Global Build System Options +#]============================================================================] + +option(TEACHOS_ENABLE_LINTING "Enable linting during build" ON) + #[============================================================================[ # Global Build System Configuration #]============================================================================] @@ -31,6 +37,17 @@ add_compile_options( "$<$:-pedantic-errors>" ) +#[============================================================================[ +# Global Linting Configuration +#]============================================================================] + +find_program(CLANG_TIDY_EXE "clang-tidy") + +if(CLANG_TIDY_EXE AND TEACHOS_ENABLE_LINTING) + set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_EXE}") + set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}") +endif() + #[============================================================================[ # Kernel Executable #]============================================================================] -- cgit v1.2.3 From 998a001fc621ca0e7560ca09a8acd29469ae3373 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 11 Dec 2025 17:46:02 +0100 Subject: docs: improve documentation --- CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e53923..9c348d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,20 @@ if(CLANG_TIDY_EXE AND TEACHOS_ENABLE_LINTING) set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}") endif() +#[============================================================================[ +# Global Documentation Configuration +#]============================================================================] + +find_package(Doxygen "1.10") + +if(Doxygen_FOUND) + doxygen_add_docs("docs" + ALL + COMMENT "Generating documentation" + CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile" + ) +endif() + #[============================================================================[ # Kernel Executable #]============================================================================] -- cgit v1.2.3 From 4bf9eded3a5d6b007ba79a5716143fa8b3a5aaf6 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 12 Dec 2025 14:26:16 +0100 Subject: kapi: move platform independent implementation --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c348d0..d973268 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,10 @@ add_subdirectory("libs") add_executable("kernel" "src/kstd.cpp" "src/main.cpp" + + # Platform Independent KAPI implementation + "src/kapi/cio.cpp" + "src/kapi/system.cpp" ) target_link_libraries("kernel" PRIVATE -- cgit v1.2.3 From 43ddde5e30a0d71aa11025a5ae232cea83e7fbde Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 15 Dec 2025 16:28:16 +0100 Subject: kapi: remodel memory API to follow cio API --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index d973268..f0c5a20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,6 +76,7 @@ add_executable("kernel" # Platform Independent KAPI implementation "src/kapi/cio.cpp" + "src/kapi/memory.cpp" "src/kapi/system.cpp" ) -- cgit v1.2.3 From 0f09b8ff164a69195ec6c25f6aea1cb607d826f8 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 15 Dec 2025 16:32:34 +0100 Subject: kernel: move implementation to kernel directory --- CMakeLists.txt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index f0c5a20..c9b4e35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,13 +71,17 @@ add_subdirectory("kapi") add_subdirectory("libs") add_executable("kernel" - "src/kstd.cpp" - "src/main.cpp" + "kernel/src/kstd.cpp" + "kernel/src/main.cpp" # Platform Independent KAPI implementation - "src/kapi/cio.cpp" - "src/kapi/memory.cpp" - "src/kapi/system.cpp" + "kernel/src/kapi/cio.cpp" + "kernel/src/kapi/memory.cpp" + "kernel/src/kapi/system.cpp" +) + +target_include_directories("kernel" PRIVATE + "kernel/include" ) target_link_libraries("kernel" PRIVATE -- cgit v1.2.3 From d2ae06ac6c19c1d6258f2ba0888e03795712826d Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 15 Dec 2025 16:37:39 +0100 Subject: build: move kernel build configuration --- CMakeLists.txt | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index c9b4e35..5bf8404 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,46 +63,10 @@ if(Doxygen_FOUND) endif() #[============================================================================[ -# Kernel Executable +# Global Targets #]============================================================================] add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}") add_subdirectory("kapi") add_subdirectory("libs") - -add_executable("kernel" - "kernel/src/kstd.cpp" - "kernel/src/main.cpp" - - # Platform Independent KAPI implementation - "kernel/src/kapi/cio.cpp" - "kernel/src/kapi/memory.cpp" - "kernel/src/kapi/system.cpp" -) - -target_include_directories("kernel" PRIVATE - "kernel/include" -) - -target_link_libraries("kernel" PRIVATE - "os::arch" - "os::kapi" -) - -target_link_options("kernel" PRIVATE - "-T${KERNEL_LINKER_SCRIPT}" - "-no-pie" - "-nostdlib" -) - -set_property(TARGET "kernel" - APPEND - PROPERTY LINK_DEPENDS - "${KERNEL_LINKER_SCRIPT}" -) - -target_disassemble("kernel") -target_extract_debug_symbols("kernel") -target_strip("kernel") - -target_generate_bootable_iso("kernel") +add_subdirectory("kernel") \ No newline at end of file -- cgit v1.2.3 From 86d59104270a580de8d2a550fb4290960c98eee9 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 15 Dec 2025 16:38:43 +0100 Subject: build: add option to disable documentation --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 5bf8404..2343c77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ include("GenerateBootableIso") #]============================================================================] option(TEACHOS_ENABLE_LINTING "Enable linting during build" ON) +option(TEACHOS_GENERATE_DOCS "Generate documentation during build" ON) #[============================================================================[ # Global Build System Configuration @@ -54,7 +55,7 @@ endif() find_package(Doxygen "1.10") -if(Doxygen_FOUND) +if(Doxygen_FOUND AND TEACHOS_GENERATE_DOCS) doxygen_add_docs("docs" ALL COMMENT "Generating documentation" -- cgit v1.2.3