Adding check to LinuxFFAUserShim.cmake

Adding mechanism to check whether the driver is resident before
fetching the code.

Change-Id: Iaf0f17bd0652be301b19e12747a7e83975ee4ba6
Signed-off-by: Mark Dykes <mark.dykes@arm.com>
diff --git a/external/LinuxFFAUserShim/LinuxFFAUserShim.cmake b/external/LinuxFFAUserShim/LinuxFFAUserShim.cmake
index 9c2252c..09a2bf8 100644
--- a/external/LinuxFFAUserShim/LinuxFFAUserShim.cmake
+++ b/external/LinuxFFAUserShim/LinuxFFAUserShim.cmake
@@ -8,24 +8,32 @@
 # Find Linux FF-A user space shim repo location.
 # It contains a kernel module which exposes FF-A operations to user space using DebugFS.
 
+# If the driver is already installed, try to find that
+find_path(LINUX_FFA_USER_SHIM_INCLUDE_DIR
+	NAMES arm_ffa_user.h
+	DOC "Linux FF-A user space shim driver include directory"
+)
 
-set(LINUX_FFA_USER_SHIM_URL "https://git.gitlab.arm.com/linux-arm/linux-trusted-services.git"
-	CACHE STRING "Linux FF-A user space shim repository URL")
-set(LINUX_FFA_USER_SHIM_REFSPEC "v5.0.0"
-	CACHE STRING "Linux FF-A user space shim git refspec")
+# If not found, download it
+if(NOT LINUX_FFA_USER_SHIM_INCLUDE_DIR)
 
-set(LINUX_FFA_USER_SHIM_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/linux_ffa_user_shim-src"
-	CACHE PATH "Location of Linux driver source.")
+	set(LINUX_FFA_USER_SHIM_URL "https://git.gitlab.arm.com/linux-arm/linux-trusted-services.git"
+		CACHE STRING "Linux FF-A user space shim repository URL")
+	set(LINUX_FFA_USER_SHIM_REFSPEC "v5.0.0"
+		CACHE STRING "Linux FF-A user space shim git refspec")
 
-if (DEFINED ENV{LINUX_FFA_USER_SHIM_SOURCE_DIR})
-	set(LINUX_FFA_USER_SHIM_SOURCE_DIR $ENV{LINUX_FFA_USER_SHIM_SOURCE_DIR}
-		CACHE PATH "Location of Linux driver source." FORCE)
-endif()
+	set(LINUX_FFA_USER_SHIM_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/linux_ffa_user_shim-src"
+		CACHE PATH "Location of Linux driver source.")
 
-set(GIT_OPTIONS
-	GIT_REPOSITORY ${LINUX_FFA_USER_SHIM_URL}
-	GIT_TAG ${LINUX_FFA_USER_SHIM_REFSPEC}
-	GIT_SHALLOW FALSE
+	if (DEFINED ENV{LINUX_FFA_USER_SHIM_SOURCE_DIR})
+		set(LINUX_FFA_USER_SHIM_SOURCE_DIR $ENV{LINUX_FFA_USER_SHIM_SOURCE_DIR}
+			CACHE PATH "Location of Linux driver source." FORCE)
+	endif()
+
+	set(GIT_OPTIONS
+		GIT_REPOSITORY ${LINUX_FFA_USER_SHIM_URL}
+		GIT_TAG ${LINUX_FFA_USER_SHIM_REFSPEC}
+		GIT_SHALLOW FALSE
 	)
 	include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
 	LazyFetch_MakeAvailable(
@@ -34,13 +42,14 @@
 		SOURCE_DIR ${LINUX_FFA_USER_SHIM_SOURCE_DIR}
 	)
 
-find_path(LINUX_FFA_USER_SHIM_INCLUDE_DIR
-	NAMES arm_ffa_user.h
-	PATHS ${LINUX_FFA_USER_SHIM_SOURCE_DIR}
-	NO_DEFAULT_PATH
-	REQUIRED
-	DOC "Linux FF-A user space shim include directory"
-)
+	find_path(LINUX_FFA_USER_SHIM_INCLUDE_DIR
+		NAMES arm_ffa_user.h
+		PATHS ${LINUX_FFA_USER_SHIM_SOURCE_DIR}
+		NO_DEFAULT_PATH
+		REQUIRED
+		DOC "Linux FF-A user space shim include directory"
+	)
+endif()
 
 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
 	"${LINUX_FFA_USER_SHIM_INCLUDE_DIR}/arm_ffa_user.h")