diff options
author | Siva Chandra Reddy <sivachandra@google.com> | 2020-03-05 02:45:51 +0300 |
---|---|---|
committer | Siva Chandra Reddy <sivachandra@google.com> | 2020-04-11 04:01:52 +0300 |
commit | e4767a6f1435164e6eb65c71a0a847812390a55e (patch) | |
tree | 34c6ac4f308e280f9df0b28dce14df26c6e76ddd /libc/cmake/modules/LLVMLibCTargetNameUtils.cmake | |
parent | 49ae0fc2f085eec6606aa6816da0bf09fc5bc77f (diff) |
[libc] Add fully-qualified target names.
Only targets setup by the special LLVM libc rules now have fully
qualified names. The naming style is similar to fully qualified names in
Python.
Reviewers: abrachet, PaulkaToast, phosek
Differential Revision: https://reviews.llvm.org/D77340
Diffstat (limited to 'libc/cmake/modules/LLVMLibCTargetNameUtils.cmake')
-rw-r--r-- | libc/cmake/modules/LLVMLibCTargetNameUtils.cmake | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/libc/cmake/modules/LLVMLibCTargetNameUtils.cmake b/libc/cmake/modules/LLVMLibCTargetNameUtils.cmake new file mode 100644 index 000000000000..4fbc06b4e858 --- /dev/null +++ b/libc/cmake/modules/LLVMLibCTargetNameUtils.cmake @@ -0,0 +1,32 @@ +function(get_fq_target_name local_name target_name_var) + file(RELATIVE_PATH rel_path ${LIBC_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) + string(REPLACE "/" "." fq_name "libc.${rel_path}.${local_name}") + set(${target_name_var} ${fq_name} PARENT_SCOPE) +endfunction(get_fq_target_name) + +function(is_relative_target_name target_name output_var) + string(FIND ${target_name} "." dot_loc) + string(COMPARE EQUAL "0" ${dot_loc} is_relative) + set(${output_var} ${is_relative} PARENT_SCOPE) +endfunction(is_relative_target_name) + +function(get_fq_dep_name fq_name name) + is_relative_target_name(${name} "is_relative") + if(is_relative) + # Skip over the first '.' character. + string(SUBSTRING ${name} 1 -1 local_name) + get_fq_target_name(${local_name} fully_qualified_name) + set(${fq_name} ${fully_qualified_name} PARENT_SCOPE) + else() + set(${fq_name} ${name} PARENT_SCOPE) + endif() +endfunction(get_fq_dep_name) + +function(get_fq_deps_list output_list) + set(fq_dep_name_list "") + foreach(dep IN LISTS ARGN) + get_fq_dep_name(fq_dep_name ${dep}) + list(APPEND fq_dep_name_list ${fq_dep_name}) + endforeach(dep) + set(${output_list} ${fq_dep_name_list} PARENT_SCOPE) +endfunction(get_fq_deps_list) |