aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/vulkan/vulkan-demos/0001-Support-installing-demos-support-out-of-tree-builds.patch
blob: 4addea3bf153798b5af99ba8b47dca6c370fb7e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
From edca667684764cfcc0460e448e834fadf623a887 Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Mon, 3 Jul 2017 14:49:18 +0300
Subject: [PATCH] Support installing demos, support out-of-tree builds

This is especially useful for cross-compile situation where testing
happens on target.

-DRESOURCE_INSTALL_DIR=<path> decides where data is installed (and
where the binaries will load the data from): if it's left empty,
then nothing will be installed and binaries will load the data from
CMAKE_SOURCE_DIR.

Binaries are now correctly built in CMAKE_BINARY_DIR.

Upstream-Status: Submitted [https://github.com/SaschaWillems/Vulkan/pull/352]
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
---
 CMakeLists.txt             | 15 ++++++++++++++-
 base/vulkanexamplebase.cpp |  2 +-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b9886bc..4958fff 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,6 +16,8 @@ include_directories(base)
 OPTION(USE_D2D_WSI "Build the project using Direct to Display swapchain" OFF)
 OPTION(USE_WAYLAND_WSI "Build the project using Wayland swapchain" OFF)
 
+set(RESOURCE_INSTALL_DIR "" CACHE PATH "Path to install resources to (leave empty for running uninstalled)")
+
 # Use FindVulkan module added with CMAKE 3.7
 if (NOT CMAKE_VERSION VERSION_LESS 3.7.0)
 	message(STATUS "Using module to find Vulkan")
@@ -108,6 +110,10 @@ function(buildExample EXAMPLE_NAME)
 		add_executable(${EXAMPLE_NAME} ${MAIN_CPP} ${SOURCE} ${SHADERS})
 		target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
 	endif(WIN32)
+
+	if(RESOURCE_INSTALL_DIR)
+		install(TARGETS ${EXAMPLE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
+	endif()
 endfunction(buildExample)
 
 # Build all examples
@@ -117,6 +123,13 @@ function(buildExamples)
 	endforeach(EXAMPLE)
 endfunction(buildExamples)
 
+if(RESOURCE_INSTALL_DIR)
+	add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${RESOURCE_INSTALL_DIR}/\")
+	install(DIRECTORY data/ DESTINATION ${RESOURCE_INSTALL_DIR}/)
+else()
+	add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${CMAKE_SOURCE_DIR}/data/\")
+endif()
+
 # Compiler specific stuff
 IF(MSVC)
 	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
@@ -128,7 +141,7 @@ ELSE(WIN32)
 	link_libraries(${XCB_LIBRARIES} ${Vulkan_LIBRARY})
 ENDIF(WIN32)
 
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/")
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/")
 
 set(EXAMPLES 
 	bloom
diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp
index 647368a..a0f28a5 100644
--- a/base/vulkanexamplebase.cpp
+++ b/base/vulkanexamplebase.cpp
@@ -84,7 +84,7 @@ const std::string VulkanExampleBase::getAssetPath()
 #if defined(__ANDROID__)
 	return "";
 #else
-	return "./../data/";
+	return VK_EXAMPLE_DATA_DIR;
 #endif
 }
 #endif
-- 
2.13.2