diff options
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/FindEigen3.cmake | 106 | ||||
| -rw-r--r-- | cmake/FindONNXRuntime.cmake | 104 | ||||
| -rw-r--r-- | cmake/apple.cmake | 13 | ||||
| -rw-r--r-- | cmake/msvc-clang.cmake | 131 | ||||
| -rw-r--r-- | cmake/msvc.cmake | 160 | ||||
| -rw-r--r-- | cmake/opentrack-boilerplate.cmake | 47 | ||||
| -rw-r--r-- | cmake/opentrack-hier.cmake | 16 | ||||
| -rw-r--r-- | cmake/opentrack-i18n.cmake | 25 | ||||
| -rw-r--r-- | cmake/opentrack-install.cmake | 65 | ||||
| -rw-r--r-- | cmake/opentrack-load-user-settings.cmake | 7 | ||||
| -rw-r--r-- | cmake/opentrack-opencv.cmake | 10 | ||||
| -rw-r--r-- | cmake/opentrack-org.cmake | 21 | ||||
| -rw-r--r-- | cmake/opentrack-pkg-config.cmake | 33 | ||||
| -rw-r--r-- | cmake/opentrack-platform.cmake | 28 | ||||
| -rw-r--r-- | cmake/opentrack-policy.cmake | 4 | ||||
| -rw-r--r-- | cmake/opentrack-qt.cmake | 35 | ||||
| -rw-r--r-- | cmake/opentrack-variant.cmake | 53 | ||||
| -rw-r--r-- | cmake/translation-stub.ts | 2 |
18 files changed, 430 insertions, 430 deletions
diff --git a/cmake/FindEigen3.cmake b/cmake/FindEigen3.cmake deleted file mode 100644 index bbad2298..00000000 --- a/cmake/FindEigen3.cmake +++ /dev/null @@ -1,106 +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 -# -# This module reads hints about search locations from -# the following enviroment variables: -# -# EIGEN3_ROOT -# EIGEN3_ROOT_DIR - -# 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) - - # search first if an Eigen3Config.cmake is available in the system, - # if successful this would set EIGEN3_INCLUDE_DIR and the rest of - # the script will work as usual - find_package(Eigen3 ${Eigen3_FIND_VERSION} NO_MODULE QUIET) - - if(NOT EIGEN3_INCLUDE_DIR) - find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library - HINTS - ENV EIGEN3_ROOT - ENV EIGEN3_ROOT_DIR - PATHS - ${CMAKE_INSTALL_PREFIX}/include - ${KDE4_INCLUDE_DIR} - PATH_SUFFIXES eigen3 eigen - ) - endif(NOT EIGEN3_INCLUDE_DIR) - - 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 cd967dd9..b43ac7f1 100644 --- a/cmake/msvc.cmake +++ b/cmake/msvc.cmake @@ -3,8 +3,25 @@ # mkdir build && cmake -DCMAKE_TOOLCHAIN_FILE=$(pwd)/../cmake/msvc.cmake build/ SET(CMAKE_SYSTEM_NAME Windows) -SET(CMAKE_SYSTEM_VERSION 5.01) -set(CMAKE_SYSTEM_PROCESSOR x86) +if(opentrack-64bit) + set(CMAKE_SYSTEM_PROCESSOR AMD64) + SET(CMAKE_SYSTEM_VERSION 5.02) +else() + set(CMAKE_SYSTEM_PROCESSOR x86) + SET(CMAKE_SYSTEM_VERSION 5.01) +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) @@ -12,15 +29,46 @@ SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_GENERATOR "Ninja") #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() + +set(OpenCV_STATIC 1) 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") @@ -34,46 +82,102 @@ if(CMAKE_PROJECT_NAME STREQUAL "opentrack") endif() if(CMAKE_PROJECT_NAME STREQUAL "QtBase") - unset(CMAKE_CROSSCOMPILING) - 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) + 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") +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) + + set(OPENCV_SKIP_MSVC_PARALLEL 1) + set(OPENCV_DISABLE_THREAD_SUPPORT 1) +endif() + +if(CMAKE_PROJECT_NAME STREQUAL "TestOscpack") + add_compile_definitions(OSC_HOST_LITTLE_ENDIAN) endif() -set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) +set(opentrack-simd "SSE2") + +if(CMAKE_PROJECT_NAME STREQUAL "onnxruntime") + sets(BOOL + ONNX_USE_MSVC_STATIC_RUNTIME ON + protobuf_MSVC_STATIC_RUNTIME ON + ABSL_MSVC_STATIC_RUNTIME ON + onnxruntime_USE_AVX ON + 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 + BUILD_SHARED_LIBS OFF + ) + if(opentrack-64bit) + sets(BOOL + onnxruntime_USE_AVX ON + ) + endif() +endif() + +if(opentrack-64bit) + set(opentrack-simd "AVX") +endif() + +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL") +add_compile_options(-MT) -add_compile_options(-Zi -Zf -Zo -bigobj -cgthreads1 -vd0) add_link_options(-cgthreads:1) -set(_CFLAGS "") -set(_CXXFLAGS "") -set(_CFLAGS_RELEASE "-O2 -Oit -Oy- -Ob3 -fp:fast -GS- -GF -GL -Gw -Gy -arch:SSE2 -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 "") +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_RELEASE "-LTCG") set(_LDFLAGS_STATIC_DEBUG "") -if(CMAKE_INSTALL_PREFIX STREQUAL "") - 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 a78e0ed0..3c66cc61 100644 --- a/cmake/opentrack-boilerplate.cmake +++ b/cmake/opentrack-boilerplate.cmake @@ -1,5 +1,9 @@ include_guard(GLOBAL) +if(POLICY CMP0177) + cmake_policy(SET CMP0177 NEW) +endif() + set(opentrack-perms-file WORLD_READ OWNER_WRITE OWNER_READ GROUP_READ) set(opentrack-perms-dir WORLD_READ WORLD_EXECUTE OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE) set(opentrack-perms-exec "${opentrack-perms-dir}") @@ -44,15 +48,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) @@ -84,7 +88,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() @@ -145,7 +149,7 @@ function(otr_module n_) if(arg_EXECUTABLE) if (APPLE) - set(subsys "MACOSX_BUNDLE") + set(subsys "MACOSX_BUNDLE") elseif(NOT WIN32) set(subsys "") elseif(arg_WIN32-CONSOLE) @@ -177,7 +181,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) @@ -194,12 +198,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) @@ -222,20 +221,22 @@ function(otr_module n_) if(arg_BIN) 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 + 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} + RUNTIME DESTINATION "${opentrack-bin}" + LIBRARY DESTINATION "${opentrack-libexec}" PERMISSIONS ${opentrack-perms-exec}) endif() else() # Plugins - install(TARGETS "${n}" ${opentrack-install-src} + install(TARGETS "${n}" + RUNTIME DESTINATION "${opentrack-libexec}" + LIBRARY DESTINATION "${opentrack-libexec}" PERMISSIONS ${opentrack-perms-exec}) endif() @@ -263,7 +264,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() diff --git a/cmake/opentrack-hier.cmake b/cmake/opentrack-hier.cmake index 16694d1f..bb1a435d 100644 --- a/cmake/opentrack-hier.cmake +++ b/cmake/opentrack-hier.cmake @@ -14,8 +14,7 @@ if(APPLE) 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-src "./source-code") + 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") @@ -24,24 +23,21 @@ elseif(WIN32) 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-src "./source-code") - set(opentrack-i18n "./i18n") + set(opentrack-doc "doc") + set(opentrack-i18n "i18n") set(opentrack-runtime-i18n "./i18n") set(opentrack-debug "./debug") set(opentrack-install-rpath "") else() 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-runtime-doc "/../share/doc/opentrack/") # MUST HAVE A TRAILING BACKSLASH set(opentrack-bin "bin") - set(opentrack-doc "./share/doc/opentrack") - set(opentrack-src "./share/doc/opentrack/source-code") + set(opentrack-doc "share/doc/opentrack") set(opentrack-install-rpath "${CMAKE_INSTALL_PREFIX}/${opentrack-libexec}") - set(opentrack-i18n "./share/opentrack/i18n") + set(opentrack-i18n "share/opentrack/i18n") set(opentrack-runtime-i18n "../share/opentrack/i18n") endif() -set(opentrack-install-src RUNTIME DESTINATION ${opentrack-libexec} LIBRARY DESTINATION ${opentrack-libexec}) function(otr_escape_string var str) string(REGEX REPLACE "([^_A-Za-z0-9./:-])" "\\\\\\1" str "${str}") diff --git a/cmake/opentrack-i18n.cmake b/cmake/opentrack-i18n.cmake index 297307b9..fca83248 100644 --- a/cmake/opentrack-i18n.cmake +++ b/cmake/opentrack-i18n.cmake @@ -1,21 +1,23 @@ include_guard(GLOBAL) +if(POLICY CMP0177) + cmake_policy(SET CMP0177 NEW) +endif() + 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) set(k "opentrack-${n}") - get_property(lupdate-binary TARGET "Qt6::lupdate" PROPERTY IMPORTED_LOCATION) + get_property(lupdate-binary TARGET Qt6::lupdate PROPERTY IMPORTED_LOCATION) #make_directory("${CMAKE_CURRENT_BINARY_DIR}/lang") 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 +28,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,22 +51,23 @@ 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}") - install(CODE "file(REMOVE_RECURSE \"\${CMAKE_INSTALL_PREFIX}/${i18n-pfx}\")") + #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}") - get_property(lrelease-binary TARGET "Qt6::lrelease" PROPERTY IMPORTED_LOCATION) + get_property(lrelease-binary TARGET Qt6::lrelease PROPERTY IMPORTED_LOCATION) set(qm-output "${CMAKE_BINARY_DIR}/${i}.qm") @@ -82,17 +86,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}" + DESTINATION "${opentrack-i18n}" PERMISSIONS ${opentrack-perms-file}) endforeach() endfunction() diff --git a/cmake/opentrack-install.cmake b/cmake/opentrack-install.cmake index 94f3e29d..ebef95bc 100644 --- a/cmake/opentrack-install.cmake +++ b/cmake/opentrack-install.cmake @@ -1,4 +1,9 @@ include_guard(GLOBAL) + +if(POLICY CMP0177) + cmake_policy(SET CMP0177 NEW) +endif() + macro(otr_install_misc path) install(${ARGN} DESTINATION "${path}" PERMISSIONS ${opentrack-perms-file}) endmacro() @@ -16,53 +21,29 @@ macro(otr_install_dir path) ) endmacro() -function(otr_setup_refresh_install_dir) - if((NOT CMAKE_INSTALL_PREFIX STREQUAL "") AND (NOT opentrack-src STREQUAL "")) - otr_escape_string(dir "${CMAKE_INSTALL_PREFIX}/${opentrack-src}/") - 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-src}" "${dest}") - endforeach() - - otr_install_dir("${opentrack-src}" "${CMAKE_SOURCE_DIR}/cmake") - otr_install_dir("${opentrack-src}" "${CMAKE_SOURCE_DIR}/bin") - - otr_install_misc("${opentrack-src}" FILES "${CMAKE_SOURCE_DIR}/CMakeLists.txt") - 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") -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}" ${CMAKE_SOURCE_DIR}/3rdparty-notices) -otr_install_dir("${opentrack-doc}" "${CMAKE_SOURCE_DIR}/settings" "${CMAKE_SOURCE_DIR}/contrib") +otr_install_dir("${opentrack-doc}" "3rdparty-notices") +otr_install_dir("${opentrack-doc}" "settings" "${CMAKE_SOURCE_DIR}/contrib") +otr_install_dir("${opentrack-libexec}" "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-libexec} FILES "${CMAKE_SOURCE_DIR}/bin/cleye.config") + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + otr_install_misc(. FILES "bin/cleye.config") + otr_install_misc(${opentrack-libexec} FILES "bin/cleye.config") + endif() endif() -otr_install_misc("${opentrack-doc}" FILES ${CMAKE_SOURCE_DIR}/README.md) +otr_install_misc("${opentrack-doc}" FILES README.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") +otr_install_misc("${opentrack-doc}" FILES "README.md") +otr_install_misc("${opentrack-doc}" FILES ".github/CONTRIBUTING.md") +otr_install_misc("${opentrack-doc}" FILES "WARRANTY.txt") +otr_install_misc("${opentrack-doc}" FILES "OPENTRACK-LICENSING.txt") +otr_install_misc("${opentrack-doc}" FILES "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 @@ -75,9 +56,9 @@ endif() 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 "bin/freetrackclient.dll") +otr_install_exec("${opentrack-libexec}${OSX_POST_INSTALL_DIR}" FILES "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") + "bin/NPClient.dll" + "bin/NPClient64.dll" + "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 40356418..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-libexec}") - 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..0ea92e56 100644 --- a/cmake/opentrack-pkg-config.cmake +++ b/cmake/opentrack-pkg-config.cmake @@ -1,19 +1,34 @@ include_guard(GLOBAL) include(FindPkgConfig) -function(otr_pkgconfig target) +function(_otr_pkgconfig_add target k) + target_compile_options(${target} PRIVATE "${${k}_CFLAGS}") + target_link_options(${target} PRIVATE ${${k}_LDFLAGS}) + target_include_directories(${target} SYSTEM PRIVATE ${${k}_INCLUDE_DIRS} ${${k}_INCLUDEDIR}) + target_link_libraries(${target} ${${k}_LIBRARIES}) +endfunction() + + +function(otr_pkgconfig_ ret target) + set(${ret} 1 PARENT_SCOPE) foreach(i ${ARGN}) set(k pkg-config_${i}) - pkg_check_modules(${k} QUIET ${i}) - if(${${k}_FOUND}) - target_compile_options(${target} PRIVATE "${${k}_CFLAGS}") - target_link_options(${target} PRIVATE ${${k}_LDFLAGS}) - target_include_directories(${target} SYSTEM PRIVATE ${${k}_INCLUDE_DIRS} ${${k}_INCLUDEDIR}) - target_link_libraries(${target} ${${k}_LIBRARIES}) + pkg_check_modules(${k} ${i}) + if(${k}_FOUND) + _otr_pkgconfig_add(${target} ${k}) else() - message(FATAL_ERROR "Can't find '${i}'. Please install development files for this package.") + set(${ret} 0 PARENT_SCOPE) endif() endforeach() endfunction() - +function(otr_pkgconfig target) + foreach(i ${ARGN}) + set(k pkg-config_${i}) + pkg_check_modules(${k} ${i}) + if(NOT ${k}_FOUND) + message(FATAL_ERROR "can't find ${i} for ${target}") + endif() + _otr_pkgconfig_add(${target} ${k}) + endforeach() +endfunction() diff --git a/cmake/opentrack-platform.cmake b/cmake/opentrack-platform.cmake index 23f684f3..43d9c7a0 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) @@ -97,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() @@ -118,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(-EHsc) - #add_definitions(-D_HAS_EXCEPTIONS=0) + #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) @@ -134,10 +133,20 @@ if(MSVC) endif() add_link_options(-DYNAMICBASE -NXCOMPAT) - add_link_options(-WX) + #add_link_options(-WX) 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 @@ -146,8 +155,9 @@ 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}) diff --git a/cmake/opentrack-policy.cmake b/cmake/opentrack-policy.cmake index 6426cf87..5fd8647f 100644 --- a/cmake/opentrack-policy.cmake +++ b/cmake/opentrack-policy.cmake @@ -13,10 +13,12 @@ set(_policies CMP0012 CMP0069 CMP0063 - CMP0082 + 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 ab0b751b..39aa6361 100644 --- a/cmake/opentrack-qt.cmake +++ b/cmake/opentrack-qt.cmake @@ -1,38 +1,39 @@ include_guard(GLOBAL) set(qt-required-components Core Network Widgets LinguistTools Gui) set(qt-optional-components SerialPort) -set(qt-imported-targets Qt6::Core Qt6::Gui Qt6::Network Qt6::SerialPort Qt6::Widgets) +set(qt-imported-targets Qt6::Core Qt6::Gui Qt6::Network Qt6::Widgets) if(APPLE) - list(APPEND qt-required-components "DBus") - list(APPEND qt-optional-components "Multimedia") - list(APPEND qt-imported-targets Qt6::DBus Qt6::Multimedia) -elseif(WIN32) - list(APPEND qt-required-components) + list(APPEND qt-required-components Multimedia) + list(APPEND qt-imported-targets Multimedia) endif() find_package(Qt6 REQUIRED COMPONENTS ${qt-required-components} QUIET) find_package(Qt6 COMPONENTS ${qt-optional-components} QUIET) -set(MY_QT_LIBS ${Qt6Core_LIBRARIES} ${Qt6Gui_LIBRARIES} ${Qt6Widgets_LIBRARIES} ${Qt6Network_LIBRARIES}) +if(WIN32) + find_package(Qt6Gui REQUIRED COMPONENTS QWindowsIntegrationPlugin) +endif() + +set(MY_QT_LIBS Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network) if(APPLE) - list(APPEND MY_QT_LIBS ${Qt6Multimedia_LIBRARIES} ${Qt6DBus_LIBRARIES}) + list(APPEND MY_QT_LIBS Qt6::Multimedia) endif() function(otr_install_qt_libs) foreach(i ${qt-imported-targets}) - if(NOT TARGET "${i}") - continue() - endif() - otr_install_lib(${i} "platforms") + #if(NOT TARGET "${i}") + # continue() + #endif() + otr_install_lib(${i} ".") endforeach() if(WIN32) - get_property(foo TARGET Qt6::Core PROPERTY IMPORTED_LOCATION) - get_filename_component(foo "${foo}" DIRECTORY) - otr_install_lib("${foo}/../platforms/qwindows.dll" "platforms") + otr_install_lib(Qt6::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 ".") @@ -50,7 +51,7 @@ function(otr_qt n) endfunction() function(otr_qt2 n) - target_include_directories("${n}" PRIVATE SYSTEM + target_include_directories("${n}" SYSTEM PRIVATE ${Qt6Core_INCLUDE_DIRS} ${Qt6Gui_INCLUDE_DIRS} ${Qt6Widgets_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ) target_compile_definitions("${n}" PRIVATE 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> |
