forked from brl/citadel
86 lines
2.8 KiB
Diff
86 lines
2.8 KiB
Diff
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
|
|
|