Build: Cmake build system
-- Cmake based build system
-- Only armclang supported currently
Change-Id: I162357439bb1c871cba3a1c614822ef0b7a73e89
Signed-off-by: Abhishek Pandit <abhishek.pandit@arm.com>
diff --git a/cmake/Common/Utils.cmake b/cmake/Common/Utils.cmake
new file mode 100644
index 0000000..0c3b0d0
--- /dev/null
+++ b/cmake/Common/Utils.cmake
@@ -0,0 +1,52 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2017, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+# Append a value to a string if not already present
+#
+# Append an item to a string if no item with matching key is already on the string.
+# This function's intended purpose is to append unique flags to command line switches.
+#
+# Examples:
+# string_append_unique_item(STRING C_FLAGS KEY "--target" VAL "--target=armv8m-arm-none-eabi")
+#
+# INPUTS:
+# STRING - (mandatory) - name of the string to operate on
+# KEY - (mandatory) - string to look for
+# VAL - (mandatory) - value to put be added to the string
+#
+# OUTPUTS
+# STRING is modified as needed.
+#
+function(string_append_unique_item)
+ #Parse our arguments
+ set( _OPTIONS_ARGS ) #No option (on/off) arguments (e.g. IGNORE_CASE)
+ set( _ONE_VALUE_ARGS STRING KEY VAL) #Single option arguments (e.g. PATH "./foo/bar")
+ set( _MULTI_VALUE_ARGS ) #List arguments (e.g. LANGUAGES C ASM CXX)
+ cmake_parse_arguments(_MY_PARAMS "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} )
+
+ #Check mandatory parameters
+ if(NOT _MY_PARAMS_STRING)
+ failure("string_append_unique_item(): Missing STRING parameter!")
+ endif()
+ set(_STRING ${_MY_PARAMS_STRING})
+
+ if(NOT _MY_PARAMS_KEY)
+ failure("string_append_unique_item(): Missing KEY parameter!")
+ endif()
+ set(_KEY ${_MY_PARAMS_KEY})
+
+ if(NOT _MY_PARAMS_VAL)
+ failure("string_append_unique_item(): Missing VAL parameter!")
+ endif()
+ set(_VAL ${_MY_PARAMS_VAL})
+
+ #Scan the string.
+ STRING(REGEX MATCH "( |^) *${_KEY}" _FOUND "${${_STRING}}")
+ if("${_FOUND}" STREQUAL "")
+ set(${_STRING} "${${_STRING}} ${_VAL}" PARENT_SCOPE)
+ endif()
+endfunction()