brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · ef4a2af Raw
88 lines · plain
1set(LLVM_LIBC_OPTIONAL_ARGS2  ALIAS3  PUBLIC4  NO_GPU_BUNDLE5  NO_RUN_POSTBUILD6  C_TEST7  NEED_MPFR8  NEED_MPC9  IS_GPU_BENCHMARK10)11 12set(LLVM_LIBC_SINGLE_VALUE_ARGS13  CXX_STANDARD14  SUITE15  CREATE_TARGET_FUNCTION16  HDR17  DEST_HDR18  YAML_FILE19  GEN_HDR20  NAME21)22 23set(LLVM_LIBC_MULTI_VALUE_ARGS24  HDRS25  SRCS26  COMPILE_OPTIONS27  LINK_OPTIONS28  LINK_LIBRARIES29  ENV30  DEPENDS31  FLAGS32  ARGS33  LOADER_ARGS34)35 36foreach(arg_list LLVM_LIBC_OPTIONAL_ARGS LLVM_LIBC_SINGLE_VALUE_ARGS LLVM_LIBC_MULTI_VALUE_ARGS)37  list(TRANSFORM ${arg_list}38    PREPEND "OVERLAY_"39    OUTPUT_VARIABLE ${arg_list}_OVERLAY40  )41  list(TRANSFORM ${arg_list}42    PREPEND "FULL_BUILD_"43    OUTPUT_VARIABLE ${arg_list}_FULL_BUILD44  )45  set(${arg_list}_COMPLETE ${${arg_list}} ${${arg_list}_OVERLAY} ${${arg_list}_FULL_BUILD})46endforeach()47 48macro(llvm_libc_parse_arguments name_prefix)49  cmake_parse_arguments(50    ${name_prefix}51    "${LLVM_LIBC_OPTIONAL_ARGS_COMPLETE}"52    "${LLVM_LIBC_SINGLE_VALUE_ARGS_COMPLETE}"53    "${LLVM_LIBC_MULTI_VALUE_ARGS_COMPLETE}"54    ${ARGN}55  )56 57  # Collect overlay and full build args58  foreach(argument IN LISTS LLVM_LIBC_OPTIONAL_ARGS LLVM_LIBC_SINGLE_VALUE_ARGS LLVM_LIBC_MULTI_VALUE_ARGS)59    if(LLVM_LIBC_FULL_BUILD)60      if(${name_prefix}_${argument}_FULL_BUILD)61        list(APPEND ${name_prefix}_${argument} ${${name_prefix}_${argument}_FULL_BUILD})62      endif()63    else()64      if(${name_prefix}_${argument}_OVERLAY)65        list(APPEND ${name_prefix}_${argument} ${${name_prefix}_${argument}_OVERLAY})66      endif()67    endif()68  endforeach()69endmacro()70 71# Forward all arguments that can be used for llvm_libc_parse_arguments again.72# Assume that *_OVERLAY and *_FULL_BUILD args have been merged properly.73macro(forward_arguments name_prefix output)74  set(${output} "")75  76  foreach(argument ${LLVM_LIBC_OPTIONAL_ARGS})77    if(${name_prefix}_${argument})78      list(APPEND output ${argument})79    endif()80  endforeach()81 82  foreach(argument ${LLVM_LIBC_SINGLE_VALUE_ARGS} ${LLVM_LIBC_MULTI_VALUE_ARGS})83    if(${name_prefix}_${argument})84      list(APPEND output ${argument} "${${name_prefix}_${argument}}")85    endif()86  endforeach()87endmacro()88