| 
 | 1 | +set(LLVM_LIBC_OPTIONAL_ARGS  | 
 | 2 | +  ALIAS  | 
 | 3 | +  PUBLIC  | 
 | 4 | +  NO_GPU_BUNDLE  | 
 | 5 | +  NO_RUN_POSTBUILD  | 
 | 6 | +  C_TEST  | 
 | 7 | +  NEED_MPFR  | 
 | 8 | +  NEED_MPC  | 
 | 9 | +  IS_GPU_BENCHMARK  | 
 | 10 | +)  | 
 | 11 | + | 
 | 12 | +set(LLVM_LIBC_SINGLE_VALUE_ARGS  | 
 | 13 | +  CXX_STANDARD  | 
 | 14 | +  SUITE  | 
 | 15 | +  CREATE_TARGET_FUNCTION  | 
 | 16 | +  HDR  | 
 | 17 | +  DEST_HDR  | 
 | 18 | +  YAML_FILE  | 
 | 19 | +  GEN_HDR  | 
 | 20 | +  NAME  | 
 | 21 | +)  | 
 | 22 | + | 
 | 23 | +set(LLVM_LIBC_MULTI_VALUE_ARGS  | 
 | 24 | +  HDRS  | 
 | 25 | +  SRCS  | 
 | 26 | +  COMPILE_OPTIONS  | 
 | 27 | +  LINK_OPTIONS  | 
 | 28 | +  LINK_LIBRARIES  | 
 | 29 | +  ENV  | 
 | 30 | +  DEPENDS  | 
 | 31 | +  FLAGS  | 
 | 32 | +  ARGS  | 
 | 33 | +  LOADER_ARGS  | 
 | 34 | +)  | 
 | 35 | + | 
 | 36 | +foreach(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}_OVERLAY  | 
 | 40 | +  )  | 
 | 41 | +  list(TRANSFORM ${arg_list}  | 
 | 42 | +    PREPEND "FULL_BUILD_"  | 
 | 43 | +    OUTPUT_VARIABLE ${arg_list}_FULL_BUILD  | 
 | 44 | +  )  | 
 | 45 | +  set(${arg_list}_COMPLETE ${${arg_list}} ${${arg_list}_OVERLAY} ${${arg_list}_FULL_BUILD})  | 
 | 46 | +endforeach()  | 
 | 47 | + | 
 | 48 | +macro(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 args  | 
 | 58 | +  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()  | 
 | 69 | +endmacro()  | 
 | 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.  | 
 | 73 | +macro(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()  | 
 | 87 | +endmacro()  | 
0 commit comments