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/CMakeLists.txt | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 libgcc/CMakeLists.txt (limited to 'libgcc/CMakeLists.txt') diff --git a/libgcc/CMakeLists.txt b/libgcc/CMakeLists.txt new file mode 100644 index 0000000..b5b2abc --- /dev/null +++ b/libgcc/CMakeLists.txt @@ -0,0 +1,25 @@ +macro(setup_crt_object_file object_file target_name) + execute_process( + COMMAND ${CMAKE_CXX_COMPILER} --print-file-name=${object_file} + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE PATH + ERROR_VARIABLE ERROR_MESSAGE + RESULT_VARIABLE RESULT + ) + + if(RESULT) + message(FATAL_ERROR ${ERROR_MESSAGE}) + endif() + + add_library(${target_name} OBJECT IMPORTED GLOBAL) + set_target_properties(${target_name} PROPERTIES + IMPORTED_OBJECTS ${PATH} + ) + +endmacro() + +# TODO: set platform specific CRT objects +setup_crt_object_file(crtbegin.o CRTBEGIN) +setup_crt_object_file(crtend.o CRTEND) + +add_subdirectory(${ARCH}) -- cgit v1.2.3