From 6ffe96d1e3f0289c2070e050cf8e1a30288e6d91 Mon Sep 17 00:00:00 2001 From: Alexey Gavrilov Date: Fri, 27 Mar 2026 14:03:55 +0700 Subject: Cmake build generator support: build stage Multi-target architecture implementation: each root source code directory presents the one *INTERFACE* target to it's subdirectory subtargets that link only as *STATIC* library. For instance, *arch* directory presents *Architecture* target then *Architecture* target has *CPUID*, *IO*, *PORT* and etc. dependencies Exact order of linking targets is: boot.o CRTIBUNDLE CRTNBUNDLE. Sequence destruction cause to UB. Please to pay attention to this. TODO - Debug information - Build type - Toolchain file - Image creation - Build by WinGW compiler on Windows platform (optional) Signed-off-by: Alexey Gavrilov --- libgcc/x86/CMakeLists.txt | 15 +++++++++++++++ libgcc/x86/crti.nasm | 5 +++++ libgcc/x86/crti.s | 5 ----- libgcc/x86/crtn.nasm | 3 +++ libgcc/x86/crtn.s | 3 --- 5 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 libgcc/x86/CMakeLists.txt create mode 100644 libgcc/x86/crti.nasm delete mode 100644 libgcc/x86/crti.s create mode 100644 libgcc/x86/crtn.nasm delete mode 100644 libgcc/x86/crtn.s (limited to 'libgcc/x86') diff --git a/libgcc/x86/CMakeLists.txt b/libgcc/x86/CMakeLists.txt new file mode 100644 index 0000000..2a1bec9 --- /dev/null +++ b/libgcc/x86/CMakeLists.txt @@ -0,0 +1,15 @@ +add_library(CRTI INTERFACE) +add_library(CRTIBUNDLE STATIC) +target_sources(CRTIBUNDLE PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/crti.nasm + $ +) +target_link_libraries(CRTI INTERFACE CRTIBUNDLE) + +add_library(CRTN INTERFACE) +add_library(CRTNBUNDLE STATIC) +target_sources(CRTNBUNDLE PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/crtn.nasm + $ +) +target_link_libraries(CRTN INTERFACE CRTNBUNDLE) diff --git a/libgcc/x86/crti.nasm b/libgcc/x86/crti.nasm new file mode 100644 index 0000000..57cb8c1 --- /dev/null +++ b/libgcc/x86/crti.nasm @@ -0,0 +1,5 @@ +section .init +global _init:function +_init: + push ebp + mov ebp, esp diff --git a/libgcc/x86/crti.s b/libgcc/x86/crti.s deleted file mode 100644 index 57cb8c1..0000000 --- a/libgcc/x86/crti.s +++ /dev/null @@ -1,5 +0,0 @@ -section .init -global _init:function -_init: - push ebp - mov ebp, esp diff --git a/libgcc/x86/crtn.nasm b/libgcc/x86/crtn.nasm new file mode 100644 index 0000000..537fa65 --- /dev/null +++ b/libgcc/x86/crtn.nasm @@ -0,0 +1,3 @@ +section .init + pop ebp + ret diff --git a/libgcc/x86/crtn.s b/libgcc/x86/crtn.s deleted file mode 100644 index 537fa65..0000000 --- a/libgcc/x86/crtn.s +++ /dev/null @@ -1,3 +0,0 @@ -section .init - pop ebp - ret -- cgit v1.2.3