Commit graph

315 commits

Author SHA1 Message Date
PatTheMav 902843634c
CI: Add new build and packaging scripts for macOS 2023-07-17 19:49:18 +02:00
PatTheMav c23bd7e05e cmake: Fix missing libobs subdirectories in MSVC code navigator 2023-07-17 10:36:50 -04:00
tytan652 d76de77abb cmake: Add finder for Libqrcodengencpp 2023-07-14 15:32:04 -04:00
Kurt Kartaltepe c6b470de9a obs-qsv11: Add a Linux implementation
This adds a CMake module for finding the QSV SDK (libmfx/onevpl) and an
the required platform components to initialize QSV with the VA-API
platform.
2023-07-14 12:19:33 -04:00
derrod 8d33da1fab cmake: Disable char8_t when using C++20 2023-07-05 09:39:41 -07:00
PatTheMav 61bed7a828 cmake: Fix copy to rundir in Release and MinSizeRel configurations
Generated post build action batch scripts retained an empty token to
the copy command with the used generator expression (as PDBs are only
generated for Debug and RelWithDebInfo configurations).

Moving their copy step into its own command (and using the `true`
CMake command, which is a no-op) ensures that builds in Release and
MinSizeRel correctly finish this step.
2023-07-02 14:48:25 +02:00
PatTheMav 1660e2536f cmake: Add flags for reproducible builds on Windows
Compiler and linker flags for reproducible builds on Windows were
omitted from the recent CMake rework in error. This commit adds those
flags back.
2023-06-30 16:16:17 -04:00
Norihiro Kamae 75805eaecb cmake: Remove ObsPluginHelpers.cmake 2023-06-30 12:45:48 -04:00
PatTheMav a01e2e9ced CI: Update main workflow to enable building with macOS 13 runners 2023-06-29 10:48:15 -04:00
PatTheMav 850976eba9 cmake: Add Windows component to CMake build framework 3.0 2023-06-29 10:11:32 -04:00
PatTheMav 0b325c0e34 cmake: Add separate function to set Xcode-based target properties 2023-06-17 12:23:33 -04:00
PatTheMav 9805b706d1 cmake: Remove legacy files for macOS builds 2023-06-17 12:23:33 -04:00
PatTheMav 50a4e83251 cmake: Remove Info.plist template files for macOS builds
Creation of Info.plist files through Xcode is more canonical and
future-proof, as it will automatically pick up changes/updates
introduced by Apple. Non-standard keys can still be added via a
template file, which will then be extended by Xcode with the default
keys.
2023-06-17 12:23:33 -04:00
PatTheMav eb3d9963a0 cmake: Update macOS compiler configuration
Compiler extensions are disabled before the first `project` call to
force CMake into considering compilers to not support GNU extensions
(even though clang and gcc do).

Also sets common clang compiler options so they can be used across all
supported platforms.

`openmp-simd` support is enabled by default as there is no performance
penalty on x86_64 systems and intrinsics are enabled on arm64.

Also implements CMake's `CMAKE_COMPILE_WARNING_AS_ERROR` flag to
enable the desired behavior and configuration time.
2023-06-17 12:23:33 -04:00
PatTheMav e2e3c9e102 cmake: Fix CMake policy scopes and add include guards
Include guards ensure that bootstrap includes happen only once for the
entire project. Moving all policy changes into an included file without
its own policy scope ensures that the policy is applied to the project.
2023-06-17 12:23:33 -04:00
PatTheMav 887b537d56 cmake: Update buildspec and presets for macOS 2023-06-17 12:23:33 -04:00
PatTheMav 4d5b6eb50f
cmake: Disable automatic sorting of compiler flags
Also restores original order of compiler flags and more explicitly
splits up flags for the specific languages in which they take effect.

Notice that ObjC and ObjC++ follow a slightly stricter set of rules
than C and C++, which is reflected by this fix.
2023-06-16 23:21:35 +02:00
PatTheMav e9972f5198
cmake: Fix truncation warning being treated as an error with Ninja 2023-06-16 20:48:49 +02:00
PatTheMav 29dc42decd cmake: Enable suggested default Xcode build settings for macOS builds
Also updates Ninja-based clang settings to ensure builds fail on same
compilation issues.
2023-06-16 14:12:58 -04:00
PatTheMav c7ec604df1 cmake: Disable Framework code signing at build time
Frameworks should be archived and exported (where they will be
codesigned by Xcode) or shipped within an App bundle where Xcode will
also take care of it.
2023-06-16 14:12:58 -04:00
gxalpha 6e7e4acb93 mac-syphon: Update Syphon, use obs-deps framework
Updates the syphon to use the Syphon.framework from obs-deps instead of
the submodule.
The submodule however was not updated in 9 years and additionally had
custom patches, compared to the obs-deps release that's built on the
current git commit of Syphon, meaning that some code changes are
necessary. It would be nice to split the code and cmake changes into
multiple commits (where the first would update the submodule and contain
the plugin code changes, and the second switch the cmake away from the
submodule to the obs-deps release), but it really doesn't make sense to
update the submodule first if it gets removed anyways.

Adds a subclass for SyphonClientBase that is responsible for receiving
the frames. This has the advantage that it doesn't need an OpenGL
context like the existing SyphonOpenGLClient, and can just return an
IOSurface directly (without some kind of middleman).
2023-06-15 13:08:41 -04:00
Sean DuBois 19a297f81a CI: Update deps to 2023-06-01 release
Notable changes:
 * deps.ffmpeg: Add libdatachannel
 * deps.macos: Add Syphon Framework

Library added to support WHIP (WebRTC) output.
2023-06-09 20:20:49 -05:00
Lain 106c7aa61f Update copyrights/names 2023-05-20 01:31:18 -07:00
PatTheMav 3c28d3a2bc cmake: Remove use of CPack and generate packaging AppleScript directly 2023-05-18 14:41:08 -04:00
PatTheMav 3f85e447a8 mac-virtualcam: Add Camera Extension to main CMake plugin project
Camera Extensions require specific entitlements for the hosting app,
which also require a provisioning profile. To avoid breaking local
builds that do not require the camera extension, an additional
entitlements file that will not trigger the provisioning profile
requirement will be used if the virtualcam (but not the Camera
Extension) is configured.
2023-05-18 14:41:08 -04:00
tytan652 6e887f8158 obs-ffmpeg,cmake: Replace external folder by obs-deps headers 2023-05-13 17:06:39 -07:00
tytan652 12ad59f31f cmake: Enforce -Wmaybe-uninitialized to never turn into an error 2023-05-05 16:46:59 -04:00
derrod 4a8e8644e0 cmake,UI: Remove unused legacy DSA public key 2023-04-29 16:10:45 -07:00
PatTheMav f1aba10dc0 cmake: Fix version detection for FFmpeg find module 2023-04-29 16:06:33 -07:00
derrod 90b8e3585e cmake: Set C11 for CMake < 3.21 2023-04-17 14:55:44 -04:00
PatTheMav 9f191b5101 cmake: Fix buildspec version parsing for dependencies
VERSION comparison requires semver-compliant version strings, but
obs-deps versions are based on dates, which are not compliant. Fix
version strings to semver variants before comparison.
2023-04-14 20:10:19 -04:00
PatTheMav df4c8d21ad cmake: Remove generated libobs export header from install interface 2023-04-12 17:17:00 +00:00
PatTheMav d6a5532394 cmake: Skip dependency setup for CEF when using universal architectures 2023-04-08 16:33:18 -07:00
PatTheMav e4ff8fab7a cmake: Fix discovery of existing pre-built dependencies
As there will be multiple directories containing obs-deps (non-Qt and
Qt variants), the search needs to continue after a first failed attempt
and not abort it entirely.
2023-04-08 16:33:18 -07:00
derrod 35d42f77d6 cmake: Set C standard to ISO C17
- Sets CMAKE_C_STANDARD to 17
- Disables C extensions (e.g. gnu17) to force ISO C on macOS/Windows
- Fixes language properties in cmake 3.0 not being set correctly
- Sets Xcode attributes to c17
2023-04-08 19:30:12 -04:00
PatTheMav 3bfaf6661b cmake: Fix parsing of OBS_VERSION_OVERRIDE cache variable 2023-04-07 21:11:37 +02:00
derrod 8a2305fd9a cmake: Fix parsing BETA version cache variable 2023-04-07 20:59:30 +02:00
PatTheMav a0000412fa cmake: Add changes required to use Xcode archiving 2023-03-29 10:31:57 -04:00
gxalpha 712a6c3b33 cmake: Ignore all Qt darwin permission plugins 2023-03-27 16:08:22 -04:00
PatTheMav 349372b3b3 cmake: 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.
2023-03-26 18:20:38 -04:00
PatTheMav bbeea0972a cmake: Add Xcode component to CMake build framework 3.0
Adds necessary macOS-specific implementation of the framework, focusing
on native Xcode builds.
2023-03-26 18:20:38 -04:00
PatTheMav ae6e9c875b cmake: Add OBS CMake build framework 3.0
OBS CMake build framework 3.0 is a minor overhaul of version 2.0. Due
to close proximity of the 2.0 rework, the amount of actual changes to
project files are minimal and mostly concern application generation.

This commit contains the bootstrap elements only and requires
OS-specific implementations to be functional.
2023-03-26 18:20:38 -04:00
tytan652 8c11b0caad cmake: Add finders for Asio and WebSocket++
WebSocket++ does provide a CMake package, but version check is broken.
2023-03-20 19:00:24 -04:00
derrod 11f88af880 cmake: Add libuuid finder 2023-03-12 01:11:38 +01:00
derrod f06b2ccf55 cmake: Set PDBALTPATH manually 2023-03-07 18:13:24 -05:00
derrod d2f0dfa341 cmake: Set /Brepro compiler/linker options 2023-03-07 18:13:24 -05:00
tytan652 f4e90a5bd7 obs-ffmpeg,cmake: Add a finder for AMF headers 2023-03-07 14:55:03 -05:00
derrod b7f6ae7d7b cmake: Enable stricter MSVC compiler options 2023-03-01 20:39:53 +01:00
Ryan Foster 2b84155da4 cmake: Remove FindRSSDK
Follow-up to PR #7371 (commit a1a98f9cfd).

We forgot to remove the Finder that was only used for that plugin. Let's
remove it now.
2023-03-01 18:16:34 +01:00
derrod 77e4c1c305 cmake: Check if Sparkle options are non-empty 2023-02-27 13:06:26 -05:00