MLECO-2970: Moving Profiler out as a CMake target.

Profiler is a stand alone static lib that will depend on
log and hal targets.

Change-Id: Ibbff289c6760982f54ae278d95a054e73db018c8
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 51e21eb..e61e378 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -98,19 +98,19 @@
 # We include the hal target
 add_subdirectory(${SRC_PATH}/hal ${CMAKE_BINARY_DIR}/hal)
 
+# Add the profiler target
+if (NOT DEFINED PROFILER_DIR)
+    set(PROFILER_DIR ${SRC_PATH}/profiler)
+endif ()
+add_subdirectory(${PROFILER_DIR} ${CMAKE_BINARY_DIR}/profiler)
+
 # Include the tensorflow build target
 include(${CMAKE_SCRIPTS_DIR}/tensorflow.cmake)
 
-# Profiler
-if (NOT DEFINED PROFILER_DIR)
-    set(PROFILER_DIR ${SRC_PATH}/application/profiler)
-endif ()
-
 # Include directories for application module:
 set(APPLICATION_INCLUDE_DIRS
     ${SRC_PATH}/application/tensorflow-lite-micro/include
-    ${SRC_PATH}/application/main/include
-    ${PROFILER_DIR}/include)
+    ${SRC_PATH}/application/main/include)
 
 # Source files for application module:
 file(GLOB_RECURSE SRC_APPLICATION
@@ -122,9 +122,6 @@
     "${SRC_PATH}/application/main/**/*.c"
     "${SRC_PATH}/application/tensorflow-lite-micro/**/*.cc"
     "${SRC_PATH}/application/tensorflow-lite-micro/*.cc"
-    "${PROFILER_DIR}/*.cc"
-    "${PROFILER_DIR}/*.cpp"
-    "${PROFILER_DIR}/*.c"
     )
 list(FILTER SRC_APPLICATION EXCLUDE REGEX ".*main\\.c.*$")
 set(SRC_MAIN "${SRC_PATH}/application/main/Main.cc")
@@ -228,9 +225,8 @@
         log
         arm_math
         hal
-        tensorflow-lite-micro
-        $<$<BOOL:${APPLICATION_EXTRA_LIBS}>:${APPLICATION_EXTRA_LIBS}>
-        )
+        profiler
+        tensorflow-lite-micro)
 
     add_executable(${TARGET_NAME} ${SRC_MAIN})
 
diff --git a/scripts/cmake/platforms/native/build_configuration.cmake b/scripts/cmake/platforms/native/build_configuration.cmake
index bf6f980..bc91804 100644
--- a/scripts/cmake/platforms/native/build_configuration.cmake
+++ b/scripts/cmake/platforms/native/build_configuration.cmake
@@ -39,6 +39,7 @@
     target_include_directories(catch2
             INTERFACE
             ${TEST_TPIP_INCLUDE})
+    add_dependencies(catch2 catch2-headers)
 
 endfunction()
 
diff --git a/source/profiler/CMakeLists.txt b/source/profiler/CMakeLists.txt
new file mode 100644
index 0000000..f70e86d
--- /dev/null
+++ b/source/profiler/CMakeLists.txt
@@ -0,0 +1,40 @@
+#----------------------------------------------------------------------------
+#  Copyright (c) 2022 Arm Limited. All rights reserved.
+#  SPDX-License-Identifier: Apache-2.0
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#----------------------------------------------------------------------------
+
+#######################################################
+# Profiling library                                   #
+#######################################################
+
+project(profiler
+        DESCRIPTION "Profiling API for applications."
+        LANGUAGES C CXX)
+
+add_library(profiler STATIC)
+
+target_sources(profiler
+        PRIVATE
+        Profiler.cc)
+
+target_include_directories(profiler PUBLIC include)
+
+# Profiling API depends on the logging interface and the HAL library.
+target_link_libraries(profiler PRIVATE log hal)
+
+message(STATUS "*******************************************************")
+message(STATUS "Library                                : " profiler)
+message(STATUS "CMAKE_SYSTEM_PROCESSOR                 : " ${CMAKE_SYSTEM_PROCESSOR})
+message(STATUS "*******************************************************")
diff --git a/source/application/profiler/Profiler.cc b/source/profiler/Profiler.cc
similarity index 100%
rename from source/application/profiler/Profiler.cc
rename to source/profiler/Profiler.cc
diff --git a/source/application/profiler/include/Profiler.hpp b/source/profiler/include/Profiler.hpp
similarity index 100%
rename from source/application/profiler/include/Profiler.hpp
rename to source/profiler/include/Profiler.hpp