aboutsummaryrefslogtreecommitdiff
path: root/CMake/Utilities.cmake
blob: 4edf8b6d9a51aae13bb7ae5cafc7479c253871a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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()