Merge pull request #1584 from overte-org/cmake_variables
Some checks are pending
Master API-docs CI Build and Deploy / Build and deploy API-docs (push) Waiting to run
Master Doxygen CI Build and Deploy / Build and deploy Doxygen documentation (push) Waiting to run

CMake refactor
This commit is contained in:
ksuprynowicz 2025-06-13 09:20:17 +02:00 committed by GitHub
commit b688a0539b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
41 changed files with 340 additions and 500 deletions

View file

@ -158,22 +158,12 @@ jobs:
# Tagged builds. E.g. release or release candidate builds.
if [ "${{github.ref_type}}" == "tag" ]; then
echo "PRODUCTION_BUILD=true" >> $GITHUB_ENV
fi
# Systems requiring our prebuilt Qt package
if [[ "${{ matrix.os }}" = "ubuntu-18.04" || "${{ matrix.os }}" = "ubuntu-20.04" ]]; then
echo # false
echo "OVERTE_RELEASE_TYPE=PRODUCTION" >> $GITHUB_ENV
else
echo "OVERTE_USE_SYSTEM_QT=true" >> $GITHUB_ENV
echo "OVERTE_RELEASE_TYPE=PR" >> $GITHUB_ENV
fi
# Architecture specific variables
if [[ "${{ matrix.arch }}" = "aarch64" ]]; then
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE= -DSERVER_ONLY=true -DBUILD_TOOLS=true" >> $GITHUB_ENV
else # amd64
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE=-msse3 -DSERVER_ONLY=true -DBUILD_TOOLS=true" >> $GITHUB_ENV
fi
echo "CMAKE_EXTRA=-DOVERTE_BUILD_SERVER=true -DOVERTE_BUILD_TOOLS=true -DOVERTE_BUILD_CLIENT=false" >> $GITHUB_ENV
# Configuration is broken into multiple steps because you can't set an env var and also reference it in the same step
- name: Configure Build Environment 2
@ -205,18 +195,6 @@ jobs:
fi
fi
echo "BUILD_NUMBER=$GIT_COMMIT_SHORT" >> $GITHUB_ENV
# Disabled until we build with Crashpad again.
#~ if [ "${{ github.ref_type }}" == "tag" ]; then
#~ export CMAKE_BACKTRACE_URL="${{ secrets.SENTRY_MINIDUMP_ENDPOINT }}"
#~ export CMAKE_BACKTRACE_TOKEN="${{ github.ref_name }}_${{ matrix.os }}_${{ github.sha }}"
#~ else
#~ # We're building a PR, default to the PR endpoint
#~ export CMAKE_BACKTRACE_URL="https://o4504831972343808.ingest.sentry.io/api/4504832427950080/minidump/?sentry_key=f511de295975461b8f92a36f4a4a4f32"
#~ export CMAKE_BACKTRACE_TOKEN="server_pr_${{ github.event.number }}_${{ github.sha }}"
#~ fi
- name: Configure Build Environment 3
shell: bash
run: |
@ -267,7 +245,7 @@ jobs:
- name: Configure CMake
shell: bash
# This syntax requires CMake 3.23
run: cmake --preset conan-${BUILD_TYPE,,} $CMAKE_EXTRA
run: cmake --preset conan-${BUILD_TYPE,,} -DOVERTE_RELEASE_TYPE=$OVERTE_RELEASE_TYPE -DOVERTE_RELEASE_NUMBER=$RELEASE_NUMBER -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT $CMAKE_EXTRA
- name: Build Domain Server
working-directory: build

View file

@ -13,17 +13,10 @@ on:
env:
APP_NAME: interface
BUILD_TYPE: Release
BUILD_NUMBER: ${{ github.event.number }}_${{ github.sha }}
GIT_COMMIT: ${{ github.sha }}
RELEASE_TYPE: PRODUCTION
RELEASE_NUMBER: ${{ github.event.number }}_${{ github.sha }}
STABLE_BUILD: 0
UPLOAD_BUCKET: overte-public
UPLOAD_REGION: fra1
UPLOAD_ENDPOINT: "https://fra1.digitaloceanspaces.com"
# Disabled until we build with Crashpad again.
# CMAKE_BACKTRACE_URL: ${{ secrets.SENTRY_MINIDUMP_ENDPOINT }}
# CMAKE_BACKTRACE_TOKEN: master_${{ github.event.number }}_${{ github.sha }}
# OSX-specific variables
DEVELOPER_DIR: /Applications/Xcode_11.2.app/Contents/Developer
@ -56,12 +49,6 @@ jobs:
fail-fast: false
runs-on: ${{matrix.os}}
steps:
- name: Report Build Number
shell: bash
run: |
echo "Build number: $BUILD_NUMBER"
- name: Configure build environment 1
shell: bash
id: buildenv1
@ -119,11 +106,9 @@ jobs:
echo "GIT_COMMIT_SHORT=${{ steps.buildenv1.outputs.github_sha_short }}" >> $GITHUB_ENV
# Build type variables
if [ "${{ matrix.build_type }}" = "full" ]; then
echo "CLIENT_ONLY=FALSE" >> $GITHUB_ENV
echo "INSTALLER=Overte-${{ github.event.number }}_${{ github.sha }}-${{ steps.buildenv1.outputs.github_sha_short }}.$INSTALLER_EXT" >> $GITHUB_ENV
else
echo "CLIENT_ONLY=TRUE" >> $GITHUB_ENV
echo "INSTALLER=Overte-Interface-master$BUILD_NUMBER-${{ steps.buildenv1.outputs.github_sha_short }}.$INSTALLER_EXT" >> $GITHUB_ENV
echo "INSTALLER=Overte-Interface-master-${{ steps.buildenv1.outputs.github_sha_short }}.$INSTALLER_EXT" >> $GITHUB_ENV
fi
- name: Clear Working Directories
@ -214,16 +199,15 @@ jobs:
shell: bash
- name: Configure CMake
if: startsWith(matrix.os, 'Windows') == false
shell: bash
# This syntax requires CMake 3.23
run: cmake --preset conan-${BUILD_TYPE,,} -DCLIENT_ONLY:BOOLEAN=$CLIENT_ONLY -DBYPASS_SIGNING:BOOLEAN=TRUE $CMAKE_EXTRA
- name: Configure CMake (Windows)
if: startsWith(matrix.os, 'Windows')
shell: bash
# This syntax requires CMake 3.23
run: cmake --preset conan-default -DCLIENT_ONLY:BOOLEAN=$CLIENT_ONLY -DBYPASS_SIGNING:BOOLEAN=TRUE $CMAKE_EXTRA
run: |
if [[ "${{ matrix.os }}" =~ "Windows" ]]; then
# This syntax requires CMake 3.23
cmake --preset conan-default -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT -DOVERTE_RELEASE_TYPE=NIGHTLY $CMAKE_EXTRA
else
# This syntax requires CMake 3.23
cmake --preset conan-${BUILD_TYPE,,} -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT -DOVERTE_RELEASE_TYPE=NIGHTLY $CMAKE_EXTRA
fi
- name: Build application
shell: bash
@ -291,7 +275,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ${{ env.INSTALLER }}
path: build/${{ env.INSTALLER }}
path: build/Overte-*
if-no-files-found: error
#- name: Archive symbols

View file

@ -14,14 +14,8 @@ env:
APP_NAME: interface
BUILD_TYPE: Release
GIT_COMMIT: ${{ github.event.pull_request.head.sha }}
RELEASE_TYPE: PR
RELEASE_NUMBER: ${{ github.event.number }}
# Android
VERSION_CODE: ${{ github.event.number }}
# Sentry Crash Reporting
# We can't use secrets or actions here, so the actual value has to be hardcoded.
# Disabled until we build with Crashpad again.
# CMAKE_BACKTRACE_URL: "https://o4504831972343808.ingest.sentry.io/api/4504832427950080/minidump/?sentry_key=f511de295975461b8f92a36f4a4a4f32"
# CMAKE_BACKTRACE_TOKEN: PR_${{ github.event.number }}_${{ github.sha }}
UPLOAD_BUCKET: overte-public
UPLOAD_REGION: fra1
@ -101,18 +95,18 @@ jobs:
if [[ "${{ matrix.arch }}" = "aarch64" ]]; then
if [ "${{ matrix.build_type }}" = "full" ]; then
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE= -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-DOVERTE_BUILD_TOOLS=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
else
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE= -DCLIENT_ONLY=1 -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-DOVERTE_BUILD_SERVER=FALSE -DOVERTE_BUILD_TOOLS=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
fi
fi
if [[ "${{ matrix.arch }}" = "amd64" ]]; then
if [ "${{ matrix.build_type }}" = "full" ]; then
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE=-msse3 -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
else
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE=-msse3 -DCLIENT_ONLY=1 -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-DOVERTE_BUILD_SERVER=FALSE -DOVERTE_BUILD_TOOLS=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
fi
fi
fi
@ -123,9 +117,9 @@ jobs:
echo "PYTHON_EXEC=python3" >> $GITHUB_ENV
echo "INSTALLER_EXT=dmg" >> $GITHUB_ENV
if [ "${{ matrix.build_type }}" = "full" ]; then
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE= -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib -G Xcode" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib -G Xcode" >> $GITHUB_ENV
else
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE= -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -DCLIENT_ONLY=1 -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib -G Xcode" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -DCLIENT_ONLY=1 -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib -G Xcode" >> $GITHUB_ENV
fi
echo "APP_TARGET_NAME=Overte" >> $GITHUB_ENV
echo "CONAN_PROFILE=default" >> $GITHUB_ENV
@ -162,14 +156,12 @@ jobs:
echo "${{ steps.buildenv1.outputs.symbols_archive }}"
if [ "${{ matrix.build_type }}" = "full" ]; then
if [[ "${{ matrix.os }}" = "Ubuntu"* ]]; then
echo "ARTIFACT_PATTERN=Overte-PR${{ github.event.number }}-${GIT_COMMIT_SHORT}-$(uname -m).$INSTALLER_EXT" >> $GITHUB_ENV
echo "ARTIFACT_NAME=Overte-PR${{ github.event.number }}-${GIT_COMMIT_SHORT}-$(uname -m).$INSTALLER_EXT" >> $GITHUB_ENV
else
echo "ARTIFACT_PATTERN=Overte-PR${{ github.event.number }}-${GIT_COMMIT_SHORT}.$INSTALLER_EXT" >> $GITHUB_ENV
echo "INSTALLER=Overte-$RELEASE_NUMBER-${GIT_COMMIT_SHORT}.$INSTALLER_EXT" >> $GITHUB_ENV
echo "ARTIFACT_NAME=Overte-PR${{ github.event.number }}-${GIT_COMMIT_SHORT}.$INSTALLER_EXT" >> $GITHUB_ENV
fi
else
echo "ARTIFACT_PATTERN=Overte-Interface-PR${{ github.event.number }}-${GIT_COMMIT_SHORT}.$INSTALLER_EXT" >> $GITHUB_ENV
echo "INSTALLER=Overte-Interface-$RELEASE_NUMBER-${GIT_COMMIT_SHORT}.$INSTALLER_EXT" >> $GITHUB_ENV
echo "ARTIFACT_NAME=Overte-Interface-PR${{ github.event.number }}-${GIT_COMMIT_SHORT}.$INSTALLER_EXT" >> $GITHUB_ENV
fi
- uses: actions/checkout@v4
@ -260,10 +252,10 @@ jobs:
run: |
if [[ "${{ matrix.os }}" =~ "Windows" ]]; then
# This syntax requires CMake 3.23
cmake --preset conan-default $CMAKE_EXTRA # Why does Conan not provide the preset we tell it to on Windows?
cmake --preset conan-default -DOVERTE_RELEASE_NUMBER=${{ github.event.number }} -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT -DOVERTE_RELEASE_TYPE=PR $CMAKE_EXTRA
else
# This syntax requires CMake 3.23
cmake --preset conan-${BUILD_TYPE,,} $CMAKE_EXTRA
cmake --preset conan-${BUILD_TYPE,,} -DOVERTE_RELEASE_NUMBER=${{ github.event.number }} -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT -DOVERTE_RELEASE_TYPE=PR $CMAKE_EXTRA
fi
- name: Build Application
@ -354,6 +346,6 @@ jobs:
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_PATTERN }}
path: ./build/${{ env.ARTIFACT_PATTERN }}
name: ${{ env.ARTIFACT_NAME }}
path: ./build/Overte-*
if-no-files-found: error

View file

@ -16,16 +16,9 @@ env:
APP_NAME: interface
BUILD_TYPE: Release
GIT_COMMIT: ${{ github.sha }}
PRODUCTION_BUILD: true
RELEASE_TYPE: PRODUCTION
RELEASE_NUMBER: ${{ github.ref_name }}
STABLE_BUILD: 1
UPLOAD_BUCKET: overte-public
UPLOAD_REGION: fra1
UPLOAD_ENDPOINT: "https://fra1.digitaloceanspaces.com"
# Disabled until we build with Crashpad again.
# CMAKE_BACKTRACE_URL: ${{ secrets.SENTRY_MINIDUMP_ENDPOINT }}
# CMAKE_BACKTRACE_TOKEN: ${{ github.ref_name }}_Windows_${{ github.sha }}
# WIN-specific variables
PreferredToolArchitecture: X64
@ -82,10 +75,7 @@ jobs:
- name: Configure build environment 2
shell: bash
run: |
echo "BUILD_NUMBER=$GIT_COMMIT_SHORT" >> $GITHUB_ENV
echo "ARTIFACT_PATTERN=Overte-$RELEASE_NUMBER.$INSTALLER_EXT" >> $GITHUB_ENV
echo "CLIENT_ONLY=FALSE" >> $GITHUB_ENV
echo "ARTIFACT_PATTERN=Overte-${{ github.ref_name }}.$INSTALLER_EXT" >> $GITHUB_ENV
- uses: actions/checkout@v4
with:
@ -133,7 +123,7 @@ jobs:
- name: Configure CMake
shell: bash
# This syntax requires CMake 3.23
run: cmake --preset conan-${BUILD_TYPE,,} -DJSDOC_ENABLED:BOOL=TRUE -DCLIENT_ONLY:BOOLEAN=$CLIENT_ONLY -DBYPASS_SIGNING:BOOLEAN=TRUE $CMAKE_EXTRA
run: cmake --preset conan-${BUILD_TYPE,,} -DOVERTE_RELEASE_NUMBER=${{ github.ref_name }} -DOVERTE_BUILD_TYPE=PRODUCTION -DJSDOC_ENABLED:BOOL=TRUE $CMAKE_EXTRA
- name: Build application
shell: bash
@ -209,7 +199,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_PATTERN }}
path: build/${{ env.ARTIFACT_PATTERN }}
path: build/Overte-*
if-no-files-found: error
- name: Archive symbols

View file

@ -60,19 +60,6 @@ Where `/path/to/directory` is the path to a directory where you wish the build f
#### Possible Environment Variables
```text
// The URL to post the dump to.
CMAKE_BACKTRACE_URL
// The identifying tag of the release.
CMAKE_BACKTRACE_TOKEN
// The release version, e.g., 2021.3.2.
RELEASE_NUMBER
// The build commit, e.g., use a Git hash for the most recent commit in the branch - fd6973b.
BUILD_NUMBER
// The type of release.
RELEASE_TYPE=PRODUCTION|PR|DEV
// The Interface will have a custom default home and startup location.
PRELOADED_STARTUP_LOCATION=Location/IP/URL
// The Interface will have a custom default script whitelist, comma separated, no spaces.
@ -83,16 +70,29 @@ PRELOADED_SCRIPT_WHITELIST=ListOfEntries
HF_PFX_FILE=Path to certificate
HF_PFX_PASSPHRASE=Passphrase for certificate
// Determine the build type
PRODUCTION_BUILD=0|1
PR_BUILD=0|1
STABLE_BUILD=0|1
// Determine if to utilize testing or stable directory services URLs
USE_STABLE_GLOBAL_SERVICES=1
BUILD_GLOBAL_SERVICES=STABLE
```
#### Possible CMake Variables
```text
// The URL to post the dump to.
OVERTE_BACKTRACE_URL
// The identifying tag of the release.
OVERTE_BACKTRACE_TOKEN
// The release version, e.g., 2021.3.2. For PR builds the PR number, e.g. 577.
// Not used for nightlies and development builds.
OVERTE_RELEASE_NUMBER
// The build commit, e.g., use a Git hash for the most recent commit in the branch - fd6973b.
OVERTE_GIT_COMMIT_SHORT
// The type of release.
OVERTE_RELEASE_TYPE=PRODUCTION|PR|NIGHTLY|DEV
```
#### Generate Files
```bash
@ -120,24 +120,15 @@ In the examples below the variable $NAME would be replaced by the name of the de
The following build options can be used when running CMake
* BUILD_CLIENT
* BUILD_SERVER
* BUILD_TESTS
* BUILD_TOOLS
* CLIENT_ONLY // Will package only the Interface
* SERVER_ONLY // Will package only the Server
### Optimization build options
* OVERTE_OPTIMIZE - This variable defaults to 1 if not set and enables compiler optimization flags on Linux and MacOS. Setting it to 0 will result in unoptimized build.
* OVERTE_CPU_ARCHITECTURE - This variable contains architecture specific compiler flags which are used if `OVERTE_OPTIMIZE` is true. If it is not set, it defaults to `-march=native -mtune=native`, which helps yield more performance for locally used build, but for packaging it needs to be set to different value for portability, for example `-msse3`. Setting `OVERTE_CPU_ARCHITECTURE` to empty string will use default compiler settings and yield
maximum compatibility.
* OVERTE_BUILD_CLIENT
* OVERTE_BUILD_SERVER
* OVERTE_BUILD_TESTS
* OVERTE_BUILD_TOOLS
### Developer Build Options
* USE_GLES
* DISABLE_UI
* OVERTE_RENDERING_BACKEND
* OVERTE_DISABLE_QML
### Devices

View file

@ -114,19 +114,6 @@ git fetch --tags
git tag
```
## Architecture support
If the build is intended to be packaged for distribution, the `OVERTE_CPU_ARCHITECTURE`
CMake variable needs to be set to an architecture specific value.
By default, it is set to `-march=native -mtune=native`, which yields builds optimized for a particular
machine, but these builds will not work on machines lacking same CPU instructions.
For packaging, it is recommended to set it to a different value, for example `-msse3`. This will help ensure that the build will run on all reasonably modern CPUs.
Setting `OVERTE_CPU_ARCHITECTURE` to an empty string will use the default compiler settings and yield maximum compatibility.
## Prepare conan
The next step is setting up conan

View file

@ -71,19 +71,6 @@ You can append `-j4` to assign more threads to build with. The number indicates
To package the installation, you can simply run `make package` afterwards.
## Architecture Support
If the build is intended to be packaged for distribution, the `OVERTE_CPU_ARCHITECTURE`
CMake variable needs to be set to an architecture specific value.
By default, it is set to `-march=native -mtune=native`, which yields builds optimized for a particular
machine, but these builds will not work on machines lacking same CPU instructions.
For packaging, it is recommended to set it to a different value, for example `-msse3`. This will help ensure that the build will run on all reasonably modern CPUs.
Setting `OVERTE_CPU_ARCHITECTURE` to an empty string will use the default compiler settings and yield
maximum compatibility.
## FAQ
1. **Problem:** Running the scheme `interface.app` from Xcode causes a crash for Interface related to `libgl`.

View file

@ -3,96 +3,67 @@
# Copyright 2020-2025 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
# 3.14 is the minimum version that supports symlinks on Windows
cmake_minimum_required(VERSION 3.14)
# As the official CMake documentation is pretty bad for non-experts, Craig Scott's "Professional CMake: A Practical Guide" is a worthwhile investment,
# both as a guide and as a reference manual. https://crascit.com/professional-cmake/
# This should allow using long paths on Windows
SET(CMAKE_NINJA_FORCE_RESPONSE_FILE 1 CACHE INTERNAL "")
# 3.24 is the minimum version that supports COMPILE_WARNING_AS_ERROR
cmake_minimum_required(VERSION 3.24)
include(SelectLibraryConfigurations)
# read USE_GLES enviroment variable and sets it as GLES option
# TODO still gets overwritten by "use GLES on linux aarch64"
set(GLES_OPTION "$ENV{USE_GLES}")
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
# Instruct CMake to run rcc automatically when needed
set(CMAKE_AUTORCC ON)
# use GLES on linux aarch64
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
set(GLES_OPTION ON)
endif()
# set our OS X deployment target
# (needs to be set before first project() call and before prebuild.py)
if (APPLE)
set(ENV{MACOSX_DEPLOYMENT_TARGET} 10.11)
# Needs to be set before the first project() call.
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "Specifies the minimum version of the target platform (e.g. macOS or iOS) on which the target binaries are to be deployed.")
endif()
set(EXTERNAL_BUILD_ASSETS "https://build-deps.overte.org")
set(RELEASE_TYPE "$ENV{RELEASE_TYPE}")
if ((NOT "${RELEASE_TYPE}" STREQUAL "PRODUCTION") AND (NOT "${RELEASE_TYPE}" STREQUAL "PR"))
set(RELEASE_TYPE "DEV")
endif()
# OVERTE_OPTIMIZE
# Variable determining Overte optimization. If not set, it defaults to true.
# Should be set to false to get completely unoptimized build for easier line-by-line debugging
#
# Default compiler flags
#
# Compiler flags need to be set before calling project().
if( NOT WIN32 )
if(NOT DEFINED OVERTE_OPTIMIZE)
message("Enabling code optimization for Overte and compiled dependencies")
set(OVERTE_OPTIMIZE true CACHE BOOL "Enable code optimization for Overte and compiled dependencies")
endif()
set(OVERTE_OPTIMIZE_FLAGS "")
if(OVERTE_OPTIMIZE)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
message("Clang compiler detected, adding -O3 -fPIC -g flags")
set(OVERTE_OPTIMIZE_FLAGS "-O3 -fPIC -g")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
message("GCC compiler detected, adding -O3 -fPIC -ggdb flags")
set(OVERTE_OPTIMIZE_FLAGS "-O3 -fPIC -ggdb")
else()
message("No predefined optimization flags for compiler ${CMAKE_CXX_COMPILER_ID}")
endif()
endif()
MESSAGE(STATUS "OVERTE_OPTIMIZE: ${OVERTE_OPTIMIZE}")
# OVERTE_CPU_ARCHITECTURE
# Variable determining CPU architecture for which Overte will be built.
# If defined, it's appended to CXXFLAGS and CFLAGS for Overte
#Assume -march=native for compilers that allow it if architecture is not specified
if(NOT DEFINED OVERTE_CPU_ARCHITECTURE)
if(OVERTE_OPTIMIZE AND ( (CMAKE_CXX_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "GNU") ) )
message("Optimization is enabled, but architecture is not specified. Assuming native build")
set(OVERTE_CPU_ARCHITECTURE "-march=native -mtune=native" CACHE STRING "Specify architecture dependent compiler flags here")
endif()
endif()
if(DEFINED OVERTE_CPU_ARCHITECTURE)
set(OVERTE_OPTIMIZE_FLAGS "${OVERTE_OPTIMIZE_FLAGS} ${OVERTE_CPU_ARCHITECTURE}")
message("Adding CPU architecture flags: ${OVERTE_CPU_ARCHITECTURE}")
MESSAGE(STATUS "OVERTE_CPU_ARCHITECTURE: ${OVERTE_CPU_ARCHITECTURE}")
endif()
# Function alignment is necessary for V8.
# SetAlignedPointerInInternalField requires at least 2 byte alignment and -falign-functions will set alignment
# to machine specific value which should be greater than 2.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OVERTE_OPTIMIZE_FLAGS} -falign-functions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OVERTE_OPTIMIZE_FLAGS} -falign-functions")
set(ENV{CXXFLAGS} "$ENV{CXXFLAGS} ${OVERTE_OPTIMIZE_FLAGS} -falign-functions")
set(ENV{CFLAGS} "$ENV{CFLAGS} ${OVERTE_OPTIMIZE_FLAGS} -falign-functions")
message($ENV{CXXFLAGS})
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(CMAKE_CXX_FLAGS "-falign-functions -fPIC -m64 -msse3" CACHE STRING "C++ compiler flags for all build types.")
set(CMAKE_C_FLAGS "-falign-functions -fPIC -m64 -msse3" CACHE STRING "C compiler flags for all build types.")
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
# TODO: Find out which architecture optimizations to use on aarch64.
# We should probably target the 64bit version of the Raspberry Pi 2 as minimum.
set(CMAKE_CXX_FLAGS "-falign-functions -fPIC" CACHE STRING "C++ compiler flags for all build types.")
set(CMAKE_C_FLAGS "-falign-functions -fPIC" CACHE STRING "C++ compiler flags for all build types.")
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
message("Clang compiler detected, setting default flags.")
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g" CACHE STRING "C++ compiler flags for Debug builds.")
set(CMAKE_C_FLAGS_DEBUG "-Og -g" CACHE STRING "C compiler flags for Debug builds.")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -g" CACHE STRING "C++ compiler flags for RelWithDebInfo builds.")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -g" CACHE STRING "C compiler flags for RelWithDebInfo builds.")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "C++ compiler flags for Release builds.")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "C compiler flags for Release builds.")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
message("GCC compiler detected, setting default flags")
set(CMAKE_CXX_FLAGS_DEBUG "-Og -ggdb3" CACHE STRING "C++ compiler flags for Debug builds.")
set(CMAKE_C_FLAGS_DEBUG "-Og -ggdb3" CACHE STRING "C compiler flags for Debug builds.")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -ggdb2" CACHE STRING "C++ compiler flags for RelWithDebInfo builds.")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -ggdb2" CACHE STRING "C compiler flags for RelWithDebInfo builds.")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "C++ compiler flags for Release builds.")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "C compiler flags for Release builds.")
endif()
endif()
#
# OVERTE_WARNINGS
#
# Here we add the ability to allowlist warnings we've determined we can't fix, or are safe to
@ -101,14 +72,7 @@ endif()
#
# We can also treat warnings as errors. Without the allowlist this will almost certainly lead
# to a build failure.
if(NOT DEFINED OVERTE_WARNINGS_ALLOWLIST)
set(OVERTE_WARNINGS_ALLOWLIST true CACHE BOOL "Allowlist some warnings we can't currently fix")
endif()
if(NOT DEFINED OVERTE_WARNINGS_AS_ERRORS)
set(OVERTE_WARNINGS_AS_ERRORS false CACHE BOOL "Count warnings as errors")
endif()
set(OVERTE_WARNINGS_ALLOWLIST ON CACHE BOOL "Allowlist some warnings we can't currently fix.")
if(OVERTE_WARNINGS_ALLOWLIST)
if (NOT WIN32)
@ -130,14 +94,13 @@ if(OVERTE_WARNINGS_ALLOWLIST)
endif()
endif()
if(OVERTE_WARNINGS_AS_ERRORS)
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "" AND WIN32))
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
set(CMAKE_CFLAGS "${CMAKE_CFLAGS} /WX")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
set(CMAKE_CFLAGS "${CMAKE_CFLAGS} -Werror")
endif()
# Enabling warnings-as-errors by default on our Linux target and on Windows.
# Our current Linux development target is Ubuntu 22.04, which uses GCC 11.2.
# TODO: Enable warnings-as-errors once we stop throwing warnings on the relevant platforms.
if ((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND (CMAKE_CXX_COMPILER_VERSION MATCHES "11"))
set(COMPILE_WARNING_AS_ERROR OFF CACHE BOOL "")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") # Windows
set(COMPILE_WARNING_AS_ERROR OFF CACHE BOOL "")
endif()
@ -145,52 +108,43 @@ project(overte)
include("cmake/init.cmake")
include("cmake/compiler.cmake")
if (NOT DEFINED CLIENT_ONLY)
set(CLIENT_ONLY 0)
endif()
if (NOT DEFINED SERVER_ONLY)
set(SERVER_ONLY 0)
endif()
if (ANDROID OR UWP)
set(MOBILE 1)
#
# Overte build variables
#
set(OVERTE_BUILD_CLIENT ON CACHE BOOL "Build Interface.")
set(OVERTE_BUILD_SERVER ON CACHE BOOL "Build domain-server, assignment-client, and ice-server.")
set(OVERTE_BUILD_TESTS OFF CACHE BOOL "Build tests.")
set(OVERTE_BUILD_MANUAL_TESTS OFF CACHE BOOL "Build manual tests.")
set(OVERTE_BUILD_TOOLS ON CACHE BOOL "Build tools. Includes Oven, which is used for some server functionality.")
set(OVERTE_BUILD_INSTALLER ON CACHE BOOL "Build installer.")
set(OVERTE_DISABLE_QML OFF CACHE BOOL "Build without QML. (For graphics debugging.)")
set(OVERTE_DOWNLOAD_SERVERLESS_CONTENT OFF CACHE BOOL "Download and setup default serverless content beside Interface.")
# use OpenGL ES on Linux aarch64 and Android.
if ((CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") OR ANDROID)
# TODO: Change to GLES on aarch64 once GLES builds again.
#set(OVERTE_RENDERING_BACKEND "GLES" CACHE STRING "Which rendering backend to compile with. Valid options are: 'OpenGL', 'GLES', and 'Vulkan'.")
set(OVERTE_RENDERING_BACKEND "OpenGL" CACHE STRING "Which rendering backend to compile with. Valid options are: 'OpenGL', 'GLES', and 'Vulkan'.")
else()
set(MOBILE 0)
set(OVERTE_RENDERING_BACKEND "OpenGL" CACHE STRING "Which rendering backend to compile with. Valid options are: 'OpenGL', 'GLES', and 'Vulkan'.")
endif()
set(OVERTE_EXTERNAL_BUILD_ASSETS "https://build-deps.overte.org" CACHE INTERNAL "")
set(OVERTE_TIMESERVER_URL "http://timestamp.comodoca.com?td=sha256" CACHE STRING "URL to timeserver used for signing executables.")
set(OVERTE_USE_OPTIMIZED_IK OFF CACHE BOOL "Use optimized IK.")
set(OVERTE_DISABLE_KTX_CACHE OFF CACHE BOOL "Disable KTX Cache.")
set(OVERTE_USE_KHR_ROBUSTNESS OFF CACHE BOOL "Use KHR_robustness.")
# Use default time server if none defined in environment
set_from_env(TIMESERVER_URL TIMESERVER_URL "http://timestamp.comodoca.com?td=sha256")
set(HIFI_USE_OPTIMIZED_IK_OPTION OFF)
set(BUILD_CLIENT_OPTION ON)
set(BUILD_SERVER_OPTION ON)
set(BUILD_TESTS_OPTION OFF)
set(BUILD_MANUAL_TESTS_OPTION ${BUILD_TESTS_OPTION})
set(BUILD_TOOLS_OPTION ON)
set(BUILD_INSTALLER_OPTION ON)
set(DISABLE_QML_OPTION OFF)
set(DOWNLOAD_SERVERLESS_CONTENT_OPTION OFF)
set(OVERTE_BACKTRACE_URL "" CACHE STRING "URL to an endpoint for uploading crash-dumps. For example Sentry.")
set(OVERTE_BACKTRACE_TOKEN "" CACHE STRING "Token used to identify this build, for use in uploading crash-dumps.")
if (ANDROID OR UWP)
set(BUILD_SERVER_OPTION OFF)
set(BUILD_TOOLS_OPTION OFF)
set(BUILD_INSTALLER OFF)
endif()
if (CLIENT_ONLY)
set(BUILD_SERVER_OPTION OFF)
endif()
if (SERVER_ONLY)
set(BUILD_CLIENT_OPTION OFF)
set(BUILD_TESTS_OPTION OFF)
set(OVERTE_BUILD_SERVER OFF CACHE BOOL FORCE "Overwritten (mobile build)")
set(OVERTE_BUILD_TOOLS OFF CACHE BOOL FORCE "Overwritten (mobile build)")
set(OVERTE_BUILD_INSTALLER OFF CACHE BOOL FORCE "Overwritten (mobile build)")
endif()
if (ANDROID)
set(GLES_OPTION ON)
set(PLATFORM_QT_COMPONENTS AndroidExtras WebView)
add_definitions(-DHIFI_ANDROID_APP=\"${HIFI_ANDROID_APP}\")
if (
@ -221,71 +175,62 @@ if (ANDROID)
endif()
else ()
set(PLATFORM_QT_COMPONENTS WebEngine Xml)
endif ()
if (USE_GLES AND (NOT ANDROID AND NOT UNIX))
set(DISABLE_QML_OPTION ON)
endif()
option(HIFI_USE_OPTIMIZED_IK "Use optimized IK" ${HIFI_USE_OPTIMIZED_IK_OPTION})
option(BUILD_CLIENT "Build client components" ${BUILD_CLIENT_OPTION})
option(BUILD_SERVER "Build server components" ${BUILD_SERVER_OPTION})
option(BUILD_TESTS "Build tests" ${BUILD_TESTS_OPTION})
option(BUILD_MANUAL_TESTS "Build manual tests" ${BUILD_MANUAL_TESTS_OPTION})
option(BUILD_TOOLS "Build tools" ${BUILD_TOOLS_OPTION})
option(BUILD_INSTALLER "Build installer" ${BUILD_INSTALLER_OPTION})
option(USE_GLES "Use OpenGL ES" ${GLES_OPTION})
option(USE_KHR_ROBUSTNESS "Use KHR_robustness" OFF)
option(DISABLE_QML "Disable QML" ${DISABLE_QML_OPTION})
option(DISABLE_KTX_CACHE "Disable KTX Cache" OFF)
option(
DOWNLOAD_SERVERLESS_CONTENT
"Download and setup default serverless content beside Interface"
${DOWNLOAD_SERVERLESS_CONTENT_OPTION}
)
set(PLATFORM_QT_GL OpenGL)
if (USE_KHR_ROBUSTNESS)
if (OVERTE_USE_KHR_ROBUSTNESS)
add_definitions(-DUSE_KHR_ROBUSTNESS)
endif()
if (USE_GLES)
add_definitions(-DUSE_GLES)
add_definitions(-DGPU_POINTER_STORAGE_SHARED)
set(PLATFORM_GL_BACKEND gpu-gl-common gpu-gles)
if (OVERTE_RENDERING_BACKEND STREQUAL "GLES")
add_definitions(-DUSE_GLES)
add_definitions(-DGPU_POINTER_STORAGE_SHARED)
set(PLATFORM_GL_BACKEND gpu-gl-common gpu-gles)
elseif (OVERTE_RENDERING_BACKEND STREQUAL "OpenGL")
add_definitions(-DGPU_POINTER_STORAGE_RAW)
set(PLATFORM_GL_BACKEND gpu-gl-common gpu-gl)
elseif (OVERTE_RENDERING_BACKEND STREQUAL "Vulkan")
# TODO
message(FATAL_ERROR "Vulkan backend selected, but not implemented yet.")
else()
add_definitions(-DGPU_POINTER_STORAGE_RAW)
set(PLATFORM_GL_BACKEND gpu-gl-common gpu-gl)
message(FATAL_ERROR "Invalid OVERTE_RENDERING_BACKEND set. Expected 'GLES', 'OpenGL', or 'Vulkan'. Got '${OVERTE_RENDERING_BACKEND}'")
endif()
foreach(PLATFORM_QT_COMPONENT ${PLATFORM_QT_COMPONENTS})
list(APPEND PLATFORM_QT_LIBRARIES "Qt5::${PLATFORM_QT_COMPONENT}")
endforeach()
MESSAGE(STATUS "Use optimized IK: " ${HIFI_USE_OPTIMIZED_IK})
MESSAGE(STATUS "Build server: " ${BUILD_SERVER})
MESSAGE(STATUS "Build client: " ${BUILD_CLIENT})
MESSAGE(STATUS "Build tests: " ${BUILD_TESTS})
MESSAGE(STATUS "Build tools: " ${BUILD_TOOLS})
MESSAGE(STATUS "Build installer: " ${BUILD_INSTALLER})
MESSAGE(STATUS "GL ES: " ${USE_GLES})
MESSAGE(STATUS "DL serverless content: " ${DOWNLOAD_SERVERLESS_CONTENT})
message(STATUS "Use optimized IK: " ${OVERTE_USE_OPTIMIZED_IK})
message(STATUS "Build server: " ${OVERTE_BUILD_SERVER})
message(STATUS "Build client: " ${OVERTE_BUILD_CLIENT})
message(STATUS "Build tests: " ${OVERTE_BUILD_TESTS})
message(STATUS "Build tools: " ${OVERTE_BUILD_TOOLS})
message(STATUS "Build installer: " ${OVERTE_BUILD_INSTALLER})
message(STATUS "Rendering backend: " ${OVERTE_RENDERING_BACKEND})
message(STATUS "DL serverless content: " ${OVERTE_DOWNLOAD_SERVERLESS_CONTENT})
if (DISABLE_QML)
MESSAGE(STATUS "QML disabled!")
add_definitions(-DDISABLE_QML)
if (OVERTE_DISABLE_QML)
message(STATUS "QML disabled!")
add_definitions(-DDISABLE_QML)
endif()
if (DISABLE_KTX_CACHE)
MESSAGE(STATUS "KTX cache disabled!")
add_definitions(-DDISABLE_KTX_CACHE)
if (OVERTE_DISABLE_KTX_CACHE)
message(STATUS "KTX cache disabled!")
add_definitions(-DDISABLE_KTX_CACHE)
endif()
if (UNIX AND DEFINED ENV{HIFI_MEMORY_DEBUGGING})
MESSAGE(STATUS "Memory debugging is enabled")
endif()
# Set SERVER_ONLY and CLIENT_ONLY for later packaging.
if ((NOT OVERTE_BUILD_CLIENT) AND OVERTE_BUILD_SERVER)
set(SERVER_ONLY ON CACHE BOOL INTERNAL "")
elseif ((NOT OVERTE_BUILD_SERVER) AND OVERTE_BUILD_CLIENT)
set(CLIENT_ONLY ON CACHE BOOL INTERNAL "")
endif()
#
# Helper projects
#
@ -327,14 +272,9 @@ add_definitions(-DGLM_FORCE_RADIANS)
add_definitions(-DGLM_ENABLE_EXPERIMENTAL)
add_definitions(-DGLM_FORCE_CTOR_INIT)
if (WIN32)
# Deal with fakakta Visual Studo 2017 bug
add_definitions(-DQT_NO_FLOAT16_OPERATORS -DWIN32)
endif()
if (HIFI_USE_OPTIMIZED_IK)
MESSAGE(STATUS "SET THE USE IK DEFINITION ")
add_definitions(-DHIFI_USE_OPTIMIZED_IK)
if (OVERTE_USE_OPTIMIZED_IK)
message(STATUS "Setting definition for using optimized inverse kinematics.")
add_definitions(-DHIFI_USE_OPTIMIZED_IK)
endif()
set(HIFI_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libraries")
@ -342,7 +282,7 @@ set(EXTERNAL_PROJECT_PREFIX "project")
set_property(DIRECTORY PROPERTY EP_PREFIX ${EXTERNAL_PROJECT_PREFIX})
setup_externals_binary_dir()
option(USE_NSIGHT "Attempt to find the nSight libraries" 1)
set(OVERTE_USE_NSIGHT ON CACHE BOOL "Attempt to find the Nvidia nSight libraries.")
# FIXME hack to work on the proper Android toolchain
if (ANDROID)
@ -355,11 +295,11 @@ if (BUILD_GPU_FRAME_PLAYER_ONLY)
add_subdirectory(tools/gpu-frame-player)
else()
# BUILD_TOOLS option will be handled inside the tools's CMakeLists.txt because 'scribe' tool is required for build anyway
# OVERTE_BUILD_TOOLS option will be handled inside the tools's CMakeLists.txt because 'scribe' tool is required for build anyway
add_subdirectory(tools)
# add subdirectories for all targets
if (BUILD_SERVER)
if (OVERTE_BUILD_SERVER)
add_subdirectory(assignment-client)
set_target_properties(assignment-client PROPERTIES FOLDER "Apps")
add_subdirectory(domain-server)
@ -368,7 +308,7 @@ if (BUILD_SERVER)
set_target_properties(ice-server PROPERTIES FOLDER "Apps")
endif()
if (BUILD_CLIENT)
if (OVERTE_BUILD_CLIENT)
add_subdirectory(interface)
if (APPLE)
set_target_properties(Overte PROPERTIES FOLDER "Apps")
@ -380,25 +320,25 @@ if (BUILD_CLIENT)
option(USE_NEURON "Build Interface with Neuron library/plugin" OFF)
endif()
if (BUILD_CLIENT OR BUILD_SERVER)
if (OVERTE_BUILD_CLIENT OR OVERTE_BUILD_SERVER)
add_subdirectory(plugins)
add_subdirectory(server-console)
endif()
endif()
if (BUILD_TESTS)
if (OVERTE_BUILD_TESTS)
# Turn on testing so that add_test works
# MUST be in the root cmake file for ctest to work
include(CTest)
enable_testing()
add_subdirectory(tests)
if (BUILD_MANUAL_TESTS)
if (OVERTE_BUILD_MANUAL_TESTS)
add_subdirectory(tests-manual)
endif()
endif()
if (BUILD_INSTALLER)
if (OVERTE_BUILD_INSTALLER)
if (UNIX)
install(
DIRECTORY "${CMAKE_SOURCE_DIR}/scripts"

View file

@ -13,7 +13,7 @@ Follow the [build guide](BUILD.md) to figure out how to build Overte for your pl
During generation, CMake should produce an `install` target and a `package` target.
The `install` target will copy the Overte targets and their dependencies to your `CMAKE_INSTALL_PREFIX`.
The `install` target will copy the Overte targets and their dependencies to your `CMAKE_INSTALL_PREFIX`.
This variable is set by the `project(hifi)` command in `CMakeLists.txt` to `C:/Program Files/hifi` and stored in `build/CMakeCache.txt`
## Packaging
@ -26,9 +26,9 @@ To produce an installer, run the `package` target. However you will want to foll
To produce an executable installer on Windows, the following are required:
1. [7-zip](<https://www.7-zip.org/download.html>)
1. [7-zip](<https://www.7-zip.org/download.html>)
1. [Nullsoft Scriptable Install System](http://nsis.sourceforge.net/Download) - 3.04
1. [Nullsoft Scriptable Install System](http://nsis.sourceforge.net/Download) - 3.04
Install using defaults (will install to `C:\Program Files (x86)\NSIS`)
1. [NSIS Plugins](https://build-deps.overte.org/conan/nsis-overte-plugins/NSIS-hifi-plugins-1.0.zip)
Copy contents to `C:\Program Files (x86)\NSIS\`.
@ -38,39 +38,39 @@ To produce an executable installer on Windows, the following are required:
1. Copy `UAC.nsh` to `C:\Program Files (x86)\NSIS\Include\`
1. Copy `Plugins\x86-ansi\UAC.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-ansi\`
1. Copy `Plugins\x86-unicode\UAC.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-unicode\`
1. [nsProcess Plug-in for Nullsoft](http://nsis.sourceforge.net/NsProcess_plugin) - 1.6 (use the link marked **nsProcess_1_6.7z**)
1. Extract Zip
1. Copy `Include\nsProcess.nsh` to `C:\Program Files (x86)\NSIS\Include\`
1. Copy `Plugins\nsProcess.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-ansi\`
1. Copy `Plugins\nsProcessW.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-unicode\`
1. [InetC Plug-in for Nullsoft](http://nsis.sourceforge.net/Inetc_plug-in) - 1.0
1. Extract Zip
1. Copy `Plugin\x86-ansi\InetC.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-ansi\`
1. Copy `Plugin\x86-unicode\InetC.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-unicode\`
1. [NSISpcre Plug-in for Nullsoft](http://nsis.sourceforge.net/NSISpcre_plug-in) - 1.0
1. Extract Zip
1. Copy `NSISpre.nsh` to `C:\Program Files (x86)\NSIS\Include\`
1. Copy `NSISpre.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-ansi\`
1. [nsisSlideshow Plug-in for Nullsoft](<http://wiz0u.free.fr/prog/nsisSlideshow/>) - 1.7
1. Extract Zip
1. Copy `bin\nsisSlideshow.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-ansi\`
1. Copy `bin\nsisSlideshowW.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-unicode\`
1. [Nsisunz plug-in for Nullsoft](http://nsis.sourceforge.net/Nsisunz_plug-in)
1. Download both Zips and unzip
1. Copy `nsisunz\Release\nsisunz.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-ansi\`
1. Copy `NSISunzU\Plugin unicode\nsisunz.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-unicode\`
1. [ApplicationID plug-in for Nullsoft]() - 1.0
1. Download [`Pre-built DLLs`](<https://github.com/connectiblutz/NSIS-ApplicationID/releases/download/1.1/NSIS-ApplicationID.zip>)
1. Extract Zip
1. Copy `Release\ApplicationID.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-ansi\`
1. Copy `ReleaseUnicode\ApplicationID.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-unicode\`
1. [Node.JS and NPM](https://nodejs.org/en/download/)
1. Install version 10.15.0 LTS (or greater)
#### Code Signing (optional)
@ -78,15 +78,15 @@ To produce an executable installer on Windows, the following are required:
For code signing to work, you will need to set the `HF_PFX_FILE` and `HF_PFX_PASSPHRASE` environment variables to be present during CMake runtime and globally as we proceed to package the installer.
#### Creating the Installer
1. Perform a clean cmake from a new terminal.
1. Open the `overte.sln` solution with elevated (administrator) permissions on Visual Studio and select the **Release** configuration.
1. Build the solution.
1. Build `packaged-server-console-npm-install` (found under **hidden/Server Console**)
1. Build `packaged-server-console` (found under **Server Console**)
This will add 2 folders to `build\server-console\` -
1. Build `packaged-server-console` (found under **Server Console**)
This will add 2 folders to `build\server-console\` -
`server-console-win32-x64` and `x64`
1. Build CMakeTargets->PACKAGE
1. Build CMakeTargets->PACKAGE
The installer is now available in `build\_CPack_Packages\win64\NSIS`
#### Create an MSIX Package
@ -109,15 +109,15 @@ For code signing to work, you will need to set the `HF_PFX_FILE` and `HF_PFX_PAS
1. Ensure you have all the prerequisites fulfilled from the [MacOS Build Guide](BUILD_OSX.md).
2. Perform a clean CMake in your build folder. e.g.
```bash
BUILD_GLOBAL_SERVICES=STABLE USE_STABLE_GLOBAL_SERVICES=1 RELEASE_BUILD=PRODUCTION BUILD_NUMBER="Insert Build Identifier here e.g. short hash of your last Git commit" STABLE_BUILD=1 PRODUCTION_BUILD=1 RELEASE_NUMBER="Insert Release Version Here e.g. 1.1.0" RELEASE_TYPE=PRODUCTION cmake -DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk" -DCLIENT_ONLY=1 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOSX_SDK=10.12 ..
cmake -DOVERTE_GIT_COMMIT_SHORT="Insert short hash of your last Git commit" -DOVERTE_RELEASE_NUMBER="Insert Release Version Here e.g. 1.1.0" -DOVERTE_RELEASE_TYPE=PRODUCTION -DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk" -DOVERTE_BUILD_SERVER=0 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOSX_SDK=10.12 ..
```
3. Pick a method to build and package your release.
#### Option A: Use Xcode GUI
1. Perform a Release build of ALL_BUILD
2. Perform a Release build of `packaged-server-console`
This will add a folder to `build\server-console\` -
2. Perform a Release build of `packaged-server-console`
This will add a folder to `build\server-console\` -
Sandbox-darwin-x64
3. Perform a Release build of `package`
Installer is now available in `build/_CPack_Packages/Darwin/DragNDrop`
@ -140,9 +140,9 @@ Overte Interface AppImages are built using [linuxdeploy](https://github.com/linu
1. Prepare build environment
Follow the [Linux build guide](BUILD_LINUX.md).
2. Configure Interface (**Make sure that OVERTE_CPU_ARCHITECTURE is set to an empty string or `-msse3` depending on target CPU architecture!**)
2. Configure Interface
```bash
cmake --preset conan-release -DOVERTE_CPU_ARCHITECTURE=-msse3
cmake --preset conan-release
```
3. Create AppImage
@ -180,7 +180,7 @@ Overte Interface AppImages are built using [linuxdeploy](https://github.com/linu
1. Build Docker image as instructed in the relevant Dockerfile in [tools/ci-scripts/deb_package/](tools/ci-scripts/deb_package/)
2. Create/Start container
Example: `docker run -v $(pwd)/../../..:/overte -it overte/overte-server-build:0.1.2-debian-11-amd64`
Example: `docker run -v $(pwd)/../../..:/overte -it overte/overte-server-build:0.1.2-debian-11-amd64`
3. Prepare build environment
```bash
@ -188,10 +188,7 @@ cd overte
mkdir build
rm -rf build/*
conan install . -s build_type=Release -b missing -pr:b=default -of build
```
Add `PRODUCTION_BUILD=1` to below command for release and release candidate builds.
```bash
cmake --preset conan-release -DOVERTE_CPU_ARCHITECTURE=-msse3
cmake --preset conan-release -DOVERTE_BUILD_CLIENT=false -DOVERTE_BUILD_TOOLS=true
```
4. Build
@ -212,7 +209,7 @@ DEBVERSION="1-experimental-debian-11" DEBEMAIL="julian.gro@overte.org" DEBFULLNA
1. Build Docker image as instructed in the relevant Dockerfile in [tools/ci-scripts/rpm_package/](tools/ci-scripts/rpm_package/)
2. Create/Start container
Example: `docker run -v $(pwd)/../../..:/overte -it overte/overte-server-build:0.1.2-fedora-36-amd64`
Example: `docker run -v $(pwd)/../../..:/overte -it overte/overte-server-build:0.1.2-fedora-36-amd64`
3. Prepare build environment
```bash
@ -220,10 +217,7 @@ cd overte
mkdir build
rm -rf build/*
conan install . -s build_type=Release -b missing -pr:b=default -of build
```
Add `PRODUCTION_BUILD=1` to below command for release and release candidate builds.
```bash
cmake --preset conan-release -DOVERTE_CPU_ARCHITECTURE=-msse3 -DSERVER_ONLY=true -DBUILD_TOOLS=true
cmake --preset conan-release -DOVERTE_BUILD_CLIENT=false -DOVERTE_BUILD_TOOLS=true
```
4. Build

View file

@ -1,5 +1,5 @@
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2021-2022 Overte e.V.
# Copyright 2021-2025 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
set(TARGET_NAME assignment-client)
@ -27,7 +27,7 @@ include_hifi_library_headers(entities)
add_crashpad()
target_breakpad()
if (BUILD_TOOLS)
if (OVERTE_BUILD_TOOLS)
add_dependencies(${TARGET_NAME} oven)
if (WIN32)
@ -43,7 +43,7 @@ if (BUILD_TOOLS)
$<TARGET_FILE:oven>
$<TARGET_FILE_DIR:${TARGET_NAME}>/oven)
endif()
endif (BUILD_TOOLS)
endif()
if (WIN32)
package_libraries_for_deployment()

View file

@ -1,10 +1,6 @@
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
if (WIN32)
# Building with webrtc-audio-processing on Windows fails on cppstd 14.
set(CMAKE_CXX_STANDARD 17)
else ()
set(CMAKE_CXX_STANDARD 17)
endif ()
# Building with webrtc-audio-processing fails on cppstd 14.
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8")

View file

@ -4,6 +4,7 @@
#
# Created by Clement Brisset on 01/19/18.
# Copyright 2018 High Fidelity, Inc.
# Copyright 2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html
@ -13,18 +14,14 @@ macro(add_crashpad)
set (USE_CRASHPAD TRUE)
message(STATUS "Checking crashpad config")
if ("$ENV{CMAKE_BACKTRACE_URL}" STREQUAL "")
message(STATUS "Checking crashpad config - CMAKE_BACKTRACE_URL is not set, disabled.")
if (OVERTE_BACKTRACE_URL STREQUAL "")
message(STATUS "Checking crashpad config - -DOVERTE_BACKTRACE_URL is empty, disabled.")
set(USE_CRASHPAD FALSE)
else()
set(CMAKE_BACKTRACE_URL $ENV{CMAKE_BACKTRACE_URL})
endif()
if ("$ENV{CMAKE_BACKTRACE_TOKEN}" STREQUAL "")
message(STATUS "Checking crashpad config - CMAKE_BACKTRACE_TOKEN is not set, disabled.")
if (OVERTE_BACKTRACE_TOKEN STREQUAL "")
message(STATUS "Checking crashpad config - -DOVERTE_BACKTRACE_TOKEN is empty, disabled.")
set(USE_CRASHPAD FALSE)
else()
set(CMAKE_BACKTRACE_TOKEN $ENV{CMAKE_BACKTRACE_TOKEN})
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
@ -42,8 +39,8 @@ macro(add_crashpad)
endif()
add_definitions(-DHAS_CRASHPAD)
add_definitions(-DCMAKE_BACKTRACE_URL=\"${CMAKE_BACKTRACE_URL}\")
add_definitions(-DCMAKE_BACKTRACE_TOKEN=\"${CMAKE_BACKTRACE_TOKEN}\")
add_definitions(-DOVERTE_BACKTRACE_URL=\"${OVERTE_BACKTRACE_URL}\")
add_definitions(-DOVERTE_BACKTRACE_TOKEN=\"${OVERTE_BACKTRACE_TOKEN}\")
target_include_directories(${TARGET_NAME} PRIVATE ${CRASHPAD_INCLUDE_DIRS})
target_link_libraries(${TARGET_NAME} ${CRASHPAD_LIBRARY} ${CRASHPAD_UTIL_LIBRARY} ${CRASHPAD_BASE_LIBRARY})

View file

@ -130,7 +130,7 @@ macro(AUTOSCRIBE_SHADER)
file(WRITE "${SHADER_SCRIBED}.name" "${SHADER_NAME}.${SHADER_TYPE}")
AUTOSCRIBE_APPEND_QRC("${SHADER_COUNT}/name" "${SHADER_NAME_FILE}")
if(USE_GLES)
if (OVERTE_RENDERING_BACKEND STREQUAL "GLES")
set(SPIRV_CROSS_ARGS --version 310es)
AUTOSCRIBE_PLATFORM_SHADER("310es")
AUTOSCRIBE_PLATFORM_SHADER("310es/stereo")

View file

@ -3,6 +3,7 @@
# cmake/macros
#
# Copyright 2016 High Fidelity, Inc.
# Copyright 2025 Overte e.V.
# Created by Stephen Birarda on January 6th, 2016
#
# Distributed under the Apache License, Version 2.0.
@ -24,7 +25,7 @@ macro(fixup_interface)
")
endif ()
if (RELEASE_TYPE STREQUAL "DEV")
if (OVERTE_RELEASE_TYPE STREQUAL "DEV")
install(CODE "
execute_process(COMMAND ${MACDEPLOYQT_COMMAND}\
\${CMAKE_INSTALL_PREFIX}/${_INTERFACE_INSTALL_PATH}/\

View file

@ -3,6 +3,7 @@
# cmake/macros
#
# Copyright 2019 High Fidelity, Inc.
# Copyright 2025 Overte e.V.
# Created by Nissim Hadar on January 14th, 2016
#
# Distributed under the Apache License, Version 2.0.
@ -24,7 +25,7 @@ macro(fixup_nitpick)
")
endif ()
if (RELEASE_TYPE STREQUAL "DEV")
if (OVERTE_RELEASE_TYPE STREQUAL "DEV")
install(CODE "
execute_process(COMMAND ${MACDEPLOYQT_COMMAND}\
\${CMAKE_INSTALL_PREFIX}/${_NITPICK_INSTALL_PATH}/\

View file

@ -136,11 +136,11 @@ macro(GENERATE_INSTALLERS)
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
if (BUILD_CLIENT)
if (OVERTE_BUILD_CLIENT)
cpack_add_component(${CLIENT_COMPONENT} DISPLAY_NAME "Overte Interface")
endif ()
if (BUILD_SERVER)
if (OVERTE_BUILD_SERVER)
cpack_add_component(${SERVER_COMPONENT} DISPLAY_NAME "Overte Server")
endif ()

View file

@ -2,7 +2,7 @@
# MemoryDebugger.cmake
#
# Copyright 2015 High Fidelity, Inc.
# Copyright 2023 Overte e.V.
# Copyright 2023-2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -15,9 +15,6 @@ if ("$ENV{OVERTE_MEMORY_DEBUGGING}")
message(FATAL_ERROR "Thread debugging and memory debugging can't be enabled at the same time." )
endif()
if (OVERTE_OPTIMIZE)
message(WARNING "You should consider building without optimization by passing -DOVERTE_OPTIMIZE=false to CMake")
endif()
if (NOT CMAKE_BUILD_TYPE MATCHES "Debug")
message(WARNING "You should consider building with debugging enabled by passing -DCMAKE_BUILD_TYPE=Debug to CMake. Current type is ${CMAKE_BUILD_TYPE}")
endif()

View file

@ -22,7 +22,7 @@ macro(optional_win_executable_signing)
# setup a post build command to sign the executable
add_custom_command(
TARGET ${TARGET_NAME} POST_BUILD
COMMAND ${SIGNTOOL_EXECUTABLE} sign /fd sha256 /f %HF_PFX_FILE% /p %HF_PFX_PASSPHRASE% /tr ${TIMESERVER_URL} /td SHA256 ${EXECUTABLE_PATH}
COMMAND ${SIGNTOOL_EXECUTABLE} sign /fd sha256 /f %HF_PFX_FILE% /p %HF_PFX_PASSPHRASE% /tr ${OVERTE_TIMESERVER_URL} /td SHA256 ${EXECUTABLE_PATH}
)
else ()
message(FATAL_ERROR "HF_PFX_PASSPHRASE must be set for executables to be signed.")

View file

@ -5,6 +5,7 @@
# Created by Leonardo Murillo on 07/14/2015.
# Copyright 2015 High Fidelity, Inc.
# Copyright 2020 Vircadia contributors.
# Copyright 2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -13,24 +14,21 @@
# and decides how targets should be packaged.
macro(SET_PACKAGING_PARAMETERS)
set(PR_BUILD 0)
set(PRODUCTION_BUILD 0)
set(DEV_BUILD 0)
set(BUILD_GLOBAL_SERVICES "DEVELOPMENT")
set(USE_STABLE_GLOBAL_SERVICES 0)
set(BUILD_NUMBER 0)
set(OVERTE_GIT_COMMIT_SHORT 0 CACHE STRING "Short Git commit hash to use for versioning.")
set(APP_USER_MODEL_ID "com.highfidelity.console-dev")
set_from_env(RELEASE_TYPE RELEASE_TYPE "DEV")
set_from_env(RELEASE_NUMBER RELEASE_NUMBER "")
set_from_env(STABLE_BUILD STABLE_BUILD 0)
set(OVERTE_RELEASE_TYPE "DEV" CACHE STRING "Valid options are: 'PRODUCTION', 'PR', 'NIGHTLY', and 'DEV'.")
set(OVERTE_RELEASE_NUMBER "0000.00.0" CACHE STRING "Release version number. E.g. 2025.05.1-rc1 for the first release candidate of the first release in May 2025.")
set_from_env(PRELOADED_STARTUP_LOCATION PRELOADED_STARTUP_LOCATION "")
set_from_env(PRELOADED_SCRIPT_ALLOWLIST PRELOADED_SCRIPT_ALLOWLIST "")
set_from_env(BYPASS_SIGNING BYPASS_SIGNING 0)
message(STATUS "The RELEASE_TYPE variable is: ${RELEASE_TYPE}")
message(STATUS "The OVERTE_RELEASE_TYPE variable is: ${OVERTE_RELEASE_TYPE}")
# setup component categories for installer
set(DDE_COMPONENT dde)
@ -43,10 +41,19 @@ macro(SET_PACKAGING_PARAMETERS)
set(INTERFACE_BUNDLE_NAME "interface")
endif()
if (RELEASE_TYPE STREQUAL "PRODUCTION")
set(DEPLOY_PACKAGE TRUE)
set(PRODUCTION_BUILD 1)
set(BUILD_VERSION ${RELEASE_NUMBER})
string(TIMESTAMP BUILD_DATE "%Y-%m-%d" UTC)
# To not break our NSIS later down the line, we use `1` here instead of `ON`.
set(PRODUCTION_BUILD 0 CACHE INTERNAL "")
set(PR_BUILD 0 CACHE INTERNAL "")
set(NIGHTLY_BUILD 0 CACHE INTERNAL "")
set(DEV_BUILD 0 CACHE INTERNAL "")
if (OVERTE_RELEASE_TYPE STREQUAL "PRODUCTION")
# To not break our NSIS later down the line, we use `1` here instead of `ON`.
# INTERNAL implies FORCE and breaks if FORCE is added.
set(PRODUCTION_BUILD 1 CACHE INTERNAL "")
set(BUILD_VERSION ${OVERTE_RELEASE_NUMBER})
set(BUILD_ORGANIZATION "Overte")
set(HIGH_FIDELITY_PROTOCOL "hifi")
set(HIGH_FIDELITY_APP_PROTOCOL "hifiapp")
@ -55,72 +62,60 @@ macro(SET_PACKAGING_PARAMETERS)
# add definition for this release type
add_definitions(-DPRODUCTION_BUILD)
# if the build is a PRODUCTION_BUILD from the "stable" branch
# then use the STABLE gobal services
if (STABLE_BUILD)
message(STATUS "The RELEASE_TYPE is PRODUCTION and STABLE_BUILD is 1")
set(BUILD_GLOBAL_SERVICES "STABLE")
set(USE_STABLE_GLOBAL_SERVICES 1)
endif ()
set(BUILD_GLOBAL_SERVICES "STABLE")
set(USE_STABLE_GLOBAL_SERVICES 1)
if (NOT BYPASS_SIGNING)
set(BYPASS_SIGNING 0)
endif ()
set(BYPASS_SIGNING 0)
endif()
elseif (RELEASE_TYPE STREQUAL "PR")
set(DEPLOY_PACKAGE TRUE)
set(PR_BUILD 1)
set(BUILD_VERSION "PR${RELEASE_NUMBER}")
set(BUILD_ORGANIZATION "Overte - PR${RELEASE_NUMBER}")
elseif (OVERTE_RELEASE_TYPE STREQUAL "PR")
# To not break our NSIS later down the line, we use `1` here instead of `ON`.
set(PR_BUILD 1 CACHE INTERNAL "")
set(BUILD_VERSION "PR${OVERTE_RELEASE_NUMBER}-${BUILD_DATE}")
set(BUILD_ORGANIZATION "Overte - ${BUILD_VERSION}")
set(INTERFACE_ICON_PREFIX "interface-beta")
# add definition for this release type
add_definitions(-DPR_BUILD)
else ()
set(DEV_BUILD 1)
set(BUILD_VERSION "dev")
elseif (OVERTE_RELEASE_TYPE STREQUAL "NIGHTLY")
# To not break our NSIS later down the line, we use `1` here instead of `ON`.
set(NIGHTLY_BUILD 1 CACHE INTERNAL "")
set(BUILD_VERSION "Nightly-${BUILD_DATE}")
set(BUILD_ORGANIZATION "Overte - ${BUILD_VERSION}")
set(INTERFACE_ICON_PREFIX "interface-beta")
# add definition for this release type
add_definitions(-DPR_BUILD)
elseif (OVERTE_RELEASE_TYPE STREQUAL "DEV")
# To not break our NSIS later down the line, we use `1` here instead of `ON`.
set(DEV_BUILD 1 CACHE INTERNAL "")
set(BUILD_VERSION "Dev-${BUILD_DATE}")
set(BUILD_ORGANIZATION "Overte - ${BUILD_VERSION}")
set(INTERFACE_ICON_PREFIX "interface-beta")
# add definition for this release type
add_definitions(-DDEV_BUILD)
endif ()
else()
message(FATAL_ERROR "OVERTE_RELEASE_TYPE invalid. Expected: 'RELEASE', 'PR', 'NIGHTLY', or 'DEV'. Got: '${OVERTE_RELEASE_TYPE}'")
endif()
set(NITPICK_BUNDLE_NAME "nitpick")
if (RELEASE_TYPE STREQUAL "PRODUCTION")
if (PRODUCTION_BUILD)
set(NITPICK_ICON_PREFIX "nitpick")
else ()
set(NITPICK_ICON_PREFIX "nitpick-beta")
endif ()
string(TIMESTAMP BUILD_TIME "%d/%m/%Y")
# if STABLE_BUILD is 1, PRODUCTION_BUILD must be 1 and
# DEV_BUILD and PR_BUILD must be 0
if (STABLE_BUILD)
if ((NOT PRODUCTION_BUILD) OR PR_BUILD OR DEV_BUILD)
message(FATAL_ERROR "Cannot produce STABLE_BUILD without PRODUCTION_BUILD")
endif ()
endif ()
if ((PRODUCTION_BUILD OR PR_BUILD) AND NOT STABLE_BUILD)
set(GIT_COMMIT_SHORT $ENV{GIT_COMMIT_SHORT})
set(BUILD_VERSION_NO_SHA ${BUILD_VERSION})
if (NOT PRODUCTION_BUILD)
# append the abbreviated commit SHA to the build version
# since this is a PR build or master/nightly builds
set(BUILD_VERSION_NO_SHA ${BUILD_VERSION})
set(BUILD_VERSION "${BUILD_VERSION}-${GIT_COMMIT_SHORT}")
# pass along a release number without the SHA in case somebody
# wants to compare master or PR builds as integers
set(BUILD_NUMBER ${RELEASE_NUMBER})
endif ()
if (DEPLOY_PACKAGE)
# For deployed packages we do not grab the serverless content any longer.
# Instead, we deploy just the serverless content that is in the interface/resources/serverless
# directory. If we ever move back to delivering serverless via a hosted .zip file,
# we can re-enable this.
set(DOWNLOAD_SERVERLESS_CONTENT OFF)
# since this is a PR build or master/nightly build
set(BUILD_VERSION "${BUILD_VERSION}-${OVERTE_GIT_COMMIT_SHORT}")
endif ()
if (APPLE)
@ -135,10 +130,10 @@ macro(SET_PACKAGING_PARAMETERS)
set(INTERFACE_INSTALL_DIR ".")
set(NITPICK_INSTALL_DIR ".")
if (CLIENT_ONLY)
set(CONSOLE_EXEC_NAME "Console.app")
if (NOT OVERTE_BUILD_SERVER)
set(CONSOLE_EXEC_NAME "Console.app")
else ()
set(CONSOLE_EXEC_NAME "Sandbox.app")
set(CONSOLE_EXEC_NAME "Sandbox.app")
endif()
set(CONSOLE_INSTALL_APP_PATH "${CONSOLE_INSTALL_DIR}/${CONSOLE_EXEC_NAME}")
@ -146,7 +141,7 @@ macro(SET_PACKAGING_PARAMETERS)
set(COMPONENT_APP_PATH "${CONSOLE_APP_CONTENTS}/MacOS/Components.app")
set(COMPONENT_INSTALL_DIR "${COMPONENT_APP_PATH}/Contents/MacOS")
set(CONSOLE_PLUGIN_INSTALL_DIR "${COMPONENT_APP_PATH}/Contents/PlugIns")
set(INTERFACE_INSTALL_APP_PATH "${INTERFACE_INSTALL_DIR}/${INTERFACE_BUNDLE_NAME}.app")
set(INTERFACE_ICON_FILENAME "${INTERFACE_ICON_PREFIX}.icns")
set(NITPICK_ICON_FILENAME "${NITPICK_ICON_PREFIX}.icns")
@ -188,7 +183,7 @@ macro(SET_PACKAGING_PARAMETERS)
set(INTERFACE_HF_SHORTCUT_NAME "${INTERFACE_SHORTCUT_NAME}")
set(CONSOLE_HF_SHORTCUT_NAME "Overte ${CONSOLE_SHORTCUT_NAME}")
set(SANDBOX_HF_SHORTCUT_NAME "Overte ${SANDBOX_SHORTCUT_NAME}")
set(PRE_SANDBOX_INTERFACE_SHORTCUT_NAME "Overte")
set(PRE_SANDBOX_CONSOLE_SHORTCUT_NAME "Server Console")

View file

@ -1,6 +1,7 @@
#
# Created by Brad Hefta-Gaub on 2016/07/07
# Copyright 2016 High Fidelity, Inc.
# Copyright 2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html
@ -10,7 +11,7 @@ macro(SETUP_HIFI_CLIENT_SERVER_PLUGIN)
set(PLUGIN_SUBFOLDER ${ARGN})
setup_hifi_library()
if (BUILD_CLIENT)
if (OVERTE_BUILD_CLIENT)
if (APPLE)
add_dependencies(Overte ${TARGET_NAME})
else()
@ -18,7 +19,7 @@ macro(SETUP_HIFI_CLIENT_SERVER_PLUGIN)
endif()
endif()
if (BUILD_SERVER)
if (OVERTE_BUILD_SERVER)
add_dependencies(assignment-client ${TARGET_NAME})
endif()

View file

@ -8,7 +8,7 @@
macro(SETUP_HIFI_PLUGIN)
set(${TARGET_NAME}_SHARED 1)
setup_hifi_library(${ARGV})
if (BUILD_CLIENT)
if (OVERTE_BUILD_CLIENT)
if (APPLE)
add_dependencies(Overte ${TARGET_NAME})
else()

View file

@ -1,13 +1,14 @@
#
# Copyright 2015 High Fidelity, Inc.
# Copyright 2025 Overte e.V.
# Created by Bradley Austin Davis on 2015/10/10
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
#
macro(TARGET_NSIGHT)
if (WIN32 AND USE_NSIGHT)
if (WIN32 AND OVERTE_USE_NSIGHT)
# grab the global CHECKED_FOR_NSIGHT_ONCE property
get_property(NSIGHT_UNAVAILABLE GLOBAL PROPERTY CHECKED_FOR_NSIGHT_ONCE)

View file

@ -5,6 +5,7 @@
// Created by Stephen Birarda on 1/14/16.
// Copyright 2015 High Fidelity, Inc.
// Copyright 2021 Vircadia contributors.
// Copyright 2025 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -25,16 +26,16 @@ namespace BuildInfo {
const QString MODIFIED_ORGANIZATION = "@BUILD_ORGANIZATION@";
const QString ORGANIZATION_DOMAIN = "overte.org";
const QString VERSION = "@BUILD_VERSION@";
const QString BUILD_NUMBER = "@BUILD_NUMBER@";
const QString BUILD_NUMBER = "@BUILD_VERSION_NO_SHA@";
const QString BUILD_GLOBAL_SERVICES = "@BUILD_GLOBAL_SERVICES@";
const QString BUILD_TIME = "@BUILD_TIME@";
const QString BUILD_TIME = "@BUILD_DATE@";
const QString PRELOADED_STARTUP_LOCATION = "@PRELOADED_STARTUP_LOCATION@";
const QString PRELOADED_SCRIPT_ALLOWLIST = "@PRELOADED_SCRIPT_ALLOWLIST@";
enum BuildType {
Dev,
PR,
Master,
Nightly,
Stable
};
@ -42,8 +43,11 @@ namespace BuildInfo {
const BuildType BUILD_TYPE = PR;
const QString BUILD_TYPE_STRING = "pr";
#elif defined(PRODUCTION_BUILD)
const BuildType BUILD_TYPE = @STABLE_BUILD@ ? Stable : Master;
const QString BUILD_TYPE_STRING = @STABLE_BUILD@ ? "stable" : "master";
const BuildType BUILD_TYPE = Stable;
const QString BUILD_TYPE_STRING = "stable";
#elif defined(NIGHTLY_BUILD)
const BuildType BUILD_TYPE = Nightly;
const QString BUILD_TYPE_STRING = "nightly";
#else
const BuildType BUILD_TYPE = Dev;
const QString BUILD_TYPE_STRING = "dev";

View file

@ -1,6 +1,6 @@
{
"releaseType": "@RELEASE_TYPE@",
"buildNumber": "@BUILD_NUMBER@",
"releaseType": "@OVERTE_RELEASE_TYPE@",
"buildNumber": "@OVERTE_GIT_COMMIT_SHORT@",
"stableBuild": "@STABLE_BUILD@",
"buildIdentifier": "@BUILD_VERSION@",
"organization": "@BUILD_ORGANIZATION@",

View file

@ -32,10 +32,10 @@ find_package(
)
if (BUILD_TOOLS AND JSDOC_ENABLED)
message(STATUS "JSDoc enabled, depending on jsdoc")
add_custom_qrc_path(CUSTOM_INTERFACE_QRC_PATHS "${CMAKE_BINARY_DIR}/tools/jsdoc/out/hifiJSDoc.json" "auto-complete/hifiJSDoc.json")
endif ()
if (OVERTE_BUILD_TOOLS AND JSDOC_ENABLED)
message(STATUS "JSDoc enabled, depending on jsdoc")
add_custom_qrc_path(CUSTOM_INTERFACE_QRC_PATHS "${CMAKE_BINARY_DIR}/tools/jsdoc/out/hifiJSDoc.json" "auto-complete/hifiJSDoc.json")
endif()
set(RESOURCES_QRC ${CMAKE_CURRENT_BINARY_DIR}/resources.qrc)
set(RESOURCES_RCC ${CMAKE_CURRENT_BINARY_DIR}/resources.rcc)
@ -48,8 +48,8 @@ else ()
qt5_add_binary_resources(resources "${RESOURCES_QRC}" DESTINATION "${RESOURCES_RCC}")
endif()
if (BUILD_TOOLS AND JSDOC_ENABLED)
add_dependencies(resources jsdoc)
if (OVERTE_BUILD_TOOLS AND JSDOC_ENABLED)
add_dependencies(resources jsdoc)
endif()
list(APPEND GENERATE_QRC_DEPENDS ${RESOURCES_RCC})
@ -435,7 +435,7 @@ if (SCRIPTS_INSTALL_DIR)
)
endif()
if (DOWNLOAD_SERVERLESS_CONTENT)
if (OVERTE_DOWNLOAD_SERVERLESS_CONTENT)
add_dependency_external_projects(serverless-content)
ExternalProject_Get_Property(serverless-content SOURCE_DIR)

View file

@ -6,7 +6,7 @@
// Created by Andrzej Kapolka on 5/10/13.
// Copyright 2013 High Fidelity, Inc.
// Copyright 2020 Vircadia contributors.
// Copyright 2022-2023 Overte e.V.
// Copyright 2022-2025 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -597,7 +597,7 @@ void Application::initialize(const QCommandLineParser &parser) {
// If launched from Steam, let it handle updates
bool buildCanUpdate = BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable
|| BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Master;
|| BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Nightly;
if (!parser.isSet("no-updater") && buildCanUpdate) {
constexpr auto INSTALLER_TYPE_CLIENT_ONLY = "client_only";

View file

@ -4,6 +4,7 @@
//
// Created by David Rowe on 24 Aug 2015.
// Copyright 2015 High Fidelity, Inc.
// Copyright 2025 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -103,7 +104,7 @@ bool CrashRecoveryHandler::suggestCrashReporting() {
"and not yet part of the official code. We'd highly appreciate it if you enabled\n"
"crash reporting to help us test this potential addition.";
break;
case BuildInfo::BuildType::Master:
case BuildInfo::BuildType::Nightly:
explainText = "You're running a pre-release version. This is an official release, but the code\n"
"is not yet considered to be fully stable. We'd highly appreciate it if you enabled\n"
"crash reporting to help us test the upcoming release.";

View file

@ -45,7 +45,7 @@ if (WIN32)
ExternalProject_Add(
qtlite
URL "${EXTERNAL_BUILD_ASSETS}/dependencies/qtlite/qt-lite-5.9.9-win-oct-15-2019.zip"
URL "${OVERTE_EXTERNAL_BUILD_ASSETS}/dependencies/qtlite/qt-lite-5.9.9-win-oct-15-2019.zip"
URL_HASH MD5=0176277bca37d219e83738caf3a698eb
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
@ -78,7 +78,7 @@ endif ()
if (APPLE)
ExternalProject_Add(
qtlite
URL "${EXTERNAL_BUILD_ASSETS}/dependencies/qtlite/qt-lite-5.9.9-mac.zip"
URL "${OVERTE_EXTERNAL_BUILD_ASSETS}/dependencies/qtlite/qt-lite-5.9.9-mac.zip"
URL_HASH MD5=0cd78d40e5f539a7e314cf99b6cae0d0
CONFIGURE_COMMAND ""
BUILD_COMMAND ""

View file

@ -4,7 +4,7 @@
//
// Created by Leonardo Murillo on 6/1/2015.
// Copyright 2015 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
// Copyright 2023-2025 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -46,10 +46,10 @@ void AutoUpdater::getLatestVersionData() {
if (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable) {
buildsURL = NetworkingConstants::BUILDS_XML_URL;
} else if (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Master) {
} else if (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Nightly) {
buildsURL = NetworkingConstants::MASTER_BUILDS_XML_URL;
}
QNetworkRequest latestVersionRequest(buildsURL);
latestVersionRequest.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
@ -82,10 +82,10 @@ void AutoUpdater::parseLatestVersionData() {
// master builds look at the version node (build number)
if (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable) {
versionKey = "stable_version";
} else if (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Master) {
} else if (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Nightly) {
versionKey = "version";
}
while (xml.readNextStartElement()) {
if (xml.name() == "projects") {
while (xml.readNextStartElement()) {

View file

@ -3,7 +3,7 @@
//
//
// Created by Dale Glass on 25/06/2023.
// Copyright 2023 Overte e.V.
// Copyright 2023-2025 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -103,7 +103,7 @@ public slots:
* Reasons for it failing to start include:
*
* * Not having a crash reporter for the platform
* * Crash reporter not being configured with reporting URLs (CMAKE_BACKTRACE_TOKEN and CMAKE_BACKTRACE_URL)
* * Crash reporter not being configured with reporting URLs (OVERTE_BACKTRACE_TOKEN and OVERTE_BACKTRACE_URL)
* * Crash reporter is present and configured, but failed to initialize for some reason
*
* @return true Crash reporter is present, configured and working.
@ -118,7 +118,7 @@ public slots:
* This setting is independent of isCrashMonitorStarted() -- crash reporting may be enabled but fail to work
* due to the crash reporting component being missing or failing to initialize.
*
* @return true Crashes will be reported to CMAKE_BACKTRACE_URL
* @return true Crashes will be reported to OVERTE_BACKTRACE_URL
* @return false Crashes will not be reported
*/
bool isEnabled() const { return _crashReportingEnabled; }
@ -126,7 +126,7 @@ public slots:
/**
* @brief Set whether we want to submit crash reports to the report server
*
* The report server is configured with CMAKE_BACKTRACE_URL.
* The report server is configured with OVERTE_BACKTRACE_URL.
* Emits crashReportingEnabledChanged signal.
*
* @note This automatically calls start(), so it should be called after setPath(), setUrl() and setToken()
@ -137,7 +137,7 @@ public slots:
/**
* @brief Set the URL where to send crash reports to
*
* If not set, a predefined URL specified at compile time via CMAKE_BACKTRACE_URL
* If not set, a predefined URL specified at compile time via OVERTE_BACKTRACE_URL
* will be used.
*
* @param url URL
@ -150,7 +150,7 @@ public slots:
* This is an identifier in the crash collection service, such as Sentry, and may contain
* a branch name or a version number.
*
* If not set, a predefined token specified at compile time via CMAKE_BACKTRACE_TOKEN
* If not set, a predefined token specified at compile time via OVERTE_BACKTRACE_TOKEN
* will be used.
*
* @param token Token

View file

@ -4,6 +4,7 @@
//
// Created by Clement Brisset on 01/19/18.
// Copyright 2018 High Fidelity, Inc.
// Copyright 2025 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -47,8 +48,8 @@ Q_LOGGING_CATEGORY(crash_handler, "overte.crash_handler")
static const std::string BACKTRACE_URL{ CMAKE_BACKTRACE_URL };
static const std::string BACKTRACE_TOKEN{ CMAKE_BACKTRACE_TOKEN };
static const std::string BACKTRACE_URL{ OVERTE_BACKTRACE_URL };
static const std::string BACKTRACE_TOKEN{ OVERTE_BACKTRACE_TOKEN };
std::string custom_backtrace_url;
std::string custom_backtrace_token;

View file

@ -1,7 +1,7 @@
#
# Created by Bradley Austin Davis on 2015/10/25
# Copyright 2015 High Fidelity, Inc.
# Copyright 2023-2024 Overte e.V.
# Copyright 2023-2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -12,8 +12,8 @@ file(GLOB PLUGIN_SUBDIRS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT
list(REMOVE_ITEM PLUGIN_SUBDIRS "CMakeFiles")
# client-side plugins
if (NOT SERVER_ONLY AND NOT ANDROID)
if (WIN32 AND (NOT USE_GLES))
if (OVERTE_BUILD_CLIENT AND NOT ANDROID)
if (WIN32 AND (NOT OVERTE_RENDERING_BACKEND STREQUAL "GLES"))
set(DIR "oculus")
add_subdirectory(${DIR})
set(DIR "oculusLegacy")

View file

@ -1,14 +1,14 @@
#
# Created by Bradley Austin Davis on 2015/10/25
# Copyright 2015 High Fidelity, Inc.
# Copyright 2023 Overte e.V.
# Copyright 2023-2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html
# SPDX-License-Identifier: Apache-2.0
#
if (WIN32 AND (NOT USE_GLES))
if (WIN32 AND (NOT OVERTE_RENDERING_BACKEND STREQUAL "GLES"))
# if we were passed an Oculus App ID for entitlement checks, send that along
if (DEFINED ENV{OCULUS_APP_ID})

View file

@ -2,14 +2,14 @@
# Created by Bradley Austin Davis on 2015/11/18
# Copyright 2015 High Fidelity, Inc.
# Copyright 2020 Vircadia contributors.
# Copyright 2023 Overte e.V.
# Copyright 2023-2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html
# SPDX-License-Identifier: Apache-2.0
#
if ((WIN32 OR UNIX AND NOT APPLE) AND NOT USE_GLES)
if ((WIN32 OR UNIX AND NOT APPLE) AND (NOT OVERTE_RENDERING_BACKEND STREQUAL "GLES"))
set(TARGET_NAME openvr)
setup_hifi_plugin(Gui Qml Multimedia)
link_hifi_libraries(shared task gl qml networking controllers ui

View file

@ -1,6 +1,7 @@
#
# Created by Michael Bailey on 12/20/2019
# Copyright 2019 Michael Bailey
# Copyright 2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html
@ -11,6 +12,6 @@ setup_hifi_client_server_plugin()
link_hifi_libraries(shared audio plugins)
target_opus()
if (BUILD_SERVER)
if (OVERTE_BUILD_SERVER)
install_beside_console()
endif ()

View file

@ -1,6 +1,7 @@
#
# Created by Brad Hefta-Gaub on 6/9/2016
# Copyright 2016 High Fidelity, Inc.
# Copyright 2025 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html
@ -10,6 +11,6 @@ set(TARGET_NAME pcmCodec)
setup_hifi_client_server_plugin()
link_hifi_libraries(shared audio plugins)
if (BUILD_SERVER)
if (OVERTE_BUILD_SERVER)
install_beside_console()
endif ()

View file

@ -28,7 +28,7 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Server Console")
set_target_properties(${TARGET_NAME}-npm-install PROPERTIES FOLDER "hidden/Server Console")
# add a dependency from the package target to the server components
if (BUILD_CLIENT)
if (OVERTE_BUILD_CLIENT)
if (APPLE)
add_dependencies(${TARGET_NAME} Overte)
else()
@ -36,7 +36,7 @@ if (BUILD_CLIENT)
endif()
endif()
if (BUILD_SERVER)
if (OVERTE_BUILD_SERVER)
add_dependencies(${TARGET_NAME} assignment-client domain-server)
endif()

View file

@ -22,8 +22,8 @@ function(check_test name)
set(BUILD_TOOL_RESULT ${RESULT} PARENT_SCOPE)
endfunction()
if (BUILD_TOOLS)
set(ALL_TOOLS
if (OVERTE_BUILD_TOOLS)
set(ALL_TOOLS
udt-test
gpu-frame-player
ice-client

View file

@ -1,6 +1,6 @@
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2020 Vircadia contributors.
# Copyright 2022 Overte e.V.
# Copyright 2022-2025 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
# Post build script
@ -18,7 +18,7 @@ def main():
release_number = os.environ['RELEASE_NUMBER']
full_prefix = upload_prefix + release_number
S3 = boto3.client('s3', region_name=os.environ['UPLOAD_REGION'], endpoint_url=os.environ['UPLOAD_ENDPOINT'])
path = os.path.join(os.getcwd(), os.environ['ARTIFACT_PATTERN'])
path = os.path.join(os.getcwd(), "Overte-*")
print("Checking for files to upload in {}..".format(path))
files = glob.glob(path, recursive=False)
for archiveFile in files:

View file

@ -14,7 +14,7 @@ file(TO_NATIVE_PATH ${JSDOC_WORKING_DIR}/root.js NATIVE_JSDOC_WORKING_DIR)
set(JSDOC_OUTPUT_PATH ${OUTPUT_DIR} CACHE INTERNAL "${PROJECT_NAME}: JSDoc output directory")
add_custom_command(TARGET ${TARGET_NAME}
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
COMMAND ${NPM_EXECUTABLE} --no-progress install && ${JSDOC_PATH} ${NATIVE_JSDOC_WORKING_DIR} -c ${JSDOC_CONFIG_PATH} -d ${OUTPUT_DIR}
WORKING_DIRECTORY ${JSDOC_WORKING_DIR}
COMMENT "generate the JSDoc JSON"

View file

@ -147,7 +147,7 @@ if (WIN32)
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/AppDataHighFidelity" "$<TARGET_FILE_DIR:${TARGET_NAME}>/AppDataHighFidelity"
)
if (RELEASE_TYPE STREQUAL "DEV")
if (OVERTE_RELEASE_TYPE STREQUAL "DEV")
# This to enable running from the IDE
add_custom_command(
TARGET ${TARGET_NAME}