CMake: split out turbo-cov target

Bug: b/145758253
Change-Id: Ifc97d3f833fcf41098ed24aad9cac26f51c28df3
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/43870
Tested-by: Antonio Maiorano <amaiorano@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f818244..ff43352 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -734,18 +734,7 @@
     add_subdirectory(src/Vulkan) # Add vk_swiftshader target
 
     if(SWIFTSHADER_EMIT_COVERAGE)
-        add_executable(turbo-cov ${TESTS_DIR}/regres/cov/turbo-cov/main.cpp)
-        target_link_libraries(turbo-cov llvm-with-cov)
-
-        # Emit a coverage-toolchain.txt file next to the vk_swiftshader_icd.json
-        # file so that regres can locate the LLVM toolchain used to build the
-        # .so file. With this, the correct llvm-cov and llvm-profdata tools
-        # from the same toolchain can be located.
-        get_filename_component(COMPILER_TOOLCHAIN_DIR ${CMAKE_CXX_COMPILER} DIRECTORY)
-        file(GENERATE
-            OUTPUT "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/coverage-toolchain.txt"
-            CONTENT "{\"llvm\": \"${COMPILER_TOOLCHAIN_DIR}\", \"turbo-cov\": \"$<TARGET_FILE:turbo-cov>\"}"
-        )
+        add_subdirectory(${TESTS_DIR}/regres/cov/turbo-cov)
     endif()
 
 endif()
diff --git a/tests/regres/cov/turbo-cov/CMakeLists.txt b/tests/regres/cov/turbo-cov/CMakeLists.txt
new file mode 100644
index 0000000..d17cbaf
--- /dev/null
+++ b/tests/regres/cov/turbo-cov/CMakeLists.txt
@@ -0,0 +1,37 @@
+# Copyright 2020 The SwiftShader Authors. All Rights Reserved.
+#
+# 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.
+
+add_executable(turbo-cov
+    main.cpp
+)
+
+set_target_properties(turbo-cov PROPERTIES
+    FOLDER "Tests"
+    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+)
+
+target_link_libraries(turbo-cov
+    PRIVATE
+        llvm-with-cov
+)
+
+# Emit a coverage-toolchain.txt file next to the vk_swiftshader_icd.json
+# file so that regres can locate the LLVM toolchain used to build the
+# .so file. With this, the correct llvm-cov and llvm-profdata tools
+# from the same toolchain can be located.
+get_filename_component(COMPILER_TOOLCHAIN_DIR ${CMAKE_CXX_COMPILER} DIRECTORY)
+file(GENERATE
+    OUTPUT "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/coverage-toolchain.txt"
+    CONTENT "{\"llvm\": \"${COMPILER_TOOLCHAIN_DIR}\", \"turbo-cov\": \"$<TARGET_FILE:turbo-cov>\"}"
+)