Move c-picker detection into UnitTest.cmake

The algorithm for determining CLANG_LIBRARY_PATH and finding c-picker
has been moved into UnitTest.cmake as unit_test_add_suite depends on
these parts of the code. By including UnitTest module the detection
code runs.

Change-Id: I3a9095ee3baaca84056a2a5df8c433a7d1d7b5cc
Signed-off-by: Imre Kis <imre.kis@arm.com>
diff --git a/cmake/UnitTest.cmake b/cmake/UnitTest.cmake
index 74f19a2..f3f2eaa 100644
--- a/cmake/UnitTest.cmake
+++ b/cmake/UnitTest.cmake
@@ -6,6 +6,42 @@
 
 include_guard(DIRECTORY)
 
+# Trying to set CLANG_LIBRARY_PATH using the following methods
+# 1. Using cache or command line definition
+#    Show warning if environment variable is also set but has different value
+# 2. Copying the value of CLANG_LIBRARY_PATH environment variable if set
+# 3. find_package (llvm-config, common paths or Windows registry)
+# If none of the above steps succeeded CMake emits a fatal error and stops
+
+set(CLANG_LIBRARY_PATH_HELP "libclang directory for c-picker")
+
+if (DEFINED CLANG_LIBRARY_PATH)
+	message(STATUS "Using CLANG_LIBRARY_PATH from CMake variable (command line or cache)")
+
+	if (DEFINED ENV{CLANG_LIBRARY_PATH})
+		if (NOT (${CLANG_LIBRARY_PATH} STREQUAL $ENV{CLANG_LIBRARY_PATH}))
+			message(WARNING "Both CLANG_LIBRARY_PATH CMake and environment variables are set but have different values")
+		endif()
+	endif()
+else()
+	if (DEFINED ENV{CLANG_LIBRARY_PATH})
+		message(STATUS "Setting CLANG_LIBRARY_PATH based on environment variable")
+		set(CLANG_LIBRARY_PATH $ENV{CLANG_LIBRARY_PATH} CACHE PATH ${CLANG_LIBRARY_PATH_HELP})
+	else()
+		message(STATUS "Setting CLANG_LIBRARY_PATH based on find_package")
+		find_package(LibClang REQUIRED)
+		set(CLANG_LIBRARY_PATH ${LibClang_LIBRARY_DIRS} CACHE PATH ${CLANG_LIBRARY_PATH_HELP})
+	endif()
+endif()
+
+message(STATUS "CLANG_LIBRARY_PATH has been set to ${CLANG_LIBRARY_PATH}")
+
+# Checking c-picker
+find_program(CPICKER_COMMAND "c-picker")
+if (NOT CPICKER_COMMAND)
+	message(FATAL_ERROR "Please install c-picker using pip")
+endif()
+
 # Global dependencies:
 #   Variables
 #     CPICKER_COMMAND: command of the c-picker