aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2018-05-12 15:58:15 -0600
committerMark Lobodzinski <mark@lunarg.com>2018-05-12 15:58:15 -0600
commit78701a08b76c2c68a2709ef129722957d927484c (patch)
tree694ffa32ee2f42c7bd772fa3d1e46a2c3a097606
parent6cc6bf529f669f4d2b7855fca8f6e2307b386b61 (diff)
downloadusermoji-78701a08b76c2c68a2709ef129722957d927484c.tar.xz
cmake: Add LOADER_REPO_ROOT to repo
Also added in warning if git submodule update --init is not run.
-rw-r--r--CMakeLists.txt37
-rw-r--r--cube/CMakeLists.txt45
-rw-r--r--vulkaninfo/CMakeLists.txt25
3 files changed, 89 insertions, 18 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6ecf42a2..5f6f2aed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,6 +29,11 @@ endif()
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(TOOLS_TARGET_FOLDER lvl_cmake_targets)
+# Output warning if vulkan headers submodule contents are not present
+if (NOT EXISTS "${PROJECT_SOURCE_DIR}/Vulkan-Headers/include/vulkan/vulkan_core.h")
+ message(FATAL_ERROR "Please run 'git submodule update --init' before running cmake")
+endif()
+
# Header file for CMake settings
include_directories("${PROJECT_SOURCE_DIR}/Vulkan-Headers/include")
@@ -54,6 +59,38 @@ if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
endif()
endif()
+if(NOT WIN32)
+ set (BUILDTGT_DIR build)
+ set (BINDATA_DIR Bin)
+ set (LIBSOURCE_DIR Lib)
+else()
+ # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory.
+ # 32-bit target data goes in build32, and 64-bit target data goes into build. So, include/link the
+ # appropriate data at build time.
+ if (DISABLE_BUILDTGT_DIR_DECORATION)
+ set (BUILDTGT_DIR "")
+ set (BINDATA_DIR "")
+ set (LIBSOURCE_DIR "")
+ elseif (CMAKE_CL_64)
+ set (BUILDTGT_DIR build)
+ set (BINDATA_DIR Bin)
+ set (LIBSOURCE_DIR Lib)
+ else()
+ set (BUILDTGT_DIR build32)
+ set (BINDATA_DIR Bin32)
+ set (LIBSOURCE_DIR Lib32)
+ endif()
+ if(DISABLE_BUILD_PATH_DECORATION)
+ set (DEBUG_DECORATION "")
+ set (RELEASE_DECORATION "")
+ else()
+ set (DEBUG_DECORATION "Debug")
+ set (RELEASE_DECORATION "Release")
+ endif()
+
+endif()
+
+
option(BUILD_CUBE "Build cube" ON)
option(BUILD_VULKANINFO "Build vulkaninfo" ON)
option(BUILD_ICD "Build icd" ON)
diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt
index 864b384a..58bf9654 100644
--- a/cube/CMakeLists.txt
+++ b/cube/CMakeLists.txt
@@ -113,23 +113,34 @@ file(COPY ${TEXTURES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-if(WIN32)
- set (LIBRARIES "Vulkan::Vulkan")
-elseif(UNIX)
- set (LIBRARIES "Vulkan::Vulkan")
+if(APPLE)
+ # TODO: Set libs for apple
else()
-endif()
+ if(DEFINED LOADER_REPO_ROOT)
+ message(STATUS "Using user-supplied path to locate Vulkan")
+ if(WIN32)
+ set (LOADER_SEARCH_PATHS
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${DEBUG_DECORATION}"
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${RELEASE_DECORATION}"
+ )
+ elseif(UNIX)
+ set (LOADER_SEARCH_PATHS
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader"
+ )
+ endif()
-if(WIN32)
- # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory.
- # 32-bit target data goes in build32, and 64-bit target data goes into build. So, include/link the
- # appropriate data at build time.
- if (CMAKE_CL_64)
- set (BUILDTGT_DIR build)
- else ()
- set (BUILDTGT_DIR build32)
+ find_library(LIBVK NAMES vulkan vulkan-1
+ HINTS ${LOADER_SEARCH_PATHS}
+ )
+ message(STATUS "Found Vulkan: ${LIBVK}")
+ else()
+ message(STATUS "Using find_package to locate Vulkan")
+ find_package(Vulkan)
+ set (LIBVK "Vulkan::Vulkan")
endif()
+endif()
+if(WIN32)
# Use static MSVCRT libraries
foreach(configuration in CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO)
@@ -181,7 +192,7 @@ if(APPLE)
elseif(NOT WIN32)
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
add_executable(cube cube.c ${PROJECT_SOURCE_DIR}/cube/cube.vert ${PROJECT_SOURCE_DIR}/cube/cube.frag cube.vert.inc cube.frag.inc)
- target_link_libraries(cube ${LIBRARIES})
+ target_link_libraries(cube ${LIBVK})
endif()
else()
if (CMAKE_CL_64)
@@ -191,7 +202,7 @@ else()
endif()
add_executable(cube WIN32 cube.c ${PROJECT_SOURCE_DIR}/cube/cube.vert ${PROJECT_SOURCE_DIR}/cube/cube.frag cube.vert.inc cube.frag.inc)
- target_link_libraries(cube ${LIBRARIES})
+ target_link_libraries(cube ${LIBVK})
endif()
######################################################################################
@@ -202,7 +213,7 @@ if(APPLE)
elseif(NOT WIN32)
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
add_executable(cubepp cube.cpp ${PROJECT_SOURCE_DIR}/cube/cube.vert ${PROJECT_SOURCE_DIR}/cube/cube.frag cube.vert.inc cube.frag.inc)
- target_link_libraries(cubepp ${LIBRARIES})
+ target_link_libraries(cubepp ${LIBVK})
endif()
else()
if (CMAKE_CL_64)
@@ -212,5 +223,5 @@ else()
endif()
add_executable(cubepp WIN32 cube.cpp ${PROJECT_SOURCE_DIR}/cube/cube.vert ${PROJECT_SOURCE_DIR}/cube/cube.frag cube.vert.inc cube.frag.inc)
- target_link_libraries(cubepp ${LIBRARIES})
+ target_link_libraries(cubepp ${LIBVK})
endif()
diff --git a/vulkaninfo/CMakeLists.txt b/vulkaninfo/CMakeLists.txt
index 74100ad5..b13c1537 100644
--- a/vulkaninfo/CMakeLists.txt
+++ b/vulkaninfo/CMakeLists.txt
@@ -15,7 +15,30 @@ if(APPLE)
target_link_libraries(${API_LOWERCASE}info ${LIBRARIES} "-framework AppKit -framework QuartzCore")
target_include_directories(${API_LOWERCASE}info PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo)
else()
- target_link_libraries(vulkaninfo Vulkan::Vulkan)
+ if(DEFINED LOADER_REPO_ROOT)
+ message(STATUS "Using user-supplied path to locate Vulkan")
+ if(WIN32)
+ set (LOADER_SEARCH_PATHS
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${DEBUG_DECORATION}"
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${RELEASE_DECORATION}"
+ )
+ elseif(UNIX)
+ set (LOADER_SEARCH_PATHS
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader"
+ )
+ endif()
+
+ find_library(LIBVK NAMES vulkan vulkan-1
+ HINTS ${LOADER_SEARCH_PATHS}
+ )
+ message(STATUS "Found Vulkan: ${LIBVK}")
+ target_link_libraries(vulkaninfo ${LIBVK})
+ else()
+ message(STATUS "Using find_package to locate Vulkan")
+ find_package(Vulkan)
+ set (LIBVK "Vulkan::Vulkan")
+ target_link_libraries(vulkaninfo Vulkan::Vulkan)
+ endif()
endif()
if(APPLE)