README edits

This commit is contained in:
fduncanh
2021-12-26 03:28:17 -05:00
parent 2d27c01a54
commit 78ae621b59
3 changed files with 124 additions and 96 deletions

View File

@@ -22,10 +22,11 @@
<p>*Current UxPlay is also a pull request on the original site https://github.com/antimof/UxPlay ; that original project is inactive, but the pull requests are now being periodically merged with the antimof tree (thank you antimof!).</p>
<h2 id="building-uxplay-on-linux-or-bsd">Building UxPlay on Linux (or *BSD):</h2>
<p>(Instructions for Debian/Ubuntu; adapt these for other Linuxes; for macOS, see below).</p>
<p>You need a C/C++ compiler (e.g. g++) with the standard development libraries installed.</p>
<p>Make sure that cmake&gt;=3.4.1 and pkg-config are also installed: “sudo apt-get install cmake pkg-config”. In a terminal window, change directories to the source directory of the downloaded source code (“UxPlay-master” for zipfile downloads, “UxPlay” for “git clone” downloads), then do</p>
<p>Make sure that your distribution provides OpenSSL 1.1.1 or later, and libplist 2.0 or later. (This means Debian 10 “Buster”, Ubuntu 18.04 or later.) If it doesnt, you may need to build and install these from source (see below).</p>
<p>You need a C/C++ compiler (e.g. g++) with the standard development libraries installed. Make sure that cmake&gt;=3.4.1 and pkg-config are also installed: “sudo apt-get install cmake pkg-config”. In a terminal window, change directories to the source directory of the downloaded source code (“UxPlay-master” for zipfile downloads, “UxPlay” for “git clone” downloads), then do</p>
<ol type="1">
<li><code>sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad</code></li>
<li><code>sudo apt-get install libssl-dev libplist-dev</code> (unless you need to build OpenSSL and libplist from source).</li>
<li><code>sudo apt-get install libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad</code></li>
<li><code>sudo apt-get install gstreamer1.0-vaapi</code> (For hardware-accelerated Intel graphics, but not NVIDIA)</li>
<li><code>sudo apt-get install libx11-dev</code> (for the “ZOOMFIX” X11_display name fix for screen-sharing with e.g., ZOOM)</li>
<li><code>cmake .</code> (or “<code>cmake -DZOOMFIX=ON .</code>” to get a screen-sharing fix to make X11 mirror display windows visible to screen-sharing applications such as Zoom, see below).</li>
@@ -35,21 +36,21 @@
<p><em>If you intend to modify the code, use a separate “build” directory: replace</em><code>cmake [ ] .</code><em>by</em><code>mkdir build ; cd build ; cmake [ ] ..</code>”; <em>you can then clean the build directory with</em><code>rm -rf build/*</code><em>(run from within the UxPlay source directory) without affecting the source directories which contain your modifications</em>.</p>
<p>The above script installs the executable file “<code>uxplay</code>” to <code>/usr/local/bin</code>, (and installs a manpage to somewhere like <code>/usr/local/share/man/man1</code> and README files to somewhere like <code>/usr/local/share/doc/uxplay</code>). It can also be found in the build directory after the build processs.</p>
<p><strong>Finally, run uxplay in a terminal window</strong>. If it is not seen by the iOS clients drop-down “Screen Mirroring” panel, check that your DNS-SD server (usually avahi-daemon) is running: do this in a terminal window with <code>systemctl status avahi-daemon</code>. (If this shows the avahi-daemon is not running, control it with <code>sudo systemctl [start,stop,enable,disable] avahi-daemon</code> (or avahi-daemon.service). If UxPlay is seen, but the client fails to connect when it is selected, there may be a firewall on the server that prevents UxPlay from receiving client connection requests unless some network ports are opened. See <strong>Troubleshooting</strong> below for help with this or other problems.</p>
<p><strong>Note libplist-dev (version 2.0 or greater) is a new dependency (originally, libplist was bundled with UxPlay-1.2). Older Linux distributions may only supply libplist 1.x, which is too old. [Installing libplist-dev (with libplist3) from ubuntu 18.04 solves this problem on ubuntu 16.04.]</strong> If you cannot find a libplist-2.x package that installs on your distribution, you can get it at <a href="https://github.com/libimobiledevice/libplist">https://github.com/libimobiledevice/libplist</a> and build it from source. _(You will need build tools autoconf, automake, libtool, and may need to also install some libpython*-dev package). By default, libplist installs in /usr/local/lib. If this is not in the library path (as in ubuntu), create a file /etc/ld.so.conf.d/libplist.conf containing the text “/usr/local/lib”, and run “sudo ldconfig” to permanently add /usr/local/lib to the library path._</p>
<h3 id="modified-build-instructions-for-non-debian-based-distributions">Modified build instructions for Non-Debian-based distributions:</h3>
<p><strong>Red Hat, Fedora, CentOS (now continued as Rocky Linux or Alma Linux):</strong> (sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some from the “PowerTools” add-on repository) (+libX11-devel for ZOOMFIX). The required GStreamer packages (some from <a href="https://rpmfusion.org">rpmfusion.org</a>) are: gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-plugins-bad-free ( + gstreamer1-vaapi for intel graphics).</p>
<p><strong>OpenSUSE:</strong> (sudo zypper install) libopenssl-devel libplist-devel avahi-compat-mDNSResponder-devel (+ libX11-devel for ZOOMFIX). The required GStreamer packages (you may need to use versions from <a href="https://ftp.gwdg.de/pub/linux/misc/packman/suse/">Packman</a>) are: gstreamer-devel gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi for Intel graphics).</p>
<p><strong>FreeBSD:</strong> (sudo pkg install) libplist gstreamer1, gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core, good, bad, x, gtk, gl, vulkan, pulse …), (+ gstreamer1-vaapi for Intel graphics). Either avahi-libdns or mDNSResponder must also be installed to provide the dns_sd library. OpenSSL is already installed as a System Library. “ZOOMFIX” is untested; dont try to use it on FreeBSD unless you need it.</p>
<h3 id="building-openssl-1.1.1-from-source.">Building OpenSSL &gt;= 1.1.1 from source.</h3>
<p>If you need to do this, note that you may be able to use a newer version (OpenSSL-3.0.1 is known to work). You will need the standard development toolset (autoconf, automake, libtool, etc.). Download and compile the source code from <a href="https://www.openssl.org/source/">https://www.openssl.org/source/</a>, Install the downloaded openssl by opening a terminal in your Downloads directory, and unpacking the source distribution: (“tar -xvzf openssl-3.0.1.tar.gz ; cd openssl-3.0.1”). Then build/install with “./config ; make ; sudo make install_dev”. This will typically install the needed library <code>libcrypto.*</code>, either in /usr/local/lib or /usr/local/lib64. <em>(Ignore the following for builds on MacOS:)</em> Assuming the library was placed in /usr/local/lib64, you must “export OPENSSL_ROOT_DIR=/usr/local/lib64” before running cmake. On some systems like Debian or Ubuntu, you may also need to add a missing entry <code>/usr/local/lib64</code> in /etc/ld.so.conf (or place a file containing “/usr/local/lib64/libcrypto.so” in /etc/ld.so.conf.d) before running “sudo ldconfig”.</p>
<h3 id="bulding-libplist-2.0.0-from-source.">Bulding libplist &gt;= 2.0.0 from source.</h3>
<p><em>Note: on Debian 9 “Stretch” or Ubuntu 16.04 LTS editions, you can avoid this step by installing libplist-dev and libplist3 from Debian 10 or Ubuntu 18.04.</em> (As well as the usual build tools, you may need to also install some libpython*-dev package). Download the latest source from <a href="https://github.com/libimobiledevice/libplist">https://github.com/libimobiledevice/libplist</a>: get <a href="https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip">libplist-master.zip</a>, then (“unzip libplist-master.zip ; cd libplist-master”), build/install (“./autogen.sh ; make ; sudo make install”). This will probably install libplist-2.0.* in /usr/local/lib. <em>(Ignore the following for builds on MacOS:)</em> On some systems like Debian or Ubuntu, you may also need to add a missing entry <code>/usr/local/lib</code> in /etc/ld.so.conf (or place a file containing “/usr/local/lib64/libplist-2.0.so” in /etc/ld.so.conf.d) before running “sudo ldconfig”.</p>
<h2 id="building-uxplay-on-macos-only-tested-on-intel-x86_64-macs">Building UxPlay on macOS: <strong>(Only tested on Intel X86_64 Macs)</strong></h2>
<p><em>Note: A native AirPlay Server feature is included in macOS 12 Monterey, but is restricted to recent hardware. UxPlay can run on older macOS systems that will not be able to run Monterey, or can run Monterey but not AirPlay.</em></p>
<p>These instructions for macOS asssume that the Xcode command-line developer tools are installed (if Xcode is installed, open the Terminal, type “sudo xcode-select install” and accept the conditions).</p>
<p>It is also assumed that CMake &gt;= 3.13 is installed: this can be done with package managers <a href="http://www.macports.org">MacPorts</a>, <a href="http://finkproject.org">Fink</a> or <a href="http://brew.sh">Homebrew</a>, or by a download from <a href="https://cmake.org/download/">https://cmake.org/download/</a>.</p>
<p>First get the latest macOS release of GStreamer-1.0 from <a href="https://gstreamer.freedesktop.org/download/">https://gstreamer.freedesktop.org/download/</a>. Install both the macOS runtime and development installer packages. Assuming that the latest release is 1.18.5 they are <code>gstreamer-1.0-1.18.5-x86_64.pkg</code> and <code>gstreamer-1.0-devel-1.18.5-x86_64.pkg</code>. Click on them to install (they install to /Library/FrameWorks/GStreamer.framework). It is recommended you use GStreamer.framework rather than install Gstreamer with Homebrew or MacPorts (see later).</p>
<p>Next install OpenSSL and libplist: these can be built from source (see below) but it is easier to get them using MacPorts “sudo port install openssl libplist-devel” or Homebrew “brew install openssl libplist”. Only the static forms of the two libraries will used for the macOS build, so they do not need to remain installed after you have built uxplay: if you dont have MacPorts or Homebrew installed, you can just install one of these package-managers before building uxplay, and uninstall it afterwards if you do not want to keep it. Unfortunately, Finks openssl11-dev package currently doesnt supply the static (libcrypto.a) form of the needed OpenSLL library libcrypto, and its libplist1 package is too old.</p>
<p>Next install OpenSSL and libplist: these can be built from source (see above); only the static forms of the two libraries will used for the macOS build, so you can uninstall them (“sudo make uninstall”) after you have built UxPlay. It may be easier to get them using MacPorts “sudo port install openssl libplist-devel” or Homebrew “brew install openssl libplist”. if you dont have MacPorts or Homebrew installed, you can just install one of these package-managers before building uxplay, and uninstall it afterwards if you do not want to keep it. Unfortunately, Finks openssl11-dev package currently doesnt supply the static (libcrypto.a) form of the needed OpenSLL library libcrypto, and its libplist1 package is too old.</p>
<p>Finally, build and install uxplay (without ZOOMFIX): open a terminal and change into the UxPlay source directory (“UxPlay-master” for zipfile downloads, “UxPlay” for “git clone” downloads) and build/install with “cmake . ; make ; sudo make install” (same as for Linux).</p>
<p>On the macOS build, autovideosink uses OpenGL, not X11, to create the mirror display window (equivalent to “-vs glimagesink”; “-vs osxvideosink” can also be used). The window title does not show the Airplay server name, but it is visible to screen-sharing apps (e.g., Zoom). On macOS, The option -t <em>timeout</em> cannot be used because if the GStreamer pipeline is destroyed while the mirror window is still open, a segfault occurs (this is an issue with the GStreamer plugins, not UxPlay). Also, the resolution settings “-s wxh” do not affect the (small) initial OpenGL mirror window size, but the window can be expanded using the mouse or trackpad. In contrast, a window created with “-vs osxvideosink” is initially big, but has the wrong aspect ratio (stretched image); in this case the aspect ratio changes when the window width is changed by dragging its side.</p>
<p><strong><em>Building OpenSSL and libplist from source on macOS</em></strong></p>
<p>If you have have the standard GNU toolset (autoconf, automake, libtool, etc.) installed, you can also download and compile the source code for these libraries from <a href="https://www.openssl.org/source/">https://www.openssl.org/source/</a>, <a href="https://github.com/libimobiledevice/libplist">https://github.com/libimobiledevice/libplist</a>. Install the downloaded openssl by opening a terminal in your Downloads directory, and unpacking the source distribution openssl-3.0.0.tar.gz , (“tar -xvzf openssl-3.0.0.tar.gz ; cd openssl-3.0.0”). Then build/install with “./config ; make ; sudo make install_dev” and clean up after building uxplay with “sudo make uninstall” in the same directory. Similarly, for libplist, download the source as a zipfile from github as <a href="https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip">libplist-master.zip</a>, then unpack (“unzip libplist-master.zip ; cd libplist-master”), build/install (“./autogen.sh ; make ; sudo make install”) and clean up after uxplay is built with “sudo make uninstall” in the same directory.</p>
<p><strong><em>Other ways (Homebrew, MacPorts) to install GStreamer on macOS (not recommended):</em></strong></p>
<p>First make sure that pkgconfig is installed (Homebrew: “brew install pkgconfig” ; MacPorts: “sudo port install pkgconfig” ).</p>
<ol type="a">

View File

@@ -85,20 +85,25 @@ now being periodically merged with the antimof tree (thank you antimof!).
(Instructions for Debian/Ubuntu; adapt these for other Linuxes; for macOS, see below).
You need a C/C++ compiler (e.g. g++) with the standard development libraries installed.
Make sure that your distribution provides OpenSSL 1.1.1 or later, and libplist 2.0 or later.
(This means Debian 10 "Buster", Ubuntu 18.04 or later.) If it doesnt, you may
need to build and install these from source (see below).
You need a C/C++ compiler (e.g. g++) with the standard development libraries installed.
Make sure that cmake>=3.4.1 and pkg-config are also installed: "sudo apt-get install cmake pkg-config".
In a terminal window, change directories to the source directory of the
downloaded source code ("UxPlay-master" for zipfile downloads, "UxPlay" for "git clone" downloads), then do
1. `sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad`
2. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated Intel graphics, but not NVIDIA)
3. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11_display name fix for screen-sharing with e.g., ZOOM)
4. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix to
1. `sudo apt-get install libssl-dev libplist-dev` (unless you need to build OpenSSL and libplist from source).
2. `sudo apt-get install libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad`
3. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated Intel graphics, but not NVIDIA)
4. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11_display name fix for screen-sharing with e.g., ZOOM)
5. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix to
make X11 mirror display windows visible to screen-sharing applications such as
Zoom, see below).
5. `make`
6. `sudo make install` (you can afterwards uninstall with `sudo make uninstall` in the same directory in which this was run)
6. `make`
7. `sudo make install` (you can afterwards uninstall with `sudo make uninstall` in the same directory in which this was run)
_If you intend to modify the code, use a separate "build" directory: replace_ "```cmake [ ] . ```" _by_ "```mkdir build ; cd build ; cmake [ ] ..```"; _you can then clean
the build directory with_ "```rm -rf build/* ```" _(run from within the UxPlay source directory) without affecting the source directories which contain your modifications_.
@@ -115,17 +120,6 @@ If UxPlay is seen, but the client fails to connect when it is selected, there m
UxPlay from receiving client connection requests unless some network ports are opened. See **Troubleshooting** below for
help with this or other problems.
**Note libplist-dev (version 2.0 or greater) is a new dependency (originally, libplist was bundled with UxPlay-1.2). Older Linux
distributions may only supply libplist 1.x, which is too old. [Installing libplist-dev (with libplist3) from ubuntu 18.04 solves this problem on ubuntu 16.04.]**
If you cannot find a libplist-2.x package that installs on your distribution, you can get it at
[https://github.com/libimobiledevice/libplist](https://github.com/libimobiledevice/libplist) and build it from source.
_(You will need build tools autoconf, automake, libtool, and may need to also install some libpython*-dev package).
By default, libplist installs in /usr/local/lib. If this is not in the library path (as in ubuntu), create a
file /etc/ld.so.conf.d/libplist.conf containing the text "/usr/local/lib", and run "sudo ldconfig" to permanently add /usr/local/lib to the library path._
### Modified build instructions for Non-Debian-based distributions:
**Red Hat, Fedora, CentOS (now continued as Rocky Linux or Alma Linux):**
(sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some from the "PowerTools" add-on repository)
(+libX11-devel for ZOOMFIX). The required GStreamer packages (some from [rpmfusion.org](https://rpmfusion.org)) are:
@@ -142,6 +136,40 @@ gstreamer-devel gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-p
Either avahi-libdns or mDNSResponder must also be installed to provide the dns_sd library.
OpenSSL is already installed as a System Library. "ZOOMFIX" is untested; don't try to use it on FreeBSD unless you need it.
### Building OpenSSL >= 1.1.1 from source.
If you need to do this, note that you may be able to use a newer version (OpenSSL-3.0.1 is known to work).
You will need the standard development toolset (autoconf, automake, libtool, etc.).
Download and compile the source code from
[https://www.openssl.org/source/](https://www.openssl.org/source/),
Install the downloaded
openssl by opening a terminal in your Downloads directory, and unpacking the source distribution:
("tar -xvzf openssl-3.0.1.tar.gz ; cd openssl-3.0.1"). Then build/install with
"./config ; make ; sudo make install_dev". This will typically install the needed library ```libcrypto.*```,
either in /usr/local/lib or /usr/local/lib64.
_(Ignore the following for builds on MacOS:)_
Assuming the library was placed in /usr/local/lib64, you must
"export OPENSSL_ROOT_DIR=/usr/local/lib64" before running cmake.
On some systems like
Debian or Ubuntu, you may also need to add a missing entry ```/usr/local/lib64```
in /etc/ld.so.conf (or place a file containing "/usr/local/lib64/libcrypto.so" in /etc/ld.so.conf.d)
before running "sudo ldconfig".
### Bulding libplist >= 2.0.0 from source.
_Note: on Debian 9 "Stretch" or Ubuntu 16.04 LTS editions, you can avoid this step by installing libplist-dev
and libplist3 from Debian 10 or Ubuntu 18.04._
(As well as the usual build tools, you may need to also install some libpython\*-dev package).
Download the latest source from
[https://github.com/libimobiledevice/libplist](https://github.com/libimobiledevice/libplist): get
[libplist-master.zip](https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip), then
("unzip libplist-master.zip ; cd libplist-master"), build/install
("./autogen.sh ; make ; sudo make install"). This will probably install libplist-2.0.* in /usr/local/lib.
_(Ignore the following for builds on MacOS:)_ On some systems like
Debian or Ubuntu, you may also need to add a missing entry ```/usr/local/lib```
in /etc/ld.so.conf (or place a file containing "/usr/local/lib64/libplist-2.0.so" in /etc/ld.so.conf.d)
before running "sudo ldconfig".
## Building UxPlay on macOS: **(Only tested on Intel X86_64 Macs)**
_Note: A native AirPlay Server feature is included in macOS 12 Monterey, but is restricted to recent hardware.
@@ -163,9 +191,10 @@ Click on them to install (they install to
/Library/FrameWorks/GStreamer.framework).
It is recommended you use GStreamer.framework rather than install Gstreamer with Homebrew or MacPorts (see later).
Next install OpenSSL and libplist: these can be built from source (see below) but it is easier to get them using
MacPorts "sudo port install openssl libplist-devel" or Homebrew "brew install openssl libplist". Only the
static forms of the two libraries will used for the macOS build, so they do not need to remain installed after you have built uxplay:
Next install OpenSSL and libplist: these can be built from source (see above); only the
static forms of the two libraries will used for the macOS build, so you can uninstall them ("sudo make uninstall")
after you have built UxPlay. It may be easier to get them using
MacPorts "sudo port install openssl libplist-devel" or Homebrew "brew install openssl libplist".
if you don't have MacPorts or Homebrew installed, you can just install
one of these package-managers before building uxplay, and uninstall it afterwards if you do not want to keep it.
Unfortunately, Fink's openssl11-dev package currently doesn't supply the static (libcrypto.a) form of the
@@ -186,21 +215,6 @@ the (small) initial OpenGL mirror window size, but the window can be expanded u
In contrast, a window created with "-vs osxvideosink" is initially big, but has the wrong aspect ratio (stretched image);
in this case the aspect ratio changes when the window width is changed by dragging its side.
***Building OpenSSL and libplist from source on macOS***
If you have have the standard GNU toolset (autoconf, automake, libtool, etc.) installed,
you can also download and compile the source code for these libraries from
[https://www.openssl.org/source/](https://www.openssl.org/source/),
[https://github.com/libimobiledevice/libplist](https://github.com/libimobiledevice/libplist).
Install the downloaded
openssl by opening a terminal in your Downloads directory, and unpacking the source distribution openssl-3.0.0.tar.gz ,
("tar -xvzf openssl-3.0.0.tar.gz ; cd openssl-3.0.0"). Then build/install with
"./config ; make ; sudo make install_dev" and clean up after building uxplay with "sudo make uninstall" in the same directory.
Similarly, for libplist, download the source as a zipfile from github as
[libplist-master.zip](https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip), then
unpack ("unzip libplist-master.zip ; cd libplist-master"), build/install
("./autogen.sh ; make ; sudo make install") and clean up after uxplay is built with "sudo make uninstall" in the same directory.
***Other ways (Homebrew, MacPorts) to install GStreamer on macOS (not recommended):***
@@ -219,6 +233,13 @@ Using the MacPorts X11 GStreamer is only viable if the image size is left unchan
(also use the iPad/iPhone setting that locks the screen orientation against switching between portrait and landscape mode
as the device is rotated).
# **Usage:**
Options:

View File

@@ -110,25 +110,30 @@ Building UxPlay on Linux (or \*BSD):
(Instructions for Debian/Ubuntu; adapt these for other Linuxes; for
macOS, see below).
Make sure that your distribution provides OpenSSL 1.1.1 or later, and
libplist 2.0 or later. (This means Debian 10 "Buster", Ubuntu 18.04 or
later.) If it doesnt, you may need to build and install these from
source (see below).
You need a C/C++ compiler (e.g. g++) with the standard development
libraries installed.
libraries installed. Make sure that cmake\>=3.4.1 and pkg-config are
also installed: "sudo apt-get install cmake pkg-config". In a terminal
window, change directories to the source directory of the downloaded
source code ("UxPlay-master" for zipfile downloads, "UxPlay" for "git
clone" downloads), then do
Make sure that cmake\>=3.4.1 and pkg-config are also installed: "sudo
apt-get install cmake pkg-config". In a terminal window, change
directories to the source directory of the downloaded source code
("UxPlay-master" for zipfile downloads, "UxPlay" for "git clone"
downloads), then do
1. `sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad`
2. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated
1. `sudo apt-get install libssl-dev libplist-dev` (unless you need to
build OpenSSL and libplist from source).
2. `sudo apt-get install libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad`
3. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated
Intel graphics, but not NVIDIA)
3. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11\_display
4. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11\_display
name fix for screen-sharing with e.g., ZOOM)
4. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix
5. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix
to make X11 mirror display windows visible to screen-sharing
applications such as Zoom, see below).
5. `make`
6. `sudo make install` (you can afterwards uninstall with
6. `make`
7. `sudo make install` (you can afterwards uninstall with
`sudo make uninstall` in the same directory in which this was run)
*If you intend to modify the code, use a separate "build" directory:
@@ -156,22 +161,6 @@ prevents UxPlay from receiving client connection requests unless some
network ports are opened. See **Troubleshooting** below for help with
this or other problems.
**Note libplist-dev (version 2.0 or greater) is a new dependency
(originally, libplist was bundled with UxPlay-1.2). Older Linux
distributions may only supply libplist 1.x, which is too old.
\[Installing libplist-dev (with libplist3) from ubuntu 18.04 solves this
problem on ubuntu 16.04.\]** If you cannot find a libplist-2.x package
that installs on your distribution, you can get it at
<https://github.com/libimobiledevice/libplist> and build it from source.
\_(You will need build tools autoconf, automake, libtool, and may need
to also install some libpython\*-dev package). By default, libplist
installs in /usr/local/lib. If this is not in the library path (as in
ubuntu), create a file /etc/ld.so.conf.d/libplist.conf containing the
text "/usr/local/lib", and run "sudo ldconfig" to permanently add
/usr/local/lib to the library path.\_
### Modified build instructions for Non-Debian-based distributions:
**Red Hat, Fedora, CentOS (now continued as Rocky Linux or Alma
Linux):** (sudo yum install) openssl-devel libplist-devel
avahi-compat-libdns\_sd-devel (some from the "PowerTools" add-on
@@ -195,6 +184,40 @@ dns\_sd library. OpenSSL is already installed as a System Library.
"ZOOMFIX" is untested; don't try to use it on FreeBSD unless you need
it.
### Building OpenSSL \>= 1.1.1 from source.
If you need to do this, note that you may be able to use a newer version
(OpenSSL-3.0.1 is known to work). You will need the standard development
toolset (autoconf, automake, libtool, etc.). Download and compile the
source code from <https://www.openssl.org/source/>, Install the
downloaded openssl by opening a terminal in your Downloads directory,
and unpacking the source distribution: ("tar -xvzf openssl-3.0.1.tar.gz
; cd openssl-3.0.1"). Then build/install with "./config ; make ; sudo
make install\_dev". This will typically install the needed library
`libcrypto.*`, either in /usr/local/lib or /usr/local/lib64. *(Ignore
the following for builds on MacOS:)* Assuming the library was placed in
/usr/local/lib64, you must "export OPENSSL\_ROOT\_DIR=/usr/local/lib64"
before running cmake. On some systems like Debian or Ubuntu, you may
also need to add a missing entry `/usr/local/lib64` in /etc/ld.so.conf
(or place a file containing "/usr/local/lib64/libcrypto.so" in
/etc/ld.so.conf.d) before running "sudo ldconfig".
### Bulding libplist \>= 2.0.0 from source.
*Note: on Debian 9 "Stretch" or Ubuntu 16.04 LTS editions, you can avoid
this step by installing libplist-dev and libplist3 from Debian 10 or
Ubuntu 18.04.* (As well as the usual build tools, you may need to also
install some libpython\*-dev package). Download the latest source from
<https://github.com/libimobiledevice/libplist>: get
[libplist-master.zip](https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip),
then ("unzip libplist-master.zip ; cd libplist-master"), build/install
("./autogen.sh ; make ; sudo make install"). This will probably install
libplist-2.0.\* in /usr/local/lib. *(Ignore the following for builds on
MacOS:)* On some systems like Debian or Ubuntu, you may also need to add
a missing entry `/usr/local/lib` in /etc/ld.so.conf (or place a file
containing "/usr/local/lib64/libplist-2.0.so" in /etc/ld.so.conf.d)
before running "sudo ldconfig".
Building UxPlay on macOS: **(Only tested on Intel X86\_64 Macs)**
-----------------------------------------------------------------
@@ -222,12 +245,12 @@ you use GStreamer.framework rather than install Gstreamer with Homebrew
or MacPorts (see later).
Next install OpenSSL and libplist: these can be built from source (see
below) but it is easier to get them using MacPorts "sudo port install
openssl libplist-devel" or Homebrew "brew install openssl libplist".
Only the static forms of the two libraries will used for the macOS
build, so they do not need to remain installed after you have built
uxplay: if you don't have MacPorts or Homebrew installed, you can just
install one of these package-managers before building uxplay, and
above); only the static forms of the two libraries will used for the
macOS build, so you can uninstall them ("sudo make uninstall") after you
have built UxPlay. It may be easier to get them using MacPorts "sudo
port install openssl libplist-devel" or Homebrew "brew install openssl
libplist". if you don't have MacPorts or Homebrew installed, you can
just install one of these package-managers before building uxplay, and
uninstall it afterwards if you do not want to keep it. Unfortunately,
Fink's openssl11-dev package currently doesn't supply the static
(libcrypto.a) form of the needed OpenSLL library libcrypto, and its
@@ -252,23 +275,6 @@ expanded using the mouse or trackpad. In contrast, a window created with
(stretched image); in this case the aspect ratio changes when the window
width is changed by dragging its side.
***Building OpenSSL and libplist from source on macOS***
If you have have the standard GNU toolset (autoconf, automake, libtool,
etc.) installed, you can also download and compile the source code for
these libraries from <https://www.openssl.org/source/>,
<https://github.com/libimobiledevice/libplist>. Install the downloaded
openssl by opening a terminal in your Downloads directory, and unpacking
the source distribution openssl-3.0.0.tar.gz , ("tar -xvzf
openssl-3.0.0.tar.gz ; cd openssl-3.0.0"). Then build/install with
"./config ; make ; sudo make install\_dev" and clean up after building
uxplay with "sudo make uninstall" in the same directory. Similarly, for
libplist, download the source as a zipfile from github as
[libplist-master.zip](https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip),
then unpack ("unzip libplist-master.zip ; cd libplist-master"),
build/install ("./autogen.sh ; make ; sudo make install") and clean up
after uxplay is built with "sudo make uninstall" in the same directory.
***Other ways (Homebrew, MacPorts) to install GStreamer on macOS (not
recommended):***