Add HTTP based RPC support

To support test access to a DUT from a host PC, an RPC caller
is added that uses an HTTP PUT to carry RPC call requests,
handled by a REST API server running on the DUT. The
implementation uses libcurl which must be installed on the
host machine.

Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: I46a2720ce6281df0cb0de062e14e9090b4dcaaab
diff --git a/deployments/ts-fw-test/ts-fw-test.cmake b/deployments/ts-fw-test/ts-fw-test.cmake
new file mode 100644
index 0000000..c4ecd31
--- /dev/null
+++ b/deployments/ts-fw-test/ts-fw-test.cmake
@@ -0,0 +1,64 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+#  The base build file shared between deployments of 'ts-fw-test'. Used for
+#  testing the fimware running on a separate DUT, exercised from test cases
+#  that run on a host machine. This test configuration is suitable for test
+#  scenarios that involve disruptive operations such as device restarts that
+#  preclude
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+#  Components that are common across all deployments
+#
+#-------------------------------------------------------------------------------
+add_components(
+	TARGET "ts-fw-test"
+	BASE_DIR ${TS_ROOT}
+	COMPONENTS
+		"components/common/endian"
+		"components/common/trace"
+		"components/common/utils"
+		"components/common/uuid"
+		"components/rpc/common/interface"
+		"components/rpc/common/caller"
+		"components/rpc/http/caller"
+		"components/rpc/http/caller/test"
+		"components/service/common/client"
+		"components/service/common/include"
+		"components/service/locator"
+		"components/service/locator/interface"
+		"components/service/locator/remote/restapi"
+		"components/service/discovery/client"
+		"components/service/fwu/test/fwu_client/remote"
+		"components/service/fwu/test/fwu_dut"
+		"components/service/fwu/test/fwu_dut/proxy"
+		"components/service/fwu/test/fwu_dut_factory/remote"
+		"components/service/fwu/test/image_directory_checker"
+		"components/service/fwu/test/metadata_checker"
+		"components/service/fwu/test/metadata_fetcher/client"
+)
+
+#-------------------------------------------------------------------------------
+#  Installed package dependencies
+#
+#-------------------------------------------------------------------------------
+
+# Native CURL headers and libraries needed
+find_package(CURL REQUIRED)
+target_include_directories(ts-fw-test PRIVATE ${CURL_INCLUDE_DIR})
+target_link_libraries(ts-fw-test ${CURL_LIBRARIES})
+
+#-------------------------------------------------------------------------------
+#  Define install content.
+#
+#-------------------------------------------------------------------------------
+if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+	set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
+endif()
+install(TARGETS ts-fw-test RUNTIME DESTINATION ${TS_ENV}/bin)