Initial cmake support for vulkan target
Change-Id: I34b47a5327055f804951793d9a8a58f771d9b792
Bug: b/116336664
Reviewed-on: https://swiftshader-review.googlesource.com/20988
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Chris Forbes <chrisforbes@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9576681..aa05ee2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -52,6 +52,7 @@
endif()
option(BUILD_GLESv2 "Build the OpenGL ES 2 library" 1)
option(BUILD_GLES_CM "Build the OpenGL ES 1.1 library" 1)
+option(BUILD_VULKAN "Build the Vulkan library" 1)
option(USE_GROUP_SOURCES "Group the source files in a folder tree for Visual Studio" 1)
@@ -161,6 +162,7 @@
set(SOURCE_DIR ${CMAKE_SOURCE_DIR}/src)
set(OPENGL_DIR ${SOURCE_DIR}/OpenGL)
set(OPENGL_COMPILER_DIR ${OPENGL_DIR}/compiler)
+set(VULKAN_DIR ${SOURCE_DIR}/Vulkan)
if(SWIFTSHADER_LLVM_VERSION EQUAL 3)
set(LLVM_DIR ${CMAKE_SOURCE_DIR}/third_party/LLVM)
else()
@@ -1767,6 +1769,12 @@
${COMMON_INCLUDE_DIR}
)
+set(VULKAN_INCLUDE_DIR
+ ${VULKAN_DIR}
+ ${COMMON_INCLUDE_DIR}
+)
+
+
###########################################################
# File Lists
###########################################################
@@ -1864,6 +1872,12 @@
)
list(REMOVE_ITEM OPENGL_COMPILER_LIST ${OPENGL_COMPILER_OS_SPECIFIC_LIST})
+file(GLOB_RECURSE VULKAN_LIST
+ ${VULKAN_DIR}/*.cpp
+ ${VULKAN_DIR}/*.h
+ ${CMAKE_SOURCE_DIR}/include/vulkan/*.h}
+)
+
###########################################################
# Append OS specific files to lists
###########################################################
@@ -2037,6 +2051,26 @@
)
endif()
+if(BUILD_VULKAN)
+ add_library(libvk_swiftshader SHARED ${VULKAN_LIST})
+ set_target_properties(libvk_swiftshader PROPERTIES
+ INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}"
+ FOLDER "Vulkan"
+ COMPILE_DEFINITIONS "NO_SANITIZE_FUNCTION=;"
+ PREFIX ""
+ )
+ set_shared_library_export_map(libvk_swiftshader ${SOURCE_DIR}/Vulkan)
+ target_link_libraries(libvk_swiftshader ${OS_LIBS})
+ add_custom_command(
+ TARGET libvk_swiftshader
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libvk_swiftshader>/translator
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> $<TARGET_FILE_DIR:libvk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
+ )
+endif()
+
###########################################################
# Sample programs
###########################################################
diff --git a/src/Vulkan/VkDebug.cpp b/src/Vulkan/VkDebug.cpp
index b09abb6..b82ef80 100644
--- a/src/Vulkan/VkDebug.cpp
+++ b/src/Vulkan/VkDebug.cpp
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "vkdebug.hpp"
+#include "VkDebug.hpp"
#include <stdarg.h>
@@ -35,4 +35,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index ff86d67..2e15309 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -15,7 +15,7 @@
#include "VkDebug.hpp"
#include "VkGetProcAddress.h"
#include <vulkan/vulkan.h>
-#include <string>
+#include <cstring>
extern "C"
{
@@ -1280,4 +1280,4 @@
UNIMPLEMENTED();
}
-}
\ No newline at end of file
+}
diff --git a/src/Vulkan/libvk_swiftshader.lds b/src/Vulkan/libvk_swiftshader.lds
new file mode 100644
index 0000000..3de3bc5
--- /dev/null
+++ b/src/Vulkan/libvk_swiftshader.lds
@@ -0,0 +1,13 @@
+{
+global:
+ # Loader-ICD interface functions
+ vk_icdGetInstanceProcAddr;
+
+ # Type-strings and type-infos required by sanitizers
+ _ZTS*;
+ _ZTI*;
+
+local:
+ *;
+};
+
diff --git a/src/Vulkan/main.cpp b/src/Vulkan/main.cpp
index cdcbf39..80b6ee0 100644
--- a/src/Vulkan/main.cpp
+++ b/src/Vulkan/main.cpp
@@ -14,10 +14,10 @@
// main.cpp: DLL entry point.
+#if defined(_WIN32)
#include "resource.h"
#include <windows.h>
-#if defined(_WIN32)
#ifdef DEBUGGER_WAIT_DIALOG
static INT_PTR CALLBACK DebuggerWaitDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
@@ -75,4 +75,4 @@
return TRUE;
}
-#endif
\ No newline at end of file
+#endif