summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorLouis Dionne <ldionne.2@gmail.com>2022-05-06 15:43:18 -0400
committerLouis Dionne <ldionne.2@gmail.com>2022-05-16 08:55:32 -0400
commit06400a0142af8297b5d39b8f34a7c59db6f9910c (patch)
tree0820dcf0cd74393c670a456e8380d342931a6019 /cmake
parentd95513ae3a73388cbe18fa1bd2c76fec70f3ec06 (diff)
downloadllvm-06400a0142af8297b5d39b8f34a7c59db6f9910c.tar.gz
[runtimes] Generalize how we reorder projects
This way, we could use it for LLVM_ENABLE_PROJECTS too if desired. Differential Revision: https://reviews.llvm.org/D125121
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Modules/SortSubset.cmake25
1 files changed, 25 insertions, 0 deletions
diff --git a/cmake/Modules/SortSubset.cmake b/cmake/Modules/SortSubset.cmake
new file mode 100644
index 000000000000..af65c27e715b
--- /dev/null
+++ b/cmake/Modules/SortSubset.cmake
@@ -0,0 +1,25 @@
+# Sort a subset of a list according to the ordering in the full list.
+#
+# Given a list and a subset of that list, this function sorts the subset
+# according to the order in the full list, and returns that in the given
+# output variable.
+#
+# full_list:
+# The list containing the desired order of elements in the sub-list.
+#
+# sub_list:
+# A subset of the elements in `full_list`. Those elements will be sorted
+# according to the order in `full_list`.
+#
+# out_var:
+# A variable to store the resulting sorted sub-list in.
+function(sort_subset full_list sub_list out_var)
+ set(result "${full_list}")
+ foreach(project IN LISTS full_list)
+ if (NOT project IN_LIST sub_list)
+ list(REMOVE_ITEM result ${project})
+ endif()
+ endforeach()
+
+ set(${out_var} "${result}" PARENT_SCOPE)
+endfunction()