summaryrefslogtreecommitdiffstats
path: root/libgcc
diff options
context:
space:
mode:
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/CMakeLists.txt25
-rw-r--r--libgcc/x86/CMakeLists.txt15
-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