Also added in warning if git submodule update --init is not run.
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")
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)
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)
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)
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()
######################################################################################
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)
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()
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)