2019-03-18 05:52:32 +00:00
# Copyright 2018-2019, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0
cmake_minimum_required ( VERSION 3.10.0 )
project ( XRT VERSION 0.1.0 )
# CMake 3.11 introduced CMP0072 - Prefer GLVND
if ( POLICY CMP0072 )
2019-04-18 11:24:03 +00:00
cmake_policy ( SET CMP0072 NEW )
2019-03-18 05:52:32 +00:00
endif ( )
option ( OPENXR_USE_LOADER "Application uses loader" ON )
2019-06-19 14:54:44 +00:00
option ( OPENXR_INSTALL_ABSOLUTE_RUNTIME_PATH "Use the absolute path to the runtime in the installed manifest, rather than a bare filename." ON )
2019-03-26 10:07:11 +00:00
option ( VULKAN_ENABLE_VALIDATION "Enable Vulkan validation for Compositor" ON )
2019-03-18 05:52:32 +00:00
###
# Dependencies
###
list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" )
include ( CMakeDependentOption )
include ( SPIR-V )
find_package ( Eigen3 REQUIRED )
find_package ( Vulkan REQUIRED )
2019-03-23 03:09:53 +00:00
find_package ( OpenGL REQUIRED COMPONENTS GLX )
2019-03-18 05:52:32 +00:00
find_package ( HIDAPI )
2019-04-08 16:26:36 +00:00
find_package ( OpenHMD )
2019-06-13 20:38:18 +00:00
find_package ( OpenCV COMPONENTS core calib3d highgui imgproc imgcodecs features2d video )
find_package ( Libusb1 )
find_package ( JPEG )
2019-04-18 11:28:14 +00:00
# @TODO Turn into a find_package LIBUVC file.
pkg_check_modules ( LIBUVC libuvc )
# @TODO Turn into a find_package FFMPEG file.
pkg_check_modules ( FFMPEG libavcodec )
2019-04-29 16:18:09 +00:00
2019-03-18 05:52:32 +00:00
if ( CMAKE_SYSTEM_NAME STREQUAL "Linux" )
2019-04-30 16:56:19 +00:00
# Compositor backend
2019-04-18 11:24:03 +00:00
find_package ( X11 )
find_package ( Wayland )
pkg_check_modules ( XCB xcb xcb-randr )
2019-04-30 16:56:19 +00:00
find_package ( udev REQUIRED )
set ( BUILD_WITH_LIBUDEV TRUE )
2019-03-18 05:52:32 +00:00
endif ( )
cmake_dependent_option ( BUILD_WITH_WAYLAND "Enable Wayland support" ON "WAYLAND_FOUND" OFF )
cmake_dependent_option ( BUILD_WITH_XLIB "Enable xlib support" ON "X11_FOUND" OFF )
2019-04-29 16:18:09 +00:00
cmake_dependent_option ( BUILD_WITH_OPENGL "Enable OpenGL Graphics API support" ON "OPENGL_FOUND" OFF )
set ( BUILD_WITH_LIBUSB TRUE )
2019-06-13 20:38:18 +00:00
cmake_dependent_option ( BUILD_WITH_JPEG "Enable jpeg code (used for some video drivers)" ON "JPEG_FOUND" OFF )
2019-04-29 16:18:09 +00:00
cmake_dependent_option ( BUILD_WITH_OPENCV "Enable OpenCV backend" ON "OpenCV_FOUND" OFF )
cmake_dependent_option ( BUILD_WITH_LIBUVC "Enable libuvc video driver" ON "LIBUVC_FOUND" OFF )
cmake_dependent_option ( BUILD_WITH_FFMPEG "Enable ffmpeg testing video driver" ON "FFMPEG_FOUND" OFF )
2019-04-20 01:23:50 +00:00
cmake_dependent_option ( BUILD_WITH_HIDAPI "Enable HIDAPI-based driver(s) (OSVR HDK, PSVR)" ON "HIDAPI_FOUND" OFF )
2019-04-29 16:18:09 +00:00
cmake_dependent_option ( BUILD_WITH_OPENHMD "Enable OpenHMD driver" ON "OPENHMD_FOUND" OFF )
###
# Error checking
###
2019-03-18 05:52:32 +00:00
2019-04-08 16:28:05 +00:00
if ( NOT BUILD_WITH_OPENHMD AND NOT BUILD_WITH_HIDAPI )
2019-04-18 11:24:03 +00:00
message ( FATAL_ERROR "You must enable at least one driver: either provide OpenHMD and enable BUILD_WITH_OPENHMD (for a variety of devices via OpenHMD), or provide HIDAPI and enable BUILD_WITH_HIDAPI (for the HDK driver)" )
2019-04-08 16:28:05 +00:00
endif ( )
2019-03-18 05:52:32 +00:00
###
# Flags
###
2019-04-30 16:56:19 +00:00
if ( BUILD_WITH_LIBUDEV )
add_definitions ( -DXRT_HAVE_LIBUDEV )
endif ( )
2019-04-29 16:18:09 +00:00
if ( BUILD_WITH_LIBUSB )
add_definitions ( -DXRT_HAVE_LIBUSB )
endif ( )
if ( BUILD_WITH_OPENCV )
add_definitions ( -DXRT_HAVE_OPENCV )
endif ( )
2019-06-13 20:38:18 +00:00
if ( BUILD_WITH_JPEG )
add_definitions ( -DXRT_HAVE_JPEG )
endif ( )
2019-04-29 16:18:09 +00:00
if ( BUILD_WITH_LIBUVC )
add_definitions ( -DXRT_HAVE_LIBUVC )
endif ( )
if ( BUILD_WITH_FFMPEG )
add_definitions ( -DXRT_HAVE_FFMPEG )
endif ( )
if ( BUILD_WITH_OPENHMD )
add_definitions ( -DXRT_HAVE_OPENHMD )
# Drivers enabled with OpenHMD.
set ( BUILD_DRIVER_OHMD TRUE )
endif ( )
if ( BUILD_WITH_HIDAPI )
add_definitions ( -DXRT_HAVE_HIDAPI )
# Drivers enabled with hidapi.
set ( BUILD_DRIVER_HDK TRUE )
2019-04-20 01:23:50 +00:00
set ( BUILD_DRIVER_PSVR TRUE )
2019-04-29 16:18:09 +00:00
endif ( )
2019-05-31 16:52:54 +00:00
if ( TRUE )
# Uses the Monado internal hid wrapper.
set ( BUILD_DRIVER_PSMV TRUE )
endif ( )
2019-03-18 05:52:32 +00:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -Wall -Wextra -Wno-unused-parameter" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter" )
###
# Decend into madness.
###
add_subdirectory ( src )
add_subdirectory ( doc )