diff options
Diffstat (limited to 'libgcc')
| -rw-r--r-- | libgcc/CMakeLists.txt | 25 | ||||
| -rw-r--r-- | libgcc/x86/CMakeLists.txt | 15 | ||||
| -rw-r--r-- | libgcc/x86/crti.nasm (renamed from libgcc/x86/crti.s) | 0 | ||||
| -rw-r--r-- | libgcc/x86/crtn.nasm (renamed from libgcc/x86/crtn.s) | 0 |
4 files changed, 40 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}) 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_OBJECTS:CRTBEGIN> +) +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_OBJECTS:CRTEND> +) +target_link_libraries(CRTN INTERFACE CRTNBUNDLE) diff --git a/libgcc/x86/crti.s b/libgcc/x86/crti.nasm index 57cb8c1..57cb8c1 100644 --- a/libgcc/x86/crti.s +++ b/libgcc/x86/crti.nasm diff --git a/libgcc/x86/crtn.s b/libgcc/x86/crtn.nasm index 537fa65..537fa65 100644 --- a/libgcc/x86/crtn.s +++ b/libgcc/x86/crtn.nasm |
