brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · e361000 Raw
76 lines · plain
1# TODO: Use generic "add_startup_object" https://github.com/llvm/llvm-project/issues/133156 2function(add_startup_object name)3  cmake_parse_arguments(4    "ADD_STARTUP_OBJECT"5    "ALIAS" # Option argument6    "SRC"   # Single value arguments7    "DEPENDS;COMPILE_OPTIONS" # Multi value arguments8    ${ARGN}9  )10 11  get_fq_target_name(${name} fq_target_name)12  if(ADD_STARTUP_OBJECT_ALIAS)13    get_fq_deps_list(fq_dep_list ${ADD_STARTUP_OBJECT_DEPENDS})14    add_library(${fq_target_name} ALIAS ${fq_dep_list})15    return()16  endif()17 18  add_object_library(19    ${name}20    SRCS ${ADD_STARTUP_OBJECT_SRC}21    COMPILE_OPTIONS ${ADD_STARTUP_OBJECT_COMPILE_OPTIONS}22    ${ADD_STARTUP_OBJECT_UNPARSED_ARGUMENTS}23    DEPENDS ${ADD_STARTUP_OBJECT_DEPENDS}24  )25  set_target_properties(26    ${fq_target_name}27    PROPERTIES28      OUTPUT_NAME ${name}.o29  )30endfunction()31 32add_entrypoint_object(33  init34  SRCS35    init.cpp36  DEPENDS37    libc.hdr.stdint_proxy38    libc.src.__support.common39  HDRS40    init.h41)42 43add_entrypoint_object(44  fini45  SRCS46    fini.cpp47  DEPENDS48    libc.hdr.stdint_proxy49    libc.src.__support.common50  HDRS51    fini.h52)53 54if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_ARCHITECTURE})55  add_subdirectory(${LIBC_TARGET_ARCHITECTURE})56else()57  message(WARNING "Cannot build 'crt1.o' for ${LIBC_TARGET_ARCHITECTURE} yet.")58  return()59endif()60 61add_startup_object(62  crt163  ALIAS64  DEPENDS65  .${LIBC_TARGET_ARCHITECTURE}.crt166)67 68add_custom_target(libc-startup)69 70set(fq_target_name libc.startup.baremetal.${LIBC_TARGET_ARCHITECTURE}.crt1)71add_dependencies(libc-startup ${fq_target_name})72install(FILES $<TARGET_OBJECTS:${fq_target_name}>73        DESTINATION ${LIBC_INSTALL_LIBRARY_DIR}74        RENAME $<TARGET_PROPERTY:${fq_target_name},OUTPUT_NAME>75        COMPONENT libc)76