diff --git a/components/common/trace/include/trace.h b/components/common/trace/include/trace.h
index d9b6c07..4395e41 100644
--- a/components/common/trace/include/trace.h
+++ b/components/common/trace/include/trace.h
@@ -8,6 +8,12 @@
 
 #include "compiler.h"
 
+#ifdef EXPORT_PUBLIC_INTERFACE_TRACE
+#define TRACE_EXPORTED __attribute__((__visibility__("default")))
+#else
+#define TRACE_EXPORTED
+#endif
+
 #define TRACE_LEVEL_NONE	(0)
 #define TRACE_LEVEL_ERROR	(1)
 #define TRACE_LEVEL_INFO	(2)
@@ -30,6 +36,7 @@
 
 extern void (*trace_puts_interface)(const char *str);
 void trace_puts(const char *str);
+TRACE_EXPORTED
 void trace_printf(const char *func, int line, int level, const char *fmt, ...) __printf(4, 5);
 
 #if TRACE_LEVEL >= TRACE_LEVEL_ERROR
diff --git a/deployments/deployment.cmake b/deployments/deployment.cmake
index 66fa31c..5285ead 100644
--- a/deployments/deployment.cmake
+++ b/deployments/deployment.cmake
@@ -62,6 +62,10 @@
   set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type.")
 endif()
 
+if (COVERAGE)
+	set(CMAKE_BUILD_TYPE "DebugCoverage" CACHE STRING "Build type" FORCE)
+endif()
+
 # List of supported build types. Needs to be in alignment with the toolchain file
 set(TS_SUPPORTED_BUILD_TYPES "DEBUG" "MINSIZEREL" "MINSIZWITHDEBINFO" "RELEASE" "RELWITHDEBINFO" "DEBUGCOVERAGE" CACHE
   STRING "List of supported build types.")
@@ -76,11 +80,8 @@
 endif()
 
 # Set postfix of libraries according the build type.
-if (UC_CMAKE_BUILD_TYPE STREQUAL "DEBUGCOVERAGE")
-	set(CMAKE_${UC_CMAKE_BUILD_TYPE}_POSTFIX "c")
-elseif(UC_CMAKE_BUILD_TYPE STREQUAL "DEBUG")
-	set(CMAKE_${UC_CMAKE_BUILD_TYPE}_POSTFIX "d")
-endif()
+set(CMAKE_DEBUGCOVERAGE_POSTFIX "c")
+set(CMAKE_DEBUG_POSTFIX "d")
 
 # Default protocol UUID used by TS SPs.
 set(TS_RPC_UUID_CANON "bdcd76d7-825e-4751-963b-86d4f84943ac" CACHE STRING "Trusted Services PRC (protocol) UUID.")
diff --git a/deployments/libts/arm-linux/CMakeLists.txt b/deployments/libts/arm-linux/CMakeLists.txt
index 1c190a8..5416656 100644
--- a/deployments/libts/arm-linux/CMakeLists.txt
+++ b/deployments/libts/arm-linux/CMakeLists.txt
@@ -24,6 +24,13 @@
 set(MM_COMM_BUFFER_SIZE "8*4*1024" CACHE STRING "Size of the MM communicate buffer in bytes")
 
 #-------------------------------------------------------------------------------
+#  For user-specific tracing set to TRACE_LEVEL_NONE and implement:
+#  void trace_puts(const char *str)
+#-------------------------------------------------------------------------------
+
+set(TRACE_PREFIX "LIBTS" CACHE STRING "Trace prefix")
+set(TRACE_LEVEL "TRACE_LEVEL_DEBUG" CACHE STRING "Trace level")
+#-------------------------------------------------------------------------------
 #  Components that are specific to deployment in the arm-linux environment.
 #
 #-------------------------------------------------------------------------------
diff --git a/deployments/libts/libts-import.cmake b/deployments/libts/libts-import.cmake
index eb3afc5..d0b728d 100644
--- a/deployments/libts/libts-import.cmake
+++ b/deployments/libts/libts-import.cmake
@@ -16,6 +16,10 @@
 version_semver_read(FILE "${CMAKE_CURRENT_LIST_DIR}/version.txt" MAJOR _major MINOR _minor PATCH _patch)
 set(_verstring "${_major}.${_minor}.${_patch}")
 
+if (COVERAGE)
+	set(LIBTS_BUILD_TYPE "DebugCoverage" CACHE STRING "Build type." FORCE)
+endif()
+
 find_package(libts "${_verstring}" QUIET PATHS ${CMAKE_CURRENT_BINARY_DIR}/libts_install/${TS_ENV}/lib/cmake/libts)
 if(NOT libts_FOUND)
 	if (CFG_FORCE_PREBUILT_LIBTS)
diff --git a/deployments/libts/libts.cmake b/deployments/libts/libts.cmake
index 0f1a022..20c3c0e 100644
--- a/deployments/libts/libts.cmake
+++ b/deployments/libts/libts.cmake
@@ -24,6 +24,10 @@
 
 add_library(libts::ts ALIAS ts)
 
+if (COVERAGE)
+	set(LIBTS_BUILD_TYPE "DebugCoverage" CACHE STRING "Build type." FORCE)
+endif()
+
 #-------------------------------------------------------------------------------
 #  Components that are common across all deployments
 #
@@ -32,6 +36,8 @@
 	TARGET "ts"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
+		"environments/${TS_ENV}"
+		"components/common/trace"
 		"components/rpc/common/caller"
 		"components/rpc/common/interface"
 		"components/service/locator"
@@ -45,6 +51,7 @@
 
 # Enable exporting interface symbols for library public interface
 target_compile_definitions(ts PRIVATE
+	EXPORT_PUBLIC_INTERFACE_TRACE
 	EXPORT_PUBLIC_INTERFACE_RPC_CALLER
 	EXPORT_PUBLIC_INTERFACE_RPC_SERVICE
 	EXPORT_PUBLIC_INTERFACE_SERVICE_LOCATOR
diff --git a/deployments/libts/linux-pc/CMakeLists.txt b/deployments/libts/linux-pc/CMakeLists.txt
index 300f77d..80ef7e4 100644
--- a/deployments/libts/linux-pc/CMakeLists.txt
+++ b/deployments/libts/linux-pc/CMakeLists.txt
@@ -22,6 +22,13 @@
 target_include_directories(ts PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
 
 #-------------------------------------------------------------------------------
+#  For user-specific tracing set to TRACE_LEVEL_NONE and implement:
+#  void trace_puts(const char *str)
+#-------------------------------------------------------------------------------
+
+set(TRACE_PREFIX "LIBTS" CACHE STRING "Trace prefix")
+set(TRACE_LEVEL "TRACE_LEVEL_DEBUG" CACHE STRING "Trace level")
+#-------------------------------------------------------------------------------
 #  External project source-level dependencies
 #
 #-------------------------------------------------------------------------------
@@ -63,7 +70,6 @@
 		"components/common/uuid"
 		"components/common/endian"
 		"components/common/utils"
-		"components/common/trace"
 		"components/common/crc32"
 		"components/common/mbedtls"
 		"components/config/ramstore"
@@ -161,14 +167,6 @@
 )
 
 #-------------------------------------------------------------------------------
-#  Configure added components
-#
-#-------------------------------------------------------------------------------
-# Force trace level to TRACE_LEVEL_NONE to disable trace messages. This is
-# needed till proper trace enablement for the linux-pc environment is done.
-target_compile_definitions(ts PUBLIC TRACE_LEVEL=0)
-
-#-------------------------------------------------------------------------------
 #  Extend with components that are common across all deployments of
 #  libts
 #
diff --git a/environments/arm-linux/component.cmake b/environments/arm-linux/component.cmake
new file mode 100644
index 0000000..97229bd
--- /dev/null
+++ b/environments/arm-linux/component.cmake
@@ -0,0 +1,25 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+if (NOT DEFINED TGT)
+	message(FATAL_ERROR "mandatory parameter TGT is not defined.")
+endif()
+
+if (NOT DEFINED TRACE_PREFIX)
+	message(FATAL_ERROR "mandatory parameter TRACE_PREFIX is not defined.")
+endif()
+
+# Default to trace output disabled
+set(TRACE_LEVEL "TRACE_LEVEL_NONE" CACHE STRING "Trace level")
+
+target_compile_definitions(${TGT} PRIVATE
+	TRACE_LEVEL=${TRACE_LEVEL}
+	TRACE_PREFIX="${TRACE_PREFIX}"
+)
+
+target_sources(${TGT} PRIVATE
+	"${CMAKE_CURRENT_LIST_DIR}/posix_trace.c"
+	)
diff --git a/environments/arm-linux/posix_trace.c b/environments/arm-linux/posix_trace.c
new file mode 100644
index 0000000..f219b6d
--- /dev/null
+++ b/environments/arm-linux/posix_trace.c
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
+ */
+
+#include <stdio.h>
+
+#include "trace.h"
+
+#if TRACE_LEVEL >= TRACE_LEVEL_ERROR
+
+void trace_puts(const char *str)
+{
+	puts(str);
+}
+
+#endif /* TRACE_LEVEL >= TRACE_LEVEL_ERROR */
