diff options
| author | Alexey Gavrilov <alexey.gavrilov@mail.com> | 2026-03-27 14:03:55 +0700 |
|---|---|---|
| committer | Alexey Gavrilov <alexey.gavrilov@mail.com> | 2026-03-27 14:03:55 +0700 |
| commit | 6ffe96d1e3f0289c2070e050cf8e1a30288e6d91 (patch) | |
| tree | 746485cfc0f55dad82d1d0daad9677bf63475cba /libgcc/CMakeLists.txt | |
| parent | a4dea4148157a94a9143dbbd92fdd88b4358676c (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.txt | 25 |
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}) |
