aboutsummaryrefslogtreecommitdiff
path: root/CMake/Utilities.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'CMake/Utilities.cmake')
-rw-r--r--CMake/Utilities.cmake31
1 files changed, 31 insertions, 0 deletions
diff --git a/CMake/Utilities.cmake b/CMake/Utilities.cmake
new file mode 100644
index 000000000..4edf8b6d9
--- /dev/null
+++ b/CMake/Utilities.cmake
@@ -0,0 +1,31 @@
+# File containing various utilities
+
+# Converts a CMake list to a string containing elements separated by spaces
+FUNCTION(TO_LIST_SPACES _LIST_NAME OUTPUT_VAR)
+ SET(NEW_LIST_SPACE)
+ FOREACH(ITEM ${${_LIST_NAME}})
+ SET(NEW_LIST_SPACE "${NEW_LIST_SPACE} ${ITEM}")
+ ENDFOREACH()
+ STRING(STRIP ${NEW_LIST_SPACE} NEW_LIST_SPACE)
+ SET(${OUTPUT_VAR} "${NEW_LIST_SPACE}" PARENT_SCOPE)
+ENDFUNCTION()
+
+# Appends a lis of item to a string which is a space-separated list, if they don't already exist.
+FUNCTION(LIST_SPACES_APPEND_ONCE LIST_NAME)
+ STRING(REPLACE " " ";" _LIST ${${LIST_NAME}})
+ LIST(APPEND _LIST ${ARGN})
+ LIST(REMOVE_DUPLICATES _LIST)
+ TO_LIST_SPACES(_LIST NEW_LIST_SPACE)
+ SET(${LIST_NAME} "${NEW_LIST_SPACE}" PARENT_SCOPE)
+ENDFUNCTION()
+
+# Convinience function that does the same as LIST(FIND ...) but with a TRUE/FALSE return value.
+# Ex: IN_STR_LIST(MY_LIST "Searched item" WAS_FOUND)
+FUNCTION(IN_STR_LIST LIST_NAME ITEM_SEARCHED RETVAL)
+ LIST(FIND ${LIST_NAME} ${ITEM_SEARCHED} FIND_POS)
+ IF(${FIND_POS} EQUAL -1)
+ SET(${RETVAL} FALSE PARENT_SCOPE)
+ ELSE()
+ SET(${RETVAL} TRUE PARENT_SCOPE)
+ ENDIF()
+ENDFUNCTION()