| # The name of our project is "VULKAN". CMakeLists files in this project can |
| # refer to the root source directory of the project as ${VULKAN_SOURCE_DIR} and |
| # to the root binary directory of the project as ${VULKAN_BINARY_DIR}. |
| cmake_minimum_required(VERSION 2.8.11) |
| project (VULKAN) |
| # set (CMAKE_VERBOSE_MAKEFILE 1) |
| |
| set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") |
| |
| # If CMAKE 3.7+, use FindVulkan |
| if (NOT CMAKE_VERSION VERSION_LESS 3.7.0) |
| message(STATUS "Using find_package to locate Vulkan") |
| find_package(Vulkan) |
| endif() |
| |
| if(APPLE) |
| # CMake versions 3 or later need CMAKE_MACOSX_RPATH defined. |
| # This avoids the CMP0042 policy message. |
| set(CMAKE_MACOSX_RPATH 1) |
| # The "install" target for MacOS fixes up bundles in place. |
| set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}) |
| endif() |
| |
| # Enable cmake folders |
| set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
| set(TOOLS_TARGET_FOLDER lvl_cmake_targets) |
| |
| # Header file for CMake settings |
| include_directories("${PROJECT_SOURCE_DIR}/include") |
| |
| if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") |
| set(COMMON_COMPILE_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers") |
| set(COMMON_COMPILE_FLAGS "${COMMON_COMPILE_FLAGS} -fno-strict-aliasing -fno-builtin-memcmp") |
| |
| # For GCC version 7.1 or greater, we need to disable the implicit fallthrough warning since |
| # there's no consistent way to satisfy all compilers until they all accept the C++17 standard |
| if (CMAKE_COMPILER_IS_GNUCC AND NOT (CMAKE_CXX_COMPILER_VERSION LESS 7.1)) |
| set(COMMON_COMPILE_FLAGS "${COMMON_COMPILE_FLAGS} -Wimplicit-fallthrough=0") |
| endif() |
| |
| if (APPLE) |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILE_FLAGS}") |
| else() |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 ${COMMON_COMPILE_FLAGS}") |
| endif() |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILE_FLAGS} -std=c++11 -fno-rtti") |
| if (UNIX) |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") |
| endif() |
| endif() |
| |
| option(BUILD_CUBE "Build cube" ON) |
| option(BUILD_VULKANINFO "Build vulkaninfo" ON) |
| option(BUILD_ICD "Build icd" ON) |
| |
| if(UNIX) |
| if(INSTALL_LVL_FILES) |
| install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/vulkan" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| endif() |
| |
| # uninstall target |
| configure_file( |
| "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" |
| "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" |
| IMMEDIATE @ONLY) |
| |
| add_custom_target(uninstall |
| COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) |
| endif() |
| |
| if(BUILD_CUBE) |
| add_subdirectory(cube) |
| endif() |
| if(BUILD_VULKANINFO) |
| add_subdirectory(vulkaninfo) |
| endif() |
| if(BUILD_ICD) |
| add_subdirectory(icd) |
| endif() |