summaryrefslogtreecommitdiffhomepage
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindEigen3.cmake90
-rw-r--r--cmake/FindONNXRuntime.cmake104
-rw-r--r--cmake/apple.cmake13
-rw-r--r--cmake/msvc-clang.cmake131
-rw-r--r--cmake/msvc.cmake143
-rw-r--r--cmake/opentrack-boilerplate.cmake78
-rw-r--r--cmake/opentrack-hier.cmake59
-rw-r--r--cmake/opentrack-i18n.cmake21
-rw-r--r--cmake/opentrack-install.cmake55
-rw-r--r--cmake/opentrack-load-user-settings.cmake7
-rw-r--r--cmake/opentrack-opencv.cmake10
-rw-r--r--cmake/opentrack-org.cmake21
-rw-r--r--cmake/opentrack-pkg-config.cmake14
-rw-r--r--cmake/opentrack-platform.cmake33
-rw-r--r--cmake/opentrack-policy.cmake3
-rw-r--r--cmake/opentrack-qt.cmake26
-rw-r--r--cmake/opentrack-rift.cmake38
-rw-r--r--cmake/opentrack-variant.cmake53
-rw-r--r--cmake/translation-stub.ts2
19 files changed, 448 insertions, 453 deletions
diff --git a/cmake/FindEigen3.cmake b/cmake/FindEigen3.cmake
deleted file mode 100644
index b43208f9..00000000
--- a/cmake/FindEigen3.cmake
+++ /dev/null
@@ -1,90 +0,0 @@
-# - Try to find Eigen3 lib
-#
-# This module supports requiring a minimum version, e.g. you can do
-# find_package(Eigen3 3.1.2)
-# to require version 3.1.2 or newer of Eigen3.
-#
-# Once done this will define
-#
-# EIGEN3_FOUND - system has eigen lib with correct version
-# EIGEN3_INCLUDE_DIR - the eigen include directory
-# EIGEN3_VERSION - eigen version
-
-# Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
-# Copyright (c) 2008, 2009 Gael Guennebaud, <g.gael@free.fr>
-# Copyright (c) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
-# Redistribution and use is allowed according to the terms of the 2-clause BSD license.
-
-if(NOT Eigen3_FIND_VERSION)
- if(NOT Eigen3_FIND_VERSION_MAJOR)
- set(Eigen3_FIND_VERSION_MAJOR 2)
- endif(NOT Eigen3_FIND_VERSION_MAJOR)
- if(NOT Eigen3_FIND_VERSION_MINOR)
- set(Eigen3_FIND_VERSION_MINOR 91)
- endif(NOT Eigen3_FIND_VERSION_MINOR)
- if(NOT Eigen3_FIND_VERSION_PATCH)
- set(Eigen3_FIND_VERSION_PATCH 0)
- endif(NOT Eigen3_FIND_VERSION_PATCH)
-
- set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
-endif(NOT Eigen3_FIND_VERSION)
-
-macro(_eigen3_check_version)
- file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
-
- string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
- set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
- string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
- set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
- string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
- set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
-
- set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
- if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
- set(EIGEN3_VERSION_OK FALSE)
- else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
- set(EIGEN3_VERSION_OK TRUE)
- endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
-
- if(NOT EIGEN3_VERSION_OK)
-
- message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, "
- "but at least version ${Eigen3_FIND_VERSION} is required")
- endif(NOT EIGEN3_VERSION_OK)
-endmacro(_eigen3_check_version)
-
-if (EIGEN3_INCLUDE_DIR)
-
- # in cache already
- _eigen3_check_version()
- set(EIGEN3_FOUND ${EIGEN3_VERSION_OK})
-
-else (EIGEN3_INCLUDE_DIR)
-
- find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library
- PATHS
- ${CMAKE_INSTALL_PREFIX}/include
- ${KDE4_INCLUDE_DIR}
- PATH_SUFFIXES eigen3 eigen
- )
-
- if(EIGEN3_INCLUDE_DIR)
- _eigen3_check_version()
- endif(EIGEN3_INCLUDE_DIR)
-
- #include(FindPackageHandleStandardArgs)
- #find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
-
- mark_as_advanced(EIGEN3_INCLUDE_DIR)
-
-endif(EIGEN3_INCLUDE_DIR)
-
-if(EIGEN3_FOUND)
- add_definitions(
- -DEIGEN_MPL2_ONLY=1
- -DEIGEN_MAX_CPP_VER=17
- -DEIGEN_DEFAULT_DENSE_INDEX_TYPE=int
- -DEIGEN_NO_DEBUG=1
- -DEIGEN_DONT_PARALLELIZE=1
- )
-endif()
diff --git a/cmake/FindONNXRuntime.cmake b/cmake/FindONNXRuntime.cmake
new file mode 100644
index 00000000..60ddfc2b
--- /dev/null
+++ b/cmake/FindONNXRuntime.cmake
@@ -0,0 +1,104 @@
+# FindONNXRuntime
+# ===============
+#
+# Find an ONNX Runtime installation.
+# ONNX Runtime is a cross-platform inference and training machine-learning
+# accelerator.
+#
+# Input variables
+# ---------------
+#
+# ONNXRuntime_ROOT Set root installation. This is an environment
+# variable
+# ONNXRuntime_DIR CMake variable to set the installation root.
+#
+# Output variable
+# ---------------
+#
+# ONNXRuntime_FOUND True if headers and requested libraries were found
+# ONNXRuntime_LIBRARIES Component libraries to be linked.
+# ONNXRuntime_INCLUDE_DIRS Include directories.
+
+set(ONNXRuntime_DIR CACHE PATH "Root directory of the ONNX Runtime installation")
+
+# This script is mostly inspired by the guide there:
+# https://gitlab.kitware.com/cmake/community/-/wikis/doc/tutorials/How-To-Find-Libraries
+# Finding of the DLLs was added so we can install them with the application.
+# We adhere to modern CMake standards and also define an import library.
+
+# Determine architecture string for subdir in nuget package
+# This is only relevant when we point `ONNXRuntime_DIR` to the
+# extracted nuget package content.
+if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ if (CMAKE_SIZEOF_VOID_P GREATER_EQUAL 8)
+ set(ONNXRuntime_Arch "linux-x64")
+ else()
+ message(FATAL_ERROR "32 Bit Linux builds are not supported")
+ endif()
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ if (CMAKE_SIZEOF_VOID_P GREATER_EQUAL 8)
+ set(ONNXRuntime_Arch "win-x64")
+ else()
+ set(ONNXRuntime_Arch "win-x86")
+ endif()
+endif()
+
+
+find_library(ONNXRuntime_LIBRARY onnxruntime
+ HINTS ${ONNXRuntime_DIR}
+ PATH_SUFFIXES
+ # For a "normal" installation
+ "lib" "lib64" "bin"
+ # For the nuget package
+ "runtimes/${ONNXRuntime_Arch}/native"
+ )
+
+if(WIN32)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".DLL")
+ find_library(ONNXRuntime_RUNTIME onnxruntime
+ HINTS ${ONNXRuntime_DIR}
+ PATH_SUFFIXES
+ # For a "normal" installation
+ "lib" "lib64" "bin"
+ # For the nuget package
+ "runtimes/${ONNXRuntime_Arch}/native"
+ )
+else()
+ SET(ONNXRuntime_RUNTIME ${ONNXRuntime_LIBRARY})
+endif()
+
+find_path(ONNXRuntime_INCLUDE_DIR onnxruntime_cxx_api.h
+ HINTS ${ONNXRuntime_DIR}
+ PATH_SUFFIXES
+ # For .nuget packages
+ "build/native/include"
+ # For when the directory structure of the onnx source repo is preserved
+ "include/onnxruntime/core/session"
+ "include/onnxruntime"
+ # For when we copy the files somewhere
+ "include"
+ )
+
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set ONNXRuntime_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(ONNXRuntime DEFAULT_MSG
+ ONNXRuntime_LIBRARY ONNXRuntime_INCLUDE_DIR ONNXRuntime_RUNTIME)
+
+if(ONNXRuntime_FOUND)
+ if(NOT TARGET onnxruntime::onnxruntime)
+ # Following this quide:
+ # https://cmake.org/cmake/help/git-stage/guide/importing-exporting/index.html#importing-libraries
+ add_library(onnxruntime::onnxruntime SHARED IMPORTED)
+ set_target_properties(onnxruntime::onnxruntime PROPERTIES
+ IMPORTED_LOCATION "${ONNXRuntime_RUNTIME}"
+ INTERFACE_INCLUDE_DIRECTORIES "${ONNXRuntime_INCLUDE_DIR}"
+ IMPORTED_IMPLIB "${ONNXRuntime_LIBRARY}")
+ endif()
+endif()
+
+mark_as_advanced(ONNXRuntime_INCLUDE_DIR ONNXRuntime_LIBRARY ONNXRuntime_RUNTIME)
+
+set(ONNXRuntime_INCLUDE_DIRS ${ONNXRuntime_INCLUDE_DIR})
+set(ONNXRuntime_LIBRARIES ${ONNXRuntime_LIBRARY}) \ No newline at end of file
diff --git a/cmake/apple.cmake b/cmake/apple.cmake
index f6b83382..64e4d628 100644
--- a/cmake/apple.cmake
+++ b/cmake/apple.cmake
@@ -1,12 +1,19 @@
set(CMAKE_BUILD_TYPE_INIT RELEASE)
-set(CMAKE_CXX_FLAGS "-arch x86_64 -stdlib=libc++" CACHE STRING "" FORCE)
-set(CMAKE_C_FLAGS "-arch x86_64" CACHE STRING "" FORCE)
+if("$ENV{OTR_OSX_ARCH}" STREQUAL "arm64")
+ set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "" FORCE)
+ set(opentrack-intel FALSE)
+else()
+ set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "" FORCE)
+ set(opentrack-intel TRUE)
+endif()
+
+set(CMAKE_CXX_FLAGS "-stdlib=libc++" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-ffast-math -O3 -flto -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE " ${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "" FORCE)
-set(cmake-link-common "-stdlib=libc++ -arch x86_64")
+set(cmake-link-common "-stdlib=libc++")
set(CMAKE_EXE_LINKER_FLAGS "${cmake-link-common} -Wl,-stack_size,0x4000000" CACHE STRING "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS ${cmake-link-common} CACHE STRING "" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS ${cmake-link-common} CACHE STRING "" FORCE)
diff --git a/cmake/msvc-clang.cmake b/cmake/msvc-clang.cmake
deleted file mode 100644
index 419a3652..00000000
--- a/cmake/msvc-clang.cmake
+++ /dev/null
@@ -1,131 +0,0 @@
-# this file only serves as toolchain file when specified so explicitly
-# when building the software. from repository's root directory:
-# mkdir build && cmake -DCMAKE_TOOLCHAIN_FILE=$(pwd)/../cmake/msvc.cmake build/
-
-include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake")
-
-SET(CMAKE_SYSTEM_NAME Windows)
-SET(CMAKE_SYSTEM_VERSION 1)
-
-# search for programs in the host directories
-SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-# don't poison with system compile-time data
-SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-
-set(cc "")
-
-set(cc "${cc} -W3 -Wall -Wextra -Wno-unused-command-line-argument -Wno-missing-braces")
-set(cc "${cc} -Wno-inconsistent-missing-override")
-set(cc "${cc} -Wno-return-type-c-linkage")
-
-set(cc "${cc} -Xclang -std=c++14 -Xclang -fms-compatibility-version=1912 -fms-compatibility")
-
-set(cc "${cc} -U __clang__ -U__clang")
-
-set(cc "${cc} -O3")
-set(cc "${cc} -Xclang -O3 -Xclang -flto -Qvec -Oit -Oy -Ob2 -fp:fast -GS- -GF -GL -Gw -Gy -Gm -Zc:inline")
-set(cc "${cc} -Zo -FS -Zc:threadSafeInit -arch:SSE2 -D_HAS_EXCEPTIONS=0")
-set(cc "${cc} -bigobj")
-#set(cc "${cc} -Wno-unknown-argument -Wno-unknown-pragmas -Wno-invalid-noreturn")
-
-#set(CMAKE_CXX_SIMULATE_ID "MSVC" CACHE INTERNAL "" FORCE)
-#set(CMAKE_C_SIMULATE_ID "MSVC" CACHE INTERNAL "" FORCE)
-#set(CMAKE_CXX_SIMULATE_VERSION 19.0 CACHE INTERNAL "" FORCE)
-#set(CMAKE_C_SIMULATE_VERSION 19.0 CACHE INTERNAL "" FORCE)
-
-#set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-Xclang -isystem")
-#set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-Xclang -isystem")
-
-#set(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES TRUE)
-#set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES TRUE)
-
-set(CMAKE_CXX_COMPILER "d:/llvm/msbuild-bin/cl.exe")
-set(CMAKE_C_COMPILER "d:/llvm/msbuild-bin/cl.exe")
-
-#set(CMAKE_CXX_COMPILER_ID "MSVC" CACHE INTERNAL "" FORCE)
-#set(CMAKE_C_COMPILER_ID "MSVC" CACHE INTERNAL "" FORCE)
-
-#set(CMAKE_CXX_COMPILER_VERSION "19.0" CACHE INTERNAL "" FORCE)
-#set(CMAKE_C_COMPILER_VERSION "19.0" CACHE INTERNAL "" FORCE)
-
-#set(CMAKE_VS_PLATFORM_TOOLSET "v150_clang_4_0")
-
-set(CMAKE_CXX_FLAGS_RELEASE_INIT " ")
-set(CMAKE_C_FLAGS_RELEASE_INIT " ")
-
-set(CMAKE_CXX_STANDARD_REQUIRED FALSE)
-set(CMAKE_CXX_EXTENSIONS FALSE)
-
-set(warns_ "")
-
-set(warns-disable 4530 4577 4789 4244 4702 4530 4244 4127 4458 4456 4251)
-
-foreach(i ${warns-disable})
- set(warns_ "${warns_} -wd${i}")
-endforeach()
-if(CMAKE_PROJECT_NAME STREQUAL "opentrack")
- #C4263 - member function does not override any base class virtual member function
- #C4264 - no override available for virtual member function from base class, function is hidden
- #C4265 - class has virtual functions, but destructor is not virtual
- #C4266 - no override available for virtual member function from base type, function is hidden
- #C4928 - illegal copy-initialization, more than one user-defined conversion has been implicitly applied
-
- set(warns 4263 4264 4266 4928)
- set(warns-noerr 4265)
-
- foreach(i ${warns})
- set(warns_ "${warns_} -w1${i} -we${i}")
- endforeach()
-
- foreach(i ${warns-noerr})
- set(warns_ "${warns_} -w1${i}")
- endforeach()
- set(cc "${cc} -GR-")
-endif()
-
-set(base-cflags "${warns_} -MT -Zi -cgthreads8 -W4")
-
-set(_CFLAGS "${base-cflags}")
-set(_CXXFLAGS "${base-cflags}")
-set(_CFLAGS_RELEASE "${cc}")
-set(_CFLAGS_DEBUG "-GS -sdl -Gs -guard:cf")
-set(_CXXFLAGS_RELEASE "${cc}")
-set(_CXXFLAGS_DEBUG "${_CFLAGS_DEBUG}")
-
-set(_LDFLAGS_COMMON "-ignore:4217 -ignore:4221")
-set(_LDFLAGS "-machine:X86 -DEBUG ${_LDFLAGS_COMMON}")
-set(_LDFLAGS_RELEASE "-OPT:REF -OPT:ICF=10")
-set(_LDFLAGS_DEBUG "")
-
-set(_LDFLAGS_STATIC "-machine:X86 ${_LDFLAGS_COMMON}")
-set(_LDFLAGS_STATIC_RELEASE "")
-set(_LDFLAGS_STATIC_DEBUG "")
-
-foreach(j C CXX)
- foreach(i "" _DEBUG _RELEASE)
- set(CMAKE_${j}_FLAGS${i} "${CMAKE_${j}_FLAGS${i}} ${_${j}FLAGS${i}}")
- endforeach()
- set(CMAKE_${j}_FLAGS "${CMAKE_${j}_FLAGS} ${_${j}FLAGS}")
-endforeach()
-
-foreach(j "" _DEBUG _RELEASE)
- foreach(i MODULE EXE SHARED)
- set(CMAKE_${i}_LINKER_FLAGS${j} "${_LDFLAGS${j}} ${CMAKE_${i}_LINKER_FLAGS${j}}")
- endforeach()
-endforeach()
-
-set(CMAKE_STATIC_LINKER_FLAGS "${_LDFLAGS_STATIC} ${CMAKE_STATIC_LINKER_FLAGS}")
-set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${_LDFLAGS_STATIC_RELEASE} ${CMAKE_STATIC_LINKER_FLAGS_RELEASE}")
-set(CMAKE_STATIC_LINKER_FLAGS_DEBUG "${_LDFLAGS_STATIC_DEBUG} ${CMAKE_STATIC_LINKER_FLAGS_DEBUG}")
-
-set(CMAKE_RC_FLAGS "-nologo -DWIN32")
-
-if(NOT CMAKE_INSTALL_PREFIX)
- set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "" FORCE)
-endif()
-
-if(NOT CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE "RELEASE" CACHE STRING "" FORCE)
-endif()
-
diff --git a/cmake/msvc.cmake b/cmake/msvc.cmake
index b7a403a3..b390c120 100644
--- a/cmake/msvc.cmake
+++ b/cmake/msvc.cmake
@@ -4,6 +4,23 @@
SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_SYSTEM_VERSION 5.01)
+if(opentrack-64bit)
+ set(CMAKE_SYSTEM_PROCESSOR AMD64)
+else()
+ set(CMAKE_SYSTEM_PROCESSOR x86)
+endif()
+
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR CMAKE_INSTALL_PREFIX STREQUAL "")
+ set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "" FORCE)
+endif()
+
+if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
+endif()
+
+#set(CMAKE_GENERATOR Ninja)
+#set(CMAKE_MAKE_PROGRAM ninja.exe)
+set(CMAKE_ASM_NASM_COMPILER nasm.exe)
# search for programs in the host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
@@ -11,13 +28,44 @@ SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
#add_definitions(-D_ITERATOR_DEBUG_LEVEL=0)
-add_definitions(-diagnostics:caret)
#add_compile_options(-Qvec-report:2)
#add_compile_options(-d2cgsummary)
+add_definitions(-D_HAS_EXCEPTIONS=0)
+
+if(DEFINED CMAKE_TOOLCHAIN_FILE)
+ # ignore cmake warning: Manually-specified variable not used by the project
+ set(CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}")
+endif()
+
+include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
+set(CMAKE_POLICY_DEFAULT_CMP0069 NEW CACHE INTERNAL "" FORCE)
+#set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
+
+set(CMAKE_C_EXTENSIONS FALSE)
+set(CMAKE_CXX_EXTENSIONS FALSE)
+
+set(CMAKE_CROSSCOMPILING 0)
+
+function(sets type)
+ set(i 0)
+ list(LENGTH ARGN max)
+ math(EXPR foo "${max} % 2")
+ if(NOT foo EQUAL 0)
+ message(FATAL_ERROR "argument count not even")
+ endif()
+ while(i LESS max)
+ list(GET ARGN "${i}" name)
+ math(EXPR i "${i} + 1")
+ list(GET ARGN "${i}" value)
+ math(EXPR i "${i} + 1")
+ set(${name} "${value}" CACHE "${type}" "" FORCE)
+ endwhile()
+endfunction()
if(CMAKE_PROJECT_NAME STREQUAL "opentrack")
- include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
+ #include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
add_compile_options("-W4")
@@ -30,31 +78,98 @@ if(CMAKE_PROJECT_NAME STREQUAL "opentrack")
endforeach()
endif()
-if(CMAKE_PROJECT_NAME STREQUAL "opencv")
+if(CMAKE_PROJECT_NAME STREQUAL "QtBase")
+ set(QT_BUILD_TOOLS_WHEN_CROSSCOMPILING TRUE CACHE BOOL "" FORCE)
+ set(QT_DEBUG_OPTIMIZATION_FLAGS TRUE CACHE BOOL "" FORCE)
+ set(QT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS TRUE CACHE BOOL "" FORCE)
+
+ set(FEATURE_debug OFF)
+ set(FEATURE_debug_and_release OFF)
+ set(FEATURE_force_debug_info ON)
+ set(FEATURE_ltcg ON)
+ set(FEATURE_shared ON)
+endif()
+
+if(CMAKE_PROJECT_NAME STREQUAL "OpenCV")
+ set(PARALLEL_ENABLE_PLUGINS FALSE)
+ set(HIGHGUI_ENABLE_PLUGINS FALSE)
+ set(VIDEOIO_ENABLE_PLUGINS FALSE)
+
set(OPENCV_SKIP_MSVC_EXCEPTIONS_FLAG TRUE)
+ set(OPENCV_DISABLE_THREAD_SUPPORT TRUE)
+
+ set(ENABLE_FAST_MATH ON)
+ set(BUILD_TESTS OFF)
+ set(BUILD_PERF_TESTS OFF)
+ set(BUILD_opencv_apps OFF)
+ set(BUILD_opencv_gapi OFF)
+endif()
+
+if(CMAKE_PROJECT_NAME STREQUAL "TestOscpack")
+ add_compile_definitions(OSC_HOST_LITTLE_ENDIAN)
+endif()
+
+set(opentrack-simd "SSE2")
+
+if(CMAKE_PROJECT_NAME STREQUAL "onnxruntime")
+ sets(BOOL
+ ONNX_USE_MSVC_STATIC_RUNTIME OFF
+ protobuf_MSVC_STATIC_RUNTIME OFF
+ onnxruntime_USE_AVX OFF
+ onnxruntime_USE_AVX2 OFF
+ onnxruntime_USE_AVX512 OFF
+ onnxruntime_BUILD_BENCHMARKS OFF
+ onnxruntime_BUILD_FOR_NATIVE_MACHINE OFF
+ onnxruntime_BUILD_SHARED_LIB ON
+ onnxruntime_BUILD_UNIT_TESTS OFF
+ protobuf_BUILD_EXAMPLES OFF
+ protobuf_BUILD_SHARED_LIBS OFF
+ ONNX_BUILD_BENCHMARKS OFF
+ ONNX_BUILD_TESTS OFF
+ ONNX_DISABLE_EXCEPTIONS OFF # important!
+ ONNX_GEN_PB_TYPE_STUBS OFF
+ onnxruntime_DISABLE_CONTRIB_OPS ON
+ BUILD_TESTING OFF
+ )
+ if(opentrack-64bit)
+ sets(BOOL
+ onnxruntime_USE_AVX ON
+ )
+ endif()
endif()
-add_compile_options(-Zi -Zf -Zo -bigobj -cgthreads1 -vd0)
+if(opentrack-64bit)
+ set(opentrack-simd "AVX")
+endif()
+
+set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
+add_compile_options(-MD)
+
add_link_options(-cgthreads:1)
-set(_CFLAGS "")
-set(_CXXFLAGS "")
-set(_CFLAGS_RELEASE "-O2 -O2it -Oy- -Ob3 -fp:fast -GS- -GF -GL -Gw -Gy -arch:SSE2 -GR- -MT")
+set(_CFLAGS "-diagnostics:caret -Zc:inline -Zc:preprocessor -wd4117 -Zi -Zf -Zo -bigobj -cgthreads1 -vd0 -permissive-")
+#if(NOT opentrack-no-static-crt)
+# set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded" CACHE INTERNAL "" FORCE)
+#else()
+# set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" CACHE INTERNAL "" FORCE)
+#endif()
+set(_CXXFLAGS "${_CFLAGS} -Zc:throwingNew -Zc:lambda")
+set(_CFLAGS_RELEASE "-O2 -Oit -Oy- -Ob3 -fp:fast -GS- -GF -GL -Gw -Gy")
+if(NOT opentrack-simd STREQUAL "")
+ set(_CFLAGS_RELEASE "${_CFLAGS_RELEASE} -arch:${opentrack-simd}")
+endif()
set(_CFLAGS_DEBUG "-guard:cf -MTd -Gs0 -RTCs")
set(_CXXFLAGS_RELEASE "${_CFLAGS_RELEASE}")
set(_CXXFLAGS_DEBUG "${_CFLAGS_DEBUG}")
-set(_LDFLAGS_RELEASE "-OPT:REF -OPT:ICF=10 -LTCG:INCREMENTAL -DEBUG:FULL")
+set(_LDFLAGS "-WX")
+set(_LDFLAGS_RELEASE "-OPT:REF,ICF=10 -LTCG -DEBUG:FULL")
set(_LDFLAGS_DEBUG "-DEBUG:FULL")
-set(_LDFLAGS_STATIC "")
-set(_LDFLAGS_STATIC_RELEASE "-LTCG:INCREMENTAL")
+set(_LDFLAGS_STATIC "-WX")
+set(_LDFLAGS_STATIC_RELEASE "-LTCG")
set(_LDFLAGS_STATIC_DEBUG "")
-if(NOT CMAKE_INSTALL_PREFIX)
- set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE STRING "" FORCE)
-endif()
-
set(CMAKE_BUILD_TYPE_INIT "RELEASE" CACHE INTERNAL "")
string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE)
diff --git a/cmake/opentrack-boilerplate.cmake b/cmake/opentrack-boilerplate.cmake
index ffa4ea02..e325cd6a 100644
--- a/cmake/opentrack-boilerplate.cmake
+++ b/cmake/opentrack-boilerplate.cmake
@@ -18,10 +18,10 @@ set(new-hier-path "#pragma once
#endif
#define OPENTRACK_LIBRARY_PREFIX \"\"
-#define OPENTRACK_LIBRARY_PATH \"${opentrack-hier-path}\"
-#define OPENTRACK_DOC_PATH \"${opentrack-hier-doc}\"
-#define OPENTRACK_CONTRIB_PATH \"${opentrack-hier-doc}contrib/\"
-#define OPENTRACK_I18N_PATH \"${opentrack-i18n-path}\"
+#define OPENTRACK_LIBRARY_PATH \"${opentrack-runtime-libexec}\"
+#define OPENTRACK_DOC_PATH \"${opentrack-runtime-doc}\"
+#define OPENTRACK_CONTRIB_PATH \"${opentrack-runtime-doc}contrib/\"
+#define OPENTRACK_I18N_PATH \"${opentrack-runtime-i18n}\"
")
function(otr_write_library_paths)
@@ -44,15 +44,15 @@ function(otr_glob_sources var)
endforeach()
foreach(dir ${ARGN})
set(dir "${basedir}/${dir}")
- file(GLOB cxx "${dir}/*.cpp")
- file(GLOB cc "${dir}/*.c")
- file(GLOB hh "${dir}/*.h" "${dir}/*.hpp" "${dir}/*.inc")
- file(GLOB res "${dir}/*.rc")
+ file(GLOB cxx CONFIGURE_DEPENDS "${dir}/*.cpp")
+ file(GLOB cc CONFIGURE_DEPENDS "${dir}/*.c")
+ file(GLOB hh CONFIGURE_DEPENDS "${dir}/*.h" "${dir}/*.hpp" "${dir}/*.inc")
+ file(GLOB res CONFIGURE_DEPENDS "${dir}/*.rc")
foreach(f res)
set_source_files_properties(${f} PROPERTIES LANGUAGE RC)
endforeach()
- file(GLOB ui "${dir}/*.ui")
- file(GLOB rc "${dir}/*.qrc")
+ file(GLOB ui CONFIGURE_DEPENDS "${dir}/*.ui")
+ file(GLOB rc CONFIGURE_DEPENDS "${dir}/*.qrc")
set(all ${cc} ${cxx} ${hh} ${res})
foreach(i ui rc res cc cxx hh all)
set(${var}-${i} "${${var}-${i}}" ${${i}} PARENT_SCOPE)
@@ -61,8 +61,8 @@ function(otr_glob_sources var)
endfunction()
function(otr_fixup_subsystem n)
- otr_find_msvc_editbin(editbin-pathname)
if(MSVC)
+ otr_find_msvc_editbin(editbin-pathname)
set(subsystem WINDOWS)
get_property(type TARGET "${n}" PROPERTY TYPE)
if (NOT type STREQUAL "STATIC_LIBRARY")
@@ -84,7 +84,7 @@ function(otr_compat target)
endif()
get_property(type TARGET "${n}" PROPERTY TYPE)
- if (".${TYPE}" STREQUAL ".EXECUTABLE")
+ if (type STREQUAL "EXECUTABLE")
otr_fixup_subsystem(${target})
endif()
endfunction()
@@ -109,7 +109,7 @@ endfunction()
function(otr_install_pdb_current_project target)
if(MSVC)
- install(FILES "$<TARGET_PDB_FILE:${target}>" DESTINATION "${opentrack-hier-debug}" PERMISSIONS ${opentrack-perms-file})
+ install(FILES "$<TARGET_PDB_FILE:${target}>" DESTINATION "${opentrack-debug}" PERMISSIONS ${opentrack-perms-file})
endif()
endfunction()
@@ -143,15 +143,17 @@ function(otr_module n_)
set(arg_NO-I18N TRUE)
endif()
- if(NOT WIN32)
- set(subsys "")
- elseif(arg_WIN32-CONSOLE)
- set(subsys "")
- else()
- set(subsys "WIN32")
- endif()
-
if(arg_EXECUTABLE)
+ if (APPLE)
+ set(subsys "MACOSX_BUNDLE")
+ elseif(NOT WIN32)
+ set(subsys "")
+ elseif(arg_WIN32-CONSOLE)
+ set(subsys "")
+ else()
+ set(subsys "WIN32")
+ endif()
+
add_executable(${n} ${subsys} "${${n}-all}")
set_target_properties(${n} PROPERTIES
SUFFIX "${opentrack-binary-suffix}"
@@ -175,7 +177,7 @@ function(otr_module n_)
set(self "${n}" PARENT_SCOPE)
- if(NOT arg_RELINK)
+ if(NOT arg_RELINK AND FALSE)
set_property(TARGET ${n} PROPERTY LINK_DEPENDS_NO_SHARED TRUE)
else()
set_property(TARGET ${n} PROPERTY LINK_DEPENDS_NO_SHARED FALSE)
@@ -192,12 +194,7 @@ function(otr_module n_)
string(REPLACE "-" "_" build-n ${n_})
string(TOUPPER "${build-n}" build-n)
target_compile_definitions(${n} PRIVATE "BUILD_${build-n}")
-
- get_property(ident GLOBAL PROPERTY opentrack-ident)
- if (".${ident}" STREQUAL ".")
- message(FATAL_ERROR "must set global property `opentrack-ident' in `opentrack-variant.cmake'")
- endif()
- target_compile_definitions(${n} PRIVATE OPENTRACK_ORG=\"${ident}\")
+ include(opentrack-org)
if(arg_STATIC)
set(arg_NO-INSTALL TRUE)
@@ -216,13 +213,26 @@ function(otr_module n_)
endif()
if(NOT arg_NO-INSTALL)
+ # Librarys/executable
if(arg_BIN)
- install(TARGETS "${n}"
- RUNTIME DESTINATION ${opentrack-hier-bin}
- LIBRARY DESTINATION ${opentrack-hier-pfx}
+ if (APPLE)
+ install(TARGETS "${n}"
+ RUNTIME DESTINATION "${opentrack-bin}"
+ BUNDLE DESTINATION "${opentrack-bin}"
+ LIBRARY DESTINATION "${opentrack-bin}/Library"
+ RESOURCE DESTINATION "${opentrack-bin}/opentrack.app/Resource"
+ PERMISSIONS ${opentrack-perms-exec})
+ else()
+ install(TARGETS "${n}"
+ RUNTIME DESTINATION "${opentrack-bin}"
+ LIBRARY DESTINATION "${opentrack-libexec}"
PERMISSIONS ${opentrack-perms-exec})
+ endif()
else()
- install(TARGETS "${n}" ${opentrack-hier-str}
+ # Plugins
+ install(TARGETS "${n}"
+ RUNTIME DESTINATION "${opentrack-libexec}"
+ LIBRARY DESTINATION "${opentrack-libexec}"
PERMISSIONS ${opentrack-perms-exec})
endif()
@@ -250,7 +260,7 @@ function(otr_add_target_dirs var)
list(APPEND globs "${k}/CMakeLists.txt")
endforeach()
set(projects "")
- file(GLOB projects ${globs})
+ file(GLOB projects CONFIGURE_DEPENDS ${globs})
list(SORT projects)
set("${var}" "${projects}" PARENT_SCOPE)
endfunction()
@@ -282,7 +292,7 @@ function(otr_install_lib target dest)
set(pdb-path "")
otr_pdb_for_dll(pdb-path "${path}")
if(pdb-path)
- install(FILES "${pdb-path}" DESTINATION "${opentrack-hier-debug}" PERMISSIONS ${opentrack-perms-exec})
+ install(FILES "${pdb-path}" DESTINATION "${opentrack-debug}" PERMISSIONS ${opentrack-perms-exec})
endif()
endif()
install(FILES "${path}" DESTINATION "${dest}" PERMISSIONS ${opentrack-perms-exec})
diff --git a/cmake/opentrack-hier.cmake b/cmake/opentrack-hier.cmake
index 7dcdb52d..bb1a435d 100644
--- a/cmake/opentrack-hier.cmake
+++ b/cmake/opentrack-hier.cmake
@@ -9,50 +9,45 @@
include_guard(GLOBAL)
-set(opentrack-install-rpath "")
if(APPLE)
- set(opentrack-hier-pfx ".")
- set(opentrack-hier-path "/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-doc "/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-bin ".")
- set(opentrack-doc-pfx "./doc")
- set(opentrack-doc-src-pfx "./source-code")
- set(opentrack-i18n-pfx "./i18n")
- set(opentrack-i18n-path "./i18n")
+ set(opentrack-libexec "Plugins")
+ set(opentrack-runtime-libexec "/Plugins/") # MUST HAVE A TRAILING BACKSLASH, Used in APP
+ set(opentrack-runtime-doc "/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-bin "${CMAKE_INSTALL_PREFIX}")
+ set(opentrack-doc "doc")
+ set(opentrack-i18n "opentrack.app/Contents/Resources") # used during install
+ set(opentrack-runtime-i18n "../Resources/i18n") # used in application
+ set(opentrack-install-rpath "${CMAKE_INSTALL_PREFIX}/Library")
elseif(WIN32)
- set(opentrack-hier-pfx "modules")
- set(opentrack-hier-path "/${opentrack-hier-pfx}/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-doc "/doc/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-bin ".")
- set(opentrack-doc-pfx "./doc")
- set(opentrack-doc-src-pfx "./source-code")
- set(opentrack-i18n-pfx "./i18n")
- set(opentrack-i18n-path "./i18n")
- set(opentrack-hier-debug "./debug")
+ set(opentrack-libexec "modules")
+ set(opentrack-runtime-libexec "/${opentrack-libexec}/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-runtime-doc "/doc/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-bin ".")
+ set(opentrack-doc "doc")
+ set(opentrack-i18n "i18n")
+ set(opentrack-runtime-i18n "./i18n")
+ set(opentrack-debug "./debug")
+ set(opentrack-install-rpath "")
else()
- set(opentrack-hier-pfx "libexec/opentrack")
- set(opentrack-hier-path "/../${opentrack-hier-pfx}/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-doc "/share/doc/opentrack/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-bin "bin")
- set(opentrack-doc-pfx "./share/doc/opentrack")
- set(opentrack-doc-src-pfx "./share/doc/opentrack/source-code")
- set(opentrack-install-rpath "${CMAKE_INSTALL_PREFIX}/${opentrack-hier-pfx}")
- set(opentrack-i18n-pfx "./share/opentrack/i18n")
- set(opentrack-i18n-path "../share/opentrack/i18n")
+ set(opentrack-libexec "libexec/opentrack")
+ set(opentrack-runtime-libexec "/../${opentrack-libexec}/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-runtime-doc "/../share/doc/opentrack/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-bin "bin")
+ set(opentrack-doc "share/doc/opentrack")
+ set(opentrack-install-rpath "${CMAKE_INSTALL_PREFIX}/${opentrack-libexec}")
+ set(opentrack-i18n "share/opentrack/i18n")
+ set(opentrack-runtime-i18n "../share/opentrack/i18n")
endif()
-set(opentrack-hier-str RUNTIME DESTINATION ${opentrack-hier-pfx} LIBRARY DESTINATION ${opentrack-hier-pfx})
function(otr_escape_string var str)
string(REGEX REPLACE "([^_A-Za-z0-9./:-])" "\\\\\\1" str "${str}")
set(${var} "${str}" PARENT_SCOPE)
endfunction()
-set(opentrack-contrib-pfx "${opentrack-doc-pfx}/contrib")
+set(opentrack-contrib-pfx "${opentrack-doc}/contrib")
set(opentrack-binary-suffix "")
-if(APPLE)
- set(opentrack-binary-suffix ".bin")
-elseif(WIN32)
+if(WIN32)
set(opentrack-binary-suffix ".exe")
endif()
diff --git a/cmake/opentrack-i18n.cmake b/cmake/opentrack-i18n.cmake
index e89f5c42..1f0c67d9 100644
--- a/cmake/opentrack-i18n.cmake
+++ b/cmake/opentrack-i18n.cmake
@@ -1,9 +1,7 @@
include_guard(GLOBAL)
add_custom_target(i18n-lupdate)
-set_property(TARGET i18n-lupdate PROPERTY FOLDER "i18n")
add_custom_target(i18n-lrelease DEPENDS i18n-lupdate)
-set_property(TARGET i18n-lrelease PROPERTY FOLDER "i18n")
add_custom_target(i18n ALL DEPENDS i18n-lrelease)
function(otr_i18n_for_target_directory n)
@@ -15,7 +13,7 @@ function(otr_i18n_for_target_directory n)
set(ts-files "")
foreach(k ${opentrack_all-translations})
- list(APPEND ts-files "lang/${k}.ts")
+ list(APPEND ts-files "${CMAKE_CURRENT_SOURCE_DIR}/lang/${k}.ts")
set_property(GLOBAL APPEND PROPERTY "opentrack-ts-files-${k}" "${CMAKE_CURRENT_SOURCE_DIR}/lang/${k}.ts")
endforeach()
set(stamp "${CMAKE_CURRENT_BINARY_DIR}/lupdate.stamp")
@@ -26,6 +24,7 @@ function(otr_i18n_for_target_directory n)
if (NOT EXISTS "${t}")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lang")
file(READ "${CMAKE_SOURCE_DIR}/cmake/translation-stub.ts" stub)
+ string(REPLACE "@LANG@" "${i}" stub "${stub}")
file(WRITE "${t}" "${stub}")
endif()
endforeach()
@@ -48,18 +47,19 @@ function(otr_i18n_for_target_directory n)
-ts ${ts-files}
${to-null}
COMMAND "${CMAKE_COMMAND}" -E touch "${stamp}"
- DEPENDS ${${k}-cc} ${${k}-hh} ${${k}-uih} ${${k}-moc}
+ #BYPRODUCTS ${ts-files}
+ DEPENDS "opentrack-${n}"
COMMENT "Running lupdate for ${n}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
set(target-name "i18n-module-${n}")
add_custom_target(${target-name} DEPENDS "${stamp}" COMMENT "")
- set_property(TARGET ${target-name} PROPERTY FOLDER "i18n")
add_dependencies(i18n-lupdate ${target-name})
endfunction()
function(otr_merge_translations)
- otr_escape_string(i18n-pfx "${opentrack-i18n-pfx}")
- install(CODE "file(REMOVE_RECURSE \"\${CMAKE_INSTALL_PREFIX}/${i18n-pfx}\")")
+ otr_escape_string(i18n-pfx "${opentrack-i18n}")
+ #install(CODE "message(FATAL_ERROR \"foo \${CMAKE_INSTALL_PREFIX}\")")
+ #install(CODE "file(REMOVE_RECURSE \"\${CMAKE_INSTALL_PREFIX}/${i18n-pfx}\")")
foreach(i ${opentrack_all-translations})
get_property(ts-files GLOBAL PROPERTY "opentrack-ts-files-${i}")
@@ -68,7 +68,7 @@ function(otr_merge_translations)
set(qm-output "${CMAKE_BINARY_DIR}/${i}.qm")
# whines about duplicate messages since tracker-pt-base is static
- if(WIN32)
+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
set(to-null "2>NUL")
else()
set(to-null "2>/dev/null")
@@ -82,17 +82,16 @@ function(otr_merge_translations)
${ts-files}
-qm "${qm-output}"
${to-null}
- DEPENDS ${ts-files} i18n-lupdate
+ DEPENDS i18n-lupdate ${ts-files}
COMMENT "Running lrelease for ${i}"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
set(target-name i18n-qm-${i})
add_custom_target(${target-name} DEPENDS "${qm-output}")
- set_property(TARGET ${target-name} PROPERTY FOLDER "i18n")
add_dependencies(i18n-lrelease ${target-name})
install(FILES "${qm-output}"
- DESTINATION "${CMAKE_INSTALL_PREFIX}/${opentrack-i18n-pfx}"
+ DESTINATION "${opentrack-i18n}"
PERMISSIONS ${opentrack-perms-file})
endforeach()
endfunction()
diff --git a/cmake/opentrack-install.cmake b/cmake/opentrack-install.cmake
index 2b745a82..5aac983b 100644
--- a/cmake/opentrack-install.cmake
+++ b/cmake/opentrack-install.cmake
@@ -16,53 +16,28 @@ macro(otr_install_dir path)
)
endmacro()
-function(otr_setup_refresh_install_dir)
- if((NOT CMAKE_INSTALL_PREFIX STREQUAL "") AND (NOT opentrack-doc-src-pfx STREQUAL ""))
- otr_escape_string(dir "${CMAKE_INSTALL_PREFIX}/${opentrack-doc-src-pfx}/")
- install(CODE "file(REMOVE_RECURSE \"${dir}\")")
- endif()
-endfunction()
-
-function(otr_install_sources)
- otr_setup_refresh_install_dir()
- get_property(source-dirs GLOBAL PROPERTY opentrack-all-source-dirs)
- foreach(k ${source-dirs})
- file(RELATIVE_PATH dest "${CMAKE_SOURCE_DIR}" "${k}")
- otr_install_dir("${opentrack-doc-src-pfx}" "${dest}")
- endforeach()
-
- otr_install_dir("${opentrack-doc-src-pfx}" "${CMAKE_SOURCE_DIR}/cmake")
- otr_install_dir("${opentrack-doc-src-pfx}" "${CMAKE_SOURCE_DIR}/bin")
-
- otr_install_misc("${opentrack-doc-src-pfx}" FILES "${CMAKE_SOURCE_DIR}/CMakeLists.txt")
- otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/README.md")
- otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/.github/CONTRIBUTING.md")
- otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/WARRANTY.txt")
- otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/OPENTRACK-LICENSING.txt")
- otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/AUTHORS.md")
-endfunction()
-
function(cleanup_visual_studio_debug)
otr_escape_string(pfx "${CMAKE_INSTALL_PREFIX}")
install(CODE "file(REMOVE_RECURSE \"${pfx}/.vs\")")
endfunction()
-otr_install_dir("${opentrack-doc-pfx}" ${CMAKE_SOURCE_DIR}/3rdparty-notices)
-otr_install_dir("${opentrack-doc-pfx}" "${CMAKE_SOURCE_DIR}/settings" "${CMAKE_SOURCE_DIR}/contrib")
+otr_install_dir("${opentrack-doc}" ${CMAKE_SOURCE_DIR}/3rdparty-notices)
+otr_install_dir("${opentrack-doc}" "${CMAKE_SOURCE_DIR}/settings" "${CMAKE_SOURCE_DIR}/contrib")
+otr_install_dir("${opentrack-libexec}" "${CMAKE_SOURCE_DIR}/presets")
if(WIN32)
otr_install_misc(. FILES "${CMAKE_SOURCE_DIR}/bin/qt.conf")
otr_install_misc(. FILES "${CMAKE_SOURCE_DIR}/bin/cleye.config")
- otr_install_misc(${opentrack-hier-pfx} FILES "${CMAKE_SOURCE_DIR}/bin/cleye.config")
+ otr_install_misc(${opentrack-libexec} FILES "${CMAKE_SOURCE_DIR}/bin/cleye.config")
endif()
-otr_install_misc("${opentrack-doc-pfx}" FILES ${CMAKE_SOURCE_DIR}/README.md)
+otr_install_misc("${opentrack-doc}" FILES ${CMAKE_SOURCE_DIR}/README.md)
-otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/README.md")
-otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/.github/CONTRIBUTING.md")
-otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/WARRANTY.txt")
-otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/OPENTRACK-LICENSING.txt")
-otr_install_misc("${opentrack-doc-pfx}" FILES "${CMAKE_SOURCE_DIR}/AUTHORS.md")
+otr_install_misc("${opentrack-doc}" FILES "${CMAKE_SOURCE_DIR}/README.md")
+otr_install_misc("${opentrack-doc}" FILES "${CMAKE_SOURCE_DIR}/.github/CONTRIBUTING.md")
+otr_install_misc("${opentrack-doc}" FILES "${CMAKE_SOURCE_DIR}/WARRANTY.txt")
+otr_install_misc("${opentrack-doc}" FILES "${CMAKE_SOURCE_DIR}/OPENTRACK-LICENSING.txt")
+otr_install_misc("${opentrack-doc}" FILES "${CMAKE_SOURCE_DIR}/AUTHORS.md")
# this must be done last because the files may be in use already
# do it last so in case of file-in-use failure, the rest is installed
@@ -71,9 +46,13 @@ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
cleanup_visual_studio_debug()
endif()
-otr_install_exec("${opentrack-hier-pfx}" FILES "${CMAKE_SOURCE_DIR}/bin/freetrackclient.dll")
-otr_install_exec("${opentrack-hier-pfx}" FILES "${CMAKE_SOURCE_DIR}/bin/freetrackclient64.dll")
-otr_install_exec("${opentrack-hier-pfx}" FILES
+# For now copy third party needed files into a seperate direcvtory instead of the plugins directory
+if (APPLE)
+ set(OSX_POST_INSTALL_DIR "/../thirdparty")
+endif()
+otr_install_exec("${opentrack-libexec}${OSX_POST_INSTALL_DIR}" FILES "${CMAKE_SOURCE_DIR}/bin/freetrackclient.dll")
+otr_install_exec("${opentrack-libexec}${OSX_POST_INSTALL_DIR}" FILES "${CMAKE_SOURCE_DIR}/bin/freetrackclient64.dll")
+otr_install_exec("${opentrack-libexec}${OSX_POST_INSTALL_DIR}" FILES
"${CMAKE_SOURCE_DIR}/bin/NPClient.dll"
"${CMAKE_SOURCE_DIR}/bin/NPClient64.dll"
"${CMAKE_SOURCE_DIR}/bin/TrackIR.exe")
diff --git a/cmake/opentrack-load-user-settings.cmake b/cmake/opentrack-load-user-settings.cmake
index 1baf3702..fdb63936 100644
--- a/cmake/opentrack-load-user-settings.cmake
+++ b/cmake/opentrack-load-user-settings.cmake
@@ -26,12 +26,11 @@ else()
set(__sdk_host_os "")
endif()
-set(__sdk_paths_basename "sdk-paths-${__sdk_username}@${CMAKE_CXX_COMPILER_ID}-${__sdk_host_os}${__sdk_target_os}.cmake")
-set(__sdk_paths_filename "${CMAKE_SOURCE_DIR}/${__sdk_paths_basename}")
+set(__sdk_paths_filename "${CMAKE_CURRENT_SOURCE_DIR}/sdk-paths-${__sdk_username}@${CMAKE_CXX_COMPILER_ID}-${__sdk_host_os}${__sdk_target_os}.cmake")
if(EXISTS "${__sdk_paths_filename}")
- message(STATUS "Loading user settings '${__sdk_paths_basename}'")
+ message(STATUS "Loading user settings '${__sdk_paths_filename}'")
include("${__sdk_paths_filename}")
else()
- message(STATUS "User settings file '${__sdk_paths_basename}' doesn't exist")
+ message(STATUS "User settings file '${__sdk_paths_filename}' doesn't exist")
endif()
diff --git a/cmake/opentrack-opencv.cmake b/cmake/opentrack-opencv.cmake
index b8c3701c..3acadf4a 100644
--- a/cmake/opentrack-opencv.cmake
+++ b/cmake/opentrack-opencv.cmake
@@ -2,13 +2,3 @@ include_guard(GLOBAL)
include(opentrack-boilerplate)
find_package(OpenCV QUIET)
-
-function(otr_install_opencv_libs)
- foreach(k core features2d calib3d flann imgcodecs imgproc videoio)
- otr_install_lib("opencv_${k}" "${opentrack-hier-pfx}")
- endforeach()
-endfunction()
-
-if(TARGET opencv_core)
- otr_install_opencv_libs()
-endif()
diff --git a/cmake/opentrack-org.cmake b/cmake/opentrack-org.cmake
new file mode 100644
index 00000000..107c829b
--- /dev/null
+++ b/cmake/opentrack-org.cmake
@@ -0,0 +1,21 @@
+include_guard(GLOBAL)
+function(otr_write_org)
+ get_property(ident GLOBAL PROPERTY opentrack-ident)
+ if (ident STREQUAL "")
+ message(FATAL_ERROR "must set global property `opentrack-ident' in `opentrack-variant.cmake'")
+ endif()
+ otr_escape_string(ident "${ident}")
+ set(new-str "#pragma once
+#define OPENTRACK_ORG \"${ident}\"
+")
+
+ set(filename "${CMAKE_BINARY_DIR}/opentrack-org.hxx")
+ set(old-str "")
+ if(EXISTS "${filename}")
+ file(READ "${filename}" old-str)
+ endif()
+ if(NOT old-str STREQUAL new-str)
+ file(WRITE "${filename}" "${new-str}")
+ endif()
+endfunction()
+otr_write_org()
diff --git a/cmake/opentrack-pkg-config.cmake b/cmake/opentrack-pkg-config.cmake
index 5b84cf40..0f13defc 100644
--- a/cmake/opentrack-pkg-config.cmake
+++ b/cmake/opentrack-pkg-config.cmake
@@ -1,7 +1,8 @@
include_guard(GLOBAL)
include(FindPkgConfig)
-function(otr_pkgconfig target)
+function(otr_pkgconfig_ ret target)
+ set(${ret} 1 PARENT_SCOPE)
foreach(i ${ARGN})
set(k pkg-config_${i})
pkg_check_modules(${k} QUIET ${i})
@@ -11,6 +12,17 @@ function(otr_pkgconfig target)
target_include_directories(${target} SYSTEM PRIVATE ${${k}_INCLUDE_DIRS} ${${k}_INCLUDEDIR})
target_link_libraries(${target} ${${k}_LIBRARIES})
else()
+ set(${ret} 0 PARENT_SCOPE)
+ endif()
+ endforeach()
+endfunction()
+
+function(otr_pkgconfig target)
+ set(ret "")
+ otr_pkgconfig_(ret "${target}" ${ARGN})
+ foreach(i ${ARGN})
+ set(k pkg-config_${i})
+ if(NOT ${${k}_FOUND})
message(FATAL_ERROR "Can't find '${i}'. Please install development files for this package.")
endif()
endforeach()
diff --git a/cmake/opentrack-platform.cmake b/cmake/opentrack-platform.cmake
index 02c1b2f8..638260f1 100644
--- a/cmake/opentrack-platform.cmake
+++ b/cmake/opentrack-platform.cmake
@@ -34,12 +34,10 @@ set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "" FORCE)
include_directories("${CMAKE_SOURCE_DIR}")
-set(opentrack_maintainer-mode FALSE CACHE INTERNAL "Select if developing core code (not modules)")
-
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
-set(CMAKE_CXX_STANDARD 17)
-set(CMAKE_CXX_STANDARD_DEFAULT 17)
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_DEFAULT 20)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_EXTENSIONS FALSE)
@@ -54,7 +52,6 @@ set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
-set(CMAKE_MACOSX_RPATH OFF)
if(NOT WIN32 AND NOT APPLE)
include(opentrack-pkg-config)
@@ -98,6 +95,7 @@ if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE)
add_link_options(-Wl,--exclude-libs,ALL)
add_link_options(-Wl,-z,relro,-z,now)
add_link_options(-Wl,--as-needed)
+ add_link_options(-Wl,-z,noexecstack)
add_compile_options(-fno-plt)
endif()
endif()
@@ -119,15 +117,15 @@ if(MSVC)
add_definitions(-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1)
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
- add_compile_options(-EHs-c-)
+ #add_compile_options(-EHsc)
add_definitions(-D_HAS_EXCEPTIONS=0)
add_definitions(-D_ENABLE_EXTENDED_ALIGNED_STORAGE)
add_definitions(-D_ENABLE_ATOMIC_ALIGNMENT_FIX)
add_definitions(-D_SILENCE_CXX17_NEGATORS_DEPRECATION_WARNING)
add_definitions(-D_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING)
+ add_definitions(-D_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING)
- add_compile_options(-diagnostics:caret)
add_compile_options(-permissive-)
if(opentrack-64bit)
@@ -139,6 +137,16 @@ if(MSVC)
add_link_options(-ignore:4020)
add_link_options(-ignore:4217) # debug build
+
+ if(MSVC_VERSION GREATER_EQUAL 1913)
+ if(NOT MSVC_VERSION GREATER_EQUAL 1929)
+ add_compile_options(-experimental:external)
+ endif()
+ add_compile_options(-external:W0 -external:anglebrackets)
+ endif()
+ add_compile_options(-Zc:preprocessor)
+ #add_compile_options(-Zc:inline)
+
#C4457: declaration of 'id' hides function parameter
#C4456: declaration of 'i' hides previous local declaration
#C4263 - member function does not override any base class virtual member function
@@ -147,22 +155,15 @@ if(MSVC)
#C4266 - no override available for virtual member function from base type, function is hidden
#C4928 - illegal copy-initialization, more than one user-defined conversion has been implicitly applied
#C4200: nonstandard extension used: zero-sized array in struct/union
+ #C4459: declaration of 'eps' hides global declaration
- set(warns-disable 4530 4577 4789 4244 4702 4530 4244 4127 4458 4456 4251 4100 4702 4457 4200)
+ set(warns-disable 4530 4577 4789 4244 4702 4530 4244 4127 4458 4456 4251 4100 4702 4457 4200 4459)
foreach(i ${warns-disable})
add_compile_options(-wd${i})
endforeach()
endif()
-if(APPLE)
- add_compile_definitions(-stdlib=libc++)
- add_link_options(-stdlib=libc++)
-
- add_link_options(-framework Cocoa -framework CoreFoundation -framework Carbon)
- link_libraries(objc z)
-endif()
-
if(NOT MSVC)
include(FindPkgConfig)
endif()
diff --git a/cmake/opentrack-policy.cmake b/cmake/opentrack-policy.cmake
index 209ef529..5fd8647f 100644
--- a/cmake/opentrack-policy.cmake
+++ b/cmake/opentrack-policy.cmake
@@ -13,9 +13,12 @@ set(_policies
CMP0012
CMP0069
CMP0063
+ CMP0074
)
foreach(k ${_policies})
if(POLICY ${k})
cmake_policy(SET ${k} NEW)
endif()
endforeach()
+
+set(CMAKE_INSTALL_MESSAGE LAZY)
diff --git a/cmake/opentrack-qt.cmake b/cmake/opentrack-qt.cmake
index 8c92483c..1735e836 100644
--- a/cmake/opentrack-qt.cmake
+++ b/cmake/opentrack-qt.cmake
@@ -2,22 +2,38 @@ include_guard(GLOBAL)
if(WIN32)
find_package(Qt5Gui REQUIRED COMPONENTS QWindowsIntegrationPlugin)
endif()
-find_package(Qt5 REQUIRED COMPONENTS Core Network Widgets LinguistTools Gui QUIET)
-find_package(Qt5 COMPONENTS SerialPort QUIET)
+set(qt-required-components Core Network Widgets LinguistTools Gui)
+set(qt-optional-components SerialPort)
+set(qt-imported-targets Qt5::Core Qt5::Gui Qt5::Network Qt5::Widgets)
+if(APPLE)
+ list(APPEND qt-required-components "DBus")
+ list(APPEND qt-optional-components "Multimedia")
+ list(APPEND qt-imported-targets Qt5::DBus Qt5::Multimedia)
+endif()
+
+find_package(Qt5 REQUIRED COMPONENTS ${qt-required-components} QUIET)
+find_package(Qt5 COMPONENTS ${qt-optional-components} QUIET)
set(MY_QT_LIBS ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES})
+if(APPLE)
+ list(APPEND MY_QT_LIBS ${Qt5Multimedia_LIBRARIES} ${Qt5DBus_LIBRARIES})
+endif()
function(otr_install_qt_libs)
- foreach(i Qt5::Core Qt5::Gui Qt5::Network Qt5::SerialPort Qt5::Widgets)
+ foreach(i ${qt-imported-targets})
if(NOT TARGET "${i}")
continue()
endif()
otr_install_lib(${i} ".")
endforeach()
+ if(WIN32)
otr_install_lib(Qt5::QWindowsIntegrationPlugin "./platforms")
+ endif()
endfunction()
-otr_install_qt_libs()
+if(WIN32 OR APPLE)
+ otr_install_qt_libs()
+endif()
function(otr_qt n)
if(".${${n}-cc}${${n}-cxx}${${n}-hh}" STREQUAL ".")
@@ -35,7 +51,7 @@ function(otr_qt n)
endfunction()
function(otr_qt2 n)
- target_include_directories("${n}" PRIVATE SYSTEM
+ target_include_directories("${n}" SYSTEM PRIVATE
${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS}
)
target_compile_definitions("${n}" PRIVATE
diff --git a/cmake/opentrack-rift.cmake b/cmake/opentrack-rift.cmake
deleted file mode 100644
index cdcfc946..00000000
--- a/cmake/opentrack-rift.cmake
+++ /dev/null
@@ -1,38 +0,0 @@
-include_guard(GLOBAL)
-function(otr_rift proj opt)
- if(${opt})
- set(link-flags)
- set(c-flags)
- if(APPLE)
- set(link-flags "-framework CoreFoundation -framework CoreGraphics -framework IOKit -framework Quartz")
- set(c-flags "-fno-strict-aliasing")
- elseif(NOT MSVC)
- set(c-flags "-fno-strict-aliasing")
- endif()
- otr_module(${proj} LINK ${link-flags} COMPILE ${c-flags})
- set(proj "opentrack-${proj}")
- target_include_directories(${proj} SYSTEM PUBLIC ${${opt}}/Include ${${opt}}/Src)
- set(c-flags)
- set(link-flags)
- if(MSVC)
- set(ext lib)
- set(p)
- else()
- set(ext a)
- set(p lib)
- endif()
- if(MSVC)
- set(pfx "")
- else()
- set(pfx "lib")
- endif()
- target_link_libraries(${proj} ${${opt}}/${pfx}LibOVR.${ext})
- if(WIN32)
- target_link_libraries(${proj} winmm setupapi ws2_32 imagehlp wbemuuid)
- set(ext)
- set(p)
- elseif(NOT APPLE)
- target_link_libraries(${proj} udev Xinerama)
- endif()
- endif()
-endfunction()
diff --git a/cmake/opentrack-variant.cmake b/cmake/opentrack-variant.cmake
index 2cf39fcd..5cb4bd57 100644
--- a/cmake/opentrack-variant.cmake
+++ b/cmake/opentrack-variant.cmake
@@ -1,29 +1,32 @@
include_guard(GLOBAL)
-function(otr_dist_select_variant)
- file(GLOB variants "variant/*")
+function(otr_init_variant)
+ set_property(GLOBAL PROPERTY opentrack-variant "default")
+ set_property(GLOBAL PROPERTY opentrack-ident "opentrack-2.3")
- set(variant-list "")
-
- foreach(k ${variants})
- get_filename_component(name "${k}" NAME)
- if(EXISTS "${k}/_variant.cmake")
- list(APPEND variant-list "${name}")
- else()
- message(FATAL_ERROR "stray variant dir '${name}'")
- endif()
- endforeach()
-
- set(opentrack_variant "default" CACHE STRING "")
- set(dir "${CMAKE_SOURCE_DIR}/variant/${opentrack_variant}")
-
- if(NOT EXISTS "${dir}/_variant.cmake")
- set(opentrack_variant "default" CACHE STRING "" FORCE)
- set(dir "${CMAKE_SOURCE_DIR}/variant/${opentrack_variant}")
- endif()
-
- set_property(CACHE opentrack_variant PROPERTY STRINGS "${variant-list}")
-
- include("${dir}/_variant.cmake")
- otr_init_variant()
+ set(subprojects
+ "tracker-*"
+ "proto-*"
+ "filter-*"
+ "options"
+ "api"
+ "compat"
+ "logic"
+ "dinput"
+ "gui"
+ "main"
+ "x-plane-plugin"
+ "csv"
+ "pose-widget"
+ "spline"
+ "qxt-mini"
+ "macosx"
+ "cv"
+ "migration"
+ "main-window"
+ "video"
+ "video-*"
+ "opentrack"
+ )
+ set_property(GLOBAL PROPERTY opentrack-subprojects "${subprojects}")
endfunction()
diff --git a/cmake/translation-stub.ts b/cmake/translation-stub.ts
index 6401616d..9d616636 100644
--- a/cmake/translation-stub.ts
+++ b/cmake/translation-stub.ts
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1">
+<TS version="2.1" language="@LANG@">
</TS>