cmake: Add LOADER_REPO_ROOT to repo
authorMark Lobodzinski <mark@lunarg.com>
Sat, 12 May 2018 21:58:15 +0000 (15:58 -0600)
committerMark Lobodzinski <mark@lunarg.com>
Sat, 12 May 2018 21:58:15 +0000 (15:58 -0600)
Also added in warning if git submodule update --init is not run.

CMakeLists.txt
cube/CMakeLists.txt
vulkaninfo/CMakeLists.txt

index 6ecf42a..5f6f2ae 100644 (file)
@@ -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)
index 864b384..58bf965 100644 (file)
@@ -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()
index 74100ad..b13c153 100644 (file)
@@ -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)