summaryrefslogtreecommitdiffstats
path: root/libgcc/CMakeLists.txt
diff options
context:
space:
mode:
authorAlexey Gavrilov <alexey.gavrilov@mail.com>2026-03-27 14:03:55 +0700
committerAlexey Gavrilov <alexey.gavrilov@mail.com>2026-03-27 14:03:55 +0700
commit6ffe96d1e3f0289c2070e050cf8e1a30288e6d91 (patch)
tree746485cfc0f55dad82d1d0daad9677bf63475cba /libgcc/CMakeLists.txt
parenta4dea4148157a94a9143dbbd92fdd88b4358676c (diff)
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 <TARGETS> 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 <alexey.gavrilov@mail.com>
Diffstat (limited to 'libgcc/CMakeLists.txt')
-rw-r--r--libgcc/CMakeLists.txt25
1 files changed, 25 insertions, 0 deletions
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})