diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/Modules/SortSubset.cmake | 25 |
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() |