brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 2e6a993 Raw
51 lines · plain
1# TODO: Use generic "add_startup_object" https://github.com/llvm/llvm-project/issues/1331562function(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_startup_object(33  crt134  SRCS35    crt1.cpp36  DEPENDS37    libc.config.app_h38    libc.src.__support.OSUtil.uefi.uefi_util39)40 41add_custom_target(libc-startup)42set(startup_components crt1)43foreach(target IN LISTS startup_components)44  set(fq_target_name libc.startup.uefi.${target})45  add_dependencies(libc-startup ${fq_target_name})46  install(FILES $<TARGET_OBJECTS:${fq_target_name}>47          DESTINATION ${LIBC_INSTALL_LIBRARY_DIR}48          RENAME $<TARGET_PROPERTY:${fq_target_name},OUTPUT_NAME>49          COMPONENT libc)50endforeach()51