98 lines
3.6 KiB
CMake
98 lines
3.6 KiB
CMake
# Set the minimum required version of CMake for this project.
|
|
cmake_minimum_required(VERSION 3.9)
|
|
|
|
# Set project name.
|
|
project(OpenVRSDK)
|
|
|
|
# Fetch the version from the headers
|
|
set(VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/headers/openvr.h")
|
|
|
|
set(VERSION_MAJOR_REGEX "\tstatic const uint32_t k_nSteamVRVersionMajor = (.+);")
|
|
set(VERSION_MINOR_REGEX "\tstatic const uint32_t k_nSteamVRVersionMinor = (.+);")
|
|
set(VERSION_BUILD_REGEX "\tstatic const uint32_t k_nSteamVRVersionBuild = (.+);")
|
|
|
|
file(STRINGS "${VERSION_FILE}" VERSION_MAJOR_STRING REGEX "${VERSION_MAJOR_REGEX}")
|
|
file(STRINGS "${VERSION_FILE}" VERSION_MINOR_STRING REGEX "${VERSION_MINOR_REGEX}")
|
|
file(STRINGS "${VERSION_FILE}" VERSION_BUILD_STRING REGEX "${VERSION_BUILD_REGEX}")
|
|
|
|
string(REGEX REPLACE "${VERSION_MAJOR_REGEX}" "\\1" VERSION_MAJOR ${VERSION_MAJOR_STRING})
|
|
string(REGEX REPLACE "${VERSION_MINOR_REGEX}" "\\1" VERSION_MINOR ${VERSION_MINOR_STRING})
|
|
string(REGEX REPLACE "${VERSION_BUILD_REGEX}" "\\1" VERSION_BUILD ${VERSION_BUILD_STRING})
|
|
|
|
set(OPENVR_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}")
|
|
|
|
# Setup some options.
|
|
option(BUILD_SHARED "Builds the library as shared library" OFF)
|
|
option(BUILD_FRAMEWORK "Builds the library as an apple Framework" OFF)
|
|
option(BUILD_UNIVERSAL "Builds the shared or framework as a universal (fat, 32- & 64-bit) binary" ON)
|
|
option(BUILD_OSX_I386 "Builds the shared or framework as a 32-bit binary, even on a 64-bit platform" OFF)
|
|
option(USE_LIBCXX "Uses libc++ instead of libstdc++" ON)
|
|
option(USE_CUSTOM_LIBCXX "Uses a custom libc++" OFF)
|
|
|
|
add_definitions( -DVR_API_PUBLIC )
|
|
|
|
# Check if 32 or 64 bit system.
|
|
set(SIZEOF_VOIDP ${CMAKE_SIZEOF_VOID_P})
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(PROCESSOR_ARCH "64")
|
|
else()
|
|
set(PROCESSOR_ARCH "32")
|
|
endif()
|
|
|
|
# Get platform.
|
|
if(WIN32)
|
|
set(PLATFORM_NAME "win")
|
|
if(NOT BUILD_SHARED)
|
|
add_definitions(-DOPENVR_BUILD_STATIC)
|
|
endif()
|
|
elseif(UNIX AND NOT APPLE)
|
|
if(CMAKE_SYSTEM_NAME MATCHES ".*Linux")
|
|
set(PLATFORM_NAME "linux")
|
|
add_definitions(-DLINUX -DPOSIX)
|
|
if(PROCESSOR_ARCH MATCHES "64")
|
|
add_definitions(-DLINUX64)
|
|
endif()
|
|
endif()
|
|
elseif(APPLE)
|
|
if(CMAKE_SYSTEM_NAME MATCHES ".*Darwin.*" OR CMAKE_SYSTEM_NAME MATCHES ".*MacOS.*")
|
|
set(PLATFORM_NAME "osx")
|
|
add_definitions(-DOSX -DPOSIX)
|
|
if(BUILD_UNIVERSAL)
|
|
set(CMAKE_OSX_ARCHITECTURES "i386;x86_64")
|
|
endif()
|
|
if(BUILD_OSX_I386)
|
|
set(PROCESSOR_ARCH "32")
|
|
set(CMAKE_OSX_ARCHITECTURES "i386")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# Set output folder for static and shared libraries
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${PLATFORM_NAME}${PROCESSOR_ARCH})
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${PLATFORM_NAME}${PROCESSOR_ARCH})
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${PLATFORM_NAME}${PROCESSOR_ARCH})
|
|
|
|
# Enable some properties.
|
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
# Enable c++11 and hide symbols which shouldn't be visible
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC -fvisibility=hidden")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
|
|
|
|
# Set custom libc++ usage here
|
|
if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND USE_LIBCXX)
|
|
if(USE_CUSTOM_LIBCXX)
|
|
if(BUILD_SHARED)
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++")
|
|
endif()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdinc++")
|
|
include_directories( ${LIBCXX_INCLUDE} ${LIBCXX_ABI_INCLUDE})
|
|
message(STATUS "Using custom libc++")
|
|
else()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
message(STATUS "Using libc++")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
add_subdirectory(src)
|