aboutsummaryrefslogtreecommitdiff
path: root/libc/cmake/modules/LLVMLibCTargetNameUtils.cmake
diff options
context:
space:
mode:
authorSiva Chandra Reddy <sivachandra@google.com>2020-03-04 15:45:51 -0800
committerSiva Chandra Reddy <sivachandra@google.com>2020-04-10 18:01:52 -0700
commite4767a6f1435164e6eb65c71a0a847812390a55e (patch)
tree34c6ac4f308e280f9df0b28dce14df26c6e76ddd /libc/cmake/modules/LLVMLibCTargetNameUtils.cmake
parent49ae0fc2f085eec6606aa6816da0bf09fc5bc77f (diff)
downloadllvm-e4767a6f1435164e6eb65c71a0a847812390a55e.zip
llvm-e4767a6f1435164e6eb65c71a0a847812390a55e.tar.gz
llvm-e4767a6f1435164e6eb65c71a0a847812390a55e.tar.bz2
[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.cmake32
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 0000000..4fbc06b
--- /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)