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.
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.
- 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
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.
-Wformat-security is enabled, some Linux packages build system have it
enabled.
https://github.com/obsproject/obs-studio/pull/5766
-Wunused-parameter is enabled too.
Also ensure that null conversion (C++ only for GCC) is enabled because its
enablement by default can depend on the CMake generator.
-Wswitch is enabled but it is kept as a warning. It was already enabled
with Clang.
If Clang has -Wshorten-64-to-32 enabled, keep it as warnings.
The correct way to build debian package and also provide debug symbols
is to use additional `ddeb` packages served with the original `deb`
package.
This will implicitly still strip the binaries contained in the `deb`
package (per convention) but also create a `.ddeb` package with the
stripped symbols.
The environment variable DESTDIR is commonly used to specify an install-
time prefix for installation of build artifacts (e.g. for staging an
installation in a temporary directory while keeping the overall prefixes
intact).
This variable should be ignored by all targets but the install target,
which requires us to set it to an empty string/path when we use
`install` to set up our rundir.
Qt uses a default font size of 13pt for QWidgets on macOS. By setting
the default font size to 10pt, text becomes too small for comfortable
use on macOS.
This PR patches the font files copied into the macOS bundle to use a
larger font-size of 12pt. It also sets the fallback font to the more
modern SF Display-based `.AppleSystemUIFont` used by default in macOS
if Open Sans is not found.
For exported targets `INCLUDES DESTINATION` behaves in a specific way
when running `install`: It sets the `INTERFACE_INCLUDE_DIRECTORY` for
the target (relative to the `INSTALL_PREFIX` when a relative path is
given).
This is not implicitly done by CMake, which resulted in the exported
libobs Framework to miss the variable and as such targets linking to
libobs were not able to find the necessary headers anymore.
* If a valid team id is provided, automatic code sign management is
enabled
* Different deployment targets for x86_64 and arm64 are enabled for
Xcode-based builds
* Codesign identity and code-sign style are set globally
MacOS' system information checks the CFBundleSupportedPlatforms value
in the app's property list file for the type. This was correctly set
for plugin bundles, but not binary bundles so far.