Add first version of CMake framework code

This commit adds the core elements of the framework and documentation:
 - Map utility: store key-value pairs.
 - Group utility: store build configuration options.
 - STGT API: describe the targets.
 - Compiler abstraction functions for GCC.
 - Other helper functions.
 - New CMake system type called "Embedded", using correct output file
   prefixes and extensions.
 - Sphinx based documentation which includes:
    - licensing information
    - version numbering policy
    - documentation on how-to build the documentation

In addition the following utility files are added:
  - .editorconfig
  - .gitignore

Change-Id: If19a171ef066775d3544fba82f1cc70a5fb0e7d7
Signed-off-by: Balint Dobszay <balint.dobszay@arm.com>
Co-authored-by: Gyorgy Szing <gyorgy.szing@arm.com>
Co-authored-by: Bence Szépkúti <bence.szepkuti@arm.com>
diff --git a/TFACMFConfigVersion.cmake b/TFACMFConfigVersion.cmake
new file mode 100644
index 0000000..2387aa2
--- /dev/null
+++ b/TFACMFConfigVersion.cmake
@@ -0,0 +1,38 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+#Read the version.txt file
+get_filename_component(_MY_LOC ${CMAKE_CURRENT_LIST_FILE} DIRECTORY)
+file(READ "${_MY_LOC}/version.txt" _VER_STRING)
+
+#Extract the version number
+string(REGEX MATCH "([0-9]+)\.([0-9]+)\.([0-9]+)" PACKAGE_VERSION ${_VER_STRING})
+
+#Set some meta-data
+set(TFACMF_VENDOR "Arm")
+set(TFACMF_DESCRIPTION_SUMMARY "CMake framework for TF-A.")
+set(PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1})
+set(PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2})
+set(PACKAGE_VERSION_PATCH ${CMAKE_MATCH_3})
+set(CPACK_RESOURCE_FILE_LICENSE "${_MY_LOC}/license.rst")
+set(CPACK_RESOURCE_FILE_README "${_MY_LOC}/readme.rst")
+
+#Compare requested version with ours and report result to find_package()
+set(PACKAGE_VERSION_COMPATIBLE FALSE)
+set(PACKAGE_VERSION_EXACT FALSE)
+
+#Compare requested version to ours
+if(PACKAGE_FIND_VERSION_MAJOR EQUAL PACKAGE_VERSION_MAJOR)
+    set(_FIND_MP_VER "${PACKAGE_FIND_VERSION_MINOR}.${PACKAGE_FIND_VERSION_PATCH}")
+    set(_MY_MP_VER "${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
+
+    if (_FIND_MP_VER VERSION_EQUAL _MY_MP_VER)
+       set(PACKAGE_VERSION_EXACT TRUE)
+    elseif(_FIND_MP_VER VERSION_LESS _MY_MP_VER)
+        set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    endif()
+endif()