Compile macOS using homebrew: Difference between revisions

From Strawberry Music Player Wiki
Jump to navigation Jump to search
(Created page with "Compile on macOS using homebrew == Install xcode tools and brew package manager == xcode-select --install /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" == Install dependencies through brew == brew install pkg-config cmake ninja meson bison flex wget create-dmg gettext boost protobuf protobuf-c brew install glib glib-openssl glib-utils glib-networking gdk-pixbuf gobject-introspection orc brew in...")
 
No edit summary
(2 intermediate revisions by the same user not shown)
Line 9: Line 9:
== Install dependencies through brew ==
== Install dependencies through brew ==


     brew install pkg-config cmake ninja meson bison flex wget create-dmg gettext boost protobuf protobuf-c
     brew install pkg-config cmake ninja meson bison flex wget create-dmg gettext boost protobuf protobuf-c ccache
     brew install glib glib-openssl glib-utils glib-networking gdk-pixbuf gobject-introspection orc
     brew install glib glib-openssl glib-utils glib-networking gdk-pixbuf gobject-introspection orc
     brew install libffi openssl gnutls sqlite fftw libmtp libplist libsoup libxml2
     brew install libffi openssl gnutls sqlite fftw libmtp libplist libsoup libxml2
     brew install libogg libvorbis flac wavpack opus speex mpg123 lame twolame taglib chromaprint libbs2b libcdio libopenmpt faad2 faac fdk-aac musepack game-music-emu
     brew install libogg libvorbis flac wavpack opus speex mpg123 lame twolame taglib chromaprint libbs2b libcdio libopenmpt faad2 faac fdk-aac musepack game-music-emu
    brew install gstreamer
     brew install qt6
     brew install qt6


Homebrew is missing several gstreamer plugins, so we build gstreamer from source.
Homebrew is missing several gstreamer plugins, so we build gstreamer from source.


    wget https://files.strawberrymusicplayer.org/patches/gstreamer.rb
     wget https://files.strawberrymusicplayer.org/patches/gst-plugins-base.rb
     wget https://files.strawberrymusicplayer.org/patches/gst-plugins-base.rb
     wget https://files.strawberrymusicplayer.org/patches/gst-plugins-good.rb
     wget https://files.strawberrymusicplayer.org/patches/gst-plugins-good.rb
     wget https://files.strawberrymusicplayer.org/patches/gst-plugins-bad.rb
     wget https://files.strawberrymusicplayer.org/patches/gst-plugins-bad.rb
     wget https://files.strawberrymusicplayer.org/patches/gst-plugins-ugly.rb
     wget https://files.strawberrymusicplayer.org/patches/gst-plugins-ugly.rb
     mv gst-plugins-{base,good,bad,ugly}.rb /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/
    wget https://files.strawberrymusicplayer.org/patches/gst-libav.rb
     mv gstreamer.rb gst-plugins-{base,good,bad,ugly}.rb gst-libav.rb /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/


    brew install --build-from-source gstreamer
     brew install --build-from-source gst-plugins-base
     brew install --build-from-source gst-plugins-base
     brew install --build-from-source gst-plugins-good
     brew install --build-from-source gst-plugins-good
     brew install --build-from-source gst-plugins-bad
     brew install --build-from-source gst-plugins-bad
     brew install --build-from-source gst-plugins-ugly
     brew install --build-from-source gst-plugins-ugly
    brew install --build-from-source gst-libav





Revision as of 22:13, 29 September 2022

Compile on macOS using homebrew


Install xcode tools and brew package manager

   xcode-select --install
   /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install dependencies through brew

   brew install pkg-config cmake ninja meson bison flex wget create-dmg gettext boost protobuf protobuf-c ccache
   brew install glib glib-openssl glib-utils glib-networking gdk-pixbuf gobject-introspection orc
   brew install libffi openssl gnutls sqlite fftw libmtp libplist libsoup libxml2
   brew install libogg libvorbis flac wavpack opus speex mpg123 lame twolame taglib chromaprint libbs2b libcdio libopenmpt faad2 faac fdk-aac musepack game-music-emu
   brew install qt6

Homebrew is missing several gstreamer plugins, so we build gstreamer from source.

   wget https://files.strawberrymusicplayer.org/patches/gstreamer.rb
   wget https://files.strawberrymusicplayer.org/patches/gst-plugins-base.rb
   wget https://files.strawberrymusicplayer.org/patches/gst-plugins-good.rb
   wget https://files.strawberrymusicplayer.org/patches/gst-plugins-bad.rb
   wget https://files.strawberrymusicplayer.org/patches/gst-plugins-ugly.rb
   wget https://files.strawberrymusicplayer.org/patches/gst-libav.rb
   mv gstreamer.rb gst-plugins-{base,good,bad,ugly}.rb gst-libav.rb /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/
   brew install --build-from-source gstreamer
   brew install --build-from-source gst-plugins-base
   brew install --build-from-source gst-plugins-good
   brew install --build-from-source gst-plugins-bad
   brew install --build-from-source gst-plugins-ugly
   brew install --build-from-source gst-libav


Set environment variables

for Intel x86_64:

   export GIO_EXTRA_MODULES=/usr/local/lib/gio/modules
   export GST_PLUGIN_SCANNER=/usr/local/opt/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner
   export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0

for Apple Silicon:

   export GIO_EXTRA_MODULES=/opt/homebrew/lib/gio/modules
   export GST_PLUGIN_SCANNER=/opt/homebrew/opt/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner
   export GST_PLUGIN_PATH=/opt/homebrew/lib/gstreamer-1.0

Prepare build

   mkdir -p ~/build
   cd ~/build
   git clone https://github.com/strawberrymusicplayer/strawberry
   cd strawberry
   mkdir build
   cd build

(If you already did `git clone`, do `git pull` to make sure you have the latest code).

Configure build

for Intel x86_64:

   cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/usr/local/opt/qt6/lib/cmake -DBUILD_WITH_QT6=ON -DUSE_BUNDLE=ON -DENABLE_SPARKLE=OFF -DICU_ROOT=/usr/local/opt/icu4c

for Apple Silicon:

   cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt6/lib/cmake -DBUILD_WITH_QT6=ON -DUSE_BUNDLE=ON -DENABLE_SPARKLE=OFF -DICU_ROOT=/usr/local/opt/icu4c

Build

   make -j$(nproc)
   make install

Remove problematic unneeded plugins

   sudo rm -rf /usr/local/opt/qt6/share/qt/plugins/virtualkeyboard /usr/local/opt/qt6/share/qt/plugins/platforminputcontexts
   sudo rm -f /usr/local/Cellar/qt/*/share/qt/plugins/imageformats/libqpdf.dylib

Manually copy files

You need to manually copy libsoup-3.0.0.dylib, as this library needs to be loaded by gstreamer at runtime:

   mkdir -p strawberry.app/Contents/Frameworks
   cp /usr/local/lib/libsoup-3.0.0.dylib strawberry.app/Contents/Frameworks/

Deploy

   make deploy

Create DMG

   make dmg

Install

To install, either open the DMG, drag Strawberry over to Applications, or manually copy the strawberry.app folder over to /Applications/