Commit afb4ebda by Ben Clayton

CMakeLists: Add CMake rules for Vulkan debugger

`ENABLE_VULKAN_DEBUGGER` is the new option to enable building of the Vulkan debugger, which defaults to off. `cppdap` is a new library that implements the debugger protocol. Added a stub .cpp file to try and detect any build systems that are recursively globbing into the new src/Vulkan/Debug directory. Actual debugger implementation will come in future changes. Bug: b/145351270 Change-Id: I48619f1d8352c0525c8adbaa4bc3f2373a237d61 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38890 Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAntonio Maiorano <amaiorano@google.com> Tested-by: 's avatarBen Clayton <bclayton@google.com>
parent d1a1e68f
......@@ -106,8 +106,10 @@ option(REACTOR_EMIT_DEBUG_INFO "Emit debug info for JIT functions" 0)
option(REACTOR_EMIT_PRINT_LOCATION "Emit printing of location info for JIT functions" 0)
option(REACTOR_VERIFY_LLVM_IR "Check reactor-generated LLVM IR is valid even in release builds" 0)
option(LESS_DEBUG_INFO "Generate less debug info to reduce file size" 0)
option(ENABLE_VULKAN_DEBUGGER "Enable vulkan debugger support" 0)
set(BUILD_MARL ${BUILD_VULKAN})
set(BUILD_CPPDAP ${BUILD_VULKAN} AND ${ENABLE_VULKAN_DEBUGGER})
set(DEFAULT_REACTOR_BACKEND "LLVM")
......@@ -271,16 +273,20 @@ set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
set(OPENGL_DIR ${SOURCE_DIR}/OpenGL)
set(OPENGL_COMPILER_DIR ${OPENGL_DIR}/compiler)
set(VULKAN_DIR ${SOURCE_DIR}/Vulkan)
set(LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/llvm)
set(LLVM_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/configs)
set(LIBBACKTRACE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src)
set(LIBBACKTRACE_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/config)
set(LIBBACKTRACE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src)
set(MARL_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/marl/include)
set(SUBZERO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/subzero)
set(SUBZERO_LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-subzero)
set(THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party)
set(LLVM_DIR ${THIRD_PARTY_DIR}/llvm-7.0/llvm)
set(LLVM_CONFIG_DIR ${THIRD_PARTY_DIR}/llvm-7.0/configs)
set(LIBBACKTRACE_DIR ${THIRD_PARTY_DIR}/libbacktrace/src)
set(LIBBACKTRACE_CONFIG_DIR ${THIRD_PARTY_DIR}/libbacktrace/config)
set(LIBBACKTRACE_INCLUDE_DIR ${THIRD_PARTY_DIR}/libbacktrace/src)
set(MARL_INCLUDE_DIR ${THIRD_PARTY_DIR}/marl/include)
set(CPPDAP_DIR ${THIRD_PARTY_DIR}/cppdap)
set(CPPDAP_INCLUDE_DIR ${CPPDAP_DIR}/include)
set(JSON_INCLUDE_DIR ${THIRD_PARTY_DIR}/json/include)
set(SUBZERO_DIR ${THIRD_PARTY_DIR}/subzero)
set(SUBZERO_LLVM_DIR ${THIRD_PARTY_DIR}/llvm-subzero)
set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
set(HELLO2_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2)
set(HELLO2_DIR ${THIRD_PARTY_DIR}/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2)
###########################################################
# Compile flags
......@@ -1610,6 +1616,7 @@ set(OPENGL_INCLUDE_DIR
set(VULKAN_INCLUDE_DIR
${COMMON_INCLUDE_DIR}
${MARL_INCLUDE_DIR}
${CPPDAP_INCLUDE_DIR}
)
###########################################################
......@@ -1742,7 +1749,7 @@ file(GLOB_RECURSE OPENGL_COMPILER_OS_SPECIFIC_LIST
)
list(REMOVE_ITEM OPENGL_COMPILER_LIST ${OPENGL_COMPILER_OS_SPECIFIC_LIST})
file(GLOB_RECURSE VULKAN_LIST
file(GLOB VULKAN_LIST
${VULKAN_DIR}/*.cpp
${VULKAN_DIR}/*.h
${VULKAN_DIR}/*.hpp
......@@ -1775,7 +1782,17 @@ file(GLOB_RECURSE VULKAN_LIST
${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan/*.h}
)
if (LINUX OR ANDROID)
if(ENABLE_VULKAN_DEBUGGER)
file(GLOB_RECURSE VULKAN_DEBUG_LIST
${VULKAN_DIR}/Debug/*.cpp
${VULKAN_DIR}/Debug/*.h
${VULKAN_DIR}/Debug/*.hpp
)
list(APPEND VULKAN_LIST ${VULKAN_DEBUG_LIST})
list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_VK_DEBUGGER")
endif(ENABLE_VULKAN_DEBUGGER)
if(LINUX OR ANDROID)
list(APPEND VULKAN_LIST
${SOURCE_DIR}/System/Linux/MemFd.cpp
${SOURCE_DIR}/System/Linux/MemFd.hpp)
......@@ -2027,13 +2044,19 @@ if(BUILD_GLES_CM)
endif()
if(BUILD_MARL)
set(MARL_THIRD_PARTY_DIR ${THIRD_PARTY_DIR})
add_subdirectory(third_party/marl)
endif(BUILD_MARL)
if(BUILD_CPPDAP)
set(CPPDAP_THIRD_PARTY_DIR ${THIRD_PARTY_DIR})
add_subdirectory(${CPPDAP_DIR})
endif(BUILD_CPPDAP)
if(BUILD_VULKAN)
if (NOT TARGET SPIRV-Tools)
# This variable is also used by SPIRV-Tools to locate SPIRV-Headers
set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Headers")
set(SPIRV-Headers_SOURCE_DIR "${THIRD_PARTY_DIR}/SPIRV-Headers")
list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
add_subdirectory(third_party/SPIRV-Tools)
......@@ -2066,7 +2089,13 @@ if(BUILD_VULKAN)
endif()
set_shared_library_export_map(vk_swiftshader ${SOURCE_DIR}/Vulkan)
target_link_libraries(vk_swiftshader ${Reactor} marl ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
set(VK_SWIFTSHADER_LIBS ${Reactor} marl ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
if(ENABLE_VULKAN_DEBUGGER)
list(APPEND VK_SWIFTSHADER_LIBS cppdap)
endif(ENABLE_VULKAN_DEBUGGER)
target_link_libraries(vk_swiftshader ${VK_SWIFTSHADER_LIBS})
add_custom_command(
TARGET vk_swiftshader
POST_BUILD
......@@ -2136,12 +2165,12 @@ endif()
if(BUILD_TESTS)
set(REACTOR_UNIT_TESTS_LIST
${SOURCE_DIR}/Reactor/ReactorUnitTests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
)
set(REACTOR_UNIT_TESTS_INCLUDE_DIR
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
${THIRD_PARTY_DIR}/googletest/googletest/include
${THIRD_PARTY_DIR}/googletest/googletest/
)
add_executable(ReactorUnitTests ${REACTOR_UNIT_TESTS_LIST})
......@@ -2162,13 +2191,13 @@ if(BUILD_TESTS)
set(GLES_UNITTESTS_LIST
${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/unittests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
)
set(GLES_UNITTESTS_INCLUDE_DIR
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
${THIRD_PARTY_DIR}/googletest/googletest/include/
${THIRD_PARTY_DIR}/googletest/googlemock/include/
${THIRD_PARTY_DIR}/googletest/googletest/
${CMAKE_CURRENT_SOURCE_DIR}/include/
)
......@@ -2191,13 +2220,13 @@ if(BUILD_TESTS)
set(MATH_UNITTESTS_LIST
${CMAKE_CURRENT_SOURCE_DIR}/tests/MathUnitTests/main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/MathUnitTests/unittests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
)
set(MATH_UNITTESTS_INCLUDE_DIR
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
${THIRD_PARTY_DIR}/googletest/googletest/include/
${THIRD_PARTY_DIR}/googletest/googlemock/include/
${THIRD_PARTY_DIR}/googletest/googletest/
${CMAKE_CURRENT_SOURCE_DIR}/src/
)
......@@ -2219,14 +2248,14 @@ if(BUILD_TESTS AND BUILD_VULKAN)
${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Driver.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/unittests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
)
set(VK_UNITTESTS_INCLUDE_DIR
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Tools/include
${THIRD_PARTY_DIR}/googletest/googletest/include/
${THIRD_PARTY_DIR}/googletest/googlemock/include/
${THIRD_PARTY_DIR}/googletest/googletest/
${THIRD_PARTY_DIR}/SPIRV-Tools/include
${CMAKE_CURRENT_SOURCE_DIR}/include/
)
......
// Copyright 2019 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.
#ifndef ENABLE_VK_DEBUGGER
#error "Source files in {SwiftShader}/src/Vulkan/Debug should not be built unless ENABLE_VK_DEBUGGER is defined"
#endif // ENABLE_VK_DEBUGGER
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment