diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2018-05-12 15:58:15 -0600 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2018-05-12 15:58:15 -0600 |
| commit | 78701a08b76c2c68a2709ef129722957d927484c (patch) | |
| tree | 694ffa32ee2f42c7bd772fa3d1e46a2c3a097606 | |
| parent | 6cc6bf529f669f4d2b7855fca8f6e2307b386b61 (diff) | |
| download | usermoji-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.txt | 37 | ||||
| -rw-r--r-- | cube/CMakeLists.txt | 45 | ||||
| -rw-r--r-- | vulkaninfo/CMakeLists.txt | 25 |
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) |
