<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[153444] trunk/dports/multimedia/audacious-plugins</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/153444">153444</a></dd>
<dt>Author</dt> <dd>ionic@macports.org</dd>
<dt>Date</dt> <dd>2016-09-30 04:15:27 -0700 (Fri, 30 Sep 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>multimedia/audacious-plugins: update to 3.8 including patchset.

Changes:
  - Renamed patches to drop the file name and add a description of what they
    do.
  - Refreshed patches.
  - Dropped the patch switching from -std=gnu++11 to -std=c++11 on OS X.
    Enabling GNU extensions shouldn't Hurd.
  - +vorbis and +flac now require +filewriter, as it doesn't make sense
    to not enable it if it comes for free (filewriter has no external
    dependencies, other than vorbis, faac and lame, which are pulled in
    by the vorbis, flac or lame variants.)
  - Initial support for the ampache plugin via a variant, but commented
    out, as the required dependency has not been ported yet.
  - +notifications can now be used with Qt5 as well and has been added
    to the +full variant set.
  - +filewriter added to the +full variant set, as it adds no external
    dependencies by itself and can now be used with GTK2, GTK3 and Qt5.
  - The Qt5 interface will now be regarded as a fully-qualified member,
    as it matured quite a lot.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkdportsmultimediaaudaciouspluginsPortfile">trunk/dports/multimedia/audacious-plugins/Portfile</a></li>
<li><a href="#trunkdportsmultimediaaudaciouspluginsfilespatchgtk3diff">trunk/dports/multimedia/audacious-plugins/files/patch-gtk3.diff</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkdportsmultimediaaudaciouspluginsfilespatchdroplibcdiff">trunk/dports/multimedia/audacious-plugins/files/patch-drop-libc++.diff</a></li>
<li><a href="#trunkdportsmultimediaaudaciouspluginsfilespatchupdatebuildsysandmakeverbosediff">trunk/dports/multimedia/audacious-plugins/files/patch-update-buildsys-and-make-verbose.diff</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkdportsmultimediaaudaciouspluginsfilespatchacincludem4droplibcswitchfromgnu11toc11diff">trunk/dports/multimedia/audacious-plugins/files/patch-acinclude.m4-drop-libc++-switch-from-gnu++11-to-c++11.diff</a></li>
<li><a href="#trunkdportsmultimediaaudaciouspluginsfilespatchbuildsysdiff">trunk/dports/multimedia/audacious-plugins/files/patch-buildsys.diff</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkdportsmultimediaaudaciouspluginsPortfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/multimedia/audacious-plugins/Portfile (153443 => 153444)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/multimedia/audacious-plugins/Portfile       2016-09-30 11:15:18 UTC (rev 153443)
+++ trunk/dports/multimedia/audacious-plugins/Portfile  2016-09-30 11:15:27 UTC (rev 153444)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> name                audacious-plugins
</span><span class="cx"> 
</span><span class="cx"> # Please keep audacious, audacious-core and audacious-plugins synchronized.
</span><del>-version             3.7.2
</del><ins>+version             3.8
</ins><span class="cx"> revision            0
</span><span class="cx"> 
</span><span class="cx"> # FIXME: probably more licenses involved here...
</span><span class="lines">@@ -28,15 +28,15 @@
</span><span class="cx"> 
</span><span class="cx"> master_sites        http://distfiles.audacious-media-player.org
</span><span class="cx"> use_bzip2           yes
</span><del>-checksums           rmd160  d0786b32eb5e4ad2a724e0ffa0195e052d0bf41f \
-                    sha256  fcf7488f01781c8f51e0af5cabacdd582b22537a0085f26aa5ca636373f8e1ff
</del><ins>+checksums           rmd160  a9599198be430218fcfda4184222df7fcaf8398e \
+                    sha256  8179b80fffc893d4a2533fc7b7c4800981bc9ab3c6d1742a4c832fd6176ca24a
</ins><span class="cx"> 
</span><span class="cx"> universal_variant   no
</span><span class="cx"> 
</span><span class="cx"> conflicts_build     ${name}
</span><span class="cx"> 
</span><del>-patchfiles          patch-buildsys.diff \
-                    patch-acinclude.m4-drop-libc++-switch-from-gnu++11-to-c++11.diff
</del><ins>+patchfiles          patch-update-buildsys-and-make-verbose.diff \
+                    patch-drop-libc++.diff
</ins><span class="cx"> 
</span><span class="cx"> depends_build       path:bin/pkg-config:pkgconfig \
</span><span class="cx">                     path:bin/aclocal:automake \
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">                     --disable-notify \
</span><span class="cx">                     --disable-mpris2 \
</span><span class="cx">                     --disable-vorbis \
</span><del>-                    --disable-flacng \
</del><ins>+                    --disable-flac \
</ins><span class="cx">                     --disable-wavpack \
</span><span class="cx">                     --disable-aac \
</span><span class="cx">                     --disable-sndfile \
</span><span class="lines">@@ -92,11 +92,11 @@
</span><span class="cx">                     --disable-amidiplug \
</span><span class="cx">                     --disable-cdaudio \
</span><span class="cx">                     --disable-scrobbler2 \
</span><ins>+                    --disable-ampache \
</ins><span class="cx">                     --disable-mms \
</span><span class="cx">                     --disable-cue \
</span><span class="cx">                     --disable-filewriter \
</span><span class="cx">                     --disable-filewriter_mp3 \
</span><del>-                    --disable-filewriter_flac \
</del><span class="cx">                     --disable-bs2b \
</span><span class="cx">                     --disable-resample \
</span><span class="cx">                     --disable-speedpitch \
</span><span class="lines">@@ -173,27 +173,23 @@
</span><span class="cx">                             --enable-filewriter
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-variant vorbis description {Add support for the OggVorbis audio codec} {
</del><ins>+variant vorbis requires filewriter description {Add support for the OggVorbis audio codec} {
</ins><span class="cx">     depends_lib-append      port:libvorbis
</span><span class="cx">     depends_lib-append      port:libogg
</span><span class="cx">     configure.args-replace  --disable-vorbis \
</span><span class="cx">                             --enable-vorbis
</span><span class="cx"> 
</span><del>-    if {([variant_isset gtk2] || [variant_isset gtk3]) && [variant_isset filewriter]} {
-        configure.args-replace  --disable-filewriter \
-                                --enable-filewriter
-    }
</del><ins>+    configure.args-replace  --disable-filewriter \
+                            --enable-filewriter
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-variant flac description {Add support for FLAC: Free Lossless Audio Codec} {
</del><ins>+variant flac requires filewriter description {Add support for FLAC: Free Lossless Audio Codec} {
</ins><span class="cx">     depends_lib-append      port:flac
</span><del>-    configure.args-replace  --disable-flacng \
-                            --enable-flacng
</del><ins>+    configure.args-replace  --disable-flac \
+                            --enable-flac
</ins><span class="cx"> 
</span><del>-    if {([variant_isset gtk2] || [variant_isset gtk3]) && [variant_isset filewriter]} {
-        configure.args-replace  --disable-filewriter_flac \
-                                --enable-filewriter_flac
-    }
</del><ins>+    configure.args-replace  --disable-filewriter \
+                            --enable-filewriter
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> variant wavpack description {Add support for wavpack audio compression tools} {
</span><span class="lines">@@ -245,7 +241,7 @@
</span><span class="cx">                             --enable-amidiplug
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-variant cdaudio description {Add support for CDAudio-NG} {
</del><ins>+variant cdaudio description {Add support for CDAudio} {
</ins><span class="cx">     depends_lib-append      port:libcdio \
</span><span class="cx">                             port:libcdio-paranoia \
</span><span class="cx">                             port:libcddb
</span><span class="lines">@@ -259,6 +255,13 @@
</span><span class="cx">                             --enable-scrobbler2
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+# ampache_browser not ported yet.
+#variant ampache requires qt5 description {Add support for browsing music on an Ampache server} {
+#   depends_lib-append      port:ampache_browser
+#   configure.args-replace  --disable-ampache \
+#                           --enable-ampache
+#}
+
</ins><span class="cx"> variant mms description {Add support for Microsoft Media Server (MMS) streams} {
</span><span class="cx">     depends_lib-append      port:libmms
</span><span class="cx">     configure.args-replace  --disable-mms \
</span><span class="lines">@@ -330,8 +333,8 @@
</span><span class="cx">                             --enable-qtaudio
</span><span class="cx"> 
</span><span class="cx">     notes-append {
</span><del>-                    Qt5 support is optional and untested.
-                    If it breaks, you've got to keep the pieces.\
</del><ins>+                    The Qt5 interface is known to crash upon exit, \
+                    but should otherwise be functional.\
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -359,6 +362,7 @@
</span><span class="cx"> 
</span><span class="cx"> variant full requires console mp3 dbus lirc wavpack aac sndfile modplug \
</span><span class="cx">                       midi cdaudio mms cue lame flac transform opengl \
</span><ins>+                      filewriter notifications \
</ins><span class="cx">              description {Build all plugins, except additional sound output plugins and potentially conflicting variants} {}
</span><span class="cx"> 
</span><span class="cx"> if {[variant_isset jack]} {
</span><span class="lines">@@ -381,7 +385,7 @@
</span><span class="cx"> 
</span><span class="cx"> # Add other variants to the "full" set if gtk2 or gtk3 have been enabled.
</span><span class="cx"> if {[variant_isset full] && ([variant_isset gtk2] || [variant_isset gtk3])} {
</span><del>-    default_variants-append +filewriter +osd +osd_composite +notifications +lastfm
</del><ins>+    default_variants-append +osd +osd_composite +lastfm
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> # OSD only supported with gtk2 or gtk3.
</span><span class="lines">@@ -390,24 +394,12 @@
</span><span class="cx">     error "+osd or +osd_composite require +gtk2 or +gtk3."
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# Notifications only supported with gtk2 or gtk3.
-if {![variant_isset gtk2] && ![variant_isset gtk3] && [variant_isset notifications]} {
-    ui_debug "The notifications variant requires either the gtk2 or gtk3 variants to be enabled."
-    error "+notifications requires +gtk2 or +gtk3."
-}
-
</del><span class="cx"> # LastFM/scrobbler2 only supported with gtk2 or gtk3.
</span><span class="cx"> if {![variant_isset gtk2] && ![variant_isset gtk3] && [variant_isset lastfm]} {
</span><span class="cx">     ui_debug "The lastfm variant requires either the gtk2 or gtk3 variants to be enabled."
</span><span class="cx">     error "+lastfm requires +gtk2 or +gtk3."
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# Filewriter only supported with gtk2 or gtk3.
-if {![variant_isset gtk2] && ![variant_isset gtk3] && [variant_isset filewriter]} {
-    ui_debug "The filewriter variant requires either the gtk2 or gtk3 variants to be enabled."
-    error "+filewriter requires +gtk2 or +gtk3."
-}
-
</del><span class="cx"> # OpenGL only supported with gtk2, gtk3 or Qt5.
</span><span class="cx"> if {![variant_isset gtk2] && ![variant_isset gtk3] && ![variant_isset qt5] && [variant_isset opengl]} {
</span><span class="cx">     ui_debug "The opengl variant requires either the gtk2, gtk3 or qt5 variants to be enabled."
</span></span></pre></div>
<a id="trunkdportsmultimediaaudaciouspluginsfilespatchacincludem4droplibcswitchfromgnu11toc11diff"></a>
<div class="delfile"><h4>Deleted: trunk/dports/multimedia/audacious-plugins/files/patch-acinclude.m4-drop-libc++-switch-from-gnu++11-to-c++11.diff (153443 => 153444)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/multimedia/audacious-plugins/files/patch-acinclude.m4-drop-libc++-switch-from-gnu++11-to-c++11.diff 2016-09-30 11:15:18 UTC (rev 153443)
+++ trunk/dports/multimedia/audacious-plugins/files/patch-acinclude.m4-drop-libc++-switch-from-gnu++11-to-c++11.diff    2016-09-30 11:15:27 UTC (rev 153444)
</span><span class="lines">@@ -1,22 +0,0 @@
</span><del>---- acinclude.m4.orig
-+++ acinclude.m4
-@@ -83,8 +83,8 @@ AC_REQUIRE([AC_SYS_LARGEFILE])
- if test "x$GCC" = "xyes"; then
-     CFLAGS="$CFLAGS -std=gnu99 -ffast-math -Wall -pipe -Wno-deprecated-declarations"
-     if test "x$HAVE_DARWIN" = "xyes"; then
--        CXXFLAGS="$CXXFLAGS -stdlib=libc++ -std=gnu++11 -ffast-math -Wall -pipe -Wno-deprecated-declarations"
--        LDFLAGS="$LDFLAGS -lc++ -stdlib=libc++"
-+        CXXFLAGS="$CXXFLAGS -std=c++11 -ffast-math -Wall -pipe -Wno-deprecated-declarations"
-+        LDFLAGS="$LDFLAGS"
-     else
-         CXXFLAGS="$CXXFLAGS -std=gnu++11 -ffast-math -Wall -pipe -Wno-deprecated-declarations"
-     fi
-@@ -101,7 +101,7 @@ if test "x$HAVE_DARWIN" = "xyes"; then
-     AC_PROG_OBJCXX
-     AC_PROG_OBJCXXCPP

--    OBJCXXFLAGS="$OBJCXXFLAGS -stdlib=libc++ -std=c++11"
-+    OBJCXXFLAGS="$OBJCXXFLAGS -std=c++11"
- fi

- dnl Enable "-Wl,-z,defs" only on Linux
</del></span></pre></div>
<a id="trunkdportsmultimediaaudaciouspluginsfilespatchbuildsysdiff"></a>
<div class="delfile"><h4>Deleted: trunk/dports/multimedia/audacious-plugins/files/patch-buildsys.diff (153443 => 153444)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/multimedia/audacious-plugins/files/patch-buildsys.diff      2016-09-30 11:15:18 UTC (rev 153443)
+++ trunk/dports/multimedia/audacious-plugins/files/patch-buildsys.diff 2016-09-30 11:15:27 UTC (rev 153444)
</span><span class="lines">@@ -1,670 +0,0 @@
</span><del>---- buildsys.mk.in.orig
-+++ buildsys.mk.in
-@@ -1,5 +1,5 @@
- #
--#  Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012
-+#  Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
- #  Jonathan Schleifer <js@webkeks.org>
- #
- #  https://webkeks.org/git/?p=buildsys.git
-@@ -45,6 +45,7 @@ OBJCFLAGS = @OBJCFLAGS@
- OBJCXXFLAGS = @OBJCXXFLAGS@
- LDFLAGS = @LDFLAGS@
- LDFLAGS_RPATH = @LDFLAGS_RPATH@
-+LDFLAGS_INSTALL_NAME = @LDFLAGS_INSTALL_NAME@
- LIBS = @LIBS@
- PYTHON_FLAGS = @PYTHON_FLAGS@
- PROG_IMPLIB_NEEDED = @PROG_IMPLIB_NEEDED@
-@@ -107,19 +108,24 @@ PLUGIN_OBJS = ${OBJS:.o=.plugin.o}

- MO_FILES = ${LOCALES:.po=.mo}

--.SILENT:
- .SUFFIXES:
- .SUFFIXES: .beam .c .c.dep .cc .cc.dep .class .cxx .cxx.dep .d .erl .lib.o .java .mo .m .m.dep .mm .mm.dep .o .plugin.o .po .py .pyc .rc .S .S.dep .xpm
--.PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales ${SUBDIRS}
-+.PHONY: all subdirs subdirs-after pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales ${SUBDIRS} ${SUBDIRS_AFTER}

- all:
-+      ${MAKE} pre-all
-       ${MAKE} ${MFLAGS} subdirs
-       ${MAKE} ${MFLAGS} depend
-       ${MAKE} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales
-+      ${MAKE} ${MFLAGS} subdirs-after
-+      ${MAKE} post-all
-+
-+pre-all post-all:

- subdirs: ${SUBDIRS}
-+subdirs-after: ${SUBDIRS_AFTER}

--${SUBDIRS}:
-+${SUBDIRS} ${SUBDIRS_AFTER}:
-       for i in $@; do \
-               ${DIR_ENTER}; \
-               ${MAKE} ${MFLAGS} || exit $$?; \
-@@ -205,6 +211,7 @@ pre-depend:

- ${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA}
-       ${LINK_STATUS}
-+      out="$@"; \
-       if ${LD} -o $@ ${OBJS} ${OBJS_EXTRA} ${LDFLAGS} ${LIBS}; then \
-               ${LINK_OK}; \
-       else \
-@@ -228,7 +235,8 @@ ${JARFILE}: ${EXT_DEPS} ${JAR_MANIFEST} ${OBJS} ${OBJS_EXTRA}
-       fi

- ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
--      ${LINK_STATUS}; \
-+      ${LINK_STATUS}
-+      out="$@"; \
-       objs=""; \
-       ars=""; \
-       for i in ${LIB_OBJS} ${LIB_OBJS_EXTRA}; do \
-@@ -252,7 +260,7 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
-               done; \
-               cd ..; \
-       done; \
--      if ${LD} -o $@ $$objs ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
-+      if ${LD} -o $@ $$objs ${LIB_LDFLAGS} ${LDFLAGS_INSTALL_NAME} ${LDFLAGS} ${LIBS}; then \
-               ${LINK_OK}; \
-       else \
-               ${LINK_FAILED}; \
-@@ -264,6 +272,7 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}

- ${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS}
-       ${LINK_STATUS}
-+      out="$@"; \
-       objs=""; \
-       ars=""; \
-       for i in ${PLUGIN_OBJS}; do \
-@@ -300,6 +309,7 @@ ${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS}
- ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA}
-       ${LINK_STATUS}
-       rm -f $@
-+      out="$@"; \
-       objs=""; \
-       ars=""; \
-       for i in ${OBJS} ${OBJS_EXTRA}; do \
-@@ -337,6 +347,7 @@ ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA}
- ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
-       ${LINK_STATUS}
-       rm -f $@
-+      out="$@"; \
-       objs=""; \
-       ars=""; \
-       for i in ${LIB_OBJS} ${LIB_OBJS_EXTRA}; do \
-@@ -375,21 +386,27 @@ locales: ${MO_FILES}

- .c.o:
-       ${COMPILE_STATUS}
--      if ${CC} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CC} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-               ${COMPILE_FAILED}; \
-       fi
- .c.lib.o:
-       ${COMPILE_LIB_STATUS}
--      if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_LIB_OK}; \
-       else \
-               ${COMPILE_LIB_FAILED}; \
-       fi
- .c.plugin.o:
-       ${COMPILE_PLUGIN_STATUS}
--      if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_PLUGIN_OK}; \
-       else \
-               ${COMPILE_PLUGIN_FAILED}; \
-@@ -397,21 +414,27 @@ locales: ${MO_FILES}

- .cc.o .cxx.o:
-       ${COMPILE_STATUS}
--      if ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-               ${COMPILE_FAILED}; \
-       fi
- .cc.lib.o .cxx.lib.o:
-       ${COMPILE_LIB_STATUS}
--      if ${CXX} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CXX} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${CXXFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_LIB_OK}; \
-       else \
-               ${COMPILE_LIB_FAILED}; \
-       fi
- .cc.plugin.o .cxx.plugin.o:
-       ${COMPILE_PLUGIN_STATUS}
--      if ${CXX} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CXX} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${CXXFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_PLUGIN_OK}; \
-       else \
-               ${COMPILE_PLUGIN_FAILED}; \
-@@ -419,6 +442,8 @@ locales: ${MO_FILES}

- .d.o:
-       ${COMPILE_STATUS}
-+      in="$<"; \
-+      out="$@"; \
-       if test x"$(basename ${DC})" = x"dmd"; then \
-               if ${DC} ${DFLAGS} -c -of$@ $<; then \
-                       ${COMPILE_OK}; \
-@@ -435,6 +460,8 @@ locales: ${MO_FILES}

- .erl.beam:
-       ${COMPILE_STATUS}
-+      in="$<"; \
-+      out="$@"; \
-       if ${ERLC} ${ERLCFLAGS} -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-@@ -443,6 +470,8 @@ locales: ${MO_FILES}

- .java.class:
-       ${COMPILE_STATUS}
-+      in="$<"; \
-+      out="$@"; \
-       if ${JAVAC} ${JAVACFLAGS} $<; then \
-               ${COMPILE_OK}; \
-       else \
-@@ -451,21 +480,27 @@ locales: ${MO_FILES}

- .m.o:
-       ${COMPILE_STATUS}
--      if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${OBJCFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-               ${COMPILE_FAILED}; \
-       fi
- .m.lib.o:
-       ${COMPILE_LIB_STATUS}
--      if ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} ${OBJCFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_LIB_OK}; \
-       else \
-               ${COMPILE_LIB_FAILED}; \
-       fi
- .m.plugin.o:
-       ${COMPILE_PLUGIN_STATUS}
--      if ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} ${OBJCFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_PLUGIN_OK}; \
-       else \
-               ${COMPILE_PLUGIN_FAILED}; \
-@@ -473,21 +508,27 @@ locales: ${MO_FILES}

- .mm.o:
-       ${COMPILE_STATUS}
--      if ${OBJCXX} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${OBJCXX} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${OBJCXXFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-               ${COMPILE_FAILED}; \
-       fi
- .mm.lib.o:
-       ${COMPILE_LIB_STATUS}
--      if ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${OBJCXXFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_LIB_OK}; \
-       else \
-               ${COMPILE_LIB_FAILED}; \
-       fi
- .mm.plugin.o:
-       ${COMPILE_PLUGIN_STATUS}
--      if ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${OBJCXXFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_PLUGIN_OK}; \
-       else \
-               ${COMPILE_PLUGIN_FAILED}; \
-@@ -495,6 +536,8 @@ locales: ${MO_FILES}

- .po.mo:
-       ${COMPILE_STATUS}
-+      in="$<"; \
-+      out="$@"; \
-       if ${MSGFMT} -c -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-@@ -503,6 +546,8 @@ locales: ${MO_FILES}

- .py.pyc:
-       ${COMPILE_STATUS}
-+      in="$<"; \
-+      out="$@"; \
-       if ${PYTHON} ${PYTHON_FLAGS} -c "import py_compile; py_compile.compile('$<')"; then \
-               ${COMPILE_OK}; \
-       else \
-@@ -511,7 +556,9 @@ locales: ${MO_FILES}

- .rc.o .rc.lib.o .rc.plugin.o:
-       ${COMPILE_STATUS}
--      if ${WINDRES} -J rc -O coff -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${WINDRES} ${CPPFLAGS} -J rc -O coff -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-               ${COMPILE_FAILED}; \
-@@ -519,21 +566,27 @@ locales: ${MO_FILES}

- .S.o:
-       ${COMPILE_STATUS}
--      if ${AS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${AS} ${ASFLAGS} ${CPPFLAGS} ${ASFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-               ${COMPILE_FAILED}; \
-       fi
- .S.lib.o:
-       ${COMPILE_LIB_STATUS}
--      if ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} ${ASFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_LIB_OK}; \
-       else \
-               ${COMPILE_LIB_FAILED}; \
-       fi
- .S.plugin.o:
-       ${COMPILE_PLUGIN_STATUS}
--      if ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} ${ASFLAGS_$@} -c -o $@ $<; then \
-               ${COMPILE_PLUGIN_OK}; \
-       else \
-               ${COMPILE_PLUGIN_FAILED}; \
-@@ -541,28 +594,34 @@ locales: ${MO_FILES}

- .xpm.o:
-       ${COMPILE_STATUS}
--      if ${CC} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CC} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -x c -c -o $@ $<; then \
-               ${COMPILE_OK}; \
-       else \
-               ${COMPILE_FAILED}; \
-       fi
- .xpm.lib.o:
-       ${COMPILE_LIB_STATUS}
--      if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -x c -c -o $@ $<; then \
-               ${COMPILE_LIB_OK}; \
-       else \
-               ${COMPILE_LIB_FAILED}; \
-       fi
- .xpm.plugin.o:
-       ${COMPILE_PLUGIN_STATUS}
--      if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
-+      in="$<"; \
-+      out="$@"; \
-+      if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -x c -c -o $@ $<; then \
-               ${COMPILE_PLUGIN_OK}; \
-       else \
-               ${COMPILE_PLUGIN_FAILED}; \
-       fi

--install: install-extra
--      for i in ${SUBDIRS}; do \
-+install: all install-extra
-+      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
-               ${DIR_ENTER}; \
-               ${MAKE} ${MFLAGS} install || exit $$?; \
-               ${DIR_LEAVE}; \
-@@ -643,7 +702,7 @@ install: install-extra
- install-extra:

- uninstall: uninstall-extra
--      for i in ${SUBDIRS}; do \
-+      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
-               ${DIR_ENTER}; \
-               ${MAKE} ${MFLAGS} uninstall || exit $$?; \
-               ${DIR_LEAVE}; \
-@@ -736,7 +795,7 @@ uninstall: uninstall-extra
- uninstall-extra:

- clean:
--      for i in ${SUBDIRS}; do \
-+      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
-               ${DIR_ENTER}; \
-               ${MAKE} ${MFLAGS} clean || exit $$?; \
-               ${DIR_LEAVE}; \
-@@ -753,7 +812,7 @@ clean:
-       done

- distclean: clean
--      for i in ${SUBDIRS}; do \
-+      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
-               ${DIR_ENTER}; \
-               ${MAKE} ${MFLAGS} distclean || exit $$?; \
-               ${DIR_LEAVE}; \
-@@ -769,27 +828,39 @@ distclean: clean
-               fi \
-       done

--DIR_ENTER = printf "@TERM_EL@@TERM_SETAF6@Entering directory @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n"; cd $$i || exit $$?
--DIR_LEAVE = printf "@TERM_EL@@TERM_SETAF6@Leaving directory @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n"; cd .. || exit $$?
-+print-hierarchy:
-+      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
-+              echo ${PRINT_HIERARCHY_PREFIX}$$i; \
-+              cd $$i || exit $$?; \
-+              ${MAKE} ${MFLAGS} PRINT_HIERARCHY_PREFIX=$$i/ print-hierarchy || exit $$?; \
-+              cd .. || exit $$?; \
-+      done
-+
-+print-var:
-+      printf '%s\n' '${${VAR}}'
-+
-+DIR_ENTER = printf "@TERM_EL@@TERM_SETAF6@Entering directory @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n" "$$i"; cd $$i || exit $$?
-+DIR_LEAVE = printf "@TERM_EL@@TERM_SETAF6@Leaving directory @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n" "$$i"; cd .. || exit $$?
- DEPEND_STATUS = printf "@TERM_EL@@TERM_SETAF3@Generating dependencies...@TERM_SGR0@\r"
- DEPEND_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully generated dependencies.@TERM_SGR0@\n"
- DEPEND_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to generate dependencies!@TERM_SGR0@\n"; exit $$err
--COMPILE_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r"
--COMPILE_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n"
--COMPILE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err
--COMPILE_LIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (lib)...@TERM_SGR0@\r"
--COMPILE_LIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (lib).@TERM_SGR0@\n"
--COMPILE_LIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (lib)!@TERM_SGR0@\n"; exit $$err
--COMPILE_PLUGIN_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (plugin)...@TERM_SGR0@\r"
--COMPILE_PLUGIN_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (plugin).@TERM_SGR0@\n"
--COMPILE_PLUGIN_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (plugin)!@TERM_SGR0@\n"; exit $$err
-+COMPILE_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" "$<"
-+COMPILE_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" "$<"
-+COMPILE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n" "$<"; exit $$err
-+COMPILE_LIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (lib)...@TERM_SGR0@\r" "$<"
-+COMPILE_LIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (lib).@TERM_SGR0@\n" "$<"
-+COMPILE_LIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (lib)!@TERM_SGR0@\n" "$<"; exit $$err
-+COMPILE_PLUGIN_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (plugin)...@TERM_SGR0@\r" "$<"
-+COMPILE_PLUGIN_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (plugin).@TERM_SGR0@\n" "$<"
-+COMPILE_PLUGIN_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (plugin)!@TERM_SGR0@\n" "$<"; exit $$err
- LINK_STATUS = printf "@TERM_EL@@TERM_SETAF3@Linking @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r"
- LINK_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully linked @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n"
- LINK_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to link @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err
--INSTALL_STATUS = printf "@TERM_EL@@TERM_SETAF3@Installing @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r"
--INSTALL_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully installed @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n"
--INSTALL_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to install @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err
--DELETE_OK = printf "@TERM_EL@@TERM_SETAF4@Deleted @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF4@.@TERM_SGR0@\n"
--DELETE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to delete @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err
--
--include .deps
-+INSTALL_STATUS = printf "@TERM_EL@@TERM_SETAF3@Installing @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" "$$i"
-+INSTALL_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully installed @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" "$$i"
-+INSTALL_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to install @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n" "$$i"; exit $$err
-+DELETE_OK = printf "@TERM_EL@@TERM_SETAF4@Deleted @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF4@.@TERM_SGR0@\n" "$$i"
-+DELETE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to delete @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n" "$$i"; exit $$err
-+
-+.CURDIR ?= .
-+include ${.CURDIR}/.deps
---- configure.ac.old
-+++ configure.ac
-@@ -8,6 +8,8 @@ AC_PREREQ([2.59])
- AC_INIT([audacious-plugins], [3.7.2])
- AC_COPYRIGHT([Copyright (C) 2001-2016 Audacious developers and others])

-+BUILDSYS_INIT
-+
- AC_DEFINE_UNQUOTED([PACKAGE], "$PACKAGE_NAME", [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], "$PACKAGE_VERSION", [Version number of package])

---- m4/buildsys.m4.orig
-+++ m4/buildsys.m4
-@@ -1,5 +1,5 @@
- dnl
--dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012
-+dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
- dnl Jonathan Schleifer <js@webkeks.org>
- dnl
- dnl https://webkeks.org/git/?p=buildsys.git
-@@ -21,65 +21,76 @@ dnl ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- dnl POSSIBILITY OF SUCH DAMAGE.
- dnl

--AC_CONFIG_COMMANDS_PRE([
--      AC_SUBST(CC_DEPENDS, $GCC)
--      AC_SUBST(CXX_DEPENDS, $GXX)
--      AC_SUBST(OBJC_DEPENDS, $GOBJC)
--      AC_SUBST(OBJCXX_DEPENDS, $GOBJCXX)
-+AC_DEFUN([BUILDSYS_INIT], [
-+      AC_CONFIG_COMMANDS_PRE([
-+              AC_SUBST(CC_DEPENDS, $GCC)
-+              AC_SUBST(CXX_DEPENDS, $GXX)
-+              AC_SUBST(OBJC_DEPENDS, $GOBJC)
-+              AC_SUBST(OBJCXX_DEPENDS, $GOBJCXX)

--      AC_PATH_PROG(TPUT, tput)
-+              AC_PATH_PROG(TPUT, tput)

--      AS_IF([test x"$TPUT" != x""], [
--              if x=$($TPUT el 2>/dev/null); then
--                      AC_SUBST(TERM_EL, "$x")
--              else
--                      AC_SUBST(TERM_EL, "$($TPUT ce 2>/dev/null)")
--              fi
-+              AS_IF([test x"$TPUT" != x""], [
-+                      if x=$($TPUT el 2>/dev/null); then
-+                              AC_SUBST(TERM_EL, "$x")
-+                      else
-+                              AC_SUBST(TERM_EL, "$($TPUT ce 2>/dev/null)")
-+                      fi

--              if x=$($TPUT sgr0 2>/dev/null); then
--                      AC_SUBST(TERM_SGR0, "$x")
--              else
--                      AC_SUBST(TERM_SGR0, "$($TPUT me 2>/dev/null)")
--              fi
-+                      if x=$($TPUT sgr0 2>/dev/null); then
-+                              AC_SUBST(TERM_SGR0, "$x")
-+                      else
-+                              AC_SUBST(TERM_SGR0, "$($TPUT me 2>/dev/null)")
-+                      fi

--              if x=$($TPUT bold 2>/dev/null); then
--                      AC_SUBST(TERM_BOLD, "$x")
--              else
--                      AC_SUBST(TERM_BOLD, "$($TPUT md 2>/dev/null)")
--              fi
-+                      if x=$($TPUT bold 2>/dev/null); then
-+                              AC_SUBST(TERM_BOLD, "$x")
-+                      else
-+                              AC_SUBST(TERM_BOLD, "$($TPUT md 2>/dev/null)")
-+                      fi

--              if x=$($TPUT setaf 1 2>/dev/null); then
--                      AC_SUBST(TERM_SETAF1, "$x")
--                      AC_SUBST(TERM_SETAF2, "$($TPUT setaf 2 2>/dev/null)")
--                      AC_SUBST(TERM_SETAF3, "$($TPUT setaf 3 2>/dev/null)")
--                      AC_SUBST(TERM_SETAF4, "$($TPUT setaf 4 2>/dev/null)")
--                      AC_SUBST(TERM_SETAF6, "$($TPUT setaf 6 2>/dev/null)")
--              else
--                      AC_SUBST(TERM_SETAF1, "$($TPUT AF 1 2>/dev/null)")
--                      AC_SUBST(TERM_SETAF2, "$($TPUT AF 2 2>/dev/null)")
--                      AC_SUBST(TERM_SETAF3, "$($TPUT AF 3 2>/dev/null)")
--                      AC_SUBST(TERM_SETAF4, "$($TPUT AF 4 2>/dev/null)")
--                      AC_SUBST(TERM_SETAF6, "$($TPUT AF 6 2>/dev/null)")
--              fi
--      ], [
--              AC_SUBST(TERM_EL, '\033\133K')
--              AC_SUBST(TERM_SGR0, '\033\133m')
--              AC_SUBST(TERM_BOLD, '\033\1331m')
--              AC_SUBST(TERM_SETAF1, '\033\13331m')
--              AC_SUBST(TERM_SETAF2, '\033\13332m')
--              AC_SUBST(TERM_SETAF3, '\033\13333m')
--              AC_SUBST(TERM_SETAF4, '\033\13334m')
--              AC_SUBST(TERM_SETAF6, '\033\13336m')
-+                      if x=$($TPUT setaf 1 2>/dev/null); then
-+                              AC_SUBST(TERM_SETAF1, "$x")
-+                              AC_SUBST(TERM_SETAF2,
-+                                      "$($TPUT setaf 2 2>/dev/null)")
-+                              AC_SUBST(TERM_SETAF3,
-+                                      "$($TPUT setaf 3 2>/dev/null)")
-+                              AC_SUBST(TERM_SETAF4,
-+                                      "$($TPUT setaf 4 2>/dev/null)")
-+                              AC_SUBST(TERM_SETAF6,
-+                                      "$($TPUT setaf 6 2>/dev/null)")
-+                      else
-+                              AC_SUBST(TERM_SETAF1,
-+                                      "$($TPUT AF 1 2>/dev/null)")
-+                              AC_SUBST(TERM_SETAF2,
-+                                      "$($TPUT AF 2 2>/dev/null)")
-+                              AC_SUBST(TERM_SETAF3,
-+                                      "$($TPUT AF 3 2>/dev/null)")
-+                              AC_SUBST(TERM_SETAF4,
-+                                      "$($TPUT AF 4 2>/dev/null)")
-+                              AC_SUBST(TERM_SETAF6,
-+                                      "$($TPUT AF 6 2>/dev/null)")
-+                      fi
-+              ], [
-+                      AC_SUBST(TERM_EL, '\033\133K')
-+                      AC_SUBST(TERM_SGR0, '\033\133m')
-+                      AC_SUBST(TERM_BOLD, '\033\1331m')
-+                      AC_SUBST(TERM_SETAF1, '\033\13331m')
-+                      AC_SUBST(TERM_SETAF2, '\033\13332m')
-+                      AC_SUBST(TERM_SETAF3, '\033\13333m')
-+                      AC_SUBST(TERM_SETAF4, '\033\13334m')
-+                      AC_SUBST(TERM_SETAF6, '\033\13336m')
-+              ])
-       ])
--])

--AC_CONFIG_COMMANDS_POST([
--      ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
--      for i in $(find . -name Makefile); do
--              DEPSFILE="$(dirname $i)/.deps"
--              test -f "$DEPSFILE" && rm "$DEPSFILE"
--              touch -t 0001010000 "$DEPSFILE"
--      done
-+      AC_CONFIG_COMMANDS_POST([
-+              ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
-+              for i in $(find . -name Makefile); do
-+                      DEPSFILE="$(dirname $i)/.deps"
-+                      test -f "$DEPSFILE" && rm "$DEPSFILE"
-+                      touch -t 0001010000 "$DEPSFILE"
-+              done
-+      ])
- ])

- AC_DEFUN([BUILDSYS_PROG_IMPLIB], [
-@@ -108,31 +119,32 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
-       case "$host_os" in
-               darwin*)
-                       AC_MSG_RESULT(Darwin)
--                      LIB_CFLAGS='-fPIC -DPIC -mmacosx-version-min=10.7'
--                      LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR} -mmacosx-version-min=10.7 -install_name "${libdir}/$$(i=${SHARED_LIB}; echo $${i%${LIB_SUFFIX}}).${LIB_MAJOR}${LIB_SUFFIX}"'
-+                      LIB_CFLAGS='-fPIC -DPIC'
-+                      LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
-                       LIB_PREFIX='lib'
-                       LIB_SUFFIX='.dylib'
-                       LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
--                      PLUGIN_CFLAGS='-fPIC -DPIC -mmacosx-version-min=10.7'
--                      PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup -mmacosx-version-min=10.7'
-+                      LDFLAGS_INSTALL_NAME='-Wl,-install_name,${libdir}/$${out%.dylib}.${LIB_MAJOR}.dylib'
-+                      PLUGIN_CFLAGS='-fPIC -DPIC'
-+                      PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup'
-                       PLUGIN_SUFFIX='.bundle'
-                       INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i'
-                       UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib'
-                       CLEAN_LIB=''
-                       ;;
--              solaris*)
--                      AC_MSG_RESULT(Solaris)
--                      LIB_CFLAGS='-fPIC -DPIC'
--                      LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}'
-+              mingw* | cygwin*)
-+                      AC_MSG_RESULT(MinGW / Cygwin)
-+                      LIB_CFLAGS=''
-+                      LIB_LDFLAGS='-shared -Wl,--out-implib,${SHARED_LIB}.a'
-                       LIB_PREFIX='lib'
--                      LIB_SUFFIX='.so'
-+                      LIB_SUFFIX='.dll'
-                       LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
--                      PLUGIN_CFLAGS='-fPIC -DPIC'
-+                      PLUGIN_CFLAGS=''
-                       PLUGIN_LDFLAGS='-shared'
--                      PLUGIN_SUFFIX='.so'
--                      INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i'
--                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}'
--                      CLEAN_LIB=''
-+                      PLUGIN_SUFFIX='.dll'
-+                      INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a'
-+                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a'
-+                      CLEAN_LIB='${SHARED_LIB}.a'
-                       ;;
-               openbsd* | mirbsd*)
-                       AC_MSG_RESULT(OpenBSD)
-@@ -148,22 +160,22 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
-                       UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i'
-                       CLEAN_LIB=''
-                       ;;
--              cygwin* | mingw*)
--                      AC_MSG_RESULT(Win32)
--                      LIB_CFLAGS=''
--                      LIB_LDFLAGS='-shared -Wl,--out-implib,${SHARED_LIB}.a'
-+              solaris*)
-+                      AC_MSG_RESULT(Solaris)
-+                      LIB_CFLAGS='-fPIC -DPIC'
-+                      LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}'
-                       LIB_PREFIX='lib'
--                      LIB_SUFFIX='.dll'
-+                      LIB_SUFFIX='.so'
-                       LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
--                      PLUGIN_CFLAGS=''
-+                      PLUGIN_CFLAGS='-fPIC -DPIC'
-                       PLUGIN_LDFLAGS='-shared'
--                      PLUGIN_SUFFIX='.dll'
--                      INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a'
--                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a'
--                      CLEAN_LIB='${SHARED_LIB}.a'
-+                      PLUGIN_SUFFIX='.so'
-+                      INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i'
-+                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}'
-+                      CLEAN_LIB=''
-                       ;;
-               *)
--                      AC_MSG_RESULT(GNU)
-+                      AC_MSG_RESULT(ELF)
-                       LIB_CFLAGS='-fPIC -DPIC'
-                       LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}'
-                       LIB_PREFIX='lib'
-@@ -183,6 +195,7 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
-       AC_SUBST(LIB_PREFIX)
-       AC_SUBST(LIB_SUFFIX)
-       AC_SUBST(LDFLAGS_RPATH)
-+      AC_SUBST(LDFLAGS_INSTALL_NAME)
-       AC_SUBST(PLUGIN_CFLAGS)
-       AC_SUBST(PLUGIN_LDFLAGS)
-       AC_SUBST(PLUGIN_SUFFIX)
</del></span></pre></div>
<a id="trunkdportsmultimediaaudaciouspluginsfilespatchdroplibcdifffromrev153443trunkdportsmultimediaaudaciouspluginsfilespatchacincludem4droplibcswitchfromgnu11toc11diff"></a>
<div class="copfile"><h4>Copied: trunk/dports/multimedia/audacious-plugins/files/patch-drop-libc++.diff (from rev 153443, trunk/dports/multimedia/audacious-plugins/files/patch-acinclude.m4-drop-libc++-switch-from-gnu++11-to-c++11.diff) (0 => 153444)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/multimedia/audacious-plugins/files/patch-drop-libc++.diff                           (rev 0)
+++ trunk/dports/multimedia/audacious-plugins/files/patch-drop-libc++.diff      2016-09-30 11:15:27 UTC (rev 153444)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+--- acinclude.m4.old
++++ acinclude.m4
+@@ -83,8 +83,8 @@ AC_REQUIRE([AC_SYS_LARGEFILE])
+ if test "x$GCC" = "xyes"; then
+     CFLAGS="$CFLAGS -std=gnu99 -ffast-math -Wall -pipe"
+     if test "x$HAVE_DARWIN" = "xyes"; then
+-        CXXFLAGS="$CXXFLAGS -stdlib=libc++ -std=gnu++11 -ffast-math -Wall -pipe"
+-        LDFLAGS="$LDFLAGS -lc++ -stdlib=libc++"
++        CXXFLAGS="$CXXFLAGS -std=gnu++11 -ffast-math -Wall -pipe"
++        LDFLAGS="$LDFLAGS"
+     else
+         CXXFLAGS="$CXXFLAGS -std=gnu++11 -ffast-math -Wall -pipe"
+     fi
+@@ -101,7 +101,7 @@ if test "x$HAVE_DARWIN" = "xyes"; then
+     AC_PROG_OBJCXX
+     AC_PROG_OBJCXXCPP

+-    OBJCXXFLAGS="$OBJCXXFLAGS -stdlib=libc++ -std=c++11"
++    OBJCXXFLAGS="$OBJCXXFLAGS -std=c++11"
+ fi

+ dnl Enable "-Wl,-z,defs" only on Linux
</ins></span></pre></div>
<a id="trunkdportsmultimediaaudaciouspluginsfilespatchgtk3diff"></a>
<div class="modfile"><h4>Modified: trunk/dports/multimedia/audacious-plugins/files/patch-gtk3.diff (153443 => 153444)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/multimedia/audacious-plugins/files/patch-gtk3.diff  2016-09-30 11:15:18 UTC (rev 153443)
+++ trunk/dports/multimedia/audacious-plugins/files/patch-gtk3.diff     2016-09-30 11:15:27 UTC (rev 153444)
</span><span class="lines">@@ -11,63 +11,18 @@
</span><span class="cx">  
</span><span class="cx"> --- configure.ac.old
</span><span class="cx"> +++ configure.ac
</span><del>-@@ -75,7 +75,7 @@ TRANSPORT_PLUGINS="gio"
</del><ins>+@@ -450,7 +450,7 @@ ENABLE_PLUGIN_WITH_DEP(hotkey,
+     auto,
+     GENERAL,
+     GDKX11,
+-    gdk-x11-2.0)
++    gdk-x11-3.0)
</ins><span class="cx">  
</span><del>- if test "x$USE_GTK" = "xyes" ; then
-     EFFECT_PLUGINS="$EFFECT_PLUGINS ladspa"
--    GENERAL_PLUGINS="$GENERAL_PLUGINS alarm albumart delete-files lyricwiki playlist-manager search-tool statusicon"
-+    GENERAL_PLUGINS="$GENERAL_PLUGINS alarm albumart delete-files lyricwiki playlist-manager search-tool"
-     GENERAL_PLUGINS="$GENERAL_PLUGINS gtkui skins"
-     VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS blur_scope cairo-spectrum"
- fi
-@@ -194,11 +194,11 @@ if test $enable_hotkey = yes -a $USE_GTK != yes ; then
- fi

- if test $enable_hotkey != no -a $USE_GTK = yes ; then
--    PKG_CHECK_MODULES(GDKX11, [gdk-x11-2.0],
-+    PKG_CHECK_MODULES(GDKX11, [gdk-x11-3.0],
-         [have_hotkey="yes"
-          GENERAL_PLUGINS="$GENERAL_PLUGINS hotkey"],
-         [if test "x$enable_hotkey" = "xyes"; then
--            AC_MSG_ERROR([Cannot find gdk-x11-2.0 development files, but compilation of X11 Global Hotkey plugin has been explicitly requested; please install gdk-x11-2.0 dev files and run configure again])
-+            AC_MSG_ERROR([Cannot find gdk-x11-3.0 development files, but compilation of X11 Global Hotkey plugin has been explicitly requested; please install gdk-x11-3.0 dev files and run configure again])
-          fi]
-     )
- fi
-@@ -260,6 +260,21 @@ if test $enable_songchange != no ; then
-     )
- fi

-+dnl Status Icon
-+dnl ===========
-+
-+AC_ARG_ENABLE(statusicon,
-+ [AS_HELP_STRING([--enable-statusicon], [enable X11 Status Icon plugin (default=disabled)])],
-+ [have_statusicon=$enableval], [have_statusicon="no"])
-+
-+if test $have_statusicon = yes -a $USE_GTK != yes ; then
-+    AC_MSG_ERROR([--enable-statusicon cannot be used without --enable-gtk])
-+fi
-+
-+if test $have_statusicon != no ; then
-+    GENERAL_PLUGINS="$GENERAL_PLUGINS statusicon"
-+fi
-+
- dnl *** Audacious OSD plugin (pangocairo-based)

- AC_ARG_ENABLE(aosd,
-@@ -1112,7 +1127,7 @@ echo "  Search Tool:                            $USE_GTK"
- echo "  Search Tool (Qt):                       $USE_QT"
- echo "  Song Change:                            $have_songchange"
- echo "  Song Info (Qt):                         $USE_QT"
--echo "  Status Icon:                            $USE_GTK"
-+echo "  Status Icon:                            $have_statusicon"
- echo "  Status Icon (Qt):                       $USE_QT"
- echo "  Audacious OSD:                          $have_aosd"
- echo "    -> X Composite support:               $have_aosd_xcomp"
</del><ins>+ ENABLE_PLUGIN_WITH_DEP(aosd,
+     X11 OSD,
</ins><span class="cx"> --- src/alarm/interface.cc.old
</span><span class="cx"> +++ src/alarm/interface.cc
</span><del>-@@ -23,6 +23,10 @@
</del><ins>+@@ -24,6 +24,10 @@
</ins><span class="cx">  
</span><span class="cx">  #include "callbacks.h"
</span><span class="cx">  
</span><span class="lines">@@ -78,7 +33,7 @@
</span><span class="cx">  static const char help_text[] =
</span><span class="cx">   N_("Time\n"
</span><span class="cx">      "  Alarm at:\n"
</span><del>-@@ -164,62 +168,67 @@ GtkWidget *create_config_notebook ()
</del><ins>+@@ -158,62 +162,71 @@ GtkWidget *create_config_notebook ()
</ins><span class="cx">  
</span><span class="cx">      /* Page 1 */
</span><span class="cx">      frame = gtk_frame_new (_("Time"));
</span><span class="lines">@@ -101,6 +56,7 @@
</span><span class="cx"> -    adjustment = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0);
</span><span class="cx"> +    adjustment = gtk_adjustment_new (6, 0, 23, 1, 10, 0);
</span><span class="cx">      alarm_h_spin = gtk_spin_button_new (adjustment, 1, 0);
</span><ins>++    gtk_widget_set_valign (alarm_h_spin, GTK_ALIGN_CENTER);
</ins><span class="cx">      g_object_set_data (G_OBJECT (notebook), "alarm_h_spin", alarm_h_spin);
</span><span class="cx">      gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (alarm_h_spin), GTK_UPDATE_IF_VALID);
</span><span class="cx">      gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (alarm_h_spin), true);
</span><span class="lines">@@ -115,6 +71,7 @@
</span><span class="cx"> -    adjustment = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0);
</span><span class="cx"> +    adjustment = gtk_adjustment_new (30, 0, 59, 1, 10, 0);
</span><span class="cx">      alarm_m_spin = gtk_spin_button_new (adjustment, 1, 0);
</span><ins>++    gtk_widget_set_valign (alarm_m_spin, GTK_ALIGN_CENTER);
</ins><span class="cx">      g_object_set_data (G_OBJECT (notebook), "alarm_m_spin", alarm_m_spin);
</span><span class="cx">      gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (alarm_m_spin), GTK_UPDATE_IF_VALID);
</span><span class="cx">      gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (alarm_m_spin), true);
</span><span class="lines">@@ -137,6 +94,7 @@
</span><span class="cx"> -    adjustment = (GtkAdjustment *) gtk_adjustment_new (0, 0, 100, 1, 10, 0);
</span><span class="cx"> +    adjustment = gtk_adjustment_new (0, 0, 100, 1, 10, 0);
</span><span class="cx">      stop_h_spin = gtk_spin_button_new (adjustment, 1, 0);
</span><ins>++    gtk_widget_set_valign (stop_h_spin, GTK_ALIGN_CENTER);
</ins><span class="cx">      g_object_set_data (G_OBJECT (notebook), "stop_h_spin", stop_h_spin);
</span><span class="cx">      gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (stop_h_spin), GTK_UPDATE_IF_VALID);
</span><span class="cx">      gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (stop_h_spin), true);
</span><span class="lines">@@ -152,6 +110,7 @@
</span><span class="cx"> -    adjustment = (GtkAdjustment *) gtk_adjustment_new (0, 0, 59, 1, 10, 0);
</span><span class="cx"> +    adjustment = gtk_adjustment_new (0, 0, 59, 1, 10, 0);
</span><span class="cx">      stop_m_spin = gtk_spin_button_new (adjustment, 1, 0);
</span><ins>++    gtk_widget_set_valign (stop_m_spin, GTK_ALIGN_CENTER);
</ins><span class="cx">      g_object_set_data (G_OBJECT (notebook), "stop_m_spin", stop_m_spin);
</span><span class="cx">      gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (stop_m_spin), GTK_UPDATE_IF_VALID);
</span><span class="cx">      gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (stop_m_spin), true);
</span><span class="lines">@@ -165,7 +124,7 @@
</span><span class="cx">      gtk_container_add (GTK_CONTAINER (frame), grid);
</span><span class="cx">  
</span><span class="cx">      label = gtk_label_new (_("Time"));
</span><del>-@@ -228,24 +237,25 @@ GtkWidget *create_config_notebook ()
</del><ins>+@@ -222,24 +235,25 @@ GtkWidget *create_config_notebook ()
</ins><span class="cx">  
</span><span class="cx">      /* Page 2 */
</span><span class="cx">      frame = gtk_frame_new (_("Choose the days for the alarm to come on"));
</span><span class="lines">@@ -199,7 +158,7 @@
</span><span class="cx">      }
</span><span class="cx">      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget[6]), false);
</span><span class="cx">  
</span><del>-@@ -254,30 +264,31 @@ GtkWidget *create_config_notebook ()
</del><ins>+@@ -248,30 +262,31 @@ GtkWidget *create_config_notebook ()
</ins><span class="cx">          checkbutton = gtk_check_button_new_with_label (_("Default"));
</span><span class="cx">          g_object_set_data (G_OBJECT (notebook), day_def[i], checkbutton);
</span><span class="cx">          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), true);
</span><span class="lines">@@ -237,7 +196,7 @@
</span><span class="cx">      }
</span><span class="cx">  
</span><span class="cx">      label = gtk_label_new (_("Days"));
</span><del>-@@ -286,110 +297,117 @@ GtkWidget *create_config_notebook ()
</del><ins>+@@ -280,107 +295,113 @@ GtkWidget *create_config_notebook ()
</ins><span class="cx">  
</span><span class="cx">  
</span><span class="cx">      /* Page 3 */
</span><span class="lines">@@ -363,15 +322,10 @@
</span><span class="cx"> +    hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
</span><span class="cx"> +    gtk_container_set_border_width (GTK_CONTAINER (frame), 10);
</span><span class="cx"> +    gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
</span><del>-     playlist_entry = gtk_entry_new ();
</del><ins>+     playlist_entry = audgui_file_entry_new (GTK_FILE_CHOOSER_ACTION_OPEN, _("Select a playlist"));
</ins><span class="cx">      g_object_set_data (G_OBJECT (notebook), "playlist", playlist_entry);
</span><span class="cx">  
</span><del>-     file_chooser_button = gtk_file_chooser_button_new (_("Select a playlist"), GTK_FILE_CHOOSER_ACTION_OPEN);
-+    gtk_widget_set_valign (file_chooser_button, GTK_ALIGN_CENTER);
-     g_signal_connect (file_chooser_button, "file-set", G_CALLBACK (file_set_cb), playlist_entry);
</del><span class="cx">      gtk_box_pack_start (GTK_BOX (hbox), playlist_entry, true, true, 0);
</span><del>--    gtk_box_pack_start (GTK_BOX (hbox), file_chooser_button, true, true, 0);
-+    gtk_container_add (GTK_CONTAINER (hbox), file_chooser_button);
</del><span class="cx">      gtk_container_add (GTK_CONTAINER (frame), hbox);
</span><span class="cx"> -    gtk_box_pack_start (GTK_BOX (vbox), frame, false, false, 0);
</span><span class="cx"> +    gtk_container_add (GTK_CONTAINER (vbox), frame);
</span><span class="lines">@@ -396,7 +350,7 @@
</span><span class="cx">  
</span><span class="cx">      label = gtk_label_new (_("Options"));
</span><span class="cx">      gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label);
</span><del>-@@ -397,7 +415,7 @@ GtkWidget *create_config_notebook ()
</del><ins>+@@ -388,7 +409,7 @@ GtkWidget *create_config_notebook ()
</ins><span class="cx">  
</span><span class="cx">      /* Page 5 */
</span><span class="cx">      frame = gtk_frame_new (_("What do these options mean?"));
</span><span class="lines">@@ -405,8 +359,8 @@
</span><span class="cx">      view = gtk_text_view_new ();
</span><span class="cx">      gtk_text_view_set_editable (GTK_TEXT_VIEW (view), false);
</span><span class="cx">      gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), false);
</span><del>---- src/amidi-plug/i_configure-fluidsynth.cc.old
-+++ src/amidi-plug/i_configure-fluidsynth.cc
</del><ins>+--- src/amidiplug/i_configure-fluidsynth.cc.old
++++ src/amidiplug/i_configure-fluidsynth.cc
</ins><span class="cx"> @@ -218,9 +218,8 @@ void * create_soundfont_list ()
</span><span class="cx">              g_strfreev (sffiles);
</span><span class="cx">          }
</span><span class="lines">@@ -427,8 +381,8 @@
</span><span class="cx">          soundfont_file_bbox_addbt = gtk_button_new();
</span><span class="cx">          gtk_button_set_image (GTK_BUTTON (soundfont_file_bbox_addbt),
</span><span class="cx">                                gtk_image_new_from_icon_name ("list-add", GTK_ICON_SIZE_MENU));
</span><del>---- src/amidi-plug/i_fileinfo.cc.old
-+++ src/amidi-plug/i_fileinfo.cc
</del><ins>+--- src/amidiplug/i_fileinfo.cc.old
++++ src/amidiplug/i_fileinfo.cc
</ins><span class="cx"> @@ -49,11 +49,14 @@ void i_fileinfo_grid_add_entry (char * field_text, char * value_text,
</span><span class="cx">      GtkWidget * field, *value;
</span><span class="cx">      field = gtk_label_new (field_text);
</span><span class="lines">@@ -592,7 +546,7 @@
</span><span class="cx">  
</span><span class="cx">    return false;
</span><span class="cx">  }
</span><del>-@@ -157,16 +159,16 @@ aosd_ui_configure_position ( aosd_cfg_t * cfg )
</del><ins>+@@ -156,16 +158,16 @@ aosd_ui_configure_position ( aosd_cfg_t * cfg )
</ins><span class="cx">    int monitors_num = gdk_screen_get_n_monitors( gdk_screen_get_default() );
</span><span class="cx">    int i = 0;
</span><span class="cx">  
</span><span class="lines">@@ -612,7 +566,7 @@
</span><span class="cx">    for ( i = 0 ; i < 9 ; i++ )
</span><span class="cx">    {
</span><span class="cx">      if ( i == 0 )
</span><del>-@@ -177,10 +179,9 @@ aosd_ui_configure_position ( aosd_cfg_t * cfg )
</del><ins>+@@ -176,10 +178,9 @@ aosd_ui_configure_position ( aosd_cfg_t * cfg )
</ins><span class="cx">      pos_placement_bt_darea[i] = gtk_drawing_area_new();
</span><span class="cx">      gtk_widget_set_size_request( pos_placement_bt_darea[i] , 40 , 40 );
</span><span class="cx">      gtk_container_add( GTK_CONTAINER(pos_placement_bt[i]) , pos_placement_bt_darea[i] );
</span><span class="lines">@@ -625,7 +579,7 @@
</span><span class="cx">      g_object_set_data( G_OBJECT(pos_placement_bt[i]) , "value" , GINT_TO_POINTER(i+1) );
</span><span class="cx">      if ( cfg->position.placement == (i+1) )
</span><span class="cx">        gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(pos_placement_bt[i]) , true );
</span><del>-@@ -188,38 +189,38 @@ aosd_ui_configure_position ( aosd_cfg_t * cfg )
</del><ins>+@@ -187,38 +188,38 @@ aosd_ui_configure_position ( aosd_cfg_t * cfg )
</ins><span class="cx">    gtk_box_pack_start( GTK_BOX(pos_placement_hbox) , pos_placement_grid , false , false , 0 );
</span><span class="cx">    aosd_cb_list.append( pos_placement_grid , aosd_cb_configure_position_placement_commit );
</span><span class="cx">  
</span><span class="lines">@@ -678,7 +632,7 @@
</span><span class="cx">    gtk_container_set_border_width( GTK_CONTAINER(pos_multimon_hbox) , 6 );
</span><span class="cx">    gtk_container_add( GTK_CONTAINER(pos_multimon_frame), pos_multimon_hbox );
</span><span class="cx">    pos_multimon_label = gtk_label_new( _("Display OSD using:") );
</span><del>-@@ -245,7 +246,7 @@ static GtkWidget *
</del><ins>+@@ -244,7 +245,7 @@ static GtkWidget *
</ins><span class="cx">  aosd_ui_configure_animation_timing ( char * label_string )
</span><span class="cx">  {
</span><span class="cx">    GtkWidget *hbox, *desc_label, *spinbt;
</span><span class="lines">@@ -687,7 +641,7 @@
</span><span class="cx">    desc_label = gtk_label_new( label_string );
</span><span class="cx">    spinbt = gtk_spin_button_new_with_range( 0 , 99999 , 1 );
</span><span class="cx">    gtk_box_pack_start( GTK_BOX(hbox) , desc_label , false , false , 0 );
</span><del>-@@ -275,10 +276,10 @@ aosd_ui_configure_animation ( aosd_cfg_t * cfg )
</del><ins>+@@ -274,10 +275,10 @@ aosd_ui_configure_animation ( aosd_cfg_t * cfg )
</ins><span class="cx">    GtkWidget *ani_timing_fadein_widget, *ani_timing_fadeout_widget, *ani_timing_stay_widget;
</span><span class="cx">    GtkSizeGroup *sizegroup;
</span><span class="cx">  
</span><span class="lines">@@ -700,7 +654,7 @@
</span><span class="cx">    ani_timing_frame = gtk_frame_new( _("Timing (ms)") );
</span><span class="cx">    gtk_container_set_border_width( GTK_CONTAINER(ani_timing_hbox) , 6 );
</span><span class="cx">    gtk_container_add( GTK_CONTAINER(ani_timing_frame) , ani_timing_hbox );
</span><del>-@@ -288,12 +289,12 @@ aosd_ui_configure_animation ( aosd_cfg_t * cfg )
</del><ins>+@@ -287,12 +288,12 @@ aosd_ui_configure_animation ( aosd_cfg_t * cfg )
</ins><span class="cx">    gtk_spin_button_set_value( GTK_SPIN_BUTTON(g_object_get_data(
</span><span class="cx">      G_OBJECT(ani_timing_stay_widget),"spinbt")) , cfg->animation.timing_display );
</span><span class="cx">    gtk_box_pack_start( GTK_BOX(ani_timing_hbox) , ani_timing_stay_widget , true , true , 0 );
</span><span class="lines">@@ -715,7 +669,7 @@
</span><span class="cx">    ani_timing_fadeout_widget = aosd_ui_configure_animation_timing( _("Fade out:") );
</span><span class="cx">    gtk_spin_button_set_value( GTK_SPIN_BUTTON(g_object_get_data(
</span><span class="cx">      G_OBJECT(ani_timing_fadeout_widget),"spinbt")) , cfg->animation.timing_fadeout );
</span><del>-@@ -329,7 +330,7 @@ static void
</del><ins>+@@ -328,7 +329,7 @@ static void
</ins><span class="cx">  aosd_cb_configure_text_font_commit ( GtkWidget * fontbt , aosd_cfg_t * cfg )
</span><span class="cx">  {
</span><span class="cx">    int fontnum = GPOINTER_TO_INT(g_object_get_data( G_OBJECT(fontbt) , "fontnum" ));
</span><span class="lines">@@ -724,7 +678,7 @@
</span><span class="cx">  
</span><span class="cx">    cfg->text.fonts_name[fontnum] =
</span><span class="cx">     String (gtk_font_button_get_font_name (GTK_FONT_BUTTON (fontbt)));
</span><del>-@@ -337,10 +338,10 @@ aosd_cb_configure_text_font_commit ( GtkWidget * fontbt , aosd_cfg_t * cfg )
</del><ins>+@@ -336,10 +337,10 @@ aosd_cb_configure_text_font_commit ( GtkWidget * fontbt , aosd_cfg_t * cfg )
</ins><span class="cx">    cfg->text.fonts_draw_shadow[fontnum] = gtk_toggle_button_get_active(
</span><span class="cx">      GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(fontbt),"use_shadow")) );
</span><span class="cx">  
</span><span class="lines">@@ -737,7 +691,7 @@
</span><span class="cx">    chooser_get_aosd_color (chooser, & cfg->text.fonts_shadow_color[fontnum]);
</span><span class="cx">  }
</span><span class="cx">  
</span><del>-@@ -355,14 +356,14 @@ aosd_ui_configure_text ( aosd_cfg_t * cfg )
</del><ins>+@@ -354,14 +355,14 @@ aosd_ui_configure_text ( aosd_cfg_t * cfg )
</ins><span class="cx">    GtkWidget *tex_font_shadow_colorbt[3];
</span><span class="cx">    int i = 0;
</span><span class="cx">  
</span><span class="lines">@@ -756,7 +710,7 @@
</span><span class="cx">    for ( i = 0 ; i < AOSD_TEXT_FONTS_NUM ; i++ )
</span><span class="cx">    {
</span><span class="cx">      char *label_str = g_strdup_printf( _("Font %i:") , i+1 );
</span><del>-@@ -374,16 +375,17 @@ aosd_ui_configure_text ( aosd_cfg_t * cfg )
</del><ins>+@@ -373,16 +374,17 @@ aosd_ui_configure_text ( aosd_cfg_t * cfg )
</ins><span class="cx">      gtk_font_button_set_use_font( GTK_FONT_BUTTON(tex_font_fontbt[i]) , false );
</span><span class="cx">      gtk_font_button_set_use_size( GTK_FONT_BUTTON(tex_font_fontbt[i]) , false );
</span><span class="cx">      gtk_font_button_set_font_name( GTK_FONT_BUTTON(tex_font_fontbt[i]) , cfg->text.fonts_name[i] );
</span><span class="lines">@@ -776,7 +730,7 @@
</span><span class="cx">       & cfg->text.fonts_shadow_color[i]);
</span><span class="cx">  
</span><span class="cx">      gtk_widget_set_sensitive( tex_font_shadow_colorbt[i] , false );
</span><del>-@@ -392,11 +394,11 @@ aosd_ui_configure_text ( aosd_cfg_t * cfg )
</del><ins>+@@ -391,11 +393,11 @@ aosd_ui_configure_text ( aosd_cfg_t * cfg )
</ins><span class="cx">                        tex_font_shadow_colorbt[i] );
</span><span class="cx">      gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(tex_font_shadow_togglebt[i]) ,
</span><span class="cx">        cfg->text.fonts_draw_shadow[i] );
</span><span class="lines">@@ -793,7 +747,7 @@
</span><span class="cx">      g_object_set_data( G_OBJECT(tex_font_fontbt[i]) , "fontnum" , GINT_TO_POINTER(i) );
</span><span class="cx">      g_object_set_data( G_OBJECT(tex_font_fontbt[i]) , "color" , tex_font_colorbt[i] );
</span><span class="cx">      g_object_set_data( G_OBJECT(tex_font_fontbt[i]) , "use_shadow" , tex_font_shadow_togglebt[i] );
</span><del>-@@ -430,7 +432,7 @@ static void
</del><ins>+@@ -429,7 +431,7 @@ static void
</ins><span class="cx">  aosd_cb_configure_decoration_color_commit ( GtkWidget * colorbt , aosd_cfg_t * cfg )
</span><span class="cx">  {
</span><span class="cx">    aosd_color_t color;
</span><span class="lines">@@ -802,7 +756,7 @@
</span><span class="cx">  
</span><span class="cx">    int colnum = GPOINTER_TO_INT( g_object_get_data( G_OBJECT(colorbt) , "colnum" ) );
</span><span class="cx">    cfg->decoration.colors[colnum] = color;
</span><del>-@@ -451,7 +453,7 @@ aosd_ui_configure_decoration ( aosd_cfg_t * cfg )
</del><ins>+@@ -450,7 +452,7 @@ aosd_ui_configure_decoration ( aosd_cfg_t * cfg )
</ins><span class="cx">    GtkWidget *dec_rstyleopts_frame, *dec_rstyleopts_grid;
</span><span class="cx">    int colors_max_num = 0, i = 0;
</span><span class="cx">  
</span><span class="lines">@@ -811,7 +765,7 @@
</span><span class="cx">    gtk_container_set_border_width( GTK_CONTAINER(dec_hbox) , 6 );
</span><span class="cx">  
</span><span class="cx">    /* decoration style model
</span><del>-@@ -495,31 +497,31 @@ aosd_ui_configure_decoration ( aosd_cfg_t * cfg )
</del><ins>+@@ -494,31 +496,31 @@ aosd_ui_configure_decoration ( aosd_cfg_t * cfg )
</ins><span class="cx">    gtk_box_pack_start( GTK_BOX(dec_hbox) , dec_rstyle_lv_frame , false , false , 0 );
</span><span class="cx">    aosd_cb_list.append( dec_rstyle_lv , aosd_cb_configure_decoration_style_commit );
</span><span class="cx">  
</span><span class="lines">@@ -850,7 +804,7 @@
</span><span class="cx">      g_object_set_data( G_OBJECT(colorbt) , "colnum" , GINT_TO_POINTER(i) );
</span><span class="cx">      aosd_cb_list.append( colorbt , aosd_cb_configure_decoration_color_commit );
</span><span class="cx">    }
</span><del>-@@ -573,7 +575,7 @@ aosd_ui_configure_trigger ( aosd_cfg_t * cfg )
</del><ins>+@@ -572,7 +574,7 @@ aosd_ui_configure_trigger ( aosd_cfg_t * cfg )
</ins><span class="cx">    gtk_notebook_set_show_tabs( GTK_NOTEBOOK(tri_event_nb) , false );
</span><span class="cx">    gtk_notebook_set_show_border( GTK_NOTEBOOK(tri_event_nb) , false );
</span><span class="cx">  
</span><span class="lines">@@ -859,7 +813,7 @@
</span><span class="cx">    gtk_container_set_border_width( GTK_CONTAINER(tri_hbox) , 6 );
</span><span class="cx">  
</span><span class="cx">    /* trigger model
</span><del>-@@ -591,19 +593,19 @@ aosd_ui_configure_trigger ( aosd_cfg_t * cfg )
</del><ins>+@@ -590,19 +592,19 @@ aosd_ui_configure_trigger ( aosd_cfg_t * cfg )
</ins><span class="cx">      gtk_list_store_set( tri_event_store , &iter ,
</span><span class="cx">        0 , _(aosd_trigger_get_name( i )) ,
</span><span class="cx">        1 , i , 2 , i , -1 );
</span><span class="lines">@@ -882,7 +836,7 @@
</span><span class="cx">      gtk_box_pack_start( GTK_BOX(vbox) , label , false , false , 0 );
</span><span class="cx">      frame = gtk_frame_new( nullptr );
</span><span class="cx">      gtk_container_add( GTK_CONTAINER(frame) , vbox );
</span><del>-@@ -699,10 +701,10 @@ aosd_ui_configure_misc ( aosd_cfg_t * cfg )
</del><ins>+@@ -698,10 +700,10 @@ aosd_ui_configure_misc ( aosd_cfg_t * cfg )
</ins><span class="cx">    GtkWidget *mis_transp_status_frame, *mis_transp_status_hbox;
</span><span class="cx">    GtkWidget *mis_transp_status_img, *mis_transp_status_label;
</span><span class="cx">  
</span><span class="lines">@@ -895,7 +849,7 @@
</span><span class="cx">    mis_transp_frame = gtk_frame_new( _("Transparency") );
</span><span class="cx">    gtk_container_set_border_width( GTK_CONTAINER(mis_transp_vbox) , 6 );
</span><span class="cx">    gtk_container_add( GTK_CONTAINER(mis_transp_frame) , mis_transp_vbox );
</span><del>-@@ -719,16 +721,15 @@ aosd_ui_configure_misc ( aosd_cfg_t * cfg )
</del><ins>+@@ -718,16 +720,15 @@ aosd_ui_configure_misc ( aosd_cfg_t * cfg )
</ins><span class="cx">    gtk_box_pack_start( GTK_BOX(mis_transp_vbox) , mis_transp_fake_rbt , true , true , 0 );
</span><span class="cx">    gtk_box_pack_start( GTK_BOX(mis_transp_vbox) , mis_transp_real_rbt , true , true , 0 );
</span><span class="cx">  
</span><span class="lines">@@ -1016,7 +970,49 @@
</span><span class="cx">  
</span><span class="cx"> --- src/cairo-spectrum/cairo-spectrum.cc.old
</span><span class="cx"> +++ src/cairo-spectrum/cairo-spectrum.cc
</span><del>-@@ -184,12 +184,29 @@ static void hsv_to_rgb (float h, float s, float v, float * r, float * g, float *
</del><ins>+@@ -123,41 +123,6 @@ void CairoSpectrum::clear ()
+         gtk_widget_queue_draw (spect_widget);
+ }

+-static void rgb_to_hsv (float r, float g, float b, float * h, float * s, float * v)
+-{
+-    float max, min;
+-
+-    max = r;
+-    if (g > max)
+-        max = g;
+-    if (b > max)
+-        max = b;
+-
+-    min = r;
+-    if (g < min)
+-        min = g;
+-    if (b < min)
+-        min = b;
+-
+-    * v = max;
+-
+-    if (max == min)
+-    {
+-        * h = 0;
+-        * s = 0;
+-        return;
+-    }
+-
+-    if (r == max)
+-        * h = 1 + (g - b) / (max - min);
+-    else if (g == max)
+-        * h = 3 + (b - r) / (max - min);
+-    else
+-        * h = 5 + (r - g) / (max - min);
+-
+-    * s = (max - min) / max;
+-}
+-
+ static void hsv_to_rgb (float h, float s, float v, float * r, float * g, float * b)
+ {
+     for (; h >= 2; h -= 2)
+@@ -186,18 +151,15 @@ static void hsv_to_rgb (float h, float s, float v, float * r, float * g, float *
</ins><span class="cx">      * b = v * (1 - s * (1 - * b));
</span><span class="cx">  }
</span><span class="cx">  
</span><span class="lines">@@ -1025,35 +1021,14 @@
</span><span class="cx">  {
</span><span class="cx"> -    GdkColor * c = (gtk_widget_get_style (widget))->base + GTK_STATE_SELECTED;
</span><span class="cx"> -    float h, s, v;
</span><del>-+    static GdkRGBA c;
-+    static gboolean valid = false;
</del><ins>+-
+-    rgb_to_hsv (c->red / 65535.0, c->green / 65535.0, c->blue / 65535.0, & h, & s, & v);
</ins><span class="cx"> +    gfloat h, s, v, n;
</span><span class="cx">  
</span><del>--    rgb_to_hsv (c->red / 65535.0, c->green / 65535.0, c->blue / 65535.0, & h, & s, & v);
-+    if (! valid)
-+    {
-+        /* we want a color that matches the current theme
-+         * selected color of a GtkEntry should be reasonable */
-+        GtkStyleContext * style = gtk_style_context_new ();
-+        GtkWidgetPath * path = gtk_widget_path_new ();
-+        gtk_widget_path_append_type (path, GTK_TYPE_ENTRY);
-+        gtk_style_context_set_path (style, path);
-+        gtk_widget_path_free (path);
-+        gtk_style_context_add_class (style, "entry");
-+        gtk_style_context_get_background_color (style,
-+         (GtkStateFlags) (GTK_STATE_FLAG_FOCUSED | GTK_STATE_FLAG_SELECTED), & c);
-+        g_object_unref (style);
-+        valid = true;
-+    }
-+
-+    rgb_to_hsv (c.red, c.green, c.blue, & h, & s, & v);
</del><ins>+-    if (s < 0.1) /* monochrome theme? use blue instead */
+-        h = 4.6;
++    h = 4.6; /* hard-coded to blue due to repeatedly broken theming in GTK3 */
</ins><span class="cx">  
</span><del>-     if (s < 0.1) /* monochrome theme? use blue instead */
-     {
-@@ -197,8 +214,9 @@ static void get_color (GtkWidget * widget, int i, float * r, float * g, float *
-         s = 0.75;
-     }

</del><span class="cx"> -    s = 1 - 0.9 * i / (bands - 1);
</span><span class="cx"> -    v = 0.75 + 0.25 * i / (bands - 1);
</span><span class="cx"> +    n = i / (gfloat) (bands - 1);
</span><span class="lines">@@ -1062,7 +1037,7 @@
</span><span class="cx">  
</span><span class="cx">      hsv_to_rgb (h, s, v, r, g, b);
</span><span class="cx">  }
</span><del>-@@ -219,7 +237,7 @@ static void draw_visualizer (GtkWidget *widget, cairo_t *cr)
</del><ins>+@@ -218,7 +180,7 @@ static void draw_visualizer (GtkWidget *widget, cairo_t *cr)
</ins><span class="cx">          int x = ((width / bands) * i) + 2;
</span><span class="cx">          float r, g, b;
</span><span class="cx">  
</span><span class="lines">@@ -1071,7 +1046,7 @@
</span><span class="cx">          cairo_set_source_rgb (cr, r, g, b);
</span><span class="cx">          cairo_rectangle (cr, x + 1, height - (bars[i] * height / 40),
</span><span class="cx">           (width / bands) - 1, (bars[i] * height / 40));
</span><del>-@@ -240,14 +258,11 @@ static gboolean configure_event (GtkWidget * widget, GdkEventConfigure * event)
</del><ins>+@@ -239,14 +201,11 @@ static gboolean configure_event (GtkWidget * widget, GdkEventConfigure * event)
</ins><span class="cx">      return true;
</span><span class="cx">  }
</span><span class="cx">  
</span><span class="lines">@@ -1087,7 +1062,7 @@
</span><span class="cx">      return true;
</span><span class="cx">  }
</span><span class="cx">  
</span><del>-@@ -256,7 +271,7 @@ void * CairoSpectrum::get_gtk_widget ()
</del><ins>+@@ -255,7 +214,7 @@ void * CairoSpectrum::get_gtk_widget ()
</ins><span class="cx">      GtkWidget *area = gtk_drawing_area_new();
</span><span class="cx">      spect_widget = area;
</span><span class="cx">  
</span><span class="lines">@@ -1096,252 +1071,9 @@
</span><span class="cx">      g_signal_connect(area, "configure-event", (GCallback) configure_event, nullptr);
</span><span class="cx">      g_signal_connect(area, "destroy", (GCallback) gtk_widget_destroyed, & spect_widget);
</span><span class="cx">  
</span><del>---- src/filewriter/mp3.cc.old
-+++ src/filewriter/mp3.cc
-@@ -563,10 +563,10 @@ void * mp3_configure ()

-         /* Quality */

--        quality_vbox = gtk_vbox_new (false, 5);
-+        quality_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(quality_vbox), 5);

--        quality_hbox1 = gtk_hbox_new (false, 5);
-+        quality_hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_box_pack_start(GTK_BOX(quality_vbox), quality_hbox1, false, false, 0);

-         /* Algorithm Quality */
-@@ -574,7 +574,7 @@ void * mp3_configure ()
-         alg_quality_frame = gtk_frame_new(_("Algorithm Quality:"));
-         gtk_box_pack_start(GTK_BOX(quality_hbox1), alg_quality_frame, true, true, 0);

--        alg_quality_hbox = gtk_hbox_new (false, 5);
-+        alg_quality_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(alg_quality_hbox), 5);
-         gtk_container_add(GTK_CONTAINER(alg_quality_frame),
-                           alg_quality_hbox);
-@@ -594,7 +594,7 @@ void * mp3_configure ()
-         samplerate_frame = gtk_frame_new(_("Output Sample Rate:"));
-         gtk_box_pack_start(GTK_BOX(quality_hbox1), samplerate_frame, true, true, 0);

--        samplerate_hbox = gtk_hbox_new (false, 5);
-+        samplerate_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(samplerate_hbox), 5);
-         gtk_container_add(GTK_CONTAINER(samplerate_frame),
-                           samplerate_hbox);
-@@ -619,7 +619,7 @@ void * mp3_configure ()
-         g_signal_connect (combo, "changed", (GCallback) samplerate_changed, nullptr);

-         samplerate_label = gtk_label_new(_("(Hz)"));
--        gtk_misc_set_alignment(GTK_MISC(samplerate_label), 0, 0.5);
-+        gtk_widget_set_halign(samplerate_label, GTK_ALIGN_START);
-         gtk_box_pack_start(GTK_BOX(samplerate_hbox), samplerate_label, false, false, 0);

-         /* Encoder Quality */
-@@ -628,14 +628,14 @@ void * mp3_configure ()
-         gtk_box_pack_start(GTK_BOX(quality_vbox), enc_quality_frame, false, false, 0);

-         // vbox sorrounding hbox1 and hbox2
--        enc_quality_vbox = gtk_vbox_new (false, 5);
-+        enc_quality_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(enc_quality_vbox), 5);

-         // pack vbox to frame
-         gtk_container_add(GTK_CONTAINER(enc_quality_frame), enc_quality_vbox);

-         // hbox1 for bitrate
--        hbox1 = gtk_hbox_new (false, 5);
-+        hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_add(GTK_CONTAINER(enc_quality_vbox), hbox1);

-         // radio 1
-@@ -664,7 +664,7 @@ void * mp3_configure ()
-         g_signal_connect (combo, "changed", (GCallback) bitrate_changed, nullptr);

-         // hbox2 for compression ratio
--        hbox2 = gtk_hbox_new (false, 5);
-+        hbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_add(GTK_CONTAINER(enc_quality_vbox), hbox2);

-         // radio 2
-@@ -703,7 +703,7 @@ void * mp3_configure ()
-         mode_frame = gtk_frame_new(_("Audio Mode:"));
-         gtk_box_pack_start(GTK_BOX(quality_vbox), mode_frame, false, false, 0);

--        mode_hbox = gtk_hbox_new (false, 5);
-+        mode_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(mode_hbox), 5);
-         gtk_container_add(GTK_CONTAINER(mode_frame), mode_hbox);

-@@ -727,7 +727,7 @@ void * mp3_configure ()
-         misc_frame = gtk_frame_new(_("Miscellaneous:"));
-         gtk_box_pack_start(GTK_BOX(quality_vbox), misc_frame, false, false, 0);

--        misc_vbox = gtk_vbox_new (false, 5);
-+        misc_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(misc_vbox), 5);
-         gtk_container_add(GTK_CONTAINER(misc_frame), misc_vbox);

-@@ -758,7 +758,7 @@ void * mp3_configure ()

-         /* VBR/ABR */

--        vbr_vbox = gtk_vbox_new (false, 5);
-+        vbr_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(vbr_vbox), 5);

-         /* Toggle VBR */
-@@ -767,7 +767,7 @@ void * mp3_configure ()
-         gtk_box_pack_start(GTK_BOX(vbr_vbox), vbr_toggle, false, false, 0);
-         g_signal_connect (vbr_toggle, "toggled", (GCallback) toggle_vbr, nullptr);

--        vbr_options_vbox = gtk_vbox_new (false, 5);
-+        vbr_options_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_add(GTK_CONTAINER(vbr_vbox), vbr_options_vbox);
-         gtk_widget_set_sensitive(vbr_options_vbox, false);

-@@ -776,7 +776,7 @@ void * mp3_configure ()
-         vbr_type_frame = gtk_frame_new(_("Type:"));
-         gtk_box_pack_start(GTK_BOX(vbr_options_vbox), vbr_type_frame, false, false, 0);

--        vbr_type_hbox = gtk_hbox_new (false, 5);
-+        vbr_type_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(vbr_type_hbox), 5);
-         gtk_container_add(GTK_CONTAINER(vbr_type_frame), vbr_type_hbox);

-@@ -804,16 +804,16 @@ void * mp3_configure ()
-         vbr_frame = gtk_frame_new(_("VBR Options:"));
-         gtk_box_pack_start(GTK_BOX(vbr_options_vbox), vbr_frame, false, false, 0);

--        vbr_options_vbox2 = gtk_vbox_new (false, 5);
-+        vbr_options_vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(vbr_options_vbox2), 5);
-         gtk_container_add(GTK_CONTAINER(vbr_frame), vbr_options_vbox2);

--        vbr_options_hbox1 = gtk_hbox_new (false, 5);
-+        vbr_options_hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_add(GTK_CONTAINER(vbr_options_vbox2),
-                           vbr_options_hbox1);

-         vbr_min_label = gtk_label_new(_("Minimum bitrate (kbps):"));
--        gtk_misc_set_alignment(GTK_MISC(vbr_min_label), 0, 0.5);
-+        gtk_widget_set_halign(vbr_min_label, GTK_ALIGN_START);
-         gtk_box_pack_start(GTK_BOX(vbr_options_hbox1), vbr_min_label, false, false, 0);

-         combo = gtk_combo_box_text_new ();
-@@ -831,12 +831,12 @@ void * mp3_configure ()
-         gtk_box_pack_start ((GtkBox *) vbr_options_hbox1, combo, false, false, 0);
-         g_signal_connect (combo, "changed", (GCallback) vbr_min_changed, nullptr);

--        vbr_options_hbox2 = gtk_hbox_new (false, 5);
-+        vbr_options_hbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_add(GTK_CONTAINER(vbr_options_vbox2),
-                           vbr_options_hbox2);

-         vbr_max_label = gtk_label_new(_("Maximum bitrate (kbps):"));
--        gtk_misc_set_alignment(GTK_MISC(vbr_max_label), 0, 0.5);
-+        gtk_widget_set_halign(vbr_max_label, GTK_ALIGN_START);
-         gtk_box_pack_start(GTK_BOX(vbr_options_hbox2), vbr_max_label, false, false, 0);

-         combo = gtk_combo_box_text_new ();
-@@ -871,12 +871,12 @@ void * mp3_configure ()
-         gtk_box_pack_start(GTK_BOX(vbr_options_vbox), abr_frame, false, false, 0);
-         gtk_widget_set_sensitive(abr_frame, false);

--        abr_hbox = gtk_hbox_new (false, 5);
-+        abr_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(abr_hbox), 5);
-         gtk_container_add(GTK_CONTAINER(abr_frame), abr_hbox);

-         abr_label = gtk_label_new(_("Average bitrate (kbps):"));
--        gtk_misc_set_alignment(GTK_MISC(abr_label), 0, 0.5);
-+        gtk_widget_set_halign(abr_label, GTK_ALIGN_START);
-         gtk_box_pack_start(GTK_BOX(abr_hbox), abr_label, false, false, 0);

-         combo = gtk_combo_box_text_new ();
-@@ -896,12 +896,12 @@ void * mp3_configure ()

-         /* Quality Level */

--        vbr_options_hbox3 = gtk_hbox_new (false, 5);
-+        vbr_options_hbox3 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_add(GTK_CONTAINER(vbr_options_vbox),
-                           vbr_options_hbox3);

-         vbr_quality_label = gtk_label_new(_("VBR quality level:"));
--        gtk_misc_set_alignment(GTK_MISC(vbr_quality_label), 0, 0.5);
-+        gtk_widget_set_halign(vbr_quality_label, GTK_ALIGN_START);
-         gtk_box_pack_start(GTK_BOX(vbr_options_hbox3), vbr_quality_label, false, false, 0);

-         vbr_quality_adj = (GtkAdjustment *) gtk_adjustment_new (4, 0, 9, 1, 1, 0);
-@@ -933,7 +933,7 @@ void * mp3_configure ()

-         /* Tags */

--        tags_vbox = gtk_vbox_new (false, 5);
-+        tags_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(tags_vbox), 5);

-         /* Frame Params */
-@@ -941,7 +941,7 @@ void * mp3_configure ()
-         tags_frames_frame = gtk_frame_new(_("Frame Parameters:"));
-         gtk_box_pack_start(GTK_BOX(tags_vbox), tags_frames_frame, false, false, 0);

--        tags_frames_hbox = gtk_hbox_new (false, 5);
-+        tags_frames_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(tags_frames_hbox), 5);
-         gtk_container_add(GTK_CONTAINER(tags_frames_frame),
-                           tags_frames_hbox);
-@@ -972,7 +972,7 @@ void * mp3_configure ()
-         tags_id3_frame = gtk_frame_new(_("ID3 Parameters:"));
-         gtk_box_pack_start(GTK_BOX(tags_vbox), tags_id3_frame, false, false, 0);

--        tags_id3_vbox = gtk_vbox_new (false, 5);
-+        tags_id3_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(tags_id3_vbox), 5);
-         gtk_container_add(GTK_CONTAINER(tags_id3_frame), tags_id3_vbox);

-@@ -983,7 +983,7 @@ void * mp3_configure ()
-         g_signal_connect (tags_force_id3v2_toggle, "toggled", (GCallback)
-          force_v2_toggle, nullptr);

--        tags_id3_hbox = gtk_hbox_new (false, 5);
-+        tags_id3_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_add(GTK_CONTAINER(tags_id3_vbox), tags_id3_hbox);

-         tags_only_v1_toggle =
---- src/filewriter/vorbis.cc.old
-+++ src/filewriter/vorbis.cc
-@@ -188,22 +188,22 @@ static void quality_change(GtkAdjustment *adjustment, void * user_data)

- void * vorbis_configure ()
- {
--        GtkWidget * vbox = gtk_vbox_new (false, 5);
-+        GtkWidget * vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);

-         /* quality options */
-         quality_frame = gtk_frame_new(_("Quality"));
-         gtk_box_pack_start(GTK_BOX(vbox), quality_frame, false, false, 0);

--        quality_vbox = gtk_vbox_new (false, 5);
-+        quality_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
-         gtk_container_set_border_width(GTK_CONTAINER(quality_vbox), 5);
-         gtk_container_add(GTK_CONTAINER(quality_frame), quality_vbox);

-         /* quality option: vbr level */
--        quality_hbox1 = gtk_hbox_new (false, 5);
-+        quality_hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
-         gtk_container_add(GTK_CONTAINER(quality_vbox), quality_hbox1);

-         quality_label = gtk_label_new(_("Quality level (0 - 10):"));
--        gtk_misc_set_alignment(GTK_MISC(quality_label), 0, 0.5);
-+        gtk_widget_set_halign(quality_label, GTK_ALIGN_START);
-         gtk_box_pack_start(GTK_BOX(quality_hbox1), quality_label, false, false, 0);

-         quality_adj = (GtkAdjustment *) gtk_adjustment_new (5, 0, 10, 0.1, 1, 0);
---- src/gl-spectrum/gl-spectrum.cc.old
-+++ src/gl-spectrum/gl-spectrum.cc
-@@ -245,7 +245,7 @@ static void draw_bars ()
</del><ins>+--- src/glspectrum/gl-spectrum.cc.old
++++ src/glspectrum/gl-spectrum.cc
+@@ -246,7 +246,7 @@ static void draw_bars ()
</ins><span class="cx">      glPopMatrix ();
</span><span class="cx">  }
</span><span class="cx">  
</span><span class="lines">@@ -1350,7 +1082,7 @@
</span><span class="cx">  {
</span><span class="cx">  #ifdef GDK_WINDOWING_X11
</span><span class="cx">      if (! s_context)
</span><del>-@@ -416,7 +416,7 @@ void * GLSpectrum::get_gtk_widget ()
</del><ins>+@@ -417,13 +417,17 @@ void * GLSpectrum::get_gtk_widget ()
</ins><span class="cx">  
</span><span class="cx">      s_widget = gtk_drawing_area_new ();
</span><span class="cx">  
</span><span class="lines">@@ -1359,6 +1091,17 @@
</span><span class="cx">      g_signal_connect (s_widget, "realize", (GCallback) widget_realized, nullptr);
</span><span class="cx">      g_signal_connect (s_widget, "destroy", (GCallback) widget_destroyed, nullptr);
</span><span class="cx">      g_signal_connect (s_widget, "configure-event", (GCallback) widget_resize, nullptr);
</span><ins>+ 
+-    /* Disable GTK double buffering */
++    /* Disable GTK double buffering -- this still works and is still necessary
++     * in GTK3, regardless of the deprecation */
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+     gtk_widget_set_double_buffered (s_widget, false);
++#pragma GCC diagnostic pop

+     return s_widget;
+ }
</ins><span class="cx"> --- src/gtkui/columns.cc.old
</span><span class="cx"> +++ src/gtkui/columns.cc
</span><span class="cx"> @@ -299,7 +299,7 @@ void * pw_col_create_chooser ()
</span><span class="lines">@@ -1430,7 +1173,7 @@
</span><span class="cx">  
</span><span class="cx"> --- src/gtkui/ui_gtk.cc.old
</span><span class="cx"> +++ src/gtkui/ui_gtk.cc
</span><del>-@@ -781,15 +781,17 @@ bool GtkUI::init ()
</del><ins>+@@ -793,15 +793,17 @@ bool GtkUI::init ()
</ins><span class="cx">      accel = gtk_accel_group_new ();
</span><span class="cx">      gtk_window_add_accel_group ((GtkWindow *) window, accel);
</span><span class="cx">  
</span><span class="lines">@@ -1450,7 +1193,7 @@
</span><span class="cx">      gtk_box_pack_start ((GtkBox *) vbox_outer, toolbar, false, false, 0);
</span><span class="cx">  
</span><span class="cx">      /* search button */
</span><del>-@@ -817,12 +819,13 @@ bool GtkUI::init ()
</del><ins>+@@ -829,12 +831,13 @@ bool GtkUI::init ()
</ins><span class="cx">      gtk_tool_item_set_expand (boxitem1, true);
</span><span class="cx">      gtk_toolbar_insert ((GtkToolbar *) toolbar, boxitem1, -1);
</span><span class="cx">  
</span><span class="lines">@@ -1466,7 +1209,7 @@
</span><span class="cx">      gtk_widget_set_can_focus (slider, false);
</span><span class="cx">      gtk_box_pack_start ((GtkBox *) box1, slider, true, true, 6);
</span><span class="cx">  
</span><del>-@@ -844,7 +847,7 @@ bool GtkUI::init ()
</del><ins>+@@ -856,7 +859,7 @@ bool GtkUI::init ()
</ins><span class="cx">      GtkToolItem * boxitem2 = gtk_tool_item_new ();
</span><span class="cx">      gtk_toolbar_insert ((GtkToolbar *) toolbar, boxitem2, -1);
</span><span class="cx">  
</span><span class="lines">@@ -1475,7 +1218,7 @@
</span><span class="cx">      gtk_container_add ((GtkContainer *) boxitem2, box2);
</span><span class="cx">  
</span><span class="cx">      volume = gtk_volume_button_new ();
</span><del>-@@ -864,7 +867,7 @@ bool GtkUI::init ()
</del><ins>+@@ -876,7 +879,7 @@ bool GtkUI::init ()
</ins><span class="cx">      GtkWidget * layout = layout_new ();
</span><span class="cx">      gtk_box_pack_start ((GtkBox *) vbox_outer, layout, true, true, 0);
</span><span class="cx">  
</span><span class="lines">@@ -1484,7 +1227,7 @@
</span><span class="cx">      layout_add_center (vbox);
</span><span class="cx">  
</span><span class="cx">      ui_playlist_notebook_new ();
</span><del>-@@ -947,15 +950,13 @@ void GtkUI::cleanup ()
</del><ins>+@@ -959,15 +962,13 @@ void GtkUI::cleanup ()
</ins><span class="cx">  
</span><span class="cx">  static void menu_position_cb (GtkMenu * menu, int * x, int * y, int * push, void * button)
</span><span class="cx">  {
</span><span class="lines">@@ -1503,7 +1246,50 @@
</span><span class="cx">  
</span><span class="cx"> --- src/gtkui/ui_infoarea.cc.old
</span><span class="cx"> +++ src/gtkui/ui_infoarea.cc
</span><del>-@@ -240,12 +240,29 @@ static void hsv_to_rgb (float h, float s, float v, float * r, float * g,
</del><ins>+@@ -175,42 +175,6 @@ static void draw_text (GtkWidget * widget, cairo_t * cr, int x, int y, int

+ /****************************************************************************/

+-static void rgb_to_hsv (float r, float g, float b, float * h, float * s,
+- float * v)
+-{
+-    float max, min;
+-
+-    max = r;
+-    if (g > max)
+-        max = g;
+-    if (b > max)
+-        max = b;
+-
+-    min = r;
+-    if (g < min)
+-        min = g;
+-    if (b < min)
+-        min = b;
+-
+-    * v = max;
+-
+-    if (max == min)
+-    {
+-        * h = 0;
+-        * s = 0;
+-        return;
+-    }
+-
+-    if (r == max)
+-        * h = 1 + (g - b) / (max - min);
+-    else if (g == max)
+-        * h = 3 + (b - r) / (max - min);
+-    else
+-        * h = 5 + (r - g) / (max - min);
+-
+-    * s = (max - min) / max;
+-}
+-
+ static void hsv_to_rgb (float h, float s, float v, float * r, float * g,
+  float * b)
+ {
+@@ -240,15 +204,11 @@ static void hsv_to_rgb (float h, float s, float v, float * r, float * g,
</ins><span class="cx">      * b = v * (1 - s * (1 - * b));
</span><span class="cx">  }
</span><span class="cx">  
</span><span class="lines">@@ -1511,33 +1297,17 @@
</span><span class="cx"> +static void get_color (int i, float * r, float * g, float * b)
</span><span class="cx">  {
</span><span class="cx"> -    GdkColor * c = (gtk_widget_get_style (widget))->base + GTK_STATE_SELECTED;
</span><del>--    float h, s, v;
-+    static GdkRGBA c;
-+    static gboolean valid = false;
-+
-+    if (! valid)
-+    {
-+        /* we want a color that matches the current theme
-+         * selected color of a GtkEntry should be reasonable */
-+        GtkStyleContext * style = gtk_style_context_new ();
-+        GtkWidgetPath * path = gtk_widget_path_new ();
-+        gtk_widget_path_append_type (path, GTK_TYPE_ENTRY);
-+        gtk_style_context_set_path (style, path);
-+        gtk_widget_path_free (path);
-+        gtk_style_context_add_class (style, "entry");
-+        gtk_style_context_get_background_color (style,
-+         (GtkStateFlags) (GTK_STATE_FLAG_FOCUSED | GTK_STATE_FLAG_SELECTED), & c);
-+        g_object_unref (style);
-+        valid = true;
-+    }
</del><ins>+     float h, s, v;
</ins><span class="cx">  
</span><span class="cx"> -    rgb_to_hsv (c->red / 65535.0, c->green / 65535.0, c->blue / 65535.0, & h, & s, & v);
</span><del>-+    float h, s, v;
-+    rgb_to_hsv (c.red, c.green, c.blue, & h, & s, & v);
</del><ins>+-
+-    if (s < 0.1) /* monochrome theme? use blue instead */
+-        h = 4.6;
++    h = 4.6; /* hard-coded to blue due to repeatedly broken theming in GTK3 */
</ins><span class="cx">  
</span><del>-     if (s < 0.1) /* monochrome theme? use blue instead */
-         h = 5;
-@@ -256,10 +273,8 @@ static void get_color (GtkWidget * widget, int i, float * r, float * g, float *
</del><ins>+     s = 1 - 0.9 * i / (VIS_BANDS - 1);
+     v = 0.75 + 0.25 * i / (VIS_BANDS - 1);
+@@ -256,10 +216,8 @@ static void get_color (GtkWidget * widget, int i, float * r, float * g, float *
</ins><span class="cx">      hsv_to_rgb (h, s, v, r, g, b);
</span><span class="cx">  }
</span><span class="cx">  
</span><span class="lines">@@ -1549,7 +1319,7 @@
</span><span class="cx">      clear (widget, cr);
</span><span class="cx">  
</span><span class="cx">      for (int i = 0; i < VIS_BANDS; i++)
</span><del>-@@ -269,7 +284,7 @@ static int expose_vis_cb (GtkWidget * widget, GdkEventExpose * event)
</del><ins>+@@ -269,7 +227,7 @@ static int expose_vis_cb (GtkWidget * widget, GdkEventExpose * event)
</ins><span class="cx">          int m = aud::min (VIS_CENTER + v, HEIGHT);
</span><span class="cx">  
</span><span class="cx">          float r, g, b;
</span><span class="lines">@@ -1558,7 +1328,7 @@
</span><span class="cx">  
</span><span class="cx">          cairo_set_source_rgb (cr, r, g, b);
</span><span class="cx">          cairo_rectangle (cr, x, VIS_CENTER - v, BAND_WIDTH, v);
</span><del>-@@ -280,7 +295,6 @@ static int expose_vis_cb (GtkWidget * widget, GdkEventExpose * event)
</del><ins>+@@ -280,7 +238,6 @@ static int expose_vis_cb (GtkWidget * widget, GdkEventExpose * event)
</ins><span class="cx">          cairo_fill (cr);
</span><span class="cx">      }
</span><span class="cx">  
</span><span class="lines">@@ -1566,7 +1336,7 @@
</span><span class="cx">      return true;
</span><span class="cx">  }
</span><span class="cx">  
</span><del>-@@ -335,16 +349,15 @@ static void draw_title (cairo_t * cr)
</del><ins>+@@ -335,16 +292,15 @@ static void draw_title (cairo_t * cr)
</ins><span class="cx">           0.7, 0.7, area->last_alpha, "9", area->last_album);
</span><span class="cx">  }
</span><span class="cx">  
</span><span class="lines">@@ -1585,7 +1355,7 @@
</span><span class="cx">      return true;
</span><span class="cx">  }
</span><span class="cx">  
</span><del>-@@ -472,7 +485,7 @@ void ui_infoarea_show_vis (bool show)
</del><ins>+@@ -472,7 +428,7 @@ void ui_infoarea_show_vis (bool show)
</ins><span class="cx">          gtk_widget_set_size_request (vis.widget, VIS_WIDTH + 2 * SPACING, HEIGHT);
</span><span class="cx">          gtk_box_pack_start ((GtkBox *) area->box, vis.widget, false, false, 0);
</span><span class="cx">  
</span><span class="lines">@@ -1594,7 +1364,7 @@
</span><span class="cx">          gtk_widget_show (vis.widget);
</span><span class="cx">  
</span><span class="cx">          aud_visualizer_add (& vis);
</span><del>-@@ -519,13 +532,13 @@ GtkWidget * ui_infoarea_new ()
</del><ins>+@@ -519,13 +475,13 @@ GtkWidget * ui_infoarea_new ()
</ins><span class="cx">      compute_sizes ();
</span><span class="cx">  
</span><span class="cx">      area = new UIInfoArea ();
</span><span class="lines">@@ -1620,7 +1390,7 @@
</span><span class="cx">      }
</span><span class="cx">  }
</span><span class="cx">  
</span><del>-@@ -103,14 +104,6 @@ static void close_button_cb (GtkWidget * button, void * id)
</del><ins>+@@ -103,40 +104,16 @@ static void close_button_cb (GtkWidget * button, void * id)
</ins><span class="cx">      audgui_confirm_playlist_delete (aud_playlist_by_unique_id (GPOINTER_TO_INT (id)));
</span><span class="cx">  }
</span><span class="cx">  
</span><span class="lines">@@ -1635,10 +1405,16 @@
</span><span class="cx">  static GtkWidget * make_close_button (GtkWidget * ebox, int list)
</span><span class="cx">  {
</span><span class="cx">      GtkWidget * button = gtk_button_new ();
</span><del>-@@ -123,19 +116,22 @@ static GtkWidget * make_close_button (GtkWidget * ebox, int list)
</del><ins>+     GtkWidget * image = gtk_image_new_from_icon_name ("window-close", GTK_ICON_SIZE_MENU);
+     gtk_button_set_image ((GtkButton *) button, image);
+     gtk_button_set_relief ((GtkButton *) button, GTK_RELIEF_NONE);
+-    gtk_button_set_focus_on_click ((GtkButton *) button, false);
+-    gtk_widget_set_name (button, "gtkui-tab-close-button");
++    gtk_widget_set_can_focus (button, false);

</ins><span class="cx">      g_signal_connect (button, "clicked", (GCallback) close_button_cb,
</span><span class="cx">       GINT_TO_POINTER (aud_playlist_get_unique_id (list)));
</span><del>- 
</del><ins>+-
</ins><span class="cx"> -    gtk_rc_parse_string (
</span><span class="cx"> -     "style \"gtkui-tab-close-button-style\" {"
</span><span class="cx"> -     " GtkButton::default-border = {0, 0, 0, 0}"
</span><span class="lines">@@ -1652,26 +1428,11 @@
</span><span class="cx"> -    );
</span><span class="cx"> -
</span><span class="cx"> -    g_signal_connect (button, "style-set", (GCallback) close_button_style_set, nullptr);
</span><del>-+    GtkCssProvider * provider = gtk_css_provider_new ();
-+    gtk_css_provider_load_from_data (provider,
-+     "#gtkui-tab-close-button {"
-+     " -GtkButton-default-border: 0;"
-+     " -GtkButton-default-outside-border: 0;"
-+     " -GtkButton-inner-border: 0;"
-+     " -GtkWidget-focus-padding: 0;"
-+     " -GtkWidget-focus-line-width: 0;"
-+     " margin: 0;"
-+     " padding: 0; }",
-+     -1, nullptr);
-+
-+    gtk_style_context_add_provider (gtk_widget_get_style_context (button),
-+     GTK_STYLE_PROVIDER (provider),
-+     GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-+    g_object_unref (provider);

</del><ins>+-
</ins><span class="cx">      gtk_widget_show (button);
</span><span class="cx">  
</span><del>-@@ -295,7 +291,7 @@ void ui_playlist_notebook_create_tab (int playlist)
</del><ins>+     return button;
+@@ -295,7 +272,7 @@ void ui_playlist_notebook_create_tab (int playlist)
</ins><span class="cx">      GtkWidget * ebox = gtk_event_box_new ();
</span><span class="cx">      gtk_event_box_set_visible_window ((GtkEventBox *) ebox, false);
</span><span class="cx">  
</span><span class="lines">@@ -1898,7 +1659,7 @@
</span><span class="cx">      GtkWidget * disable_button = gtk_button_new_with_label (_("Disable"));
</span><span class="cx"> --- src/lyricwiki/lyricwiki.cc.old
</span><span class="cx"> +++ src/lyricwiki/lyricwiki.cc
</span><del>-@@ -339,7 +339,7 @@ static GtkWidget * build_widget ()
</del><ins>+@@ -341,7 +341,7 @@ static GtkWidget * build_widget ()
</ins><span class="cx">      GtkWidget * scrollview = gtk_scrolled_window_new (nullptr, nullptr);
</span><span class="cx">      gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) scrollview, GTK_SHADOW_IN);
</span><span class="cx">      gtk_scrolled_window_set_policy ((GtkScrolledWindow *) scrollview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
</span><span class="lines">@@ -1907,7 +1668,7 @@
</span><span class="cx">  
</span><span class="cx">      gtk_container_add ((GtkContainer *) scrollview, (GtkWidget *) textview);
</span><span class="cx">      gtk_box_pack_start ((GtkBox *) vbox, scrollview, true, true, 0);
</span><del>-@@ -350,7 +350,7 @@ static GtkWidget * build_widget ()
</del><ins>+@@ -352,7 +352,7 @@ static GtkWidget * build_widget ()
</ins><span class="cx">      gtk_text_buffer_create_tag (textbuffer, "size_x_large", "scale", PANGO_SCALE_X_LARGE, nullptr);
</span><span class="cx">      gtk_text_buffer_create_tag (textbuffer, "style_italic", "style", PANGO_STYLE_ITALIC, nullptr);
</span><span class="cx">  
</span><span class="lines">@@ -1918,7 +1679,7 @@
</span><span class="cx">      edit_button = gtk_button_new_with_mnemonic (_("Edit lyrics ..."));
</span><span class="cx"> --- src/playlist-manager/playlist-manager.cc.old
</span><span class="cx"> +++ src/playlist-manager/playlist-manager.cc
</span><del>-@@ -213,7 +213,7 @@ static void destroy_cb (GtkWidget * window)
</del><ins>+@@ -215,7 +215,7 @@ static void destroy_cb (GtkWidget * window)
</ins><span class="cx">  
</span><span class="cx">  void * PlaylistManager::get_gtk_widget ()
</span><span class="cx">  {
</span><span class="lines">@@ -1927,7 +1688,7 @@
</span><span class="cx">  
</span><span class="cx">      /* ListView */
</span><span class="cx">      GtkWidget * playman_pl_lv = audgui_list_new (& callbacks, nullptr, aud_playlist_count ());
</span><del>-@@ -235,7 +235,7 @@ void * PlaylistManager::get_gtk_widget ()
</del><ins>+@@ -237,7 +237,7 @@ void * PlaylistManager::get_gtk_widget ()
</ins><span class="cx">      gtk_box_pack_start ((GtkBox *) playman_vbox, playman_pl_lv_sw, true, true, 0);
</span><span class="cx">  
</span><span class="cx">      /* ButtonBox */
</span><span class="lines">@@ -1936,38 +1697,9 @@
</span><span class="cx">      GtkWidget * new_button = audgui_button_new (_("_New"), "document-new",
</span><span class="cx">       (AudguiCallback) aud_playlist_new, nullptr);
</span><span class="cx">      GtkWidget * delete_button = audgui_button_new (_("_Remove"), "edit-delete", delete_cb, nullptr);
</span><del>---- src/scrobbler2/config_window.cc.old
-+++ src/scrobbler2/config_window.cc
-@@ -167,11 +167,11 @@ static void *config_status_checker () {
-     GtkWidget *details_box;
-     GtkWidget *additional_details_box;

--    config_box              = gtk_vbox_new (false, 15);
--    permission_box          = gtk_hbox_new (false, 0);
--    buttons_box             = gtk_vbutton_box_new ();
--    details_box             = gtk_vbox_new (false, 0);
--    additional_details_box  = gtk_hbox_new (false, 7);
-+    config_box              = gtk_box_new(GTK_ORIENTATION_VERTICAL,  15);
-+    permission_box          = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
-+    buttons_box             = gtk_button_box_new(GTK_ORIENTATION_VERTICAL);
-+    details_box             = gtk_box_new(GTK_ORIENTATION_VERTICAL,   0);
-+    additional_details_box  = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 7);

-     button                  = gtk_button_new_with_mnemonic(_("C_heck Permission"));
-     revoke_button           = gtk_button_new_with_mnemonic(_("_Revoke Permission"));
-@@ -183,6 +183,9 @@ static void *config_status_checker () {
-     details_label_first  = gtk_label_new ("");
-     url_button           = gtk_link_button_new("");
-     details_label_second = gtk_label_new("");
-+    gtk_widget_set_halign(details_label_first,  GTK_ALIGN_CENTER);
-+    gtk_widget_set_halign(url_button,           GTK_ALIGN_CENTER);
-+    gtk_widget_set_halign(details_label_second, GTK_ALIGN_CENTER);

-     gtk_widget_hide(url_button);
-     gtk_widget_set_no_show_all(url_button, true);
</del><span class="cx"> --- src/search-tool/search-tool.cc.old
</span><span class="cx"> +++ src/search-tool/search-tool.cc
</span><del>-@@ -675,11 +675,11 @@ static void refresh_cb (GtkButton * button, GtkWidget * chooser)
</del><ins>+@@ -745,11 +745,11 @@ static void refresh_cb (GtkButton * button, GtkWidget * file_entry)
</ins><span class="cx">  
</span><span class="cx">  void * SearchTool::get_gtk_widget ()
</span><span class="cx">  {
</span><span class="lines">@@ -1981,7 +1713,7 @@
</span><span class="cx">      g_signal_connect (entry, "destroy", (GCallback) gtk_widget_destroyed, & entry);
</span><span class="cx">      gtk_box_pack_start ((GtkBox *) vbox, entry, false, false, 0);
</span><span class="cx">  
</span><del>-@@ -716,7 +716,7 @@ void * SearchTool::get_gtk_widget ()
</del><ins>+@@ -786,7 +786,7 @@ void * SearchTool::get_gtk_widget ()
</ins><span class="cx">      gtk_widget_set_no_show_all (stats_label, true);
</span><span class="cx">      gtk_box_pack_start ((GtkBox *) vbox, stats_label, false, false, 0);
</span><span class="cx">  
</span><span class="lines">@@ -1989,10 +1721,10 @@
</span><span class="cx"> +    GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
</span><span class="cx">      gtk_box_pack_end ((GtkBox *) vbox, hbox, false, false, 0);
</span><span class="cx">  
</span><del>-     GtkWidget * chooser = gtk_file_chooser_button_new (_("Choose Folder"),
</del><ins>+     GtkWidget * file_entry = audgui_file_entry_new
</ins><span class="cx"> --- src/skins/menus.cc.old
</span><span class="cx"> +++ src/skins/menus.cc
</span><del>-@@ -319,7 +319,7 @@ static void position_menu (GtkMenu * menu, int * x, int * y, gboolean * push_in,
</del><ins>+@@ -323,7 +323,7 @@ static void position_menu (GtkMenu * menu, int * x, int * y, gboolean * push_in,
</ins><span class="cx">      audgui_get_monitor_geometry (gtk_widget_get_screen ((GtkWidget *) menu), pos->x, pos->y, & geom);
</span><span class="cx">  
</span><span class="cx">      GtkRequisition request;
</span><span class="lines">@@ -2094,7 +1826,7 @@
</span><span class="cx">      gtk_container_add ((GtkContainer *) gtk_dialog_get_content_area
</span><span class="cx"> --- src/skins/skinselector.cc.old
</span><span class="cx"> +++ src/skins/skinselector.cc
</span><del>-@@ -190,6 +190,11 @@ static void skin_view_on_cursor_changed (GtkTreeView * treeview)
</del><ins>+@@ -186,6 +186,11 @@ static void skin_view_on_cursor_changed (GtkTreeView * treeview)
</ins><span class="cx">      GtkTreeIter iter;
</span><span class="cx">  
</span><span class="cx">      auto selection = gtk_tree_view_get_selection (treeview);
</span><span class="lines">@@ -2106,7 +1838,7 @@
</span><span class="cx">      if (! gtk_tree_selection_get_selected (selection, & model, & iter))
</span><span class="cx">          return;
</span><span class="cx">  
</span><del>-@@ -206,7 +211,6 @@ void skin_view_realize (GtkTreeView * treeview)
</del><ins>+@@ -202,7 +207,6 @@ void skin_view_realize (GtkTreeView * treeview)
</ins><span class="cx">  {
</span><span class="cx">      gtk_widget_show_all ((GtkWidget *) treeview);
</span><span class="cx">  
</span><span class="lines">@@ -2294,3 +2026,12 @@
</span><span class="cx">  };
</span><span class="cx">  
</span><span class="cx">  void dock_add_window (int id, Window * window, int * x, int * y, int w, int h);
</span><ins>+--- src/statusicon/Makefile.old
++++ src/statusicon/Makefile
+@@ -11,3 +11,6 @@ LD = ${CXX}
+ CFLAGS += ${PLUGIN_CFLAGS}
+ CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} -I../..
+ LIBS += ${GTK_LIBS} -laudgui
++
++# GTK3 branch: ignore GtkStatusIcon deprecation
++CPPFLAGS += -Wno-deprecated-declarations
</ins></span></pre></div>
<a id="trunkdportsmultimediaaudaciouspluginsfilespatchupdatebuildsysandmakeverbosedifffromrev153443trunkdportsmultimediaaudaciouspluginsfilespatchbuildsysdiff"></a>
<div class="copfile"><h4>Copied: trunk/dports/multimedia/audacious-plugins/files/patch-update-buildsys-and-make-verbose.diff (from rev 153443, trunk/dports/multimedia/audacious-plugins/files/patch-buildsys.diff) (0 => 153444)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/multimedia/audacious-plugins/files/patch-update-buildsys-and-make-verbose.diff                              (rev 0)
+++ trunk/dports/multimedia/audacious-plugins/files/patch-update-buildsys-and-make-verbose.diff 2016-09-30 11:15:27 UTC (rev 153444)
</span><span class="lines">@@ -0,0 +1,721 @@
</span><ins>+--- buildsys.mk.in.old
++++ buildsys.mk.in
+@@ -1,8 +1,8 @@
+ #
+-#  Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012
+-#  Jonathan Schleifer <js@webkeks.org>
++#  Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016
++#  Jonathan Schleifer <js@heap.zone>
+ #
+-#  https://webkeks.org/git/?p=buildsys.git
++#  https://heap.zone/git/?p=buildsys.git
+ #
+ #  Permission to use, copy, modify, and/or distribute this software for any
+ #  purpose with or without fee is hereby granted, provided that the above
+@@ -45,6 +45,7 @@ OBJCFLAGS = @OBJCFLAGS@
+ OBJCXXFLAGS = @OBJCXXFLAGS@
+ LDFLAGS = @LDFLAGS@
+ LDFLAGS_RPATH = @LDFLAGS_RPATH@
++LDFLAGS_INSTALL_NAME = @LDFLAGS_INSTALL_NAME@
+ LIBS = @LIBS@
+ PYTHON_FLAGS = @PYTHON_FLAGS@
+ PROG_IMPLIB_NEEDED = @PROG_IMPLIB_NEEDED@
+@@ -107,22 +108,27 @@ PLUGIN_OBJS = ${OBJS:.o=.plugin.o}

+ MO_FILES = ${LOCALES:.po=.mo}

+-.SILENT:
+ .SUFFIXES:
+ .SUFFIXES: .beam .c .c.dep .cc .cc.dep .class .cxx .cxx.dep .d .erl .lib.o .java .mo .m .m.dep .mm .mm.dep .o .plugin.o .po .py .pyc .rc .S .S.dep .xpm
+-.PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales ${SUBDIRS}
++.PHONY: all subdirs subdirs-after pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales ${SUBDIRS} ${SUBDIRS_AFTER}

+ all:
+-      ${MAKE} ${MFLAGS} subdirs
+-      ${MAKE} ${MFLAGS} depend
++      ${MAKE} pre-all
++      ${MAKE} subdirs
++      ${MAKE} depend
+       ${MAKE} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales
++      ${MAKE} subdirs-after
++      ${MAKE} post-all
++
++pre-all post-all:

+ subdirs: ${SUBDIRS}
++subdirs-after: ${SUBDIRS_AFTER}

+-${SUBDIRS}:
++${SUBDIRS} ${SUBDIRS_AFTER}:
+       for i in $@; do \
+               ${DIR_ENTER}; \
+-              ${MAKE} ${MFLAGS} || exit $$?; \
++              ${MAKE} || exit $$?; \
+               ${DIR_LEAVE}; \
+       done

+@@ -166,7 +172,7 @@ depend: pre-depend ${SRCS}
+       done; \
+       if test x"$$regen" = x"1" -a x"$$deps" != x""; then \
+               ${DEPEND_STATUS}; \
+-              if ${MAKE} ${MFLAGS} $$deps && cat $$deps >.deps; then \
++              if ${MAKE} $$deps && cat $$deps >.deps; then \
+                       rm -f $$deps; \
+                       ${DEPEND_OK}; \
+               else \
+@@ -205,6 +211,7 @@ pre-depend:

+ ${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA}
+       ${LINK_STATUS}
++      out="$@"; \
+       if ${LD} -o $@ ${OBJS} ${OBJS_EXTRA} ${LDFLAGS} ${LIBS}; then \
+               ${LINK_OK}; \
+       else \
+@@ -228,7 +235,8 @@ ${JARFILE}: ${EXT_DEPS} ${JAR_MANIFEST} ${OBJS} ${OBJS_EXTRA}
+       fi

+ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
+-      ${LINK_STATUS}; \
++      ${LINK_STATUS}
++      out="$@"; \
+       objs=""; \
+       ars=""; \
+       for i in ${LIB_OBJS} ${LIB_OBJS_EXTRA}; do \
+@@ -252,7 +260,7 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
+               done; \
+               cd ..; \
+       done; \
+-      if ${LD} -o $@ $$objs ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
++      if ${LD} -o $@ $$objs ${LIB_LDFLAGS} ${LDFLAGS_INSTALL_NAME} ${LDFLAGS} ${LIBS}; then \
+               ${LINK_OK}; \
+       else \
+               ${LINK_FAILED}; \
+@@ -264,6 +272,7 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}

+ ${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS}
+       ${LINK_STATUS}
++      out="$@"; \
+       objs=""; \
+       ars=""; \
+       for i in ${PLUGIN_OBJS}; do \
+@@ -300,6 +309,7 @@ ${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS}
+ ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA}
+       ${LINK_STATUS}
+       rm -f $@
++      out="$@"; \
+       objs=""; \
+       ars=""; \
+       for i in ${OBJS} ${OBJS_EXTRA}; do \
+@@ -337,6 +347,7 @@ ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA}
+ ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
+       ${LINK_STATUS}
+       rm -f $@
++      out="$@"; \
+       objs=""; \
+       ars=""; \
+       for i in ${LIB_OBJS} ${LIB_OBJS_EXTRA}; do \
+@@ -375,21 +386,27 @@ locales: ${MO_FILES}

+ .c.o:
+       ${COMPILE_STATUS}
+-      if ${CC} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CC} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+               ${COMPILE_FAILED}; \
+       fi
+ .c.lib.o:
+       ${COMPILE_LIB_STATUS}
+-      if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_LIB_OK}; \
+       else \
+               ${COMPILE_LIB_FAILED}; \
+       fi
+ .c.plugin.o:
+       ${COMPILE_PLUGIN_STATUS}
+-      if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_PLUGIN_OK}; \
+       else \
+               ${COMPILE_PLUGIN_FAILED}; \
+@@ -397,21 +414,27 @@ locales: ${MO_FILES}

+ .cc.o .cxx.o:
+       ${COMPILE_STATUS}
+-      if ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+               ${COMPILE_FAILED}; \
+       fi
+ .cc.lib.o .cxx.lib.o:
+       ${COMPILE_LIB_STATUS}
+-      if ${CXX} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CXX} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${CXXFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_LIB_OK}; \
+       else \
+               ${COMPILE_LIB_FAILED}; \
+       fi
+ .cc.plugin.o .cxx.plugin.o:
+       ${COMPILE_PLUGIN_STATUS}
+-      if ${CXX} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CXX} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${CXXFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_PLUGIN_OK}; \
+       else \
+               ${COMPILE_PLUGIN_FAILED}; \
+@@ -419,6 +442,8 @@ locales: ${MO_FILES}

+ .d.o:
+       ${COMPILE_STATUS}
++      in="$<"; \
++      out="$@"; \
+       if test x"$(basename ${DC})" = x"dmd"; then \
+               if ${DC} ${DFLAGS} -c -of$@ $<; then \
+                       ${COMPILE_OK}; \
+@@ -435,6 +460,8 @@ locales: ${MO_FILES}

+ .erl.beam:
+       ${COMPILE_STATUS}
++      in="$<"; \
++      out="$@"; \
+       if ${ERLC} ${ERLCFLAGS} -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+@@ -443,6 +470,8 @@ locales: ${MO_FILES}

+ .java.class:
+       ${COMPILE_STATUS}
++      in="$<"; \
++      out="$@"; \
+       if ${JAVAC} ${JAVACFLAGS} $<; then \
+               ${COMPILE_OK}; \
+       else \
+@@ -451,21 +480,27 @@ locales: ${MO_FILES}

+ .m.o:
+       ${COMPILE_STATUS}
+-      if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${OBJCFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+               ${COMPILE_FAILED}; \
+       fi
+ .m.lib.o:
+       ${COMPILE_LIB_STATUS}
+-      if ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} ${OBJCFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_LIB_OK}; \
+       else \
+               ${COMPILE_LIB_FAILED}; \
+       fi
+ .m.plugin.o:
+       ${COMPILE_PLUGIN_STATUS}
+-      if ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} ${OBJCFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_PLUGIN_OK}; \
+       else \
+               ${COMPILE_PLUGIN_FAILED}; \
+@@ -473,21 +508,27 @@ locales: ${MO_FILES}

+ .mm.o:
+       ${COMPILE_STATUS}
+-      if ${OBJCXX} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${OBJCXX} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${OBJCXXFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+               ${COMPILE_FAILED}; \
+       fi
+ .mm.lib.o:
+       ${COMPILE_LIB_STATUS}
+-      if ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${OBJCXXFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_LIB_OK}; \
+       else \
+               ${COMPILE_LIB_FAILED}; \
+       fi
+ .mm.plugin.o:
+       ${COMPILE_PLUGIN_STATUS}
+-      if ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} ${OBJCXXFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_PLUGIN_OK}; \
+       else \
+               ${COMPILE_PLUGIN_FAILED}; \
+@@ -495,6 +536,8 @@ locales: ${MO_FILES}

+ .po.mo:
+       ${COMPILE_STATUS}
++      in="$<"; \
++      out="$@"; \
+       if ${MSGFMT} -c -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+@@ -503,6 +546,8 @@ locales: ${MO_FILES}

+ .py.pyc:
+       ${COMPILE_STATUS}
++      in="$<"; \
++      out="$@"; \
+       if ${PYTHON} ${PYTHON_FLAGS} -c "import py_compile; py_compile.compile('$<')"; then \
+               ${COMPILE_OK}; \
+       else \
+@@ -511,7 +556,9 @@ locales: ${MO_FILES}

+ .rc.o .rc.lib.o .rc.plugin.o:
+       ${COMPILE_STATUS}
+-      if ${WINDRES} -J rc -O coff -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${WINDRES} ${CPPFLAGS} -J rc -O coff -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+               ${COMPILE_FAILED}; \
+@@ -519,21 +566,27 @@ locales: ${MO_FILES}

+ .S.o:
+       ${COMPILE_STATUS}
+-      if ${AS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${AS} ${ASFLAGS} ${CPPFLAGS} ${ASFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+               ${COMPILE_FAILED}; \
+       fi
+ .S.lib.o:
+       ${COMPILE_LIB_STATUS}
+-      if ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} ${ASFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_LIB_OK}; \
+       else \
+               ${COMPILE_LIB_FAILED}; \
+       fi
+ .S.plugin.o:
+       ${COMPILE_PLUGIN_STATUS}
+-      if ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} ${ASFLAGS_$@} -c -o $@ $<; then \
+               ${COMPILE_PLUGIN_OK}; \
+       else \
+               ${COMPILE_PLUGIN_FAILED}; \
+@@ -541,30 +594,36 @@ locales: ${MO_FILES}

+ .xpm.o:
+       ${COMPILE_STATUS}
+-      if ${CC} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CC} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -x c -c -o $@ $<; then \
+               ${COMPILE_OK}; \
+       else \
+               ${COMPILE_FAILED}; \
+       fi
+ .xpm.lib.o:
+       ${COMPILE_LIB_STATUS}
+-      if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -x c -c -o $@ $<; then \
+               ${COMPILE_LIB_OK}; \
+       else \
+               ${COMPILE_LIB_FAILED}; \
+       fi
+ .xpm.plugin.o:
+       ${COMPILE_PLUGIN_STATUS}
+-      if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
++      in="$<"; \
++      out="$@"; \
++      if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -x c -c -o $@ $<; then \
+               ${COMPILE_PLUGIN_OK}; \
+       else \
+               ${COMPILE_PLUGIN_FAILED}; \
+       fi

+-install: install-extra
+-      for i in ${SUBDIRS}; do \
++install: all install-extra
++      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
+               ${DIR_ENTER}; \
+-              ${MAKE} ${MFLAGS} install || exit $$?; \
++              ${MAKE} install || exit $$?; \
+               ${DIR_LEAVE}; \
+       done

+@@ -643,9 +702,9 @@ install: install-extra
+ install-extra:

+ uninstall: uninstall-extra
+-      for i in ${SUBDIRS}; do \
++      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
+               ${DIR_ENTER}; \
+-              ${MAKE} ${MFLAGS} uninstall || exit $$?; \
++              ${MAKE} uninstall || exit $$?; \
+               ${DIR_LEAVE}; \
+       done

+@@ -736,9 +795,9 @@ uninstall: uninstall-extra
+ uninstall-extra:

+ clean:
+-      for i in ${SUBDIRS}; do \
++      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
+               ${DIR_ENTER}; \
+-              ${MAKE} ${MFLAGS} clean || exit $$?; \
++              ${MAKE} clean || exit $$?; \
+               ${DIR_LEAVE}; \
+       done

+@@ -753,9 +812,9 @@ clean:
+       done

+ distclean: clean
+-      for i in ${SUBDIRS}; do \
++      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
+               ${DIR_ENTER}; \
+-              ${MAKE} ${MFLAGS} distclean || exit $$?; \
++              ${MAKE} distclean || exit $$?; \
+               ${DIR_LEAVE}; \
+       done

+@@ -769,27 +828,39 @@ distclean: clean
+               fi \
+       done

+-DIR_ENTER = printf "@TERM_EL@@TERM_SETAF6@Entering directory @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n"; cd $$i || exit $$?
+-DIR_LEAVE = printf "@TERM_EL@@TERM_SETAF6@Leaving directory @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n"; cd .. || exit $$?
++print-hierarchy:
++      for i in ${SUBDIRS} ${SUBDIRS_AFTER}; do \
++              echo ${PRINT_HIERARCHY_PREFIX}$$i; \
++              cd $$i || exit $$?; \
++              ${MAKE} PRINT_HIERARCHY_PREFIX=$$i/ print-hierarchy || exit $$?; \
++              cd .. || exit $$?; \
++      done
++
++print-var:
++      printf '%s\n' '${${VAR}}'
++
++DIR_ENTER = printf "@TERM_EL@@TERM_SETAF6@Entering directory @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n" "$$i"; cd $$i || exit $$?
++DIR_LEAVE = printf "@TERM_EL@@TERM_SETAF6@Leaving directory @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n" "$$i"; cd .. || exit $$?
+ DEPEND_STATUS = printf "@TERM_EL@@TERM_SETAF3@Generating dependencies...@TERM_SGR0@\r"
+ DEPEND_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully generated dependencies.@TERM_SGR0@\n"
+ DEPEND_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to generate dependencies!@TERM_SGR0@\n"; exit $$err
+-COMPILE_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r"
+-COMPILE_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n"
+-COMPILE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err
+-COMPILE_LIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (lib)...@TERM_SGR0@\r"
+-COMPILE_LIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (lib).@TERM_SGR0@\n"
+-COMPILE_LIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (lib)!@TERM_SGR0@\n"; exit $$err
+-COMPILE_PLUGIN_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (plugin)...@TERM_SGR0@\r"
+-COMPILE_PLUGIN_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (plugin).@TERM_SGR0@\n"
+-COMPILE_PLUGIN_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (plugin)!@TERM_SGR0@\n"; exit $$err
++COMPILE_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" "$<"
++COMPILE_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" "$<"
++COMPILE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n" "$<"; exit $$err
++COMPILE_LIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (lib)...@TERM_SGR0@\r" "$<"
++COMPILE_LIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (lib).@TERM_SGR0@\n" "$<"
++COMPILE_LIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (lib)!@TERM_SGR0@\n" "$<"; exit $$err
++COMPILE_PLUGIN_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (plugin)...@TERM_SGR0@\r" "$<"
++COMPILE_PLUGIN_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (plugin).@TERM_SGR0@\n" "$<"
++COMPILE_PLUGIN_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (plugin)!@TERM_SGR0@\n" "$<"; exit $$err
+ LINK_STATUS = printf "@TERM_EL@@TERM_SETAF3@Linking @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r"
+ LINK_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully linked @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n"
+ LINK_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to link @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err
+-INSTALL_STATUS = printf "@TERM_EL@@TERM_SETAF3@Installing @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r"
+-INSTALL_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully installed @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n"
+-INSTALL_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to install @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err
+-DELETE_OK = printf "@TERM_EL@@TERM_SETAF4@Deleted @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF4@.@TERM_SGR0@\n"
+-DELETE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to delete @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err
+-
+-include .deps
++INSTALL_STATUS = printf "@TERM_EL@@TERM_SETAF3@Installing @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" "$$i"
++INSTALL_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully installed @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" "$$i"
++INSTALL_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to install @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n" "$$i"; exit $$err
++DELETE_OK = printf "@TERM_EL@@TERM_SETAF4@Deleted @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF4@.@TERM_SGR0@\n" "$$i"
++DELETE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to delete @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n" "$$i"; exit $$err
++
++.CURDIR ?= .
++include ${.CURDIR}/.deps
+--- configure.ac.old
++++ configure.ac
+@@ -8,6 +8,8 @@ AC_PREREQ([2.59])
+ AC_INIT([audacious-plugins], [3.8])
+ AC_COPYRIGHT([Copyright (C) 2001-2016 Audacious developers and others])

++BUILDSYS_INIT
++
+ AC_DEFINE_UNQUOTED([PACKAGE], "$PACKAGE_NAME", [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], "$PACKAGE_VERSION", [Version number of package])

+--- m4/buildsys.m4.old
++++ m4/buildsys.m4
+@@ -1,8 +1,8 @@
+ dnl
+-dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012
+-dnl Jonathan Schleifer <js@webkeks.org>
++dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016
++dnl Jonathan Schleifer <js@heap.zone>
+ dnl
+-dnl https://webkeks.org/git/?p=buildsys.git
++dnl https://heap.zone/git/?p=buildsys.git
+ dnl
+ dnl Permission to use, copy, modify, and/or distribute this software for any
+ dnl purpose with or without fee is hereby granted, provided that the above
+@@ -21,65 +21,76 @@ dnl ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ dnl POSSIBILITY OF SUCH DAMAGE.
+ dnl

+-AC_CONFIG_COMMANDS_PRE([
+-      AC_SUBST(CC_DEPENDS, $GCC)
+-      AC_SUBST(CXX_DEPENDS, $GXX)
+-      AC_SUBST(OBJC_DEPENDS, $GOBJC)
+-      AC_SUBST(OBJCXX_DEPENDS, $GOBJCXX)
++AC_DEFUN([BUILDSYS_INIT], [
++      AC_CONFIG_COMMANDS_PRE([
++              AC_SUBST(CC_DEPENDS, $GCC)
++              AC_SUBST(CXX_DEPENDS, $GXX)
++              AC_SUBST(OBJC_DEPENDS, $GOBJC)
++              AC_SUBST(OBJCXX_DEPENDS, $GOBJCXX)

+-      AC_PATH_PROG(TPUT, tput)
++              AC_PATH_PROG(TPUT, tput)

+-      AS_IF([test x"$TPUT" != x""], [
+-              if x=$($TPUT el 2>/dev/null); then
+-                      AC_SUBST(TERM_EL, "$x")
+-              else
+-                      AC_SUBST(TERM_EL, "$($TPUT ce 2>/dev/null)")
+-              fi
++              AS_IF([test x"$TPUT" != x""], [
++                      if x=$($TPUT el 2>/dev/null); then
++                              AC_SUBST(TERM_EL, "$x")
++                      else
++                              AC_SUBST(TERM_EL, "$($TPUT ce 2>/dev/null)")
++                      fi

+-              if x=$($TPUT sgr0 2>/dev/null); then
+-                      AC_SUBST(TERM_SGR0, "$x")
+-              else
+-                      AC_SUBST(TERM_SGR0, "$($TPUT me 2>/dev/null)")
+-              fi
++                      if x=$($TPUT sgr0 2>/dev/null); then
++                              AC_SUBST(TERM_SGR0, "$x")
++                      else
++                              AC_SUBST(TERM_SGR0, "$($TPUT me 2>/dev/null)")
++                      fi

+-              if x=$($TPUT bold 2>/dev/null); then
+-                      AC_SUBST(TERM_BOLD, "$x")
+-              else
+-                      AC_SUBST(TERM_BOLD, "$($TPUT md 2>/dev/null)")
+-              fi
++                      if x=$($TPUT bold 2>/dev/null); then
++                              AC_SUBST(TERM_BOLD, "$x")
++                      else
++                              AC_SUBST(TERM_BOLD, "$($TPUT md 2>/dev/null)")
++                      fi

+-              if x=$($TPUT setaf 1 2>/dev/null); then
+-                      AC_SUBST(TERM_SETAF1, "$x")
+-                      AC_SUBST(TERM_SETAF2, "$($TPUT setaf 2 2>/dev/null)")
+-                      AC_SUBST(TERM_SETAF3, "$($TPUT setaf 3 2>/dev/null)")
+-                      AC_SUBST(TERM_SETAF4, "$($TPUT setaf 4 2>/dev/null)")
+-                      AC_SUBST(TERM_SETAF6, "$($TPUT setaf 6 2>/dev/null)")
+-              else
+-                      AC_SUBST(TERM_SETAF1, "$($TPUT AF 1 2>/dev/null)")
+-                      AC_SUBST(TERM_SETAF2, "$($TPUT AF 2 2>/dev/null)")
+-                      AC_SUBST(TERM_SETAF3, "$($TPUT AF 3 2>/dev/null)")
+-                      AC_SUBST(TERM_SETAF4, "$($TPUT AF 4 2>/dev/null)")
+-                      AC_SUBST(TERM_SETAF6, "$($TPUT AF 6 2>/dev/null)")
+-              fi
+-      ], [
+-              AC_SUBST(TERM_EL, '\033\133K')
+-              AC_SUBST(TERM_SGR0, '\033\133m')
+-              AC_SUBST(TERM_BOLD, '\033\1331m')
+-              AC_SUBST(TERM_SETAF1, '\033\13331m')
+-              AC_SUBST(TERM_SETAF2, '\033\13332m')
+-              AC_SUBST(TERM_SETAF3, '\033\13333m')
+-              AC_SUBST(TERM_SETAF4, '\033\13334m')
+-              AC_SUBST(TERM_SETAF6, '\033\13336m')
++                      if x=$($TPUT setaf 1 2>/dev/null); then
++                              AC_SUBST(TERM_SETAF1, "$x")
++                              AC_SUBST(TERM_SETAF2,
++                                      "$($TPUT setaf 2 2>/dev/null)")
++                              AC_SUBST(TERM_SETAF3,
++                                      "$($TPUT setaf 3 2>/dev/null)")
++                              AC_SUBST(TERM_SETAF4,
++                                      "$($TPUT setaf 4 2>/dev/null)")
++                              AC_SUBST(TERM_SETAF6,
++                                      "$($TPUT setaf 6 2>/dev/null)")
++                      else
++                              AC_SUBST(TERM_SETAF1,
++                                      "$($TPUT AF 1 2>/dev/null)")
++                              AC_SUBST(TERM_SETAF2,
++                                      "$($TPUT AF 2 2>/dev/null)")
++                              AC_SUBST(TERM_SETAF3,
++                                      "$($TPUT AF 3 2>/dev/null)")
++                              AC_SUBST(TERM_SETAF4,
++                                      "$($TPUT AF 4 2>/dev/null)")
++                              AC_SUBST(TERM_SETAF6,
++                                      "$($TPUT AF 6 2>/dev/null)")
++                      fi
++              ], [
++                      AC_SUBST(TERM_EL, '\033\133K')
++                      AC_SUBST(TERM_SGR0, '\033\133m')
++                      AC_SUBST(TERM_BOLD, '\033\1331m')
++                      AC_SUBST(TERM_SETAF1, '\033\13331m')
++                      AC_SUBST(TERM_SETAF2, '\033\13332m')
++                      AC_SUBST(TERM_SETAF3, '\033\13333m')
++                      AC_SUBST(TERM_SETAF4, '\033\13334m')
++                      AC_SUBST(TERM_SETAF6, '\033\13336m')
++              ])
+       ])
+-])

+-AC_CONFIG_COMMANDS_POST([
+-      ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
+-      for i in $(find . -name Makefile); do
+-              DEPSFILE="$(dirname $i)/.deps"
+-              test -f "$DEPSFILE" && rm "$DEPSFILE"
+-              touch -t 0001010000 "$DEPSFILE"
+-      done
++      AC_CONFIG_COMMANDS_POST([
++              ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
++              for i in $(find . -name Makefile); do
++                      DEPSFILE="$(dirname $i)/.deps"
++                      test -f "$DEPSFILE" && rm "$DEPSFILE"
++                      touch -t 0001010000 "$DEPSFILE"
++              done
++      ])
+ ])

+ AC_DEFUN([BUILDSYS_PROG_IMPLIB], [
+@@ -108,31 +119,32 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
+       case "$host_os" in
+               darwin*)
+                       AC_MSG_RESULT(Darwin)
+-                      LIB_CFLAGS='-fPIC -DPIC -mmacosx-version-min=10.7'
+-                      LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR} -mmacosx-version-min=10.7 -install_name "${libdir}/$$(i=${SHARED_LIB}; echo $${i%${LIB_SUFFIX}}).${LIB_MAJOR}${LIB_SUFFIX}"'
++                      LIB_CFLAGS='-fPIC -DPIC'
++                      LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
+                       LIB_PREFIX='lib'
+                       LIB_SUFFIX='.dylib'
+                       LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
+-                      PLUGIN_CFLAGS='-fPIC -DPIC -mmacosx-version-min=10.7'
+-                      PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup -mmacosx-version-min=10.7'
++                      LDFLAGS_INSTALL_NAME='-Wl,-install_name,${libdir}/$${out%.dylib}.${LIB_MAJOR}.dylib'
++                      PLUGIN_CFLAGS='-fPIC -DPIC'
++                      PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup'
+                       PLUGIN_SUFFIX='.bundle'
+                       INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i'
+                       UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib'
+                       CLEAN_LIB=''
+                       ;;
+-              solaris*)
+-                      AC_MSG_RESULT(Solaris)
+-                      LIB_CFLAGS='-fPIC -DPIC'
+-                      LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}'
++              mingw* | cygwin*)
++                      AC_MSG_RESULT(MinGW / Cygwin)
++                      LIB_CFLAGS=''
++                      LIB_LDFLAGS='-shared -Wl,--out-implib,${SHARED_LIB}.a'
+                       LIB_PREFIX='lib'
+-                      LIB_SUFFIX='.so'
++                      LIB_SUFFIX='.dll'
+                       LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
+-                      PLUGIN_CFLAGS='-fPIC -DPIC'
++                      PLUGIN_CFLAGS=''
+                       PLUGIN_LDFLAGS='-shared'
+-                      PLUGIN_SUFFIX='.so'
+-                      INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i'
+-                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}'
+-                      CLEAN_LIB=''
++                      PLUGIN_SUFFIX='.dll'
++                      INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a'
++                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a'
++                      CLEAN_LIB='${SHARED_LIB}.a'
+                       ;;
+               openbsd* | mirbsd*)
+                       AC_MSG_RESULT(OpenBSD)
+@@ -148,22 +160,36 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
+                       UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i'
+                       CLEAN_LIB=''
+                       ;;
+-              cygwin* | mingw*)
+-                      AC_MSG_RESULT(Win32)
+-                      LIB_CFLAGS=''
+-                      LIB_LDFLAGS='-shared -Wl,--out-implib,${SHARED_LIB}.a'
++              solaris*)
++                      AC_MSG_RESULT(Solaris)
++                      LIB_CFLAGS='-fPIC -DPIC'
++                      LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}'
+                       LIB_PREFIX='lib'
+-                      LIB_SUFFIX='.dll'
++                      LIB_SUFFIX='.so'
+                       LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
+-                      PLUGIN_CFLAGS=''
++                      PLUGIN_CFLAGS='-fPIC -DPIC'
+                       PLUGIN_LDFLAGS='-shared'
+-                      PLUGIN_SUFFIX='.dll'
+-                      INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a'
+-                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a'
+-                      CLEAN_LIB='${SHARED_LIB}.a'
++                      PLUGIN_SUFFIX='.so'
++                      INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i'
++                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}'
++                      CLEAN_LIB=''
++                      ;;
++              *-android*)
++                      AC_MSG_RESULT(Android)
++                      LIB_CFLAGS='-fPIC -DPIC'
++                      LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}'
++                      LIB_PREFIX='lib'
++                      LIB_SUFFIX='.so'
++                      LDFLAGS_RPATH=''
++                      PLUGIN_CFLAGS='-fPIC -DPIC'
++                      PLUGIN_LDFLAGS='-shared'
++                      PLUGIN_SUFFIX='.so'
++                      INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i'
++                      UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0'
++                      CLEAN_LIB=''
+                       ;;
+               *)
+-                      AC_MSG_RESULT(GNU)
++                      AC_MSG_RESULT(ELF)
+                       LIB_CFLAGS='-fPIC -DPIC'
+                       LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}'
+                       LIB_PREFIX='lib'
+@@ -183,6 +209,7 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
+       AC_SUBST(LIB_PREFIX)
+       AC_SUBST(LIB_SUFFIX)
+       AC_SUBST(LDFLAGS_RPATH)
++      AC_SUBST(LDFLAGS_INSTALL_NAME)
+       AC_SUBST(PLUGIN_CFLAGS)
+       AC_SUBST(PLUGIN_LDFLAGS)
+       AC_SUBST(PLUGIN_SUFFIX)
</ins></span></pre>
</div>
</div>

</body>
</html>