1function(add_loader_object name)
2  cmake_parse_arguments(
3    "ADD_LOADER_OBJECT"
4    ""    # No option arguments
5    "SRC" # Single value arguments
6    "DEPENDS;COMPILE_OPTIONS" # Multi value arguments
7    ${ARGN}
8  )
9  add_object_library(
10    ${name}_object
11    SRCS ${ADD_LOADER_OBJECT_SRC}
12    DEPENDS ${ADD_LOADER_OBJECT_DEPENDS}
13    COMPILE_OPTIONS ${ADD_LOADER_OBJECT_COMPILE_OPTIONS}
14  )
15
16  set(objfile ${LIBC_BUILD_DIR}/lib/${name}.o)
17  add_custom_command(
18    OUTPUT ${objfile}
19    COMMAND cp $<TARGET_OBJECTS:${name}_object> ${objfile}
20    DEPENDS $<TARGET_OBJECTS:${name}_object>
21  )
22  add_custom_target(
23    ${name}
24    DEPENDS ${objfile}
25  )
26  set_target_properties(
27    ${name}
28    PROPERTIES
29      "TARGET_TYPE" "LOADER_OBJECT"
30      "OBJECT_FILES" ${objfile}
31  )
32endfunction()
33
34add_subdirectory(${LIBC_TARGET_MACHINE})
35