Commit graph

354 commits

Author SHA1 Message Date
Patrick Heyer 13f2d7925f
Merge pull request #6190 from PatTheMav/cmake-pdb-branch
CMake: Fix PDB install directory for library installation
2022-03-22 17:10:27 +01:00
PatTheMav 15b6128d09
CMake: Fix PDB install directory for library installation
obs-plugintemplate uses the `obs_libraries` component to install
obs components required for plugin development. The need of the separate
`pdbs` directory was removed a while ago (as PDB target installation
can be flagged as `OPTIONAL` and enabled for specific configurations
only). This part was overlooked in that change.
2022-03-22 15:24:49 +01:00
PatTheMav 1a7f5fb48e cmake: Fix targets not being copied into rundir on Windows and Linux
Windows and Linux do not require a contained application bundle to run
and debug OBS - as such targets can and should be copied independently
from the main OBS application target.

Also silences the output of the `install` step that sets up those files.
2022-03-21 13:18:57 -04:00
PatTheMav 8fba906be4
CI: Add necessary build system changes for universal and M1 builds 2022-03-16 23:23:40 +01:00
PatTheMav c993b6059a
CI: Update build scripts and Github actions workflow
Also updates main CMakeLists.txt and CMakeLists.txt for unit tests,
also adds additional build directories to .gitignore file
2022-03-16 23:13:26 +01:00
PatTheMav b667fb3eff
cmake: Add bundle support files for macOS and Windows 2022-03-16 23:11:07 +01:00
PatTheMav df94b02075
cmake: Update CMake finders and helper modules 2022-03-16 23:11:06 +01:00
Matt Gajownik b154006c9b cmake: Add libRIST to copied Windows libs
Required for #5467 and https://github.com/obsproject/obs-deps/pull/86
2021-12-23 18:14:16 +11:00
Kurt Kartaltepe 0729007f19 libobs: Add Wayland hotkey infrastructure
Users on Wayland are displeased that they cannot see their hotkey
bindings. This enables key reporting like X11, and has the infrastructure
in place in case Wayland ever decides to allow for capturing input.
2021-12-16 10:54:29 -03:00
Carlo Castoldi 4623a6b4bc obs-ffmpeg: Set DRI devices and their name persistently
retrieving the DRI devices from /dev/dri/by-path/ instead of
/dev/dri/renderDXXX. This enable us to use lspci to get the device
name as well.
2021-12-12 11:12:36 +11:00
Paul Hindt ce3ae8e423
aja: Capture and Output plugin for AJA Video Systems IO devices
* aja: Initial commit of AJA capture/output plugin

* aja: Fix clang-format on aja-output-ui code

* aja: Remove script used during dev/testing

* aja: Address pull request feedback from @RytoEX

* aja: Remove the SDK sources and update CMakeLists to point to new headers-only/static libs dependency distribution.

* aja: Only build AJA plugin on x64 on macOS for now

* aja: Remove the non-English placeholder locale files. The english strings/files will be produced via crowdin, according to @ddrboxman.

* aja: Add FindLibAJANTV2.cmake script to locate the ajantv2 headers and static libs in the OBS external deps package(s). Tested on Windows x64. macOS and Linux x64 TBD.

* aja: Add ajantv2/includes to FindLibAJANTV2 include search paths

* aja: Remove commented code from aja CMakeLists

* aja: Remove debug code and comments that are no longer needed.

* aja: Fix indentation

* aja: Remove disablement of clang-format in routing table and SDIWireFormat map

* aja: Use spaces for all indentation in widget crosspoint arrays where we disable clang-format

* aja: Address code style comments made by @RytoEX

* aja: Fix uneven indentation

* aja: More fixes to if/else placement and remove superfluous comments.

* aja: Rename 'dwns' to 'deactivateWhileNotShowing' for clarity. The DeckLink plugin still uses the variable name 'dwns' and should be changed, if desired, in a separate PR.

* aja: Remove X11Extras dependency from AJA Output frontend plugin

* aja: Add patch from Jim to find AJA release/debug libs

* aja: Improve AV sync of queued video/audio sent to the AJA card in the AJA Output plugin.
2021-11-23 20:31:11 -06:00
Matt Gajownik a2c3896e1a UI: Match Windows taskbar state to tray icon
This adds a status icon for active/paused outputs.

Stripped down version of #2442
2021-11-03 09:28:41 -07:00
jp9000 442886c0aa obs-ffmpeg: Add AOM AV1 and SVT-AV1 encoders
Adds the ability to encode with software AV1 encoders within FFmpeg,
specifically AOM AV1 and SVT-AV1.
2021-10-25 12:24:16 -07:00
Kurt Kartaltepe 7384f6f061
linux-capture: Add libdrm dependency check (#5326)
We require libdrm for its header so add the cmake module and header path
to the build. We don't need to link libdrm though so we dont add it to
libraries.
2021-09-23 13:05:53 -05:00
derrod c44e225143 cmake: Add Qt JPEG/GIF plugins to Windows libraries 2021-09-15 07:49:43 +02:00
Ryan Foster a7eb44b337 cmake: Copy correct file for Qt imageformat plugin
During CMake configuration for 64-bit builds, CopyMSVCBins.cmake would
copy plugins/imageformats/qsvg.dll from the Qt directory to
additional_install_files/exec64r/imageformats/qsvg.dll (exec32r for
32-bit builds). However, it would copy plugins/iconengines/qsvgicond.dll
to the corresponding debug imageformats files location,
additional_install_files/exec64d/imageformats/qsvgicond.dll (or exec32d
for 32-bit). This appears to have been a simple copy-paste mistake.
Let's copy plugins/imageformats/qsvgd.dll instead.
2021-08-23 01:34:19 -04:00
Ryan Foster ea9c75bacb cmake: Remove local files for checking threading support
These local copies of CheckForPthreads.c and FindThreads.cmake override
the ones included with CMake. These versions create CMake::Threads, but
Qt6 expects Threads::Threads created by CMake 3.1+. These local versions
seem to be based on old copies from CMake from late 2014 with some
customizations. Let's just use the built-in ones that CMake ships.

This commit also changes CMakeLists.txt files in UI and libobs to
require and link to Threads::Threads.

Co-authored-by: Kurt Kartaltepe <kkartaltepe@gmail.com>
2021-08-17 02:46:09 -07:00
Ryan Foster ac59d51724 cmake: Fix Detours package name CMake warning
Since CMake 3.17, find_package_handle_standard_args (FPHSA) will emit a
warning if the package name in the caller and in FPHSA do not match.
This normalizes the name "Detours" in CMake calls to prevent this
warning.
2021-05-20 16:54:01 -07:00
jpark37 0c25581cd3 cmake: Add module for Detours 2021-05-17 02:28:11 -07:00
Neal Gompa ae60123f7f cmake: Fix FindJack to support finding PipeWire's libjack
FindJack was not using _INCLUDE_DIRS and _LIBRARY_DIRS set by
FindPkgConfig, which prevented it from locating the PipeWire
version of libjack when it is installed to a non-standard path.

In particular, this impacts Fedora Linux, which is the first
distribution to have made the change to have all audio routed
through PipeWire and eliminate the usage of PulseAudio and JACK
by default.

Reference: https://fedoraproject.org/wiki/Changes/DefaultPipeWire
2021-05-12 18:33:16 -07:00
Ryan Foster a7b20fcd2a cmake: Remove outdated osxbundle files
These files have been superseded by files in CI/scripts/macos. They are
no longer used, and keeping them around creates confusion and makes
people think they are still used. Let's remove them to prevent further
confusion.

This commit also removes the CMake function `obs_finish_bundle` that was
only used with the osxbundle resources and removes calls to that
function.
2021-05-08 18:57:14 -07:00
gxalpha 3efc3dbb0f CI,cmake: Fix macOS version information
Fixes an issue where on macOS the app’s Info window in Finder would say
"Version: OBS - Free and Open Source Streaming/Recording Software"
instead of the version set in CFBundleShortVersionString.

Since CFBundleGetInfoString is deprecated anyways, it can safely be
removed.
2021-04-18 17:30:31 -07:00
jp9000 63bcc54b32 cmake: Automatically copy datatarget PDBs
Helps ensure DLLs associated with game capture, virtual camera, and
other such files have their PDBs copied alongside them in any Windows
build, and allows the ability to trace crashes that may occur from
within those files more easily.
2021-04-11 16:47:32 -07:00
Kurt Kartaltepe 058f009746 cmake: Improve OBS_VERSION undefined failure
If someone tries to build without git they need to set
OBS_VERSION_OVERRIDE, this makes the error message occur before things
like string parsing on the OBS_VERSION which look like missing
parameters.
2021-03-30 04:56:18 -07:00
Georges Basile Stavracas Neto c2f8b2058b linux-capture: Add PipeWire-based capture
Add a new Linux capture based on PipeWire [1] and the Desktop portal [2].

This new capture starts by asking the Desktop portal for a screencapture session.
There are quite a few D-Bus calls involved in this, but the key points are:

 1. A connection to org.freedesktop.portal.ScreenCast is estabilished, and the
    available cursor modes are updated.

 2. CreateSession() is called. This is the first step of the negotiation.

 3. SelectSources() is called. This is when a system dialog pops up asking the
    user to either select a monitor (desktop capture) or a window (window capture).

 4. Start() is called. This signals the compositor that it can setup a PipeWire
    stream, and start sending buffers.

The reply to this fourth call gives OBS Studio the PipeWire fd, and the id of the
PipeWire node where the buffers are being sent to. This allows creating a consumer
PipeWire stream, and receive the buffers.

Metadata cursor is always preferred, but on the lack of it, we ask the stream for
an embedded cursor (i.e. the cursor is drawn at the buffer, and OBS Studio has no
control over it.)

Window capturing is implemented as a crop operation on the buffer. Compositors
can send big buffers, and a crop rectangle, and this is used to paint a subregion
of the buffer in the scene.

The new capture is only loaded when running on EGL, since it depends on EGL to
call gs_texture_create_from_dmabuf().

[1] https://pipewire.org/
[2] https://github.com/flatpak/xdg-desktop-portal/
2021-03-29 17:00:31 -03:00
Georges Basile Stavracas Neto afb7bfa941 build: Include gio-unix-2.0
This will be needed for fd-passing by the new capture, specifically for
g_dbus_proxy_call_with_unix_fd_list().
2021-03-29 17:00:31 -03:00
Ryan Foster 7ed1634530 cmake: Fix some Qt files not being logged in CMake output 2021-03-10 20:05:50 -08:00
Georges Basile Stavracas Neto ec1b07cc85 libobs/util: Replace libdbus by GDBus
GDBus is more and better maintained than libdbus these days. In the
future, a potential Wayland-compatible capture plugin will need to
interact with D-Bus in a way that's way too complicated for libdbus,
and it won't be nice to have both libraries talking to the D-Bus
socket.

Replace the libdbus usage by GDBus. As it turns out, it results in less
code.
2021-02-25 12:32:44 -08:00
Georges Basile Stavracas Neto 2b3cb54771 libobs: Add a Wayland platform
Introduce the OBS_NIX_PLATFORM_WAYLAND enum value, and try to detect
it when OBS Studio runs by looking into the platform name.
2021-02-09 09:39:04 -03:00
Georges Basile Stavracas Neto 7801b3301a deps-glad: Add EGL
The code is generated by https://glad.dav1d.de/
2021-02-01 19:03:14 -03:00
PatTheMav 20bb465047 CI: Fix macOS 10.13 crashes due to unsupported library symbols 2020-12-19 18:48:38 -08:00
jp9000 2902cdb2ff cmake: Make sure to copy other mbedtls libraries 2020-11-23 12:29:59 -08:00
jp9000 9f6e49d12c cmake: Add Qt5Network to copied windows libs 2020-11-22 14:32:35 -08:00
Vadim Zhukov 12719816fc
Add sndio support (#3715)
Add sndio support
2020-11-14 11:58:55 -08:00
Daniel Porter f96b6dfeed cmake: Fix finding libfdk header path
A generally accepted path for DepsPath or LibfdkPath is the parent
directory that includes the 'bin' and 'include' directories. This fix
ensures FindLibfdk.cmake acts like other cmake helper scripts.

Closes obsproject/obs-studio#3474
2020-10-02 09:26:00 -07:00
jp9000 dc3839ab74 cmake: Add function for installing data from abs path
Allows the ability to install extra data from a specific absolute path
rather than a path relative to the cmake current source dir.  Useful if
say I want to generate data files in to the cmake binary folder rather
than put them in the data folder of the cmake source dir.
2020-09-06 17:46:03 -07:00
Jérémy Farnaud 7e39109a86 obs-filters: Add option to use RNNoise for noise reduction
This commit adds support to using Xiph and Mozilla RNNoise library for
noise reduction.

RNNoise is a small library using an AI approach to noise reduction
using a pre-trained model like RTX Voice. But unlike RTX Voice, it is
very tiny, use CPU instead of GPU and only use little resources.
Obviously it is not as efficient but will effectively remove background
noise. It uses more CPU than the existing libspeex-based noise
reduction but it also sounds sounds way better.

RNNoise support is added to the noise reduction effect. It can be
enabled with a checkbox in the effect configuration. RNNoise has no
settings.
2020-08-18 11:25:21 -07:00
jp9000 ebb093b8a3 Revert "UI: Match Windows taskbar state to tray icon"
This reverts commit d442fda3fc.
2020-07-11 06:12:51 -07:00
PatTheMav d94709d945
CI: Update build script to use pre-built SWIG and QT dependencies 2020-07-10 01:01:32 +02:00
Kurt Kartaltepe d928bfd1ea cmake: Fix warnings and normalize variables/errors
As of 3.17 using find_package_handle_standard_args checks that the name
of the FindXXX file and the first argument are the same case.

Some modules used non-standard variables or the old singular variables
instead of plurals. This normalizes variable usage to the new-style.

Some CMakeLists.txt did custom error checking instead of propagating
find_package errors. These were changes to call find_package with
REQUIRED or without QUIET where needed and shortens the custom status
messages. This helps users who want to enable that functionality see
what precisely wasnt found.
2020-05-21 18:45:16 -07:00
Jim e822b47427
Merge pull request #2442 from WizardCM/windows-extras
Windows: Taskbar icon & colour
2020-05-21 17:45:34 -07:00
jp9000 8d6f29ffc7 Revert "Merge pull request #2637 from kkartaltepe/cmake-variety-fixes"
This reverts commit d777000a60, reversing
changes made to c9e5f30a78.
2020-05-21 00:03:09 -07:00
Jim d777000a60
Merge pull request #2637 from kkartaltepe/cmake-variety-fixes
cmake: Fix warnings and normalize variables/errors
2020-05-20 23:45:25 -07:00
Matt Gajownik d442fda3fc UI: Match Windows taskbar state to tray icon
This adds both a status icon, and changes the color
of the taskbar button itself.
2020-05-07 20:05:35 +10:00
Ka Ho Ng a5a8cc261c plugins: Add oss-audio plugin
This implements OSS audio input capturing support for OSS-capable OSes.
FreeBSD and DragonFly (not yet tested on) supports are added as a
starting point.
2020-05-02 17:38:27 +08:00
Colin Edwards 55e2985026
Merge pull request #1944 from WizardCM/windows-rc-definition
CMake: Build Windows modules with file descriptors
2020-04-18 18:27:22 -05:00
Kurt Kartaltepe c5b731e48f cmake: Fix warnings and normalize variables/errors
As of 3.17 using find_package_handle_standard_args checks that the name
of the FindXXX file and the first argument are the same case.

Some modules used non-standard variables or the old singular variables
instead of plurals. This normalizes variable usage to the new-style.

Some CMakeLists.txt did custom error checking instead of propagating
find_package errors. These were changes to call find_package with
REQUIRED or without QUIET where needed and shortens the custom status
messages. This helps users who want to enable that functionality see
what precisely wasnt found.
2020-04-03 21:32:10 -07:00
jp9000 e55a2b4331 cmake: Add FindVulkan module 2020-02-29 00:15:54 -08:00
jp9000 9646fd38b4 cmake: Copy a few missing dependency files 2020-02-24 14:51:38 -08:00
Jim 9bdb21205d
Merge pull request #2085 from ratwithacompiler/macos-python-fix
obs-scripting: Fix Python on MacOS
2019-11-14 20:38:53 -08:00
Matt Gajownik 51be039cf8 CMake: Build Windows modules with file descriptors 2019-10-15 21:34:12 +11:00
luz.paz d124e6402c docs/sphinx: Fix various typos
(This modifies UI, libobs, deps/obs-scripting, various cmake files)

Found using:
`codespell -q 3 -S *.ini,./UI/data/locale,./deps/w32-pthreads -L aci,dur,iff,mut,numer,uint`
2019-10-14 17:19:38 -07:00
Rat f6aed7cb72 obs-scripting: Fix script plugin destination path on MacOS
The actual plugin files get copied to obs-scripting/ without the
64bit subdir like everything else on MacOs, fix this path accordingly
otherwise the scripting home dir passed to Python is incorrect
2019-09-26 23:29:05 +02:00
Colin Edwards ef668b239d
Merge pull request #1678 from boxerab/libvlc_pkgconfig
cmake: Fix pkg-config handling of libvlc
2019-03-13 23:10:23 -05:00
derrod 9cc0d459bd cmake: Fix Qt DLL filenames for debug builds 2019-03-10 09:47:16 +01:00
Clayton Groeneveld 80875768ad UI: Redo settings icons 2019-03-05 19:54:12 -06:00
Aaron Boxer c150eabe35 cmake: Fix pkg-config handling of libvlc
Tested against VLC 3
2019-02-28 10:21:59 -05:00
jp9000 85d259e05c cmake: Make directory before copying file
Fixes the install_obs_data_file cmake helper function to be more
consistent across operating systems.
2018-09-07 03:41:36 -07:00
jp9000 1ea4da3f98 cmake: Add install_obs_data_file function
Allows copying an individual file (which may not be in the data dir) to
an specified install location.
2018-09-07 00:20:14 -07:00
bluekirby0 0d25ab6776 cmake: Add luajit 2.1 support to build 2018-08-18 10:38:21 -04:00
Michael Goulet e67e2e12e6 obs-outputs: Add support for and use mbedTLS for SSL
This diff adds mbedTLS support to the obs-outputs plugin.  PolarSSL and
mbedTLS have grown so different between 2015-or-so when libRTMP was
written, and now it's no longer feasible to just use the USE_POLARSSL
flag.

This commit adds a WITH_RTMPS tri-state CMake variable (auto/on/off),
set to "Auto" by default.  "Auto" will use RTMPS if mbedTLS is found,
otherwise will disable RTMPS.  "On" will make it require mbedTLS,
otherwise fails configuration, and "Off" disables RTMPS support
altogether.

Closes obsproject/obs-studio#1360
2018-08-05 18:40:49 -07:00
Colin Edwards 27b5c3be71 OSX: Add NSCamera and NSMicrophone UsageDescription for 10.14 2018-07-27 14:11:55 -05:00
Shaolin 3aaa12aa17 cmake: Add xcb-xinput support
Ubuntu 17.04 updated libxcb1-dev to 1.12 where xinput should be enabled
by default but debian disables it by default atm. Compile libxcb with
--enable-xinput to use this within obs. Arch enables it by default,
debian does not and fedora is untested.
2018-05-07 21:31:16 -03:00
jp9000 a81de7fb61 cmake: Include windows style DLL when copying Qt files 2018-03-18 17:01:01 -07:00
Kurt Kartaltepe 59c3d195e6
cmake: Remove extraneous checks
These don't appear to be necessary and prevent qt binaries from
being found on some systems.
2018-03-14 20:52:14 -05:00
Ben Krueger f374810403 cmake: Fix LuaJIT search 2018-01-30 21:13:10 -08:00
juvester 206c853d00 cmake: Search for Python 3.4
Fixes an issue where Python libraries aren't found on Ubuntu 14.04
because CMake 2.8 only searches up to Python 3.3.
2018-01-21 14:27:55 +02:00
Jim bf6231e122
Merge pull request #1147 from kkartaltepe/swig-cmake-fix
CMake: Fix FindSwigDeps search path
2018-01-16 05:52:16 -08:00
jp9000 db2d4c97e8 deps/obs-scripting: Fix installed files/locations on linux
Uses the 'install' command in cmake to install scripting modules/files
(such as _obspython.so, obslua.so, and obspython.py), and changes the
install location of those files on all operating systems.  If using a
non-unix structure install, those files will be installed in
data/obs-scripting/[32bit/64bit], otherwise with unix structure installs
those files will be installed to [/usr/local/lib]/obs-scripting.
2018-01-16 03:55:38 -08:00
Kurt Kartaltepe 32049bfd43 CMake: Fix FindSwigDeps search path 2018-01-11 21:37:10 -06:00
SuslikV aa2055ea81
cmake: add more LuaJIT lib names
Makes building on Windows easier.
2018-01-08 18:07:08 +02:00
jp9000 96f481294b cmake: Fix copying lua51.dll (luajit) dep on windows 2018-01-07 19:21:35 -08:00
jp9000 2651d076db deps/obs-scripting: Fix swig/python lookup on windows
Fixes swig/python dependencies to search for the pre-compiled deps on
windows.
2018-01-07 17:47:55 -08:00
jp9000 9e8a2e333b cmake: Add helper module for finding Lua
This is mostly for win32-specific files
2018-01-03 17:03:05 -08:00
jp9000 102075847a cmake: Add Lua/Luajit as part of MSVC dependencies 2018-01-03 17:03:05 -08:00
Joel Bethke d9b0c85daf cmake: Enable COPY_DEPENDENCIES by default on Windows
When setting up a build for the first time on windows, makes it so you
no longer have to run cmake twice:  once to build, then once again with
the COPY_DEPENDENCIES box to ensure dependencies are copied.

Closes jp9000/obs-studio#768
2017-01-23 22:21:38 -08:00
jp9000 b6bde7e026 cmake: Remove unnecessary find_package calls
Fixes a bug in cmake that would cause a libavcodec_dir being set to "not
found", confusing new contributors
2017-01-15 09:15:43 -08:00
Serge Paquet 64559a0cb8 cmake: Fix permissions with OSX fixup_bundle.sh
Fixes an issue where the files copied by fixup_bundle.sh will not work
with install_name_tool without proper permissions.

Closes jp9000/obs-studio#618
2016-11-24 07:15:03 -08:00
Serge Paquet ae9158216e cmake: Fix OSX fixup_bundle.sh to copy non-system deps
Without this fix, the fixup script misses any non-system dependencies
that are not in the /Users or /opt directories.

Closes jp9000/obs-studio#618
2016-11-24 07:13:34 -08:00
jp9000 5d332de45c cmake: Add macro to compile .tlb files via midl 2016-11-19 03:04:45 -08:00
jp9000 9f551d11b4 cmake: Add module to find RSSDK 2016-11-19 03:04:44 -08:00
Younes SERRAJ f029ec821e cmake: Fix FFmpeg search path on debian
Although FFmpeg is installed, OBS currently fails to build on debian
(tested on Debian Jessie 8.6).  It looks for libavcodec.a in
/usr/local/lib and not /usr/lib.

Closes jp9000/obs-studio#661
2016-10-16 01:01:34 -07:00
Jim 9cb8ae74e4 Merge pull request #635 from cortexmedia/msi-license
Display license in MSI installer
2016-10-09 17:09:25 -07:00
Colin Edwards f1a9c139b8 Add 256x256 icon to windows ico for HiDPI displays 2016-10-08 19:41:31 -05:00
Serge Paquet a97a9a966c Display license in MSI installer 2016-09-28 12:06:35 -04:00
jp9000 0d294cc049 cmake: Add module to find libspeexdsp 2016-07-25 20:17:13 -07:00
jp9000 670c655d41 cmake/external: Add function to install specific arch data file
Allows installing a single specific file to the data/[arch] directory.
2016-06-23 20:05:57 -07:00
jp9000 d3ece746f2 cmake/external: Fix a few external plugin script bugs
For install_external_plugin_bin_to_data and
install_external_plugin_bin_to_arch_data, they were using the
'plugin_target' variable instead of just 'target' for the plugin
directory output location, and they were using 'target' instead of
'additional_target' for the data/binaries they were supposed to be
installing.
2016-06-23 20:05:57 -07:00
jp9000 d89299fc1a vlc-video: Add VLC video source
Adds the ability to add video playlists via libvlc instead of via the
media source.  This is mostly just being added as a secondary option to
the media source to reduce maintenance costs and save time.  Currently
libff cannot pause/unpause/seek, and isn't programmed to handle
playlists yet.

If VLC is installed on the computer (with the same architecture) it will
allow video playback via libVLC.  In the future, users should be able to
optionally download VLC libraries via the installer as well if they
don't want to necessarily install VLC to get the plugin working.

This plugin performs runtime linking instead of compile-time linking;
compiling VLC is not required, only its headers are required.  To
compile, clone the VLC repository and set the VLCPath cmake variable to
point to the VLC repository directory.
2016-06-06 23:53:59 -07:00
jp9000 6014d4dc6d cmake: Also copy libvpx library for MSVC if available 2016-04-26 15:02:40 -07:00
yogpstop 4b4ddbb33e obs-outputs: Add USE_SSL option (disabled by default)
Closes jp9000/obs-studio#487
2016-02-07 15:47:18 -08:00
jp9000 b9d6c649f5 cmake: Copy ogg and vorbis libs with avcodec 2015-09-20 16:58:14 -07:00
jp9000 88ab25870e cmake: Add helper to find dbus package
The DBus library is a message bus system used to make applications
communicate with each other.  The primary reason for adding it is to
access certain service features to prevent computer sleep/hibernate/etc.

This will also create a HAVE_DBUS variable (set to 1 or 0 if found or
not found)
2015-09-12 19:15:32 -07:00
Palana 5dd030882d cmake: Add zlib support 2015-08-12 15:30:30 +02:00
jp9000 81649eab0d cmake: Add FFmpeg/x264 include header path suffix
This allows people to use the base directory of cross-compiled
dependencies (typically our dependencies.zip file), rather than always
having to specify the actual include directory.
2015-08-12 04:21:26 -07:00
jp9000 4ed1e2f03c cmake: Allow external plugins to share libobs deps
This addition allows external cmake modules to include the same modules
that are commonly distributed with the main obs-studio repo: things like
FFmpeg, curl, etc.
2015-07-18 16:41:03 -07:00
jp9000 c87d3b1f12 cmake: Rename FindFFMpeg to FindFFmpeg
This was sort of driving me crazy: The 'm' in FFmpeg isn't supposed to
be capitalized.
2015-07-18 16:32:26 -07:00
jp9000 fbf771620a cmake: Fix external plugin cmake module comments 2015-07-18 01:29:11 -07:00
jp9000 f9b9bfa9b6 cmake: Change search for "Libobs" instead of "obs" 2015-07-16 17:20:10 -07:00
jp9000 7226fc7b53 cmake: Rename FindObs.cmake to FindLibobs.cmake
Mostly done to prevent confusion between UI and libobs.
2015-07-16 17:11:52 -07:00
jp9000 6ab8d75da0 cmake: Add helper to include -isystem directories
This is mostly just a helper to prevent warnings with system includes in
XCode.
2015-07-16 16:05:08 -07:00
jp9000 bbe9a96228 cmake: Add FindObs helper for external plugin use
This is meant to be copied and used by external plugin projects for the
sake of finding and depending on OBS.
2015-07-16 15:45:34 -07:00
jp9000 6eb214b531 cmake: Add cmake module for external plugin use
This cmake module adds various cmake functions used for generating obs
plugins.  This currently may not fully support linux; this may require
more changes on linux due to the nature of the file structure linux
uses.
2015-07-16 15:45:34 -07:00
jp9000 8b5caeca10 cmake: Fix dependency cmake search paths
Fixes issues using DepsPath(32|64), was using ${lib_suffix} instead of
${_lib_suffix} so 32/64-sepcific directories wouldn't work properly.
Also the DepsPath environment/cmake variable wasn't specified for the
library search.

Also added the same dependency search paths for libfdk (if someone wants
to use it on windows for whatever reason)
2015-07-13 14:39:03 -07:00
jp9000 6f2587d21a UI: Allow cmake vars for deps and add DepsPath var
Allow cmake variables to be used to specify include directories, and
allow DepsPath or DepsPath32/64 to be used to specify dependency
locations.
2015-06-30 10:05:20 -07:00
jp9000 899557699f libobs: Add OBS_UNIX_STRUCTURE config variable
This obsconfig.h variable will be true or false depending on whether the
project is configured with the cmake UNIX_STRUCTURE variable or not.
2015-06-01 16:42:27 -07:00
jp9000 f227a46b98 cmake: Fix libcurl lookup on mac
On mac, pkg-config by default expects "libcurl" rather than "curl"
2015-05-25 16:03:23 -07:00
jp9000 39d1cda4e9 UI: Remove dependence on Qt5Network
Qt5Network has been replaced by libcurl.
2015-05-24 16:20:14 -07:00
jp9000 e3fe26d73d cmake: Add libcurl support 2015-05-24 16:20:12 -07:00
fryshorts bd2a29ec70 cmake: Add module to find libsysinfo on FreeBSD
Add cmake module to find the sysinfo compatibility library used on
FreeBSD to emulate that linux specific system call.
2015-05-04 22:37:17 +02:00
jp9000 2054161717 UI: Add windows exe icon
Adds an icon to the executable file so the executable no longer shows up
without an icon.
2015-04-10 07:27:37 -07:00
jp9000 ee31962b85 Add CMake module to parse IDL files on Windows 2015-03-21 16:34:46 -07:00
jp9000 1f57828e83 Update CopyMSVCBins.cmake to include more files
Now includes avdevice, avfilter, postproc, and freetype if compiled as a
DLL
2015-03-11 19:26:34 -07:00
Kevin Tardif c293c17620 Generate proper DL_OPENGL value for linux
Since we rely on the dynamic linker to find the library for us via
dlopen(), we need to have DL_OPENGL be .so.N, not the full library
filename, as ldconfig doesn't cache the full filename

Use of TARGET_SONAME_FILE requires the library to be marked as SHARED,
not MODULE

This closes pull request #370
2015-02-16 15:28:42 -05:00
Jimmy Berry 6158a7418e Allow OBS_VERSION_OVERRIDE to assist in packaging.
If OBS_VERSION_OVERRIDE is set, it will set the main OBS_VERSION
variable to its value.

(modified by Jim)
2015-02-09 08:32:01 -08:00
jp9000 2ba5782fff Add optional support for opus for FFmpeg 2015-02-07 04:50:36 -08:00
Bernd Buschinski e04dc57e8a Initial obs-studio jack support 2015-01-25 20:42:02 +01:00
Carl Fürstenberg 6095e7ef51 Add SOVERSION to libobs-opengl
Because libobs-opengl is a public library, it's customary to have SONAME
embedded in the library file.  Also remove the prefix override and
remove the prefixing "lib" from the output name.  This also requires us
to pass the library file name to dlopen invocations.
2015-01-13 17:51:38 -08:00
Jake Probst cc2d3b2d1c linux x11: get monitors: use xcb and add fallback if xinerama not found 2014-12-19 21:51:37 -08:00
Zachary Lund de6e997264 Move from libX11/GLX to XCB/libX11/GLX. 2014-12-19 19:23:08 -08:00
jp9000 1b454647bd Don't copy D3D compiler binary on windows (cmake)
Copying this binary is kind of unnecessary because it's something that
everyone has as long as they update DirectX, and isn't something we can
distribute because it's a Microsoft DLL.
2014-12-15 01:27:51 -08:00
fryshorts 43184d1775 Add cmake module for finding udev.
This adds a cmake module to find udev/libudev for linux.
2014-10-14 23:57:15 +02:00
BtbN 8841ea8a6f cmake: Export plugin data destination 2014-09-27 09:41:32 -07:00
BtbN f24f53ea27 cmake: Add helper function to install plain files 2014-09-27 09:41:32 -07:00
BtbN 73d3dbf947 cmake: Change obs helper macros to functions 2014-09-27 09:41:31 -07:00
BtbN 599febcb54 cmake: Replace FFMpeg modules with single module
Now using components instead of one find_package call per module
2014-09-27 09:41:13 -07:00
BtbN c9d3c6c8c1 cmake: Refactor growing list of library locations 2014-09-27 09:40:45 -07:00
BtbN 9dd341a3ed cmake: Properly check for Threading support 2014-09-26 22:52:30 -07:00
jp9000 5fb149a48c Add more search directories for cmake modules
I actually did this because it makes it a bit easier to use with a
build from cross-compiled windows FFMpeg/x264 DLLs.  When compiling on
linux I just have it compile to a custom prefix directory for the
specific windows arch, then I just copy the arch dir back to my windows
HD when complete.  Adding this to the cmake allows me to use the compile
arch directories directly without modification.
2014-09-23 04:56:32 -07:00
BtbN 978ff008fe Fix major misunderstanding of cached variables in all find modules 2014-09-15 14:42:18 -07:00
BtbN 34134bfbf6 Fix AppKit find module 2014-09-15 14:42:18 -07:00
BtbN 62d7bcf841 Fix Freetype cmake module 2014-09-15 14:42:11 -07:00
BtbN bffbe94377 Fix fontconfig cmake module 2014-09-15 14:42:01 -07:00
jp9000 12cdced337 Disable OSX app nap
This will hopefully help deal with a particular issue where the program
may go to sleep if it hasn't received input from the user for long
periods, or if a game is running in fullscreen mode apparently.
2014-08-24 08:10:51 -07:00
fryshorts 774731fbaf Use fontconfig for linux/mac
This uses fontconfig for looking up font files for freetype to use on
both linux and mac.  It's apparently a bit more optimal and prevents us
from having to worry about the load time on the mac version as well.

Refactored and moved all the old code to the find-font-windows.c file,
as it's no longer used on anything but windows.
2014-08-23 18:25:00 -07:00
BtbN 5101ca84f6 Fix HINTS/PATHS in Findv4l2 module 2014-08-21 17:37:16 +02:00
BtbN 2bf8a7dce9 Include FindPackageHandleStandardArgs.cmake in every find module using it
It just worked so far because FindCXX11 happend to include it
already, and it also happend to be the first FindModule used.
2014-08-21 16:38:49 +02:00
BtbN 5ec0d2ded4 Fix FindFreetype naming and find logic
Freetype is quite complicated, copied most of the logic from the
original FindFreetype module.
2014-08-21 16:36:21 +02:00
BtbN 997b4f9161 Fix FindIconv naming consistency 2014-08-21 15:28:44 +02:00
jp9000 b54ab482b5 Fix freetype cmake module
On fedora, the freetype cmake module would not find the correct
location.  This is because it wasn't using the pkg-cofig include
directory, which is different from the main ft2build.h header directory
(which is /usr/include).

This modification may be a good thing to do on all the cmake packages,
actually.  Currently, they all just search for the location of a
specific header, and ignore the pkg-config includes if they find it in
specific hint locations.
2014-08-20 15:17:12 -07:00
BtbN 02725acdd4 Fix double invocation of install_obs_plugin in every single plugin 2014-08-19 14:24:59 +02:00
jp9000 7f0ae838d7 Add system font lookup for mac/windows
This changes the font plugin from using a font file to using a specific
installed system font, which is searched for on each specific system and
associated with the font file.  It now uses a font property instead of a
path property, and font size has been removed because the font property
now handles that.

When the module is first loaded, it will build up a list of system fonts
in order to be usable by Freetype.  It was quite painful to program this
because font files can contain multiple localized versions of their face
names, and then there was the issue where windows likes to mangle
custom style types to the font name.  Regardless, it all seems to have
worked out pretty well.

Minor issues:
- Truetype/Opentype fonts sometimes do not automatically have
  italic and/or bold styles available, it seems that the system applies
  transformations manually in those cases.  We don't do this yet,
  however, so right now a user might select a font with italic/bold
  only to discover that italic/bold doesn't always work.  Not entirely
  sure what to do about this yet.  There's probably a freetype function
  to do something like that somehow,

This also requires that iconv be used for non-windows systems to be able
to look up localized font names within font files.  Windows will use
the win32 API and code page IDs to translate font names.
2014-08-19 02:11:37 -07:00
paibox e1611b431c Merge Freetype text plugin 2014-08-18 00:14:02 -07:00
Jim 254b50f31f Merge pull request #217 from BtbN/cmake_changes
CMake changes for new real ffmpeg in debian experimental
2014-07-29 11:40:49 -07:00
Jim eecc9ab937 Merge pull request #202 from fryshorts/v4l2-input
Add libv4l2 as dependency for the v4l2 plugin
2014-07-29 11:39:43 -07:00
BtbN 60ef547285 Improve/fix cmake find modules 2014-07-29 01:46:30 +02:00
BtbN 28ded1f6b6 Update ffmpeg find modules for recent changes to debian 2014-07-29 01:38:55 +02:00
fryshorts d6f65be966 Add libv4l2 as requirement for the v4l2 plugin.
In order to convert formats not natively supported by obs the
v4l2 userspace library is required. This patch adds a cmake
script to find the library.
2014-07-26 19:29:08 +02:00
BtbN 8380d10805 Export plugin destination and relative prefix to obsconfig.h 2014-07-26 14:27:39 +02:00
BtbN 3442654259 Remove lib prefix from plugins 2014-07-26 14:09:34 +02:00
BtbN 0b7ef499c5 Add relative plugin dest obsconfig.h define 2014-07-26 14:07:14 +02:00
BtbN cac6ad1822 Move config values from the commandline to obsconfig.h 2014-07-26 14:07:14 +02:00
jp9000 7303009ff2 Set minimum version on mac to 10.8.5 2014-07-23 17:52:41 -07:00
jp9000 f2d2b58ae2 Add support for 32/64bit environment variables
This can make it a bit easier to set up 32bit/64bit environments
separately on windows.  This simply allows you to additionally set
FFmpegPath32, FFmpegPath64, x264Path32, x264Path64, etc.
2014-07-18 22:41:23 -07:00
jp9000 85701b0925 Allow copying of all dependencies (windows only)
If the cmake user variable COPY_DEPENDENCIES is set, this script will
make it so that a windows build will automatically copy all required
dependencies (FFmpeg, x264, and Qt5) to the respective
additional_install_files\exec(32|64) directory.  This makes it much
easier to set up a development environment on windows, and much easier
to make usable test builds.

It will also copy the appropriate Direct3D compiler DLL, along with
dependencies of dependencies (the icu*.dll and EGL/GLES files for Qt)
2014-07-18 22:41:22 -07:00
jp9000 5c597102f2 Improve additional_install_files for debug/release
This improves dependency copying and adds separated debug/release
install files.
2014-07-18 22:41:11 -07:00
jp9000 fbf4d18399 Remove obsolete FindDirectX.cmake script
There's no need to find DirectX because with VS2013 and mingw it's
already available by default.  Older visual studio versions that didn't
come with DirectX by default are no longer supported anyway.

(Also mingw doesn't currently work at all due to lack of proper headers,
but once they do it'll be available in the same way.  I think.)
2014-07-19 01:38:43 +02:00
BtbN 415a698bac Add support for build time dependency copying 2014-07-19 01:38:42 +02:00
BtbN 4b5b7534aa Copy and install PDB files on msvc builds 2014-07-19 01:38:41 +02:00
jp9000 fa70b40587 Rename cpack description summary (also fix typo) 2014-07-15 17:00:03 -07:00
jp9000 a32139709f Fix cmake app package issue
Currently the Info.plist file names the app package as OBS.app and cmake
is trying to use 'OBS Studio.app'.  I renamed it to OBS for the time
being just because we don't currently have actual studio interface yet.
2014-07-15 16:38:25 -07:00
jp9000 9cc1b43820 Change mac package name to just 'OBS' 2014-07-14 11:46:57 -07:00
BtbN 5c89e2c548 Also use lightweight tags for git describe 2014-07-13 21:59:03 +02:00
BtbN 6d8146f6f0 Honor QUIET argument in FindJansson 2014-06-18 06:24:21 +02:00
BtbN 602b048089 Unset cached variables on failure in Jansson find module 2014-05-25 16:37:49 +02:00
BtbN 2cc24dccab Add support for external jansson 2014-05-24 15:47:03 +02:00
BtbN 5f96d478c5 Fix fdk-aac library search names 2014-05-23 05:12:55 +02:00
BtbN 9daaacd76a Add Libfdk find module 2014-05-22 13:03:47 +02:00
BtbN e2c2e50f4c Fix ffmpeg/x264 find modules according to cmake find module naming conventions 2014-05-22 13:03:47 +02:00
BtbN 6a63e4fecc Fix cpack problem 2014-05-08 14:43:16 +02:00
BtbN 34923f1f83 Also export a plugin destination, so external plugins know where to install stuff 2014-05-08 14:43:16 +02:00
BtbN 7abf95be27 Use relative path in installed cmake file 2014-05-08 14:43:16 +02:00
BtbN 4959db83d4 Fix absolute path detection 2014-05-08 14:43:16 +02:00
BtbN 38594fff9e Export libobs cmake target, so external plugins can be built without ugly hacks 2014-05-08 14:43:16 +02:00
BtbN 075820028f Improve bundle fixup 2014-04-13 11:05:46 -07:00
BtbN 044680f0b8 Add config.h generation and wrapper header, currently only for OBS_VERSION 2014-04-01 22:11:44 +02:00
BtbN 221a69298b Add a new install function to install targets into the datadir structure
This is mainly intended to be used for preloaded/injected DLLs, which
don't belong into the libdir or plugindir.
2014-04-01 21:33:07 +02:00
jp9000 590a486343 Updated cmake files for ffmpeg plugin
Also, fixed an enum name issue.  No clue why visual
studio actually compiled that without warnings/errors
2014-02-10 07:14:51 -08:00
BtbN e9c22c3b8d Move CPack win32 generator from NSIS to WIX 2014-02-02 22:38:21 +01:00
BtbN a79124e413 Add guessed paths for Win8 and Win81 SDK to DirectX search paths 2014-01-29 14:56:40 +01:00
BtbN 8c80941530 Add support for "git describe" based version numbers.
Also, move cpack related code into its own module, to clean up the main CMakeLists.txt
2014-01-29 14:56:06 +01:00
Jim 6c2242dea8 Merge pull request #33 from andy-kliman/master
I rebuilt obs.icns. Now it corresponds to Table 5-1:
2014-01-28 14:34:25 -08:00
BtbN b4d31f4e56 Change library search order to match include search order 2014-01-28 23:07:49 +01:00
BtbN 074f9627b7 Fixup OSX Rpath for imported external libraries on install 2014-01-28 23:07:49 +01:00
Anry 842b8c8591 obs.icns now corresponds to Table 5-1:
icon_512x512@2x	-	1024 x 1024
icon_512x512	-	512 x 512
icon_256x256@2x	-	512 x 512
icon_256x256	-	256 x 256
icon_128x128@2x	-	256 x 256
icon_128x128	-	128 x 128
icon_32x32@2x	-	64 x 64
icon_32x32	-	32 x 32
icon_16x16@2x	-	32 x 32
icon_16x16	-	16 x 16
2014-01-26 18:28:28 +04:00
BtbN cfc3609a4e Fix/Workaround a cmake path seperator escaping bug on Windows 2014-01-26 02:04:36 +01:00
Palana c1599a069a Remove unnecessary distinction between 32bit and 64bit on osx 2014-01-25 20:39:09 +01:00
Palana 8cd49b705f Update osx bundle info
OBS should not run as agent app
2014-01-25 20:37:53 +01:00
jp9000 93d15ef254 Fix some formatting issues and fix cmake file 2014-01-25 12:34:37 -07:00
Jim 584e47e467 Merge pull request #30 from andy-kliman/master
add new icon for os x bundle
2014-01-25 10:49:23 -08:00
BtbN 6a9dda87bd Restructure installation and package generation 2014-01-25 19:13:33 +01:00
Anry 99bf4bca85 added retina icon 2014-01-25 17:59:25 +04:00
Palana f2d0c98ffe Fix copy&paste error in AppKit cmake module
Only consider AppKit_LIBRARIES
2014-01-24 23:58:21 +01:00
Palana b9330d48f2 Update osx bundle files
The bundle icon now includes all recommended image resolutions and OBS
is now started as high resoltion application for high dpi displays,
still need to add high resolution images for icons used inside OBS
2014-01-24 23:22:34 +01:00
Palana b6c5a26f97 Add explicit AppKit dependency for obs/platform-osx 2014-01-24 23:22:34 +01:00
BtbN 45ec80fb7d Full rewrite of all CMakeLists
CMake now works on all platforms
2014-01-24 18:56:32 +01:00
BtbN 8fa309c96e Clean old cmake files 2014-01-24 01:46:36 +01:00
Palana 5ee0f0edd7 fix typo in obs_helper.cmake 2014-01-09 03:53:34 +01:00
Palana 351c4bfe1d add cmake plugin helpers 2014-01-09 02:37:43 +01:00
Palana 683585938c add infrastructure for app bundle target and unmark as advanced 2013-12-30 20:52:44 +01:00