Commit graph

275 commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks
678399ce81 cmake: Ignore not-so-useful warnings
These warnings are mostly hints or complete nonsense based on broken parsing. It is easier to disable them than to find a common solution that works on all compilers.
2023-04-05 18:58:36 +02:00
Michael Fabian 'Xaymar' Dirks
bb79b574b5 cmake: Enable all warnings 2023-04-05 18:58:36 +02:00
Michael Fabian 'Xaymar' Dirks
c1b832c03a cmake: Fix bad version strings
PROJECT_VERSION is defined by CMake, and can't be relied on.
2023-04-05 18:58:35 +02:00
Michael Fabian 'Xaymar' Dirks
9fbed3a319 cmake: Workaround for missing INTERFACE_INCLUDE_DIRECTORIES (MacOS)
This work-around adds the necessary include directories, as the 'libobs' target does not export any include directories visible without BUILD_INTERFACE evaluating to TRUE. Hopefully the true cause for this problem can be identified and fixed later.
2023-04-05 18:58:33 +02:00
Michael Fabian 'Xaymar' Dirks
1d066caed3 cmake: Set correct path for Qt6 binaries (MacOS) 2023-04-05 18:58:33 +02:00
Michael Fabian 'Xaymar' Dirks
730987ba77 cmake: Define SHOWWINDOW constants (Windows) 2023-04-05 18:58:31 +02:00
Michael Fabian 'Xaymar' Dirks
7937ff4a44 cmake: Remove Auto-Dependency system
While the system helped users get started quickly, it also presented a unique problem by itself. As CMake grew, the code that supported this system became more and more fragile to the point of failing at random, with no indication of why it would fail. Additionally as OBS Studio 28.0 adopted a much nicer system, it is no longer necessary to have this system at all.

As an addition to this change, all systems that could rely on FindModules now do so. This drastically reduces the complexity of the CMake system, while allowing significantly more flexibility with what binaries are really being used. In the best case this should allow a prepared user to build StreamFX by itself within seconds.
2023-04-05 18:58:31 +02:00
Michael Fabian 'Xaymar' Dirks
2acaf7c280 cmake: Support building with Qt5 and Qt6
This allows developers to pick their flavor of Qt, potentially enabling more advanced integrations with Qt in the future. Eventually Qt5 support may be dropped in favor of Qt6.

Fixes #811
2023-04-05 18:58:28 +02:00
Michael Fabian 'Xaymar' Dirks
f10096da98 cmake: Unify project metadata across platforms 2023-04-05 18:58:28 +02:00
Michael Fabian 'Xaymar' Dirks
a149531fb8 cmake: Upgrade version code to shared cmake-version module
This module handles parsing, generating, modifying and comparing of versions with pure CMake.
2023-04-05 18:58:28 +02:00
Michael Fabian 'Xaymar' Dirks
e9283aec37 project: Add support for multi stage release cycles
To ensure better stability of future releases, we need to adopt multiple stages in the release cycle. As we already label Alpha, Beta, Candidate and Stable differently, simply adopting this classification system already does everything for us. This also allows us to maintain compatibility with the existing system, while offering something new entirely.
2023-04-05 18:58:27 +02:00
Michael Fabian 'Xaymar' Dirks
9e6171ab06 ci: Upgrade to LLVM/Clang 14.x 2023-04-05 18:58:26 +02:00
Michael Fabian 'Xaymar' Dirks
d7dc5804d4 cmake: Update clang submodule
Fixes #799
2023-04-05 18:58:25 +02:00
Michael Fabian 'Xaymar' Dirks
0ea796de94 cmake: Fix some poorly formatted messages 2023-04-05 18:58:25 +02:00
Michael Fabian 'Xaymar' Dirks
afdddd9381 cmake: Split optimizations by platform and compiler
Also make fast math optional on all platforms and compilers.
2023-04-05 18:58:25 +02:00
Michael Fabian 'Xaymar' Dirks
a5b20c85b0 cmake: Add support for older libOBS versions
This is necessary for libOBS 27.2 and earlier, as the file name is LibObsConfig.cmake, not libobsConfig.cmake.
2023-04-05 18:58:24 +02:00
Michael Fabian 'Xaymar' Dirks
9fbbcdf89d cmake: Adjust install and package logic for libOBS 27.2
Also add basic support for libOBS 28.0
2023-04-05 18:58:24 +02:00
Michael Fabian 'Xaymar' Dirks
7e41414f57 cmake: Allow targeting a specific architecture level 2023-04-05 18:58:24 +02:00
Michael Fabian 'Xaymar' Dirks
5f050515ba cmake: Further improve libOBS and obs-frontend-api detection 2023-04-05 18:58:23 +02:00
Michael Fabian 'Xaymar' Dirks
ad48e74410 cmake: Fix formatting 2023-04-05 18:58:23 +02:00
Michael Fabian 'Xaymar' Dirks
59411d42d5 cmake: Don't enable clang integration by default
Affects #799
2023-04-05 18:58:23 +02:00
Michael Fabian 'Xaymar' Dirks
a5de211768 cmake: Add Link-Time Optimization option if supported 2023-04-05 18:58:23 +02:00
Michael Fabian 'Xaymar' Dirks
583ba282f8 cmake: Merge standalone detection into single conditional 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks
65afefd0ba cmake: Use CMAKE_MESSAGE_INDENT if available 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks
56f50fcc54 cmake: Require version 3.13 or newer 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks
6852a2468b project: Version 0.12.0a1 2023-04-05 18:58:22 +02:00
Michael Fabian 'Xaymar' Dirks
9bbc35b293 obs/source: Refactor old deprecated classes 2023-04-05 18:58:21 +02:00
Michael Fabian 'Xaymar' Dirks
f160580794 cmake: Improve build system with additional features and options
- Moved all auto-dependencies to a uniform subdirectory for easier caching and cleanup.
- Add an option to download or specify a path for libOBS+obs-frontend-api.
- Remove the dependency on the non-standard obs-frontend-apiConfig.cmake file.
- Add an option to download or specify a path for OBS Dependencies.
- Add an option to download or specify a path for Qt.
- Add an option to download or specify a path for AOM.
- Fix and improve architecture and platform detection.
- Fix some messages having two :, or no prefix at all.
- Fix detection of obs-frontend-api.
- Fix applying custom compiler and linker flags for MSVC and GNU-style builds.
- Use target_compile_options over add_compile_options for compatibility.
2023-04-05 18:58:20 +02:00
carsten.braun
0540a18f27 encoders/ffmpeg/dnxhr: Add Avid DNxHR Encoder based on FFmpeg 2023-04-05 18:58:18 +02:00
Michael Fabian 'Xaymar' Dirks
4d4db59b23 project: Version 0.11.0 2023-04-05 18:51:56 +02:00
Michael Fabian 'Xaymar' Dirks
53e9811f11 project: Version 0.11.0c1 2023-04-05 18:51:56 +02:00
Michael Fabian 'Xaymar' Dirks
b72e4ee83e project: Version 0.11.0b3 2023-04-05 18:51:54 +02:00
Michael Fabian 'Xaymar' Dirks
292562b63e project: Version 0.11.0b2 2023-04-05 18:51:48 +02:00
Michael Fabian 'Xaymar' Dirks
7edda268e0 project: Version 0.11.0b1 2023-04-05 18:51:45 +02:00
Michael Fabian 'Xaymar' Dirks
1f78de676d cmake: Fix and improve Code Signing on Windows
It was sometimes impossible to sign the binaries on Windows, depending on how CMake was being run. By explicitly converting to the intended native format, we avoid this problem for most situations. Additionally we now support per-project certificates, instead of global certificates only. This also allows multiple uses of cmake-codesign in the same overall project.
2023-04-05 18:51:41 +02:00
Michael Fabian 'Xaymar' Dirks
655ff6e367 third-party: Add GLAD OpenGL wrapper 2023-04-05 18:51:40 +02:00
Michael Fabian 'Xaymar' Dirks
0e26018cd3 ci: Sign builds with the provided key automatically 2023-04-05 18:51:39 +02:00
Michael Fabian 'Xaymar' Dirks
e7d17695c5 cmake: Add support for Code Signing on supported platforms 2023-04-05 18:51:39 +02:00
Michael Fabian 'Xaymar' Dirks
5d89b0d8b1 project: Version 0.11.0a8 2023-04-05 18:51:39 +02:00
Michael Fabian 'Xaymar' Dirks
ad3ac69cd7 filter/auto-framing: Frame your face, automatically! 2023-04-05 18:51:36 +02:00
Michael Fabian 'Xaymar' Dirks
e6ec0fc4c7 nvidia/ar/facedetection: Add Face Detection feature 2023-04-05 18:51:36 +02:00
Michael Fabian 'Xaymar' Dirks
c1ecfe70b3 nvidia/ar/feature: Add wrapper for AR features 2023-04-05 18:51:35 +02:00
Michael Fabian 'Xaymar' Dirks
913ac4b309 nvidia/ar: Add modern wrapper for Maxine AR SDK 2023-04-05 18:51:35 +02:00
Michael Fabian 'Xaymar' Dirks
c3440d2069 project: Remove undocumented "NVIDIA Face Tracking" feature
Originally intended to be an experiment with no future, it turned out to be very popular with streamers that move a lot. In the end it was popular enough that NVIDIA added their own variant to their Broadcast software, which works decently enough. Unfortunately my wrapper code around the library was written very poorly, so it didn't take long for it to break out of nowhere.
2023-04-05 18:51:35 +02:00
Michael Fabian 'Xaymar' Dirks
28fa127ead gfx/debug: Helper class to handle common debug rendering 2023-04-05 18:51:35 +02:00
Michael Fabian 'Xaymar' Dirks
22f0bd1da1 project: Version 0.11.0a7 2023-04-05 18:51:32 +02:00
Michael Fabian 'Xaymar' Dirks
b4a7cc7f2f cmake: NVIDIA Video Effects SDK requires CUDA 2023-04-05 18:51:31 +02:00
Michael Fabian 'Xaymar' Dirks
6b0a14135c cmake: Fix is_feature_enabled and set_feature_disabled 2023-04-05 18:51:31 +02:00
Michael Fabian 'Xaymar' Dirks
90bb03779c filter/virtual-greenscreen: Add Virtual Greenscreen filter 2023-04-05 18:51:31 +02:00
Michael Fabian 'Xaymar' Dirks
6d20280956 nvidia/vfx/greenscreen: Simple wrapper for the Green Screen effect 2023-04-05 18:51:30 +02:00