Advertisement
Guest User

Untitled

a guest
Jun 19th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 9.27 KB | None | 0 0
  1. cmake_minimum_required(VERSION 2.8.11)
  2. project (VULKAN_SAMPLES)
  3. # set (CMAKE_VERBOSE_MAKEFILE 1)
  4. set(API_NAME "Vulkan" CACHE STRING "API name to use when building")
  5. string(TOLOWER ${API_NAME} API_LOWERCASE)
  6.  
  7. if(EXISTS "${CMAKE_SOURCE_DIR}/../x86_64/include")
  8.     set(SDK_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/../x86_64/include")
  9.     message("SDK_INCLUDE_PATH = ${SDK_INCLUDE_PATH}")
  10. endif()
  11.  
  12. if(EXISTS "${CMAKE_SOURCE_DIR}/../x86_64/lib")
  13.     set(SDK_LIBRARY_PATH "${CMAKE_SOURCE_DIR}/../x86_64/lib")
  14.     message("SDK_LIBRARY_PATH = ${SDK_LIBRARY_PATH}")
  15. endif()
  16.  
  17. # The MAJOR number of the version we're building, used in naming
  18. # vulkan-<major>.dll (and other files).
  19. set(MAJOR "1")
  20.  
  21. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
  22.  
  23. if(NOT WIN32)
  24.     include(FindPkgConfig)
  25. endif()
  26.  
  27. set (CMAKE_INSTALL_PREFIX "")
  28.  
  29. set (UTILS_NAME vsamputils)
  30.  
  31. if(NOT WIN32)
  32.     find_package(XCB REQUIRED)
  33.     set (BUILDTGT_DIR build)
  34.     set (BINDATA_DIR x86_64/bin)
  35.     set (LIBSOURCE_DIR Lib)
  36. else()
  37.     # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory.
  38.     # 32-bit target data goes in build32, and 64-bit target data goes into build.  So, include/link the
  39.     # appropriate data at build time.
  40.     if (CMAKE_CL_64)
  41.         set (BUILDTGT_DIR build)
  42.         set (BINDATA_DIR Bin)
  43.         set (LIBSOURCE_DIR Lib)
  44.     else()
  45.         set (BUILDTGT_DIR build32)
  46.         set (BINDATA_DIR Bin32)
  47.         set (LIBSOURCE_DIR Lib32)
  48.     endif()
  49. endif()
  50.  
  51. if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
  52.     set(COMMON_COMPILE_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
  53.     set(COMMON_COMPILE_FLAGS "${COMMON_COMPILE_FLAGS} -fno-strict-aliasing -fno-builtin-memcmp")
  54.     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 ${COMMON_COMPILE_FLAGS}")
  55.     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILE_FLAGS} -std=c++11")
  56.     if (UNIX)
  57.         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
  58.         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
  59.     endif()
  60. endif()
  61.  
  62. find_program(GLSLANG_VALIDATOR NAMES glslangValidator
  63.              HINTS "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/install/bin"
  64.                    "${PROJECT_SOURCE_DIR}/../${BINDATA_DIR}" )
  65.  
  66. find_path(GLSLANG_SPIRV_INCLUDE_DIR SPIRV/spirv.hpp HINTS "${CMAKE_SOURCE_DIR}/../source/glslang/"
  67.                                                           "${CMAKE_SOURCE_DIR}/../glslang"
  68.                                                           DOC "Path to SPIRV/spirv.hpp")
  69. find_path(SPIRV_TOOLS_INCLUDE_DIR spirv-tools/libspirv.h HINTS "${CMAKE_SOURCE_DIR}/../spirv-tools/include"
  70.                                                                "${CMAKE_SOURCE_DIR}/../source/spirv-tools/include"
  71.                                                                "${CMAKE_SOURCE_DIR}/../spirv-tools/external/include"
  72.                                                                "${CMAKE_SOURCE_DIR}/../source/spirv-tools/external/include"
  73.                                                                DOC "Path to spirv-tools/libspirv.h")
  74.  
  75. if (WIN32)
  76.     set (GLSLANG_SEARCH_PATH "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/glslang/Release"
  77.                              "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/glslang/OSDependent/Windows/Release"
  78.                              "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/hlsl/Release"
  79.                              "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/OGLCompilersDLL/Release"
  80.                              "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/SPIRV/Release" )
  81.     set (SPIRV_TOOLS_SEARCH_PATH "${CMAKE_SOURCE_DIR}/../spirv-tools/${BUILDTGT_DIR}/source/Release")
  82. else()
  83.     set (GLSLANG_SEARCH_PATH "${CMAKE_SOURCE_DIR}/../glslang/build/install/lib" "${CMAKE_SOURCE_DIR}/../x86_64/lib/glslang" )
  84.     set (SPIRV_TOOLS_SEARCH_PATH "${CMAKE_SOURCE_DIR}/../spirv-tools/build" "${CMAKE_SOURCE_DIR}/../x86_64/lib/spirv-tools" )
  85. endif()
  86.  
  87. find_library(GLSLANG_LIB NAMES glslang
  88.              HINTS ${GLSLANG_SEARCH_PATH} )
  89.  
  90. find_library(OGLCompiler_LIB NAMES OGLCompiler
  91.              HINTS ${GLSLANG_SEARCH_PATH} )
  92.  
  93. find_library(OSDependent_LIB NAMES OSDependent
  94.              HINTS ${GLSLANG_SEARCH_PATH} )
  95.  
  96. find_library(HLSL_LIB NAMES HLSL
  97.              HINTS ${GLSLANG_SEARCH_PATH} )
  98.  
  99. find_library(SPIRV_LIB NAMES SPIRV
  100.              HINTS ${GLSLANG_SEARCH_PATH} )
  101.  
  102. find_library(SPIRV_TOOLS_LIB NAMES SPIRV-Tools
  103.              HINTS ${SPIRV_TOOLS_SEARCH_PATH} )
  104.  
  105. # On Windows, we must pair Debug and Release appropriately
  106. if (WIN32)
  107.     set (GLSLANG_DEBUG_SEARCH_PATH "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/glslang/Debug"
  108.                                    "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/glslang/OSDependent/Windows/Debug"
  109.                                    "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/hlsl/Debug"
  110.                                    "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/OGLCompilersDLL/Debug"
  111.                                    "${CMAKE_SOURCE_DIR}/../glslang/${BUILDTGT_DIR}/SPIRV/Debug")
  112.     set (SPIRV_TOOLS_DEBUG_SEARCH_PATH "${CMAKE_SOURCE_DIR}/../spirv-tools/${BUILDTGT_DIR}/source/Debug")
  113.  
  114.     add_library(glslang     STATIC IMPORTED)
  115.     add_library(OGLCompiler STATIC IMPORTED)
  116.     add_library(OSDependent STATIC IMPORTED)
  117.     add_library(HLSL        STATIC IMPORTED)
  118.     add_library(SPIRV       STATIC IMPORTED)
  119.     add_library(Loader      STATIC IMPORTED)
  120.     add_library(SPIRV-Tools STATIC IMPORTED)
  121.  
  122.     find_library(GLSLANG_DLIB NAMES glslangd
  123.                  HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
  124.     find_library(OGLCompiler_DLIB NAMES OGLCompilerd
  125.                  HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
  126.     find_library(OSDependent_DLIB NAMES OSDependentd
  127.                  HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
  128.     find_library(HLSL_DLIB NAMES HLSLd
  129.                  HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
  130.     find_library(SPIRV_DLIB NAMES SPIRVd
  131.                  HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
  132.     find_library(SPIRV_TOOLS_DLIB NAMES SPIRV-Tools
  133.                  HINTS ${SPIRV_TOOLS_DEBUG_SEARCH_PATH} )
  134.  
  135.     set_target_properties(glslang PROPERTIES
  136.                          IMPORTED_LOCATION       "${GLSLANG_LIB}"
  137.                          IMPORTED_LOCATION_DEBUG "${GLSLANG_DLIB}")
  138.     set_target_properties(OGLCompiler PROPERTIES
  139.                          IMPORTED_LOCATION       "${OGLCompiler_LIB}"
  140.                          IMPORTED_LOCATION_DEBUG "${OGLCompiler_DLIB}")
  141.     set_target_properties(OSDependent PROPERTIES
  142.                          IMPORTED_LOCATION       "${OSDependent_LIB}"
  143.                          IMPORTED_LOCATION_DEBUG "${OSDependent_DLIB}")
  144.     set_target_properties(HLSL PROPERTIES
  145.                          IMPORTED_LOCATION       "${HLSL_LIB}"
  146.                          IMPORTED_LOCATION_DEBUG "${HLSL_DLIB}")
  147.     set_target_properties(SPIRV PROPERTIES
  148.                          IMPORTED_LOCATION       "${SPIRV_LIB}"
  149.                          IMPORTED_LOCATION_DEBUG "${SPIRV_DLIB}")
  150.     set_target_properties(SPIRV-Tools PROPERTIES
  151.                          IMPORTED_LOCATION       "${SPIRV_TOOLS_LIB}"
  152.                          IMPORTED_LOCATION_DEBUG "${SPIRV_TOOLS_DLIB}")
  153.  
  154.     set (GLSLANG_LIBRARIES glslang OGLCompiler OSDependent HLSL SPIRV)
  155.     set (SPIRV_TOOLS_LIBRARIES SPIRV-Tools)
  156. else ()
  157.     set (GLSLANG_LIBRARIES ${GLSLANG_LIB} ${OGLCompiler_LIB} ${OSDependent_LIB} ${HLSL_LIB} ${SPIRV_LIB})
  158.     set (SPIRV_TOOLS_LIBRARIES ${SPIRV_TOOLS_LIB})
  159. endif()
  160.  
  161. set (GLMINCLUDES "${CMAKE_SOURCE_DIR}/API-Samples/utils")
  162.  
  163. # to run with source glslang libs/headers
  164. if(UNIX)
  165.     add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
  166.     if (EXISTS "${CMAKE_SOURCE_DIR}/../glslang")
  167.          set (GLSLANGDIR "${CMAKE_SOURCE_DIR}/../glslang")
  168.     else()
  169.          set (GLSLANGDIR "${CMAKE_SOURCE_DIR}/../source/glslang")
  170.     endif()
  171. else()
  172.     set (GLSLANGDIR "${CMAKE_SOURCE_DIR}/../glslang")
  173. endif()
  174.  
  175. get_filename_component(GLMINC_PREFIX "${GLMINCLUDES}" ABSOLUTE)
  176. if(NOT EXISTS ${GLMINC_PREFIX})
  177.     message(FATAL_ERROR "Necessary glm headers do not exist: " ${GLMINC_PREFIX})
  178. endif()
  179.  
  180. get_filename_component(GLSLANG_PREFIX "${GLSLANGDIR}" ABSOLUTE)
  181. if(NOT EXISTS ${GLSLANG_PREFIX})
  182.     message(FATAL_ERROR "Necessary glslang components do not exist: " ${GLSLANG_PREFIX})
  183. endif()
  184.  
  185. add_definitions(-DVULKAN_SAMPLES_BASE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
  186.  
  187. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/API-Samples/utils)
  188. if(WIN32)
  189.     include_directories(${CMAKE_SOURCE_DIR}\\..\\Include)
  190. else()
  191.     include_directories("/usr/include/vulkan" "${CMAKE_SOURCE_DIR}/../x86_64/include/vulkan" "${CMAKE_SOURCE_DIR}/include")
  192. endif()
  193.  
  194. if(WIN32)
  195.     set (MOVE_CMD "move")
  196.     set (VULKAN_LOADER_NAME "${API_LOWERCASE}-${MAJOR}")
  197. else()
  198.     set (MOVE_CMD "mv")
  199.     set (PTHREAD "pthread")
  200.     set (VULKAN_LOADER_NAME "${API_LOWERCASE}")
  201. endif()
  202.  
  203. if(EXISTS "${CMAKE_SOURCE_DIR}/layers")
  204.     set (VULKAN_LOADER ${VULKAN_LOADER_NAME})
  205. else()
  206.     find_library(VULKAN_LOADER NAMES ${VULKAN_LOADER_NAME}
  207.                  HINTS "${CMAKE_SOURCE_DIR}/../${BINDATA_DIR}" "${CMAKE_SOURCE_DIR}/../x86_64/lib" )
  208. endif()
  209.  
  210. add_subdirectory(API-Samples)
  211. add_subdirectory(Sample-Programs/Hologram)
  212. add_subdirectory(Layer-Samples/Overlay)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement