Commit Graph
384 Commits
Author SHA1 Message Date
gxalpha ba84bea46d libobs: Rewrite macOS Hotkeys to use CGEventTap
Using CGEventTapCreate instead of addGlobalMonitorForEventsMatchingMask
to listen to global hotkeys has the advantage of tighter control over
what permissions we need. Since we only listen to and do not modify the
event, it is enough to have "Input Monitoring" instead of the full
"Accessibility" (which would allow modifying the event after catching
it).
2025-02-05 14:33:06 -05:00
Yann Salmon 9b97d48573 cmake: Fix regexp to detect installed FFmpeg version
The regexp was not tolerating a + sign is the version string,
causing configuration to fail on Ubuntu 24.04 when the installed
version is 6.1.1-3ubuntu5+esm2.
2025-02-05 12:22:36 -05:00
PatTheMav 45a89ab199 cmake: Update macOS development version requirements
To be able to make use of macOS 15 features, development must use the
macOS 15 SDK and in turn Xcode 16.0 (or more recent).
2025-01-23 16:43:37 -05:00
PatTheMav 7db4a75913 cmake: Update main CMakeLists file to use refactored frontend 2025-01-08 17:33:13 +01:00
Ryan Foster c8e215be3d cmake: Fix build directory exclusion for real
Upon further review, the build directory is never set to build_$arch.
Currently, our CMake Presets on Ubuntu only use build_ubuntu. However,
we can attempt to be flexible here and simply exclude the build
directory configured in CMake.
2024-11-26 16:05:53 -05:00
Ryan Foster b5f4958eac cmake: Fix build directory exclusion
The regex was incorrectly excluding any file with build in the name. The
intent was to exclude any build directories, so we should be able to
restrict this.
2024-11-15 15:30:09 -05:00
tytan652 52a0486c4c cmake/plugins: Enable -Wswitch on GCC
This warning is already enabled for Clang which causes issue for things
that are usually built with MSVC or GCC (e.g. non-macOS plugins).

obs-nvenc switch warning is also fixed in this commit.
obs-qsv11 has switch warning set to not become errors.
2024-10-25 13:01:33 -04:00
tytan652 2e075f7513 cmake: Fix target_add_resource ARGN support on Linux
This fixes how the AUTHORS file is installed.
2024-10-24 15:08:37 -04:00
Kurt Kartaltepe cc36ccd07d cmake: Use fixed SOVERSION everywhere
We missed a spot when freezing the SOVERSION to 30 after we flipped to
31 causing builds to break.
2024-10-05 14:03:14 -07:00
PatTheMav 32cfa1626f UI: Fix missing support for portable configuration files
Windows and Linux allow the storage of configuration files relative
to the binary location, which is enabled by default on Windows and has
to be explicitly enabled on Linux.

This was originally conflated with the LINUX_PORTABLE build setting
which also allowed the application itself to be run from non-default
locations on a Linux system.

This change reintroduces the functionality behind the
ENABLE_PORTABLE_CONFIG build setting on Linux.

It also adds necessary code to make this setting compatible with the
recently introduced relocatable settings code changes:

When portable mode is enabled, user configuration, scene collections,
and profiles are stored in the config directory created for portable
mode.
2024-09-26 14:39:44 -04:00
PatTheMav 51d66dcedf cmake: Change library discovery order in LuaJIT find module
To ensure that the find module prefers the variant of LuaJIT shipped
as part of obs-deps, it's necessary to give the name as shipped in
obs-deps the highest precedence.

This ensures that the "find_library" call will discover the less
version-specific variant of the library possibly installed via
Homebrew.
2024-09-26 14:14:55 -04:00
PatTheMav ace60a655c cmake: Disable discovery of Homebrew libraries for dependencies
macOS builds should only use dependencies built via the obs-deps
build scripts. Default variants of the same dependencies are not
compatible with our app packaging requirements and thus will create
issues when creating the app bundle.

This is specifically an issue when MbedTLS is installed via Homebrew
which ships a CMake package config by default and is picked up
by our code ever since we switched to prefer CMake packages.
2024-09-26 14:14:55 -04:00
PatTheMav f9f974fe7b cmake: Update use of MbedTLS to support update to version 3.6.0
MbedTLS changed a lot of internals with their LTS version 3.6.0, which
are incompatible with the find module currently shipped with
OBS Studio.

The solution requires several changes to be applied at once:

* Rename the generated target name to MbedTLS::mbedtls to match the
  name used by MbedTLS' own CMake package
* Update find module to use the updated target name(s)
* Set CMAKE_FIND_PACKAGE_PREFER_CONFIG to TRUE before trying to find
  MbedTLS to ensure that CMake package files are used with priority
  (Those are shipped only with MbedTLS 3.6.0 in obs-deps).
* A deprecation warning is emitted if the find module is used with
  MbedTLS 3.6.0 available
2024-09-13 18:30:42 -04:00
PatTheMav 6c590805e8 cmake: Update supported CMake version range to 3.28 and 3.30 2024-09-13 14:42:32 -04:00
PatTheMav cfc12d0543 cmake: Disable CCache for local builds and enable by default for CI 2024-09-12 17:45:29 -04:00
gxalpha 922e2cc151 cmake: Remove remaining cmake-format comments
cmake-format was replaced with gersemi in
19d3e30a3a. As such, these comments no
longer have any effect.
2024-09-12 14:20:28 -04:00
tytan652 31385006d5 Remove legacy_check CMake macro
The macro was not removed in 72428ccd97
waiting for submodules to be be updated to a commit where their legacy
code path is removed.
2024-09-11 13:24:39 -04:00
Norihiro Kamae 14aaaa325b cmake/linux: Move color diagnostics setting to preset for ubuntu-ci
This also removes color diagnostics setting for cmake < 3.24.
2024-09-10 14:30:17 -04:00
tytan652 129d4f2f3f cmake: Avoid breaking ABI through major version bump on Linux
Freeze SOVERSION to 30, this number is to be incremented when a clean
break is wanted.
2024-09-10 00:41:26 -04:00
gxalpha 296a2b8631 cmake: Exclude macOS .DS_Store from resources 2024-08-31 10:39:11 -04:00
tytan652 72428ccd97 Remove CMake legacy code path
Except submodules and legacy_check macro since the former depend on it.
2024-08-28 13:53:25 -04:00
PatTheMav d81fcd70e0 cmake: Update cross-platform build project management for Windows
Enables creation of x64 and x86 child projects when building on ARM64
and decouples functionality from legacy_check function
2024-08-20 16:00:21 -04:00
PatTheMav c89cef3aa5 cmake: Fix malformed CMake package location on Windows
CMake doesn't expect CMake package files to be separated in
subdirectories on Windows and instead expects all files to be put in
a single directory `cmake` found within one of the PREFIX paths.

Also fixes circular dependency in w32-pthreads CMake package config
file.
2024-08-20 14:48:08 -04:00
PatTheMav b8cfacaec3 Update formatting of CMake files 2024-08-14 12:07:47 -04:00
tytan652 8480660bf8 cmake: Add architecture support to add_obs_plugin
Also add formatting support to the function
2024-07-29 18:11:29 -04:00
Penwywern 4517918c7a cmake: Fix FFmpeg version regex 2024-06-26 12:26:56 -04:00
tytan652 b16516a3fa Revert "cmake: Fix script plugin path on Linux with CMake 3"
This reverts commit 7a4cb085ba.
2024-06-14 17:34:14 -04:00
tytan652 4b187ed38c cmake: Copy shared library soname file to rundir on Linux
Soname files are required since 1d8c377240
2024-06-10 16:32:11 -04:00
tytan652 7a4cb085ba cmake: Fix script plugin path on Linux with CMake 3 2024-06-08 17:08:25 -04:00
tytan652 1d8c377240 cmake,UI: Fix SOVERSION on Linux 2024-06-05 18:16:45 -04:00
Kamal Mostafa d813b7837a cmake: Do not write build number file if OBS_BUILD_NUMBER set
Allows for configuration and build from a read-only-mounted source dir
by setting the build number externally. For example:
`cmake -DOBS_BUILD_NUMBER=1`
2024-05-28 14:33:44 -04:00
Paul Hindt 182410cf6c aja: Prepare plugins for new libajantv2 repo
Support building AJA plugins with either the new libajantv2 library, or
the deprecated ntv2 library.

Finder scripts updated to search for libajantv2 and fall back to ntv2 if
not found. This allows this PR to be merged without requiring a
corresponding update to the pre-built obs-deps packages.
2024-05-02 14:31:16 -04:00
Ryan Foster 649c62cfac cmake: Remove more Qt 5 code
Qt Gui virtualkeyboard plugin was removed in Qt 6.x.
Qt Network Bearer Management was removed in Qt 6.0.
Qt Multimedia mediaservice and audio plugins were removed in Qt 6.x.
2024-04-30 12:02:26 -04:00
derrod eea0e3d2cc cmake: Remove font size patch on macOS 2024-04-21 00:01:16 -04:00
Ryan Foster 8a7ad10262 cmake: Remove find_qt macro
We no longer need this functionality in the new CMake paths. It is still
available in the legacy CMake path.
2024-04-17 21:52:14 -04:00
PatTheMav 0af0de26eb libobs: Add changes for CMake build framework 3.0
New code path only taken if OBS_CMAKE_VERSION is set to 3.0.0 or
greater, old functionality remains unchanged.
2024-04-13 23:48:38 -04:00
PatTheMav e77b12820f cmake: Add Linux component to CMake build framework 3.0 2024-04-13 23:48:38 -04:00
tytan652 cebc828cb8 cmake: Add finder for uthash 2024-04-07 10:01:25 +10:00
Aleks Todorov 80ad63a6da cmake: Provide a clear error on version check fail
Currently, when git describe fails to get a git tag for the OBS Version,
a non-fatal message is printed, and the generator is left to continue,
usually ending up with a more cryptic error message down the line.

Instead, print the git output together with a short description of what
actually happened, and exit fatally so the problematic line of code is
clear. An added advantage is that the git output is printed in red
instead of (say) white on color-enabled terminals.
2024-04-04 15:13:43 -04:00
derrod 98ee9c987e cmake: Add HANDLE_VERSION_RANGE to FFnvcodec finders 2024-03-31 02:05:40 -07:00
Azamat H. Hackimov d9b3969bc5 Add CheckSymbolExists module for FindMbedTLS.cmake
FindMbedTLS.cmake uses `check_symbol_exists` macro which requires
`include(CheckSymbolExists)` before invocation (see
https://cmake.org/cmake/help/latest/module/CheckSymbolExists.html).

Signed-off-by: Azamat H. Hackimov <azamat.hackimov@gmail.com>
2024-01-29 16:57:15 -05:00
tytan652 7c2b39436b cmake: Skip PDB install for interface target 2024-01-28 11:00:01 +11:00
tytan652 cdca983733 cmake: Skip generate export header if interface in legacy path
It backports a behavior from CMake 3.0 to CMake 2.0
2024-01-28 11:00:01 +11:00
Norihiro Kamae 1d4107d744 cmake: Fix Xcode version error message 2024-01-13 17:51:45 -06:00
PatTheMav 07dd32ad14 obs-ffmpeg: Disable hardened runtime when using ad-hoc signing 2024-01-09 10:59:14 -05:00
PatTheMav e79b190f68 cmake: Update MbedTLS finder to support MSVC Debug configuration
Natively compiled MbedTLS for Windows will use the non-debug platform
library, which will lead to a linker error when building OBS in debug
configuration with MSVC.

Neutralizing the linker directive for Debug builds on Windows
unbreaks the build configuration without the need to ship separate
debug variants of MbedTLS.
2024-01-08 18:54:28 -05:00
PatTheMav ec9809bd43 cmake: Update build requirements to Xcode 15.1 and macOS 14.2 SDK
Lowest supported macOS version to build(!) macOS will be 13.5 with this
change.
2024-01-03 22:02:25 +01:00
PatTheMav 7dbde70de1 cmake: Remove support for generators besides Xcode on macOS 2023-12-19 17:59:44 -05:00
PatTheMav eae4673071 cmake: Update CMake formatting with manual format choices 2023-12-19 17:59:44 -05:00
PatTheMav 8135085a23 cmake: Replace custom Qt discovery function with CMake default
find_qt was necessary during the transitional period between Qt5 and
Qt6. With Qt6 being the only supported Qt version (for open source) for
the time being, code complexity can be reduced for easier maintenance.
2023-12-19 17:59:44 -05:00