pidgin/pidgin

Merged pidgin/main into default

2017-11-17, Arkadiy Illarionov
53435f0bef6c
Merged pidgin/main into default
  • +9 -135
    .hgignore
  • +2 -0
    COPYRIGHT
  • +19 -1
    ChangeLog
  • +5 -0
    ChangeLog.API
  • +0 -2
    HACKING
  • +0 -220
    INSTALL
  • +0 -142
    Makefile.am
  • +0 -191
    Makefile.mingw
  • +0 -7
    PLUGIN_HOWTO
  • +38 -35
    README
  • +0 -34
    README.hg
  • +0 -6
    README.mingw
  • +0 -527
    acinclude.m4
  • +0 -214
    autogen.sh
  • +4 -4
    bitbucket-pipelines.yml
  • +0 -404
    config.h.mingw
  • +0 -2104
    configure.ac
  • +0 -20
    doc/Makefile.am
  • +0 -9
    doc/reference/Makefile.am
  • +0 -137
    doc/reference/finch/Makefile.am
  • +0 -179
    doc/reference/libpurple/Makefile.am
  • +0 -151
    doc/reference/pidgin/Makefile.am
  • +0 -2
    doc/reference/protocols/Makefile.am
  • +0 -123
    doc/reference/protocols/facebook/Makefile.am
  • +0 -184
    finch/Makefile.am
  • +9 -4
    finch/gntnotify.c
  • +0 -134
    finch/libgnt/Makefile.am
  • +25 -9
    finch/libgnt/gntmain.c
  • +15 -15
    finch/libgnt/gntwm.c
  • +0 -41
    finch/libgnt/wms/Makefile.am
  • +0 -63
    finch/plugins/Makefile.am
  • +0 -135
    glib-tap.mk
  • +0 -506
    libpurple/Makefile.am
  • +0 -224
    libpurple/Makefile.mingw
  • +2 -2
    libpurple/account.c
  • +1 -1
    libpurple/account.h
  • +2 -2
    libpurple/blistnode.h
  • +1 -0
    libpurple/buddyicon.c
  • +1 -1
    libpurple/cmds.h
  • +2 -2
    libpurple/connection.h
  • +1 -1
    libpurple/eventloop.h
  • +0 -24
    libpurple/example/Makefile.am
  • +3 -3
    libpurple/image.h
  • +1 -13
    libpurple/media.c
  • +15 -12
    libpurple/media/backend-fs2.c
  • +1 -1
    libpurple/media/backend-iface.h
  • +1 -1
    libpurple/plugins.h
  • +0 -137
    libpurple/plugins/Makefile.am
  • +0 -73
    libpurple/plugins/Makefile.mingw
  • +0 -99
    libpurple/plugins/keyrings/Makefile.am
  • +0 -82
    libpurple/plugins/keyrings/Makefile.mingw
  • +1 -1
    libpurple/pounce.h
  • +11 -9
    libpurple/prefs.h
  • +136 -124
    libpurple/protocol.h
  • +2 -2
    libpurple/protocols.h
  • +0 -5
    libpurple/protocols/Makefile.am
  • +0 -29
    libpurple/protocols/Makefile.mingw
  • +0 -64
    libpurple/protocols/bonjour/Makefile.am
  • +0 -92
    libpurple/protocols/bonjour/Makefile.mingw
  • +0 -52
    libpurple/protocols/facebook/Makefile.am
  • +0 -94
    libpurple/protocols/facebook/Makefile.mingw
  • +0 -88
    libpurple/protocols/gg/Makefile.am
  • +0 -115
    libpurple/protocols/gg/Makefile.mingw
  • +1 -1
    libpurple/protocols/gg/blist.c
  • +0 -39
    libpurple/protocols/irc/Makefile.am
  • +0 -93
    libpurple/protocols/irc/Makefile.mingw
  • +0 -135
    libpurple/protocols/jabber/Makefile.am
  • +0 -142
    libpurple/protocols/jabber/Makefile.mingw
  • +12 -9
    libpurple/protocols/jabber/jingle/rtp.c
  • +0 -10
    libpurple/protocols/jabber/tests/.hgignore
  • +0 -36
    libpurple/protocols/jabber/tests/Makefile.am
  • +0 -55
    libpurple/protocols/novell/Makefile.am
  • +0 -89
    libpurple/protocols/novell/Makefile.mingw
  • +0 -26
    libpurple/protocols/null/Makefile.am
  • +0 -80
    libpurple/protocols/null/Makefile.mingw
  • +0 -83
    libpurple/protocols/oscar/Makefile.am
  • +0 -116
    libpurple/protocols/oscar/Makefile.mingw
  • +0 -7
    libpurple/protocols/oscar/tests/.hgignore
  • +0 -22
    libpurple/protocols/oscar/tests/Makefile.am
  • +0 -38
    libpurple/protocols/sametime/Makefile.am
  • +0 -84
    libpurple/protocols/sametime/Makefile.mingw
  • +0 -47
    libpurple/protocols/silc/Makefile.am
  • +0 -91
    libpurple/protocols/silc/Makefile.mingw
  • +0 -41
    libpurple/protocols/simple/Makefile.am
  • +0 -79
    libpurple/protocols/simple/Makefile.mingw
  • +0 -110
    libpurple/protocols/zephyr/Makefile.am
  • +0 -150
    libpurple/protocols/zephyr/Makefile.mingw
  • +8 -8
    libpurple/request.h
  • +4 -4
    libpurple/sslconn.h
  • +1 -1
    libpurple/stun.h
  • +2 -2
    libpurple/tests.h
  • +0 -16
    libpurple/tests/.hgignore
  • +0 -45
    libpurple/tests/Makefile.am
  • +27 -0
    libpurple/tests/test_util.c
  • +2 -2
    libpurple/theme-loader.h
  • +1 -1
    libpurple/theme-manager.h
  • +12 -1
    libpurple/util.c
  • +11 -0
    libpurple/util.h
  • +1 -0
    libpurple/win32/libc_interface.c
  • +0 -6
    m4macros/Makefile.am
  • +0 -49
    m4macros/as-ac-expand.m4
  • +0 -28
    m4macros/glibtests.m4
  • +0 -96
    m4macros/introspection.m4
  • +0 -102
    m4macros/purple.m4
  • +0 -319
    pidgin/Makefile.am
  • +0 -198
    pidgin/Makefile.mingw
  • +9 -6
    pidgin/gtkblist.c
  • +6 -4
    pidgin/gtkblist.h
  • +2 -2
    pidgin/gtkconv-theme.h
  • +58 -0
    pidgin/gtkconv.c
  • +7 -7
    pidgin/gtkconv.h
  • +15 -2
    pidgin/gtkconvwin.h
  • +8 -8
    pidgin/gtkdialogs.h
  • +1 -1
    pidgin/gtkdocklet.h
  • +1 -1
    pidgin/gtkmenutray.h
  • +1 -7
    pidgin/gtknotify.c
  • +0 -2
    pidgin/gtknotify.h
  • +1 -1
    pidgin/gtkplugin.h
  • +1 -1
    pidgin/gtkpluginpref.h
  • +16 -10
    pidgin/gtkprefs.h
  • +1 -1
    pidgin/gtkrequest.h
  • +2 -2
    pidgin/gtksavedstatuses.h
  • +1 -1
    pidgin/gtksmiley-theme.h
  • +1 -1
    pidgin/gtkstatusbox.h
  • +70 -0
    pidgin/gtkstyle.c
  • +59 -0
    pidgin/gtkstyle.h
  • +79 -50
    pidgin/gtkutils.h
  • +9 -9
    pidgin/gtkwebview.h
  • +2 -2
    pidgin/gtkwebviewtoolbar.h
  • +3 -1
    pidgin/meson.build
  • +7 -2
    pidgin/minidialog.h
  • +10 -10
    pidgin/pidgintooltip.h
  • +0 -604
    pidgin/pixmaps/Makefile.am
  • +0 -51
    pidgin/pixmaps/Makefile.mingw
  • +0 -203
    pidgin/pixmaps/emotes/default/24/Makefile.am
  • +0 -27
    pidgin/pixmaps/emotes/default/24/Makefile.mingw
  • +0 -103
    pidgin/pixmaps/emotes/small/16/Makefile.am
  • +0 -27
    pidgin/pixmaps/emotes/small/16/Makefile.mingw
  • +0 -149
    pidgin/plugins/Makefile.am
  • +0 -110
    pidgin/plugins/Makefile.mingw
  • +0 -29
    pidgin/plugins/cap/Makefile.am
  • +0 -82
    pidgin/plugins/cap/Makefile.mingw
  • +0 -28
    pidgin/plugins/disco/Makefile.am
  • +0 -80
    pidgin/plugins/disco/Makefile.mingw
  • +0 -26
    pidgin/plugins/gestures/Makefile.am
  • +0 -29
    pidgin/plugins/gevolution/Makefile.am
  • +0 -44
    pidgin/plugins/musicmessaging/Makefile.am
  • +0 -27
    pidgin/plugins/ticker/Makefile.am
  • +0 -78
    pidgin/plugins/ticker/Makefile.mingw
  • +0 -17
    pidgin/plugins/win32/transparency/Makefile.am
  • +0 -76
    pidgin/plugins/win32/transparency/Makefile.mingw
  • +0 -20
    pidgin/plugins/win32/winprefs/Makefile.am
  • +0 -82
    pidgin/plugins/win32/winprefs/Makefile.mingw
  • +0 -22
    pidgin/themes/Makefile.am
  • +0 -55
    po/Makefile.mingw
  • +0 -23
    share/ca-certs/Makefile.am
  • +0 -27
    share/ca-certs/Makefile.mingw
  • +0 -12
    share/sounds/Makefile.am
  • +0 -20
    share/sounds/Makefile.mingw
  • +0 -652
    tap-driver.sh
  • +0 -5
    tap-test
  • --- a/.hgignore Sun Oct 08 20:42:20 2017 +0300
    +++ b/.hgignore Fri Nov 17 14:23:40 2017 +0300
    @@ -1,148 +1,22 @@
    syntax: glob
    .*.swp
    -clang_output_*
    pidgin-*
    -.dirstamp
    .DS_Store
    +*.asc
    +*.bak
    +*.bs
    +*.def
    +*.orig
    +*.pyc
    +*.rej
    +*~
    +
    syntax: regexp
    -(.*/)?TAGS$
    -(.*/)?\.svn
    -.*.swp
    -.*/?.*\.pc$
    -.*/?Makefile(\.in)?$
    -.*/?Makefile\.am\.mingw$
    -.*~$
    -.*\.a$
    -.*\.asc$
    -.*\.bak$
    -.*\.bs$
    -.*\.def$
    -\.deps
    -.*\.dll$
    -.*\.exe$
    -.*\.g?mo$
    -.*\.gir$
    -.*\.la$
    -\.libs
    -.*\.lo$
    -.*\.loT$
    -.*\.o$
    -.*\.orig$
    -.*\.pyc$
    -.*\.pyo$
    -.*\.rej$
    -.*\.so$
    -.*\.typelib$
    -.*\.moc$
    -VERSION$
    -aclocal.m4
    -autogen.args
    -autom4te.*\.cache
    ^build(.+)?\/
    -compile
    -config.cache
    -config.guess
    -config.h$
    -config.h.in
    -config.log
    -config.status
    -config.sub
    -configure$
    -depcomp
    -doc/finch.1$
    -doc/html
    -doc/pidgin.1$
    -doc/reference/.*/.*\.args
    -doc/reference/.*/.*\.hierarchy
    -doc/reference/.*/.*\.interfaces
    -doc/reference/.*/.*\.prerequisites
    -doc/reference/.*/.*\.signals
    -doc/reference/.*/.*\.stamp
    -doc/reference/.*/.*\.txt
    -doc/reference/.*/.*\.types
    -doc/reference/.*/html/.*
    -doc/reference/.*/xml/.*
    -doc/reference/.*/version.xml
    -finch/finch$
    -gtk-doc.make
    -install-sh
    -intltool-.*
    -libpurple/dbus-bindings.c
    -libpurple/dbus-signals.c
    -libpurple/dbus-types.[ch]
    -libpurple/enums.[ch]
    -libpurple/example/nullclient
    -libpurple/data/purple-url-handler.desktop$
    -libpurple/data/purple-url-handler.desktop.in$
    -libpurple/plugins/dbus-example-bindings.c
    -libpurple/purple-client-bindings.ch
    -libpurple/purple-client-bindings.h
    -libpurple/purple-client-example
    -libpurple/purple.h$
    -libpurple/tests/core
    -libpurple/tests/check_libpurple
    -libpurple/tests/libpurple..
    -^libpurple/tests/test-suite\.log$
    -libpurple/version.h$
    -libpurple/win32/libpurplerc.rc$
    -libtool
    -local.mak
    -ltmain.sh
    -m4macros/gtk-doc.m4
    -m4macros/intltool.m4
    -m4macros/ltoptions.m4
    -m4macros/ltsugar.m4
    -m4macros/ltversion.m4
    -m4macros/lt~obsolete.m4
    -missing
    -mkinstalldirs
    -package_revision.h
    -package_revision_raw.txt
    -pidgin-*.*.*-dbgsym$
    -pidgin-*.*.*-dbgsym.zip$
    -pidgin-*.*.*-win32-bin.zip$
    -pidgin-*.*.*-win32bin$
    -pidgin-.*.tar.bz2
    -pidgin-.*.tar.gz
    -pidgin-[0-9a-z.-]+/
    -pidgin.apspec$
    -pidgin/.*\.gresource\.[ch]$
    -pidgin/pidgin$
    -pidgin/data/im.pidgin.Pidgin.appdata.xml$
    -pidgin/data/im.pidgin.Pidgin.desktop$
    -pidgin/data/im.pidgin.Pidgin.desktop.in$
    -pidgin/pixmaps/emotes/default/24/theme
    -pidgin/pixmaps/emotes/none/theme
    -pidgin/pixmaps/emotes/small/16/theme
    -pidgin/plugins/musicmessaging/music-messaging-bindings.c
    -pidgin/win32/nsis/gtk-runtime-*.*.*.*.zip
    -pidgin/win32/nsis/gtk_runtime_stage$
    -pidgin/win32/nsis/cacert.pem
    -pidgin/win32/nsis/langmacros.nsh
    -pidgin/win32/nsis/nsis_translations.desktop
    -pidgin/win32/nsis/pidgin-spellcheck-preselect.nsh
    -pidgin/win32/nsis/pidgin-spellcheck.nsh
    -pidgin/win32/nsis/pidgin-translations.nsh$
    -pidgin/win32/nsis/translations
    -pidgin/win32/nsis/wget.log
    -pidgin/win32/pidgin_dll_rc.rc$
    -pidgin/win32/pidgin_exe_rc.rc$
    -finch/finch_winres.rc$
    -finch/libfinch_winres.rc$
    -finch/libgnt/libgnt_winres.rc$
    po/Makefile.in.in
    po/POTFILES$
    po/missing
    po/notexist
    po/pidgin.pot
    po/stamp-it
    -stamp-h1
    -test-driver
    win32-install-dir(\.release)?
    -share/ca-certs/cacert.pem
    -share/ca-certs/certdata.txt
    -
    -subinclude:libpurple/protocols/jabber/tests/.hgignore
    -subinclude:libpurple/protocols/oscar/tests/.hgignore
    -subinclude:libpurple/protocols/yahoo/tests/.hgignore
    -subinclude:libpurple/tests/.hgignore
    --- a/COPYRIGHT Sun Oct 08 20:42:20 2017 +0300
    +++ b/COPYRIGHT Fri Nov 17 14:23:40 2017 +0300
    @@ -292,6 +292,7 @@
    F.W. Kong
    Konstantin Korikov
    Cole Kowalski
    +Daniel Kamil Kozar
    Nikita Kozlov
    Matt Kramer
    Gary Kramlich
    @@ -628,6 +629,7 @@
    Kevin Wu Won
    Pui Lam Wong
    Justin Wood
    +David Woodhouse
    Ximian
    Ma Xuan
    Yonas Yanfa
    --- a/ChangeLog Sun Oct 08 20:42:20 2017 +0300
    +++ b/ChangeLog Fri Nov 17 14:23:40 2017 +0300
    @@ -104,12 +104,22 @@
    * A single jabber plugin provides XMPP, GTalk and Facebook protocols.
    * A single yahoo plugin provides both Yahoo and Yahoo JAPAN protocols.
    -version 2.12.1 (??/??/????):
    +version 2.13.0 (??/??/????):
    libpurple:
    * Unified string comparison. (PR #186) (Arkadiy Illarionov)
    + * Properlly shell escape URI's when opening them. (PR #271 Daniel Kamil Kozar)
    +
    + libgnt:
    + * Fixed build against curses 6.0 with opaque structs set. (#16764 dimstar)
    + (PR #268 Daniel Kamil Kozar)
    + * Fixed a crash when resizing the window. (#16680 marcus) (PR #269 Daniel Kamil Kozar)
    +
    + General:
    + * Fixed bashism in autotools. (#16836 lameventanas) (PR #267 Daniel Kamil Kozar)
    XMPP:
    * Show XEP-0066 OOB URLs in any message, not just headlines
    + * Fix a user after free (#17200 debarshiray) (PR #266 Ethan Blanton)
    IRC:
    * Fix "Registration timeout" on SASL auth with InspIRCd servers
    @@ -117,6 +127,14 @@
    * Fix issues with plugins that modify outgoing messages
    (such as the custom PART/QUIT feature of the IRC More plugin)
    + Pidgin:
    + * Better support for dark themes. (#12572 Alyssa Rosenzweig and Gary Kramlich)
    + * Fixed IPv6 links by not escaping []'s. (#16391 cyisfor) (PR #270 Daniel Kamil Kozar)
    + * Only write buddy icons to the cache if they're not already cached. (PR #276 David Woodhouse)
    +
    + Finch:
    + * Fix handling of search results (#17238 David Woodhouse)
    +
    version 2.12.0 (03/09/2017):
    libpurple:
    * Fix an out of bounds memory write in purple_markup_unescape_entity.
    --- a/ChangeLog.API Sun Oct 08 20:42:20 2017 +0300
    +++ b/ChangeLog.API Fri Nov 17 14:23:40 2017 +0300
    @@ -611,6 +611,11 @@
    * _GntTreeColumnFlag
    * _GntWidgetFlags
    +version 2.13.0:
    + libpurple:
    + Added:
    + * purple_uri_escape_for_open
    +
    version 2.12.0:
    libpurple:
    Added:
    --- a/HACKING Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,2 +0,0 @@
    -For information on hacking on Pidgin, Finch, or libpurple, see:
    - https://developer.pidgin.im
    --- a/INSTALL Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,220 +0,0 @@
    -Basic Installation
    -==================
    -
    - These are generic installation instructions.
    -
    - The `configure' shell script attempts to guess correct values for
    -various system-dependent variables used during compilation. It uses
    -those values to create a `Makefile' in each directory of the package.
    -It may also create one or more `.h' files containing system-dependent
    -definitions. Finally, it creates a shell script `config.status' that
    -you can run in the future to recreate the current configuration, a file
    -`config.cache' that saves the results of its tests to speed up
    -reconfiguring, and a file `config.log' containing compiler output
    -(useful mainly for debugging `configure').
    -
    - If you need to do unusual things to compile the package, please try
    -to figure out how `configure' could check whether to do them, and mail
    -diffs or instructions to the address given in the `README' so they can
    -be considered for the next release. If at some point `config.cache'
    -contains results you don't want to keep, you may remove or edit it.
    -
    - The file `configure.ac' is used to create `configure' by a program
    -called `autoconf'. You only need `configure.ac' if you want to change
    -it or regenerate `configure' using a newer version of `autoconf'.
    -
    -The simplest way to compile this package is:
    -
    - 1. `cd' to the directory containing the package's source code and type
    - `./configure' to configure the package for your system. If you're
    - using `csh' on an old version of System V, you might need to type
    - `sh ./configure' instead to prevent `csh' from trying to execute
    - `configure' itself.
    -
    - Running `configure' takes awhile. While running, it prints some
    - messages telling which features it is checking for. If it finishes
    - successfully, it will print out of a summary of the build options.
    - This summary will also appear in the help->about dialog.
    -
    - 2. Type `make' to compile the package. On some systems, you may need
    - to use `gmake' instead.
    -
    - 3. Optionally, type `make check' to run any self-tests that come with
    - the package.
    -
    - 4. Type `make install' to install the programs and any data files and
    - documentation. You must have write access to the prefix you are
    - installing to. See below for more details on the prefix.
    -
    - 5. You can remove the program binaries and object files from the
    - source code directory by typing `make clean'. To also remove the
    - files that `configure' created (so you can compile the package for
    - a different kind of computer), type `make distclean'. There is
    - also a `make maintainer-clean' target, but that is intended mainly
    - for the package's developers. If you use it, you may have to get
    - all sorts of other programs in order to regenerate files that came
    - with the distribution.
    -
    - 6. If you have *not* run make distclean, you can use the target
    - `make uninstall` to remove the files installed by `make install`.
    -
    -Compilers and Options
    -=====================
    -
    - Some systems require unusual options for compilation or linking that
    -the `configure' script does not know about. You can give `configure'
    -initial values for variables by setting them in the environment. Using
    -a Bourne-compatible shell, you can do that on the command line like
    -this:
    - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
    -
    -Or on systems that have the `env' program, you can do it like this:
    - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
    -
    -Compiling For Multiple Architectures
    -====================================
    -
    - You can compile the package for more than one kind of computer at the
    -same time, by placing the object files for each architecture in their
    -own directory. To do this, you must use a version of `make' that
    -supports the `VPATH' variable, such as GNU `make'. `cd' to the
    -directory where you want the object files and executables to go and run
    -the `configure' script. `configure' automatically checks for the
    -source code in the directory that `configure' is in and in `..'.
    -
    - If you have to use a `make' that does not supports the `VPATH'
    -variable, you have to compile the package for one architecture at a time
    -in the source code directory. After you have installed the package for
    -one architecture, use `make distclean' before reconfiguring for another
    -architecture.
    -
    -Installation Names
    -==================
    -
    - By default, `make install' will install the package's files in
    -`/usr/local/bin', `/usr/local/man', etc. You can specify an
    -installation prefix other than `/usr/local' by giving `configure' the
    -option `--prefix=PATH'.
    -
    - You can specify separate installation prefixes for
    -architecture-specific files and architecture-independent files. If you
    -give `configure' the option `--exec-prefix=PATH', the package will use
    -PATH as the prefix for installing programs and libraries.
    -Documentation and other data files will still use the regular prefix.
    -
    - In addition, if you use an unusual directory layout you can give
    -options like `--bindir=PATH' to specify different values for particular
    -kinds of files. Run `configure --help' for a list of the directories
    -you can set and what kinds of files go in them.
    -
    - If the package supports it, you can cause programs to be installed
    -with an extra prefix or suffix on their names by giving `configure' the
    -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
    -
    -Optional Features
    -=================
    -
    - Some packages pay attention to `--enable-FEATURE' options to
    -`configure', where FEATURE indicates an optional part of the package.
    -They may also pay attention to `--with-PACKAGE' options, where PACKAGE
    -is something like `gnu-as' or `x' (for the X Window System). The
    -`README' should mention any `--enable-' and `--with-' options that the
    -package recognizes.
    -
    - For packages that use the X Window System, `configure' can usually
    -find the X include and library files automatically, but if it doesn't,
    -you can use the `configure' options `--x-includes=DIR' and
    -`--x-libraries=DIR' to specify their locations.
    -
    - By default both the GTK+ UI (Pidgin) and the ncurses UI (Finch) will be
    -built, assuming that configure finds the necessary libraries and headers for
    -each. You can disable the GTK+ UI with `--disable-gtkui' and the ncurses UI
    -with `--disable-consoleui'.
    -
    - `--disable-screensaver' will build libpurple without support for detecting
    -when it should mark accounts idle based on mouse or keyboard usage.
    -
    - `--disable-sm' will build without support for the X session management.
    -Doing so will remove the ability to have pidgin start up with your window
    -manager.
    -
    - `--disable-gevolution' will cause the evolution integration plugin not to
    -compile.
    -
    - `--disable-gstreamer' will build without sound support. This applies to
    -*both* Pidgin and Finch.
    -
    - `--enable-gnutls=yes,no' will enable or disable the use of gnutls for ssl support. Disabling both gnutls and nss will mean you cannot use either MSN or Google Talk. There is no static option for gnutls at this time.
    -
    - `--enable-nss=yes,no,static' will enable or disable the use of nss for ssl support. This is the only option for ssl support if you are attempting to compile a static version of Pidgin or Finch.
    -
    -Optional Packages:
    -
    -
    - `--with-static-prpls' takes a list of comma separated protocols to build in statically (rather than as plugins). Use this with care.
    -
    - `--with-dynamic-prpls' takes a list of comma separated protocols also. If used only those listed will be built. If no protocols are listed with either `--with-static-prpls' or with `--with-dynamic-prpls' then Pidgin and Finch will be effectively useless.
    -
    - If configure does not find python, it will build without DBUS support. This will disable scripts such as purple-remote and purple-uri-handler, effectively disabling integration with the browser. You can tell configure where your python binary is located with `--with-python=PATH'
    -
    -Specifying the System Type
    -==========================
    -
    - There may be some features `configure' can not figure out
    -automatically, but needs to determine by the type of host the package
    -will run on. Usually `configure' can figure that out, but if it prints
    -a message saying it can not guess the host type, give it the
    -`--host=TYPE' option. TYPE can either be a short name for the system
    -type, such as `sun4', or a canonical name with three fields:
    - CPU-COMPANY-SYSTEM
    -
    -See the file `config.sub' for the possible values of each field. If
    -`config.sub' isn't included in this package, then this package doesn't
    -need to know the host type.
    -
    - If you are building compiler tools for cross-compiling, you can also
    -use the `--target=TYPE' option to select the type of system they will
    -produce code for and the `--build=TYPE' option to select the type of
    -system on which you are compiling the package.
    -
    -Sharing Defaults
    -================
    -
    - If you want to set default values for `configure' scripts to share,
    -you can create a site shell script called `config.site' that gives
    -default values for variables like `CC', `cache_file', and `prefix'.
    -`configure' looks for `PREFIX/share/config.site' if it exists, then
    -`PREFIX/etc/config.site' if it exists. Or, you can set the
    -`CONFIG_SITE' environment variable to the location of the site script.
    -A warning: not all `configure' scripts look for a site script.
    -
    -Operation Controls
    -==================
    -
    - `configure' recognizes the following options to control how it
    -operates.
    -
    -`--cache-file=FILE'
    - Use and save the results of the tests in FILE instead of
    - `./config.cache'. Set FILE to `/dev/null' to disable caching, for
    - debugging `configure'.
    -
    -`--help'
    - Print a summary of the options to `configure', and exit.
    -
    -`--quiet'
    -`--silent'
    -`-q'
    - Do not print messages saying which checks are being made. To
    - suppress all normal output, redirect it to `/dev/null' (any error
    - messages will still be shown).
    -
    -`--srcdir=DIR'
    - Look for the package's source code in directory DIR. Usually
    - `configure' can determine that directory automatically.
    -
    -`--version'
    - Print the version of Autoconf used to generate the `configure'
    - script, and exit.
    -
    -`configure' also accepts some other, not widely useful, options. Many of these are related to having various optional libaries installed to locations outside of your path.
    --- a/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,142 +0,0 @@
    -EXTRA_DIST = \
    - COPYRIGHT \
    - ChangeLog.API \
    - ChangeLog.win32 \
    - HACKING \
    - Makefile.mingw \
    - PLUGIN_HOWTO \
    - README.hg \
    - README.mingw \
    - config.h.mingw \
    - intltool-extract.in \
    - intltool-merge.in \
    - intltool-update.in \
    - m4macros/introspection.m4 \
    - package_revision.h \
    - po/Makefile.mingw \
    - tap-driver.sh \
    - tap-test \
    - valgrind-suppressions
    -
    -noinst_HEADERS = config.h package_revision.h
    -
    -dist-pre-hook: package_revision.h
    -if !ENABLE_GTK_DOC
    - $(AM_V_at)echo "error: gtk-doc must be installed and enabled in order to make dist"
    - $(AM_V_at)echo "re-run ./configure with --enable-gtk-doc switch and try again"
    - $(AM_V_at)false
    -endif
    - $(AM_V_at)if [ ! -f "$(top_builddir)libpurple/libpurple.la" ]; then \
    - $(MAKE) -C libpurple libpurple.la; \
    - fi
    - $(AM_V_at)if [ ! -f "$(top_builddir)libpurple/protocols/facebook/libfacebook.la" ]; then \
    - $(MAKE) -C libpurple/protocols/facebook libfacebook.la; \
    - fi
    -if ENABLE_GNT
    - $(AM_V_at)if [ ! -f "$(top_builddir)finch/libgnt/libgnt.la" ]; then \
    - $(MAKE) -C finch/libgnt libgnt.la; \
    - fi
    - $(AM_V_at)if [ ! -f "$(top_builddir)finch/libfinch.la" ]; then \
    - $(MAKE) -C finch libfinch.la; \
    - fi
    -endif
    -if ENABLE_GTK
    - $(AM_V_at)if [ ! -f "$(top_builddir)pidgin/libpidgin.la" ]; then \
    - $(MAKE) -C pidgin libpidgin.la; \
    - fi
    -endif
    -
    -dist: dist-pre-hook
    -
    -dist-hook:
    - rm $(distdir)/config.h
    -
    -commit-check:
    - (cd po ; intltool-update -m 2>&1 | grep -v '^mismatched quotes.*\.py$$' | sed "s|current directory|po directory|" | grep . ; if [ $$? = 0 ] ; then exit 1 ; else exit 0 ; fi)
    -
    -# Ensure these files are sorted and contain no duplicates:
    - LC_ALL=C sort -c -t/ -u po/POTFILES.in
    - LC_ALL=C sort -c -t/ -u po/POTFILES.skip
    -
    -# Ensure COPYRIGHT is 100% UTF-8
    - iconv -f utf8 -t utf8 COPYRIGHT | cmp COPYRIGHT -
    -
    -version-check:
    -# Ensure our version string does not contain "dev"
    - test x`echo $(PACKAGE_VERSION) | grep dev` = x
    -
    -# Ensure ChangeLogs have the correct version
    - head ChangeLog | grep "^version $(PACKAGE_VERSION) (.*):$$" >/dev/null
    - head ChangeLog.API | grep "^version $(PACKAGE_VERSION):$$" >/dev/null
    -
    -# Ensure we're working from a tag...
    - test x`hg log -r "tag($(PACKAGE_VERSION))" --template "{node}"` = x`hg log -r . -T '{node}'`
    -# ... and have no changes in the working copy.
    - test "x`hg st -mard`" = x
    -
    -sign-packages: dist
    - gpg -ab pidgin-$(PACKAGE_VERSION).tar.gz
    - gpg -ab pidgin-$(PACKAGE_VERSION).tar.bz2
    - gpg --verify pidgin-$(PACKAGE_VERSION).tar.gz.asc pidgin-$(PACKAGE_VERSION).tar.gz
    - gpg --verify pidgin-$(PACKAGE_VERSION).tar.bz2.asc pidgin-$(PACKAGE_VERSION).tar.bz2
    -
    -release: commit-check version-check distcheck sign-packages
    -
    -if INSTALL_I18N
    -PO_DIR=po
    -endif
    -
    -if ENABLE_GTK
    -GTK_DIR=pidgin
    -endif
    -
    -if ENABLE_GNT
    -GNT_DIR=finch
    -endif
    -
    -# We always try to rebuild all objects that depends on this dummy target.
    -.FORCE:
    -
    -# if both attempts fail, then we need to remove the empty file that >
    -# creates, and also make sure that the shell command exits
    -# successfully; the rm -f ensures both
    -package_revision_raw.txt: .FORCE
    - $(AM_V_GEN)REAL_BLDDIR=$$PWD/$(top_builddir); \
    - (hg --cwd $(srcdir) log -r . -T {node}) 2>/dev/null >$@.new \
    - || rm -f $@.new
    - $(AM_V_at)if test -f $@.new; then \
    - if ! test -f "$@" || ! diff "$@" "$@".new > /dev/null ; then \
    - mv $@.new $@; \
    - else \
    - rm $@.new; \
    - fi \
    - fi
    -package_revision.h: package_revision_raw.txt
    - $(AM_V_GEN)if test -f $<; then \
    - echo "#define REVISION \"`cat $<`\"" > $@; \
    - fi
    - $(AM_V_at)if test ! -f $@ -a -f $(srcdir)/$@; then \
    - cp $(srcdir)/$@ $@; \
    - fi
    - $(AM_V_at)test -f $@ || echo "#define REVISION \"unknown\"" > $@
    -
    -# This is a magic directive copy-and-pasted, then modified, from the
    -# automake 1.9 manual, section 13.4, "Checking the distribution".
    -# Normally, 'distcheck' does a clean build, and then afterwards runs
    -# 'distclean', and 'distclean' is supposed to remove everything that
    -# the build created. However, we have some targets (package_revision.txt)
    -# that we distribute, but then always attempt to rebuild optimistically, and
    -# then if that fails fall back on the distributed versions. This
    -# means that 'distclean' should _not_ remove those files, since they
    -# are distributed, yet building the package will generate those files,
    -# thus automake thinks that 'distclean' _should_ remove those files,
    -# and 'distcheck' gets cranky if we don't. So basically what this
    -# line does is tell 'distcheck' to shut up and ignore those two files.
    -distcleancheck_listfiles = find . -type f -a ! -name package_revision.h
    -
    -AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
    -
    -SUBDIRS = . m4macros libpurple $(GNT_DIR) $(GTK_DIR) $(PO_DIR) share/ca-certs share/sounds doc
    -
    -DISTCLEANFILES= intltool-extract intltool-merge intltool-update \
    - package_revision_raw.txt
    --- a/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,191 +0,0 @@
    -# Makefile.mingw
    -#
    -# Author: hermanator12002@yahoo.com
    -# Date 9/11/02
    -# Description: Top Makefile for win32 (mingw) port of Pidgin and libpurple
    -#
    -
    -PIDGIN_TREE_TOP := .
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -# Generate a X.X.X.X version for the installer file versioning header
    -# The last digit will be 99 for a final release, 0 for dev or unknown, or the beta number
    -PIDGIN_PRODUCT_VERSION = $(shell \
    -awk 'BEGIN {FS="."} { \
    - if (int($$3) == $$3) { \
    - $$4 = "99"; \
    - } else { \
    - $$5 = $$3; \
    - sub(int($$3), "", $$5); \
    - if ($$5 == "dev") { \
    - $$4 = "0"; \
    - } else { \
    - if (sub("beta", "", $$5) > 0) { \
    - $$4 = $$5; \
    - } else { \
    - $$4 = "0"; \
    - } \
    - } \
    - } \
    - printf("%s.%s.%s.%s", $$1, $$2, int($$3), $$4); \
    - exit; \
    -}' VERSION)
    -
    -GTK_INSTALL_VERSION = 2.24.18.0
    -
    -ifdef SIGNTOOL
    -authenticode_sign = $(SIGNTOOL) sign \
    - /fd SHA256 \
    - /f "$(SIGNTOOL_PFX)" /p "$(SIGNTOOL_PASSWORD)" \
    - /d $(2) /du "https://pidgin.im" \
    - /tr "http://timestamp.comodoca.com/rfc3161" /td SHA256 \
    - $(1)
    -else
    -authenticode_sign = $(MONO_SIGNCODE) \
    - -spc "$(SIGNCODE_SPC)" -v "$(SIGNCODE_PVK)" \
    - -a sha1 -$$ commercial \
    - -n "$(2)" -i "https://pidgin.im" \
    - -t "http://timestamp.verisign.com/scripts/timstamp.dll" -tr 10 \
    - $(1) && rm -f $(1).bak
    -endif
    -
    -gpg_sign = $(GPG_SIGN) -ab $(1) && $(GPG_SIGN) --verify $(1).asc
    -
    -STRIPPED_RELEASE_DIR = $(PIDGIN_TREE_TOP)/pidgin-$(PIDGIN_VERSION)-win32bin
    -DEBUG_SYMBOLS_DIR = $(PIDGIN_TREE_TOP)/pidgin-$(PIDGIN_VERSION)-dbgsym
    -
    -PIDGIN_INST_DEP_DIR="$(WIN32_DEV_TOP)/pidgin-inst-deps-20130214"
    -
    -# Any *.dll or *.exe files included in win32-install-dir that we don't compile
    -# should be included in this list so they don't get stripped
    -EXTERNAL_DLLS = \
    - exchndl.dll
    -
    -#build an expression for `find` to use to ignore the above files
    -EXTERNAL_DLLS_FIND_EXP = $(patsubst %,-o -name %,$(EXTERNAL_DLLS))
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -.PHONY: all install installer installer_offline installer_zip debug_symbols_zip installers clean uninstall create_release_install_dir generate_installer_includes $(PIDGIN_REVISION_H) $(PIDGIN_REVISION_RAW_TXT) gtk_runtime_zip
    -
    -all: $(PIDGIN_CONFIG_H) $(PIDGIN_REVISION_H)
    - $(MAKE_at) $(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE)
    - $(MAKE_at) $(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE)
    -ifndef DISABLE_NLS
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE)
    -endif
    -
    -install: all $(PIDGIN_INSTALL_DIR)
    - $(MAKE_at) $(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) install
    - $(MAKE_at) $(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) install
    -ifndef DISABLE_NLS
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) install
    -endif
    - $(MAKE_at) $(MAKE) -C share/ca-certs -f $(MINGW_MAKEFILE) install
    - $(MAKE_at) $(MAKE) -C share/sounds -f $(MINGW_MAKEFILE) install
    - cp $(PIDGIN_INST_DEP_DIR)/exchndl.dll $(PIDGIN_INSTALL_DIR)
    - chmod -R 777 $(PIDGIN_INSTALL_DIR)
    -
    -gtk_runtime_zip:
    - cd pidgin/win32/nsis/ ; ./generate_gtk_zip.sh "$(GPG_SIGN)"
    -
    -generate_installer_includes: create_release_install_dir gtk_runtime_zip debug_symbols_zip $(PIDGIN_TREE_TOP)/pidgin/win32/nsis/nsis_translations.desktop
    - rm -f pidgin/win32/nsis/pidgin-translations.nsh pidgin/win32/nsis/pidgin-spellcheck.nsh pidgin/win32/nsis/pidgin-spellcheck-preselect.nsh
    - find $(STRIPPED_RELEASE_DIR)/locale -maxdepth 1 -mindepth 1 \
    - -exec basename {} ';' \
    - | LC_ALL=C sort | sed -e s/^/\!insertmacro\ LANG_SECTION\ \"/ -e s/$$/\"/ \
    - > pidgin/win32/nsis/pidgin-translations.nsh
    - #Convert the available.lst lines to "!insertmacro SPELLCHECK_SECTION lang lang_name lang_file"
    - sed -e "/^#/d" -e "s/^[^,]\{1,\},[^,]\{1,\},/\"/" \
    - -e "s/,/\"\ \"/" -e "s/,/\"\ \"/" -e "s/[\ \t]*$$/\"/" \
    - -e "s/^/\!insertmacro\ SPELLCHECK_SECTION\ /" \
    - pidgin/win32/nsis/available.lst \
    - > pidgin/win32/nsis/pidgin-spellcheck.nsh
    - #Convert the lines to "!insertmacro CHECK_SPELLCHECK_SECTION lang"
    - iconv -f latin1 -t utf-8 pidgin/win32/nsis/pidgin-spellcheck.nsh | \
    - sed -e "s/SPELLCHECK_SECTION/CHECK_SPELLCHECK_SECTION/" \
    - -e "s/ \"[^\"]*\"\ \"[^\"]*\"[\t\ ]*$$//" | \
    - iconv -f utf-8 -t latin1 \
    - > pidgin/win32/nsis/pidgin-spellcheck-preselect.nsh
    - #Generate the Installer translations
    - echo "!define GCOMPRIS_NSIS_INCLUDE_PATH \".\"" > $(PIDGIN_TREE_TOP)/pidgin/win32/nsis/langmacros.nsh
    - echo "@INSERT_TRANSLATIONS@" >> $(PIDGIN_TREE_TOP)/pidgin/win32/nsis/langmacros.nsh
    - $(PERL) $(PIDGIN_TREE_TOP)/pidgin/win32/nsis/create_nsis_translations.pl \
    - $(PIDGIN_TREE_TOP)/pidgin/win32/nsis/nsis_translations.desktop \
    - $(PIDGIN_TREE_TOP)/pidgin/win32/nsis/langmacros.nsh \
    - $(PIDGIN_TREE_TOP)/pidgin/win32/nsis/translations
    -
    -create_release_install_dir: install
    - rm -rf $(STRIPPED_RELEASE_DIR)
    - mkdir $(STRIPPED_RELEASE_DIR)
    - tar -cf - $(PIDGIN_INSTALL_DIR) --exclude=Gtk --exclude=spellcheck/share \
    - | tar --strip 2 -xC $(STRIPPED_RELEASE_DIR) -f -
    - find $(STRIPPED_RELEASE_DIR) \( -name '*.dll' -o -name '*.exe' \) \
    - -not \( -false $(EXTERNAL_DLLS_FIND_EXP) \) \
    - -exec $(STRIP) --strip-unneeded {} ';'
    -ifdef SIGN_EXECUTABLES
    - $(call authenticode_sign, $(STRIPPED_RELEASE_DIR)/pidgin.exe, "Pidgin $(PIDGIN_VERSION)")
    -endif
    -
    -installer: generate_installer_includes
    - $(eval $@_DEBUG_SYMBOLS_SHA1SUM := $(shell sha1sum $(DEBUG_SYMBOLS_DIR).zip | sed -e "s/\ .*$$//"))
    - $(eval $@_GTK_SHA1SUM := $(shell sha1sum pidgin/win32/nsis/gtk-runtime-$(GTK_INSTALL_VERSION).zip | sed -e "s/\ .*$$//"))
    - $(MAKENSIS) -V3 -DPIDGIN_VERSION="$(PIDGIN_VERSION)" -DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" \
    - -DPIDGIN_INSTALL_DIR="$(STRIPPED_RELEASE_DIR)" -DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" \
    - -DDEBUG_SYMBOLS_SHA1SUM="$($@_DEBUG_SYMBOLS_SHA1SUM)" -DGTK_SHA1SUM="$($@_GTK_SHA1SUM)"\
    - pidgin/win32/nsis/pidgin-installer.nsi
    -ifdef SIGN_EXECUTABLES
    - $(call authenticode_sign, pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION).exe, "Pidgin Installer")
    -endif
    - mv pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION).exe ./
    -ifdef SIGN_EXECUTABLES
    - $(call gpg_sign, pidgin-$(PIDGIN_VERSION).exe)
    -endif
    -
    -installer_offline: generate_installer_includes
    - $(MAKENSIS) -V3 -DPIDGIN_VERSION="$(PIDGIN_VERSION)" -DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" \
    - -DPIDGIN_INSTALL_DIR="$(STRIPPED_RELEASE_DIR)" -DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" \
    - -DOFFLINE_INSTALLER \
    - pidgin/win32/nsis/pidgin-installer.nsi
    -ifdef SIGN_EXECUTABLES
    - $(call authenticode_sign, pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION)-offline.exe, "Pidgin Installer")
    -endif
    - mv pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION)-offline.exe ./
    -ifdef SIGN_EXECUTABLES
    - $(call gpg_sign, pidgin-$(PIDGIN_VERSION)-offline.exe)
    -endif
    -
    -installer_zip: create_release_install_dir
    - rm -f pidgin-$(PIDGIN_VERSION)-win32-bin.zip
    - zip -9 -r pidgin-$(PIDGIN_VERSION)-win32-bin.zip $(STRIPPED_RELEASE_DIR)
    -ifdef SIGN_EXECUTABLES
    - $(call gpg_sign, pidgin-$(PIDGIN_VERSION)-win32-bin.zip)
    -endif
    -
    -debug_symbols_zip: install
    - rm -rf $(DEBUG_SYMBOLS_DIR) $(DEBUG_SYMBOLS_DIR).zip
    - mkdir $(DEBUG_SYMBOLS_DIR)
    - tar -cf - `find $(PIDGIN_INSTALL_DIR) \( -name '*.dll' -o -name '*.exe' \) \
    - -not \( -false $(EXTERNAL_DLLS_FIND_EXP) \) -print` \
    - | tar --strip 2 --xform s/$$/.dbgsym/ -xC $(DEBUG_SYMBOLS_DIR) -f -
    - cp $(MEANWHILE_TOP)/bin/libmeanwhile-1.dll.debug $(DEBUG_SYMBOLS_DIR)/libmeanwhile-1.dll.dbgsym
    - zip -9 -r $(DEBUG_SYMBOLS_DIR).zip $(DEBUG_SYMBOLS_DIR)
    -ifdef SIGN_EXECUTABLES
    - $(call gpg_sign, $(DEBUG_SYMBOLS_DIR).zip)
    -endif
    -
    -installers: installer installer_offline debug_symbols_zip installer_zip
    -
    -clean:
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) clean
    - $(MAKE_at) $(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) clean
    - $(MAKE_at) $(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) clean
    - $(MAKE_at) $(MAKE) -C share/ca-certs -f $(MINGW_MAKEFILE) clean
    - rm -f $(PIDGIN_CONFIG_H) $(PIDGIN_REVISION_H) $(PIDGIN_REVISION_RAW_TXT) ./VERSION pidgin-$(PIDGIN_VERSION)*.exe pidgin-$(PIDGIN_VERSION)-win32-bin.zip $(DEBUG_SYMBOLS_DIR).zip
    -
    -uninstall:
    - rm -rf $(PURPLE_INSTALL_PERL_DIR) $(PIDGIN_INSTALL_PLUGINS_DIR) $(PURPLE_INSTALL_PO_DIR) $(PIDGIN_INSTALL_DIR) $(STRIPPED_RELEASE_DIR) $(DEBUG_SYMBOLS_DIR)
    - rm -f ./VERSION
    -
    -include $(PIDGIN_COMMON_TARGETS)
    -
    --- a/PLUGIN_HOWTO Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,7 +0,0 @@
    -For information on writing a plugin for Purple, Pidgin or Finch, go
    -https://developer.pidgin.im and click on API. From there, see the
    -HOWTOs in the "Related Pages" section.
    -
    -You can also generate this documentation locally by passing
    -"--enable-gtk-doc" to ./configure, then running "make" in the source tree.
    -The documentation will be in the doc/reference/*/html directories.
    --- a/README Sun Oct 08 20:42:20 2017 +0300
    +++ b/README Fri Nov 17 14:23:40 2017 +0300
    @@ -1,5 +1,4 @@
    -Purple, Pidgin and Finch
    -========================
    +# Purple, Pidgin and Finch
    See AUTHORS and COPYRIGHT for the list of contributors.
    libpurple is a library intended to be used by programmers seeking
    @@ -15,49 +14,53 @@
    These programs are not endorsed by, nor affiliated with, AOL nor any
    other company in any way.
    -BUILD
    -=====
    +## BUILD
    +
    +Pidgin uses [meson](https://mesonbuild.com) as a build system.
    +
    +You can quickly build Pidgin with the following commands
    -Read the 'INSTALL' file for more detailed directions.
    + meson build
    + cd build
    + ninja
    + sudo ninja install
    -These programs use the standard ./configure ; make. You need to use
    -gmake, BSD make probably won't work. Remember, run ./configure --help
    -to see what build options are available.
    +There are quite a few options for the build that you can view by looking at `meson_options.txt`. You can specify the options when running meson like the following:
    -In order to compile Pidgin you need to have GTK+ 2.0 installed (as
    -well as the development files!). The configure script will fail if you
    -don't. If you don't have GTK+ 2.0 installed, you should install it
    -using your distribution's package management tools.
    + meson -Ddebug=true build
    +
    +If you've already ran meson you can use `meson configure`
    -For sound support, you also need gstreamer 0.10 or higher.
    -Your distro of choice probably already includes these, just be sure to
    -install the development packages.
    + cd build
    + meson configure -Ddebug=true
    -RUN
    -===
    +## RUN
    -You should run 'make install' as root to make sure plugins and other files
    -get installed into locations they want to be in. Once you've done that,
    -you only need to run 'pidgin' or 'finch'.
    +Currently Pidgin can not be run from a build directory which means you must
    +install it first. Once you've done that, you only need to run 'pidgin' or
    +'finch'.
    To get started, simply add a new account.
    -If you come across a bug, please report it at: https://developer.pidgin.im
    +If you come across a bug, please report it at: https://developer.pidgin.im/
    +
    +## PLUGINS
    -PLUGINS
    -=======
    -
    -If you do not wish to enable the plugin support within Purple, run the
    -./configure script with the --disable-plugins option and recompile your
    -source code. This will prevent the ability to load plugins.
    +If you do not wish to enable the plugin support within Purple, run meson with
    +`-Dplugins=false` or if you've already ran meson use
    +`meson configure -Dplugins=false` from the build directory. This will prevent
    +the ability to load plugins.
    -'make install' puts the plugins in $PREFIX/lib/purple (PREFIX being what
    -you specified when you ./configure'd - it defaults to /usr/local). Purple
    +`ninja install` puts the plugins in `$PREFIX/lib/purple` (PREFIX being what
    +you specified when you ran meson. It defaults to `/usr/local`). Purple
    looks for the plugins in that directory by default. Plugins can be installed
    -per-user in ~/.purple/plugins as well. Pidgin and Finch also look in
    -$PREFIX/lib/pidgin and $PREFIX/lib/finch for UI-specific, respectively.
    +per-user in `~/.purple/plugins` as well. Pidgin and Finch also look in
    +`$PREFIX/lib/pidgin` and `$PREFIX/lib/finch` for UI-specific, respectively.
    +
    +## Developing
    -To build a plugin from a .c file, put it in the plugins/ directory in
    -the source and run 'make filename.so', e.g. if you have the .c file
    -'kickass.c', put it in the plugins/ directory, and from that directory,
    -run 'make kickass.so'.
    \ No newline at end of file
    +There is a ton of information on developing Pidgin available at
    +[developer.pidgin.im](https://developer.pidgin.im).
    +
    +To generate the documentation locally you can pass `-Ddoc=true` to `meson` or
    +`meson configure` which will build the `gtk-docs` for everything.
    --- a/README.hg Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,34 +0,0 @@
    -If you plan to use Pidgin, Finch and libpurple from our Mercurial repository,
    -PLEASE read this message in its entirety!
    -
    -Pidgin, Finch, and libpurple are a fast-moving project with a somewhat regular
    -release schedule. Due to the rate of development, the code in our Mercurial
    -repository undergoes frequent bursts of massive changes, often leaving behind
    -brokenness and partial functionality while the responsible developers rewrite
    -some portion of code or seek to add new features.
    -
    -What this all boils down to is that the code in our Mercurial repository _WILL_
    -sometimes be broken. Because of this, we ask that users who are not interested
    -in personally tracking down bugs and fixing them (without a lot of
    -assistance from the developers!) use only released versions. Since releases
    -will be made often, this should not prevent anyone from using the newest,
    -shiniest features -- but it will prevent users from having to deal with ugly
    -development bugs that we already know about but haven't gotten around to fixing.
    -
    -If you are interested in hacking on Pidgin, Finch, and/or libpurple, please
    -check out the information available at: https://developer.pidgin.im
    -
    -By far the best documentation, however, is the documented code. You can pass
    -"--enable-gtk-doc" to ./configure then run "make" in the source tree to
    -generate pretty documentation in the doc/reference/*/html directories.
    -Otherwise (or even if you do!), the header files for each subsystem contain
    -documentation for the functions they contain. For instance, conversation.h
    -contains documentation for the entire purple_conversation_* API, and account.h
    -contains documentation for the purple_account_* API.
    -
    -If you have questions, please feel free to contact the Pidgin, Finch, and
    -libpurple developers by email at devel@pidgin.im or on IRC at irc.freenode.net
    -in #pidgin. Please do as much homework as you can before contacting us; the
    -more you know about your question, the faster and more effectively we can help!
    -
    -Patches should be posted as Trac tickets at: https://developer.pidgin.im
    --- a/README.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,6 +0,0 @@
    -How to build Pidgin for Windows using MinGW
    -===========================================
    -
    -For the latest build instructions, please refer to:
    -
    -https://developer.pidgin.im/wiki/BuildingWinPidgin
    --- a/acinclude.m4 Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,527 +0,0 @@
    -dnl Added by setup-gettext. Do not remove this
    -dnl unless you know what you are doing.
    -AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
    -
    -# Configure paths for GLIB
    -# Owen Taylor 1997-2001
    -
    -dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
    -dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gobject or
    -dnl gthread is specified in MODULES, pass to pkg-config
    -dnl
    -AC_DEFUN([AM_PATH_GLIB_2_0],
    -[dnl
    -dnl Get the cflags and libraries from pkg-config
    -dnl
    -AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program],
    - , enable_glibtest=yes)
    -
    - pkg_config_args=glib-2.0
    - for module in . $4
    - do
    - case "$module" in
    - gobject)
    - pkg_config_args="$pkg_config_args gobject-2.0"
    - ;;
    - gthread)
    - pkg_config_args="$pkg_config_args gthread-2.0"
    - ;;
    - esac
    - done
    -
    - AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
    -
    - no_glib=""
    -
    - if test x$PKG_CONFIG != xno ; then
    - if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
    - :
    - else
    - echo *** pkg-config too old; version 0.7 or better required.
    - no_glib=yes
    - PKG_CONFIG=no
    - fi
    - else
    - no_glib=yes
    - fi
    -
    - min_glib_version=ifelse([$1], ,2.0.0,$1)
    - AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
    -
    - if test x$PKG_CONFIG != xno ; then
    - ## don't try to run the test against uninstalled libtool libs
    - if $PKG_CONFIG --uninstalled $pkg_config_args; then
    - echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
    - enable_glibtest=no
    - fi
    -
    - if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
    - :
    - else
    - no_glib=yes
    - fi
    - fi
    -
    - if test x"$no_glib" = x ; then
    - GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
    - GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
    - GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
    -
    - GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
    - GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
    - glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
    - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
    - glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
    - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
    - glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
    - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
    - if test "x$enable_glibtest" = "xyes" ; then
    - ac_save_CFLAGS="$CFLAGS"
    - ac_save_LIBS="$LIBS"
    - CFLAGS="$CFLAGS $GLIB_CFLAGS"
    - LIBS="$GLIB_LIBS $LIBS"
    -dnl
    -dnl Now check if the installed GLIB is sufficiently new. (Also sanity
    -dnl checks the results of pkg-config to some extent)
    -dnl
    - rm -f conf.glibtest
    - AC_TRY_RUN([
    -#include <glib.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -
    -int
    -main ()
    -{
    - int major, minor, micro;
    - char *tmp_version;
    -
    - system ("touch conf.glibtest");
    -
    - /* HP/UX 9 (%@#!) writes to sscanf strings */
    - tmp_version = g_strdup("$min_glib_version");
    - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
    - printf("%s, bad version string\n", "$min_glib_version");
    - exit(1);
    - }
    -
    - if ((glib_major_version != $glib_config_major_version) ||
    - (glib_minor_version != $glib_config_minor_version) ||
    - (glib_micro_version != $glib_config_micro_version))
    - {
    - printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
    - $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
    - glib_major_version, glib_minor_version, glib_micro_version);
    - printf ("*** was found! If pkg-config was correct, then it is best\n");
    - printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
    - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
    - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
    - printf("*** required on your system.\n");
    - printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
    - printf("*** to point to the correct configuration files\n");
    - }
    - else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
    - (glib_minor_version != GLIB_MINOR_VERSION) ||
    - (glib_micro_version != GLIB_MICRO_VERSION))
    - {
    - printf("*** GLIB header files (version %d.%d.%d) do not match\n",
    - GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
    - printf("*** library (version %d.%d.%d)\n",
    - glib_major_version, glib_minor_version, glib_micro_version);
    - }
    - else
    - {
    - if ((glib_major_version > major) ||
    - ((glib_major_version == major) && (glib_minor_version > minor)) ||
    - ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
    - {
    - return 0;
    - }
    - else
    - {
    - printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
    - glib_major_version, glib_minor_version, glib_micro_version);
    - printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
    - major, minor, micro);
    - printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
    - printf("***\n");
    - printf("*** If you have already installed a sufficiently new version, this error\n");
    - printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
    - printf("*** being found. The easiest way to fix this is to remove the old version\n");
    - printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
    - printf("*** correct copy of pkg-config. (In this case, you will have to\n");
    - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
    - printf("*** so that the correct libraries are found at run-time))\n");
    - }
    - }
    - return 1;
    -}
    -],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
    - CFLAGS="$ac_save_CFLAGS"
    - LIBS="$ac_save_LIBS"
    - fi
    - fi
    - if test "x$no_glib" = x ; then
    - AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
    - ifelse([$2], , :, [$2])
    - else
    - AC_MSG_RESULT(no)
    - if test "$PKG_CONFIG" = "no" ; then
    - echo "*** A new enough version of pkg-config was not found."
    - echo "*** See http://www.freedesktop.org/software/pkgconfig/"
    - else
    - if test -f conf.glibtest ; then
    - :
    - else
    - echo "*** Could not run GLIB test program, checking why..."
    - ac_save_CFLAGS="$CFLAGS"
    - ac_save_LIBS="$LIBS"
    - CFLAGS="$CFLAGS $GLIB_CFLAGS"
    - LIBS="$LIBS $GLIB_LIBS"
    - AC_TRY_LINK([
    -#include <glib.h>
    -#include <stdio.h>
    -], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
    - [ echo "*** The test program compiled, but did not run. This usually means"
    - echo "*** that the run-time linker is not finding GLIB or finding the wrong"
    - echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
    - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
    - echo "*** to the installed location Also, make sure you have run ldconfig if that"
    - echo "*** is required on your system"
    - echo "***"
    - echo "*** If you have an old version installed, it is best to remove it, although"
    - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
    - [ echo "*** The test program failed to compile or link. See the file config.log for the"
    - echo "*** exact error that occurred. This usually means GLIB is incorrectly installed."])
    - CFLAGS="$ac_save_CFLAGS"
    - LIBS="$ac_save_LIBS"
    - fi
    - fi
    - GLIB_CFLAGS=""
    - GLIB_LIBS=""
    - GLIB_GENMARSHAL=""
    - GOBJECT_QUERY=""
    - GLIB_MKENUMS=""
    - ifelse([$3], , :, [$3])
    - fi
    - AC_SUBST(GLIB_CFLAGS)
    - AC_SUBST(GLIB_LIBS)
    - AC_SUBST(GLIB_GENMARSHAL)
    - AC_SUBST(GOBJECT_QUERY)
    - AC_SUBST(GLIB_MKENUMS)
    - rm -f conf.glibtest
    -])
    -# Configure paths for GTK+
    -# Owen Taylor 1997-2001
    -
    -dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
    -dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
    -dnl pass to pkg-config
    -dnl
    -AC_DEFUN([AM_PATH_GTK_2_0],
    -[dnl
    -dnl Get the cflags and libraries from pkg-config
    -dnl
    -AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
    - , enable_gtktest=yes)
    -
    - pkg_config_args=gtk+-2.0
    - for module in . $4
    - do
    - case "$module" in
    - gthread)
    - pkg_config_args="$pkg_config_args gthread-2.0"
    - ;;
    - esac
    - done
    -
    - no_gtk=""
    -
    - AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
    -
    - if test x$PKG_CONFIG != xno ; then
    - if pkg-config --atleast-pkgconfig-version 0.7 ; then
    - :
    - else
    - echo *** pkg-config too old; version 0.7 or better required.
    - no_gtk=yes
    - PKG_CONFIG=no
    - fi
    - else
    - no_gtk=yes
    - fi
    -
    - min_gtk_version=ifelse([$1], ,2.0.0,$1)
    - AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
    -
    - if test x$PKG_CONFIG != xno ; then
    - ## don't try to run the test against uninstalled libtool libs
    - if $PKG_CONFIG --uninstalled $pkg_config_args; then
    - echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
    - enable_gtktest=no
    - fi
    -
    - if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
    - :
    - else
    - no_gtk=yes
    - fi
    - fi
    -
    - if test x"$no_gtk" = x ; then
    - GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
    - GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
    - gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
    - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
    - gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
    - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
    - gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
    - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
    - if test "x$enable_gtktest" = "xyes" ; then
    - ac_save_CFLAGS="$CFLAGS"
    - ac_save_LIBS="$LIBS"
    - CFLAGS="$CFLAGS $GTK_CFLAGS"
    - LIBS="$GTK_LIBS $LIBS"
    -dnl
    -dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
    -dnl checks the results of pkg-config to some extent)
    -dnl
    - rm -f conf.gtktest
    - AC_TRY_RUN([
    -#include <gtk/gtk.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -
    -int
    -main ()
    -{
    - int major, minor, micro;
    - char *tmp_version;
    -
    - system ("touch conf.gtktest");
    -
    - /* HP/UX 9 (%@#!) writes to sscanf strings */
    - tmp_version = g_strdup("$min_gtk_version");
    - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
    - printf("%s, bad version string\n", "$min_gtk_version");
    - exit(1);
    - }
    -
    - if ((gtk_major_version != $gtk_config_major_version) ||
    - (gtk_minor_version != $gtk_config_minor_version) ||
    - (gtk_micro_version != $gtk_config_micro_version))
    - {
    - printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
    - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
    - gtk_major_version, gtk_minor_version, gtk_micro_version);
    - printf ("*** was found! If pkg-config was correct, then it is best\n");
    - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
    - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
    - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
    - printf("*** required on your system.\n");
    - printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
    - printf("*** to point to the correct configuration files\n");
    - }
    - else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
    - (gtk_minor_version != GTK_MINOR_VERSION) ||
    - (gtk_micro_version != GTK_MICRO_VERSION))
    - {
    - printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
    - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
    - printf("*** library (version %d.%d.%d)\n",
    - gtk_major_version, gtk_minor_version, gtk_micro_version);
    - }
    - else
    - {
    - if ((gtk_major_version > major) ||
    - ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
    - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
    - {
    - return 0;
    - }
    - else
    - {
    - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
    - gtk_major_version, gtk_minor_version, gtk_micro_version);
    - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
    - major, minor, micro);
    - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
    - printf("***\n");
    - printf("*** If you have already installed a sufficiently new version, this error\n");
    - printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
    - printf("*** being found. The easiest way to fix this is to remove the old version\n");
    - printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
    - printf("*** correct copy of pkg-config. (In this case, you will have to\n");
    - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
    - printf("*** so that the correct libraries are found at run-time))\n");
    - }
    - }
    - return 1;
    -}
    -],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
    - CFLAGS="$ac_save_CFLAGS"
    - LIBS="$ac_save_LIBS"
    - fi
    - fi
    - if test "x$no_gtk" = x ; then
    - AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
    - ifelse([$2], , :, [$2])
    - else
    - AC_MSG_RESULT(no)
    - if test "$PKG_CONFIG" = "no" ; then
    - echo "*** A new enough version of pkg-config was not found."
    - echo "*** See http://pkgconfig.sourceforge.net"
    - else
    - if test -f conf.gtktest ; then
    - :
    - else
    - echo "*** Could not run GTK+ test program, checking why..."
    - ac_save_CFLAGS="$CFLAGS"
    - ac_save_LIBS="$LIBS"
    - CFLAGS="$CFLAGS $GTK_CFLAGS"
    - LIBS="$LIBS $GTK_LIBS"
    - AC_TRY_LINK([
    -#include <gtk/gtk.h>
    -#include <stdio.h>
    -], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
    - [ echo "*** The test program compiled, but did not run. This usually means"
    - echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
    - echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
    - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
    - echo "*** to the installed location Also, make sure you have run ldconfig if that"
    - echo "*** is required on your system"
    - echo "***"
    - echo "*** If you have an old version installed, it is best to remove it, although"
    - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
    - [ echo "*** The test program failed to compile or link. See the file config.log for the"
    - echo "*** exact error that occurred. This usually means GTK+ is incorrectly installed."])
    - CFLAGS="$ac_save_CFLAGS"
    - LIBS="$ac_save_LIBS"
    - fi
    - fi
    - GTK_CFLAGS=""
    - GTK_LIBS=""
    - ifelse([$3], , :, [$3])
    - fi
    - AC_SUBST(GTK_CFLAGS)
    - AC_SUBST(GTK_LIBS)
    - rm -f conf.gtktest
    -])
    -
    -dnl ac_var_timeszone_externals.m4
    -
    -# Define 'timezone', 'altzone' and 'daylight'
    -# http://www.gnu.org/software/ac-archive/Miscellaneous/ac_var_timezone_externals.html
    -# Use instead of 'AC_STRUCT_TIMEZONE' to determine whether the
    -# the external timezone variables 'timezone', 'altzone' and 'daylight' exist,
    -# defining 'HAVE_TIMEZONE', 'HAVE_ALTZONE' and 'HAVE_DAYLIGHT' respectively
    -# (as well as gaining the macros defined by 'AC_STRUCT_TIMEZONE').
    -# Mark R.Bannister <markb@freedomware.co.uk>
    -AC_DEFUN([AC_VAR_TIMEZONE_EXTERNALS],
    -[ AC_REQUIRE([AC_STRUCT_TIMEZONE])dnl
    - AC_CACHE_CHECK(for timezone external, mb_cv_var_timezone,
    - [ AC_TRY_LINK([#include <time.h>], [return (int)timezone;],
    - mb_cv_var_timezone=yes,
    - mb_cv_var_timezone=no)
    - ])
    - AC_CACHE_CHECK(for altzone external, mb_cv_var_altzone,
    - [ AC_TRY_LINK([#include <time.h>], [return (int)altzone;],
    - mb_cv_var_altzone=yes,
    - mb_cv_var_altzone=no)
    - ])
    - AC_CACHE_CHECK(for daylight external, mb_cv_var_daylight,
    - [ AC_TRY_LINK([#include <time.h>], [return (int)daylight;],
    - mb_cv_var_daylight=yes,
    - mb_cv_var_daylight=no)
    - ])
    - if test $mb_cv_var_timezone = yes; then
    - AC_DEFINE([HAVE_TIMEZONE], 1,
    - [Define if you have the external 'timezone' variable.])
    - fi
    - if test $mb_cv_var_altzone = yes; then
    - AC_DEFINE([HAVE_ALTZONE], 1,
    - [Define if you have the external 'altzone' variable.])
    - fi
    - if test $mb_cv_var_daylight = yes; then
    - AC_DEFINE([HAVE_DAYLIGHT], 1,
    - [Define if you have the external 'daylight' variable.])
    - fi
    -])
    -
    -dnl Available from the GNU Autoconf Macro Archive at:
    -dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_prog_perl_modules.html
    -dnl
    -AC_DEFUN([AC_PROG_PERL_MODULES],[dnl
    -ac_perl_modules="$1"
    -# Make sure we have perl
    -if test -z "$PERL"; then
    -AC_CHECK_PROG(PERL,perl,perl)
    -fi
    -
    -if test "x$PERL" != x; then
    - ac_perl_modules_failed=0
    - for ac_perl_module in $ac_perl_modules; do
    - AC_MSG_CHECKING(for perl module $ac_perl_module)
    -
    - # Would be nice to log result here, but can't rely on autoconf internals
    - $PERL "-M$ac_perl_module" -e exit > /dev/null 2>&1
    - if test $? -ne 0; then
    - AC_MSG_RESULT(no);
    - ac_perl_modules_failed=1
    - else
    - AC_MSG_RESULT(ok);
    - fi
    - done
    -
    - # Run optional shell commands
    - if test "$ac_perl_modules_failed" = 0; then
    - :
    - $2
    - else
    - :
    - $3
    - fi
    -else
    - AC_MSG_WARN(could not find perl)
    -fi])dnl
    -
    -
    -dnl AM_GCONF_SOURCE_2
    -dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
    -dnl (i.e. pass to gconftool-2
    -dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
    -dnl you should install foo.schemas files
    -dnl
    -
    -AC_DEFUN([AM_GCONF_SOURCE_2],
    -[
    - if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
    - GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
    - else
    - GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
    - fi
    -
    - AC_ARG_WITH(gconf-source,
    - [ --with-gconf-source=sourceaddress Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",)
    -
    - AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
    - AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
    -
    - if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
    - GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
    - fi
    -
    - AC_ARG_WITH(gconf-schema-file-dir,
    - [ --with-gconf-schema-file-dir=dir Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",)
    -
    - AC_SUBST(GCONF_SCHEMA_FILE_DIR)
    - AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
    -
    - AC_ARG_ENABLE(schemas-install,
    - [ --disable-schemas-install Disable the schemas installation],
    - [case ${enableval} in
    - yes|no) ;;
    - *) AC_MSG_ERROR(bad value ${enableval} for --enable-schemas-install) ;;
    - esac])
    - AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
    -])
    --- a/autogen.sh Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,214 +0,0 @@
    -#! /bin/sh
    -# Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
    -# Copyright (C) 2003-2008 Gary Kramlich <grim@reaperworld.com>
    -#
    -# This program is free software; you can redistribute it and/or modify it
    -# under the terms of the GNU General Public License as published by the Free
    -# Software Foundation; either version 2 of the License, or (at your option)
    -# any later version.
    -#
    -# This program is distributed in the hope that it will be useful, but WITHOUT
    -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
    -# more details.
    -#
    -# You should have received a copy of the GNU General Public License along with
    -# this program; if not, write to the Free Software Foundation, Inc., 51
    -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    -
    -###############################################################################
    -# Usage
    -###############################################################################
    -# This script uses a config file that can be used to stash common arguments
    -# passed to configure or environment variables that need to be set before
    -# configure is called. The configuration file is a simple shell script that
    -# gets sourced.
    -#
    -# By default, the config file that is used is named 'autogen.args'. This can
    -# be configured below.
    -#
    -# Available options that are handled are as follow:
    -# ACLOCAL_FLAGS - command line arguments to pass to aclocal
    -# AUTOCONF_FLAGS - command line arguments to pass to autoconf
    -# AUTOHEADER_FLAGS - command line arguments to pass to autoheader
    -# AUTOMAKE_FLAGS - command line arguments to pass to automake flags
    -# CONFIGURE_FLAGS - command line arguments to pass to configure
    -# GLIB_GETTEXTIZE_FLAGS - command line arguments to pass to glib-gettextize
    -# GTKDOCIZE_FLAGS - command line arguments to pass to gtkdocize
    -# INTLTOOLIZE_FLAGS - command line arguments to pass to intltoolize
    -# LIBTOOLIZE_FLAGS - command line arguments to pass to libtoolize
    -#
    -# Other helpful notes:
    -# If you're using a different c compiler, you can override the environment
    -# variable in 'autogen.args'. For example, say you're using distcc, just add
    -# the following to 'autogen.args':
    -#
    -# CC="distcc"
    -#
    -# This will work for any influential environment variable to configure.
    -###############################################################################
    -PACKAGE="Pidgin"
    -ARGS_FILE="autogen.args"
    -export CFLAGS
    -export LDFLAGS
    -
    -DEFAULT_ACLOCAL_FLAGS="-I m4macros"
    -
    -libtoolize="libtoolize"
    -case $(uname -s) in
    - Darwin*)
    - libtoolize="glibtoolize"
    -
    - BREW=$(which brew)
    -
    - if [ -n ${BREW} ] ; then
    - GETTEXT_PREFIX=$(${BREW} --prefix gettext 2>/dev/null)
    - if [ -n ${GETTEXT_PREFIX} ] ; then
    - PATH=${GETTEXT_PREFIX}/bin:$PATH
    - DEFAULT_ACLOCAL_FLAGS="${DEFAULT_ACLOCAL_FLAGS} -I ${GETTEXT_PREFIX}/share/aclocal"
    - fi
    -
    - GI_PREFIX=$(${BREW} --prefix gobject-introspection)
    - if [ -n ${GI_PREFIX} ] ; then
    - PATH=${GI_PREFIX}/bin:$PATH
    - DEFAULT_ACLOCAL_FLAGS="${DEFAULT_ACLOCAL_FLAGS} -I ${GI_PREFIX}/share/aclocal"
    - fi
    - fi
    - ;;
    - *)
    -esac
    -
    -###############################################################################
    -# Some helper functions
    -###############################################################################
    -check () {
    - CMD=$1
    -
    - printf "%s" "checking for ${CMD}... "
    - BIN=`which ${CMD} 2>/dev/null`
    -
    - if [ x"${BIN}" = x"" ] ; then
    - echo "not found."
    - echo "${CMD} is required to build ${PACKAGE}!"
    - exit 1;
    - fi
    -
    - echo "${BIN}"
    -}
    -
    -run_or_die () { # beotch
    - CMD=$1
    - shift
    -
    - OUTPUT=`mktemp autogen-XXXXXX`
    -
    - printf "running %s %s... " ${CMD} "$*"
    - ${CMD} ${@} >${OUTPUT} 2>&1
    -
    - if [ $? != 0 ] ; then
    - echo "failed."
    - cat ${OUTPUT}
    - rm -f ${OUTPUT}
    - exit 1
    - else
    - echo "done."
    - cat ${OUTPUT}
    -
    - rm -f ${OUTPUT}
    - fi
    -}
    -
    -check_gtkdoc() {
    - printf "checking for gtkdocize... "
    - GTKDOCIZE=`which gtkdocize 2>/dev/null`
    -
    - if [ x"${GTKDOCIZE}" = x"" ] ; then
    - echo "not found."
    - echo "EXTRA_DIST =" > gtk-doc.make
    - echo "You don't have gtk-doc installed, and thus won't be able to
    -generate the documentation.
    -"
    - else
    - echo "${GTKDOCIZE}"
    - run_or_die ${GTKDOCIZE} ${GTKDOCIZE_FLAGS}
    - fi
    -}
    -
    -cleanup () {
    - rm -f autogen-??????
    - echo
    - exit 2
    -}
    -
    -###############################################################################
    -# We really start here, yes, very sneaky!
    -###############################################################################
    -trap cleanup 2
    -
    -FIGLET=`which figlet 2> /dev/null`
    -if [ x"${FIGLET}" != x"" ] ; then
    - ${FIGLET} -f small ${PACKAGE}
    - echo "build system is being generated"
    -else
    - echo "autogenerating build system for '${PACKAGE}'"
    -fi
    -
    -###############################################################################
    -# Look for our args file
    -###############################################################################
    -printf "%s" "checking for ${ARGS_FILE}: "
    -if [ -f ${ARGS_FILE} ] ; then
    - echo "found."
    - printf "%s" "sourcing ${ARGS_FILE}: "
    - . "`dirname "$0"`"/${ARGS_FILE}
    - echo "done."
    -else
    - echo "not found."
    -fi
    -
    -###############################################################################
    -# Work inside the source directory
    -##############################################################################
    -test -z "$SRCDIR" && SRCDIR=`dirname "$0"`
    -test -z "$SRCDIR" && SRCDIR=.
    -
    -OLDDIR=`pwd`
    -cd "$SRCDIR"
    -
    -###############################################################################
    -# Check for our required helpers
    -###############################################################################
    -check "$libtoolize"; LIBTOOLIZE=${BIN};
    -check "glib-gettextize"; GLIB_GETTEXTIZE=${BIN};
    -check "intltoolize"; INTLTOOLIZE=${BIN};
    -check "sed"; SED=${BIN};
    -check "aclocal"; ACLOCAL=${BIN};
    -check "autoheader"; AUTOHEADER=${BIN};
    -check "automake"; AUTOMAKE=${BIN};
    -check "autoconf"; AUTOCONF=${BIN};
    -
    -###############################################################################
    -# Run all of our helpers
    -###############################################################################
    -run_or_die ${LIBTOOLIZE} ${LIBTOOLIZE_FLAGS:-"-c -f --automake"}
    -run_or_die ${GLIB_GETTEXTIZE} ${GLIB_GETTEXTIZE_FLAGS:-"--force --copy"}
    -run_or_die ${INTLTOOLIZE} ${INTLTOOLIZE_FLAGS:-"-c -f --automake"}
    -# This call to sed is needed to work around an annoying bug in intltool 0.40.6
    -# See https://developer.pidgin.im/ticket/9520 for details
    -run_or_die ${SED} -i -e "s:'\^\$\$lang\$\$':\^\$\$lang\$\$:g" po/Makefile.in.in
    -# glib-gettextize doesn't seems to use AM_V_GEN macro
    -${SED} -i -e "s:\\tfile=\`echo:\\t@echo -e \" GEN\\\\t\$\@\"; file=\`echo:g" po/Makefile.in.in
    -run_or_die ${ACLOCAL} ${ACLOCAL_FLAGS:-"${DEFAULT_ACLOCAL_FLAGS}"}
    -run_or_die ${AUTOHEADER} ${AUTOHEADER_FLAGS}
    -check_gtkdoc
    -run_or_die ${AUTOMAKE} ${AUTOMAKE_FLAGS:-"-a -c --gnu"}
    -run_or_die ${AUTOCONF} ${AUTOCONF_FLAGS}
    -
    -###############################################################################
    -# Run configure
    -###############################################################################
    -cd "$OLDDIR"
    -if test -z "$NOCONFIGURE"; then
    - echo "running $SRCDIR/configure ${CONFIGURE_FLAGS} $@"
    - "$SRCDIR/configure" ${CONFIGURE_FLAGS} $@
    -fi
    --- a/bitbucket-pipelines.yml Sun Oct 08 20:42:20 2017 +0300
    +++ b/bitbucket-pipelines.yml Fri Nov 17 14:23:40 2017 +0300
    @@ -1,13 +1,13 @@
    # vi:et:ts=2 sw=2 sts=2
    -image: pidgin/builder-debian:stretch
    +image: pidgin/builder-debian:buster
    pipelines:
    default:
    - step:
    script:
    - set -ex
    - - ./autogen.sh --enable-debug --enable-gtk-doc
    - - make -s -j$(nproc)
    - - make -s -j$(nproc) distcheck
    + - meson -Dsilc=false -Ddoc=true -Ddebug=true build
    + - ninja -C build
    + - ninja -C build test
    branches:
    release-2.x.y:
    - step:
    --- a/config.h.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,404 +0,0 @@
    -/* config.h. Generated from config.h.in by configure. */
    -/* config.h.in. Generated from configure.ac by autoheader. */
    -
    -/* Define if building universal (internal helper macro) */
    -/* #undef AC_APPLE_UNIVERSAL_BUILD */
    -
    -/* configure arguments */
    -/* #undef CONFIG_ARGS */
    -
    -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
    - systems. This function is required for `alloca.c' support on those systems.
    - */
    -/* #undef CRAY_STACKSEG_END */
    -
    -/* Define to 1 if using `alloca.c'. */
    -/* #undef C_ALLOCA */
    -
    -/* Define if debugging is enabled. */
    -/* #undef DEBUG */
    -
    -/* display version info */
    -/* #undef DISPLAY_VERSION */
    -
    -/* Define if mono enabled. */
    -/* #undef ENABLE_MONO */
    -
    -/* always defined to indicate that i18n is enabled */
    -#define ENABLE_NLS 1
    -
    -/* use the given file as GnuTLS default trust store */
    -/* #undef GG_CONFIG_GNUTLS_SYSTEM_TRUST_STORE */
    -
    -/* Define to 1 if you have `alloca', as a function or macro. */
    -/* #undef HAVE_ALLOCA */
    -
    -/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
    - */
    -/* #undef HAVE_ALLOCA_H */
    -
    -/* Define if you have the external 'altzone' variable. */
    -/* #undef HAVE_ALTZONE */
    -
    -/* Define to 1 if you have the `bind_textdomain_codeset' function. */
    -/* #undef HAVE_BIND_TEXTDOMAIN_CODESET */
    -
    -/* Define to 1 if you have the `connect' function. */
    -/* #undef HAVE_CONNECT */
    -
    -/* Define to 1 if Cyrus SASL is present */
    -/* It's defined in global.mak. */
    -/* #undef HAVE_CYRUS_SASL */
    -
    -/* Define if you have the external 'daylight' variable. */
    -#define HAVE_DAYLIGHT 1
    -
    -/* Define if we are using D-Bus. */
    -/* #undef HAVE_DBUS */
    -
    -/* Define to 1 if you have the `dcgettext' function. */
    -/* #undef HAVE_DCGETTEXT */
    -
    -/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
    - */
    -/* #undef HAVE_DECL_TZNAME */
    -
    -/* Define to 1 if you have the <dlfcn.h> header file. */
    -/* #undef HAVE_DLFCN_H */
    -
    -/* Define if we're using evolution addressbook. */
    -/* #undef HAVE_EVOLUTION_ADDRESSBOOK */
    -
    -/* Define to 1 if you have the <EXTERN.h> header file. */
    -/* #undef HAVE_EXTERN_H */
    -
    -/* Use Farsight instead of Farstream */
    -/* #undef HAVE_FARSIGHT */
    -
    -/* Define to 1 if you have the <fcntl.h> header file. */
    -#define HAVE_FCNTL_H 1
    -
    -/* Define to 1 if your stdio has int fileno(FILE *). */
    -#define HAVE_FILENO 1
    -
    -/* Define to 1 if you have the getaddrinfo function (since WinXP). */
    -#define HAVE_GETADDRINFO 1
    -
    -/* Define to 1 if you have the `gethostid' function. */
    -/* #define HAVE_GETHOSTID 1 */
    -
    -/* Define to 1 if you have the `getifaddrs' function. */
    -/* #undef HAVE_GETIFADDRS */
    -
    -/* Define if the GNU gettext() function is already present or preinstalled. */
    -/* #define HAVE_GETTEXT 1 */
    -
    -/* Define if you have GNUTLS */
    -#define HAVE_GNUTLS 1
    -
    -/* Define to 1 if you have the <gnutls/gnutls.h> header file. */
    -#define HAVE_GNUTLS_GNUTLS_H 1
    -
    -/* Define if your gnutls has gnutls_priority_set_direct and friends */
    -/* #undef HAVE_GNUTLS_PRIORITY_FUNCS */
    -
    -/* Define to 1 if you have the `inet_ntop' function. */
    -#define HAVE_INET_NTOP 1
    -
    -/* Define to 1 if you have the <inttypes.h> header file. */
    -#define HAVE_INTTYPES_H 1
    -
    -/* Define if we have IOKit */
    -/* #undef HAVE_IOKIT */
    -
    -/* Define if the IPV6_V6ONLY setsockopt option exists */
    -/* #undef HAVE_IPV6_V6ONLY */
    -
    -/* Define to 1 if you have the `krb_get_err_text' function. */
    -/* #undef HAVE_KRB_GET_ERR_TEXT */
    -
    -/* Define to 1 if you have the `krb_get_lrealm' function. */
    -/* #undef HAVE_KRB_GET_LREALM */
    -
    -/* Define to 1 if you have the `krb_log' function. */
    -/* #undef HAVE_KRB_LOG */
    -
    -/* Define to 1 if you have the `krb_rd_req' function. */
    -/* #undef HAVE_KRB_RD_REQ */
    -
    -/* Define to 1 if you have the `krb_set_key' function. */
    -/* #undef HAVE_KRB_SET_KEY */
    -
    -/* Define if your <locale.h> file defines LC_MESSAGES. */
    -/* #define HAVE_LC_MESSAGES 1 */
    -
    -/* Linked with external libgadu */
    -#define HAVE_LIBGADU 1
    -
    -/* Define to 1 if you have the `nsl' library (-lnsl). */
    -/* #define HAVE_LIBNSL 1 */
    -
    -/* Define to 1 if you have the `resolv' library (-lresolv). */
    -/* #define HAVE_LIBRESOLV 1 */
    -
    -/* Define to 1 if you have the `socket' library (-lsocket). */
    -/* #undef HAVE_LIBSOCKET */
    -
    -/* Define to 1 if you have the <malloc.h> header file. */
    -#define HAVE_MALLOC_H 1
    -
    -/* Define if we have support for application media type. */
    -/* #undef HAVE_MEDIA_APPLICATION */
    -
    -/* Define to 1 if you have the `mono_jit_init' function. */
    -/* #undef HAVE_MONO_JIT_INIT */
    -
    -/* Define to 1 if you have the <mono/jit/jit.h> header file. */
    -/* #undef HAVE_MONO_JIT_JIT_H */
    -
    -/* Define to 1 if you have the <mono/metadata/object.h> header file. */
    -/* #undef HAVE_MONO_METADATA_OBJECT_H */
    -
    -/* Define if we have NetworkManager. */
    -/* #undef HAVE_NETWORKMANAGER */
    -
    -/* Define to 1 if you have the <nspr.h> header file. */
    -#define HAVE_NSPR_H 1
    -
    -/* Define if you have Mozilla NSS */
    -#define HAVE_NSS 1
    -
    -/* Define to 1 if you have the <nss.h> header file. */
    -#define HAVE_NSS_H 1
    -
    -/* Define if we have Pango 1.4 or newer. */
    -#define HAVE_PANGO14 1
    -
    -/* Define to 1 if you have the <paths.h> header file. */
    -/* #define HAVE_PATHS_H 1 */
    -
    -/* Define to 1 if you have the <prio.h> header file. */
    -/* #undef HAVE_PRIO_H */
    -
    -/* Define to 1 if you have the <sgtty.h> header file. */
    -/* #define HAVE_SGTTY_H 1 */
    -
    -/* Define if we have silcmime.h */
    -#define HAVE_SILCMIME_H 1
    -
    -/* Define to 1 if you have the <smime.h> header file. */
    -/* #undef HAVE_SMIME_H */
    -
    -/* Define to 1 if you have the `snprintf' function. */
    -#define HAVE_SNPRINTF 1
    -
    -/* Define if you have SSL */
    -#define HAVE_SSL 1
    -
    -/* Define to 1 if you have the <ssl.h> header file. */
    -/* #undef HAVE_SSL_H */
    -
    -/* Define to 1 if you have the <stdint.h> header file. */
    -#define HAVE_STDINT_H 1
    -
    -/* Define to 1 if you have the `strdup' function. */
    -#define HAVE_STRDUP 1
    -
    -/* Define to 1 if you have a strftime() that supports the %z format string. */
    -/* #undef HAVE_STRFTIME_Z_FORMAT */
    -
    -/* Define to 1 if you have the <strings.h> header file. */
    -#define HAVE_STRINGS_H 1
    -
    -/* Define if struct sockaddr has an sa_len member */
    -/* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */
    -
    -/* Define to 1 if `tm_zone' is a member of `struct tm'. */
    -/* #define HAVE_STRUCT_TM_TM_ZONE 1 */
    -
    -/* Define to 1 if you have the <sys/cdefs.h> header file. */
    -/* #define HAVE_SYS_CDEFS_H 1 */
    -
    -/* Define to 1 if you have the <sys/file.h> header file. */
    -#define HAVE_SYS_FILE_H 1
    -
    -/* Define to 1 if you have the <sys/filio.h> header file. */
    -/* #undef HAVE_SYS_FILIO_H */
    -
    -/* Define to 1 if you have the <sys/ioctl.h> header file. */
    -/* #define HAVE_SYS_IOCTL_H 1 */
    -
    -/* Define to 1 if you have the <sys/msgbuf.h> header file. */
    -/* #undef HAVE_SYS_MSGBUF_H */
    -
    -/* Define to 1 if you have the <sys/param.h> header file. */
    -/* #define HAVE_SYS_PARAM_H 1 */
    -
    -/* Define to 1 if you have the <sys/select.h> header file. */
    -/* #define HAVE_SYS_SELECT_H 1 */
    -
    -/* Define to 1 if you have the <sys/socket.h> header file. */
    -/* #define HAVE_SYS_SOCKET_H 1 */
    -
    -/* Define to 1 if you have the <sys/stat.h> header file. */
    -#define HAVE_SYS_STAT_H 1
    -
    -/* Define to 1 if you have the <sys/sysctl.h> header file. */
    -/* #define HAVE_SYS_SYSCTL_H 1 */
    -
    -/* Define to 1 if you have the <sys/types.h> header file. */
    -#define HAVE_SYS_TYPES_H 1
    -
    -/* Define to 1 if you have the <sys/uio.h> header file. */
    -/* #define HAVE_SYS_UIO_H 1 */
    -
    -/* Define to 1 if you have the <sys/utsname.h> header file. */
    -/* #define HAVE_SYS_UTSNAME_H 1 */
    -
    -/* Define to 1 if you have the <sys/wait.h> header file. */
    -/* #define HAVE_SYS_WAIT_H 1 */
    -
    -/* Define to 1 if you have the <termios.h> header file. */
    -/* #define HAVE_TERMIOS_H 1 */
    -
    -/* Define to 1 if you have the `timegm' function. */
    -/* #define HAVE_TIMEGM 1 */
    -
    -/* Define if you have the external 'timezone' variable. */
    -#define HAVE_TIMEZONE 1
    -
    -/* Define if you have a tm_gmtoff member in struct tm */
    -/* #define HAVE_TM_GMTOFF 1 */
    -
    -/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
    - `HAVE_STRUCT_TM_TM_ZONE' instead. */
    -/* #define HAVE_TM_ZONE 1 */
    -
    -/* Define to 1 if you don't have `tm_zone' but do have the external array
    - `tzname'. */
    -/* #undef HAVE_TZNAME */
    -
    -/* Define to 1 if you have the <unistd.h> header file. */
    -/*#define HAVE_UNISTD_H 1*/
    -
    -/* Define to 1 if you have X11 */
    -/* #define HAVE_X11 1 */
    -
    -/* whether or not we have xsltproc for devhelp index */
    -/* #define HAVE_XSLTPROC 1 */
    -
    -/* Define if external libzephyr should be used. */
    -/* #undef LIBZEPHYR_EXT */
    -
    -/* Define to the sub-directory in which libtool stores uninstalled libraries.
    - */
    -/* #define LT_OBJDIR ".libs/" */
    -
    -/* Define to 1 if you don't have wide-character support. */
    -/* #undef NO_WIDECHAR */
    -
    -/* Name of package */
    -#define PACKAGE "pidgin"
    -
    -/* Define to the address where bug reports for this package should be sent. */
    -#define PACKAGE_BUGREPORT "devel@pidgin.im"
    -
    -/* Define to the full name of this package. */
    -#define PACKAGE_NAME "pidgin"
    -
    -/* Define to the full name and version of this package. */
    -/* #define PACKAGE_STRING "pidgin ?-.?.?devel" */
    -
    -/* Define to the one symbol short name of this package. */
    -#define PACKAGE_TARNAME "pidgin"
    -
    -/* Define to the home page for this package. */
    -#define PACKAGE_URL ""
    -
    -/* Define to the version of this package. */
    -/* #define PACKAGE_VERSION "?.?.?devel" */
    -
    -/* Define if plugins are enabled. */
    -#define PURPLE_PLUGINS 1
    -
    -/* The size of `time_t', as computed by sizeof. */
    -#define SIZEOF_TIME_T 4
    -
    -/* If using the C implementation of alloca, define if you know the
    - direction of stack growth for your system; otherwise it will be
    - automatically deduced at runtime.
    - STACK_DIRECTION > 0 => grows toward higher addresses
    - STACK_DIRECTION < 0 => grows toward lower addresses
    - STACK_DIRECTION = 0 => direction of growth unknown */
    -/* #undef STACK_DIRECTION */
    -
    -/* Loads static protocol plugin module initialization functions. */
    -#ifndef STATIC_PROTO_INIT
    -#define STATIC_PROTO_INIT static void static_proto_init(void) { }
    -#endif
    -
    -/* Use GStreamer for playing sounds */
    -/* It's defined in global.mak. */
    -/* #undef USE_GSTREAMER */
    -
    -/* Use voice and video */
    -/* It's defined in global.mak. */
    -/* #undef USE_VV */
    -
    -/* Use GNU Libidn for stringprep and IDN */
    -/* #define USE_IDN 1 */
    -
    -/* Define if python headers are available. */
    -/* #undef USE_PYTHON */
    -
    -/* Use voice and video */
    -/* #define USE_VV 1 */
    -
    -/* Version number of package */
    -#define VERSION "@VERSION@"
    -#define DISPLAY_VERSION "@DISPLAY_VERSION@"
    -
    -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    - significant byte first (like Motorola and SPARC, unlike Intel). */
    -/* # undef WORDS_BIGENDIAN */
    -
    -/* Define to 1 if the X Window System is missing or not being used. */
    -/* #undef X_DISPLAY_MISSING */
    -
    -/* Size of an int32. */
    -#define ZEPHYR_INT32 long
    -
    -/* Define if kerberos should be used in Zephyr. */
    -/* #undef ZEPHYR_USES_KERBEROS */
    -
    -/* Number of bits in a file offset, on hosts where this is settable. */
    -/* #define _FILE_OFFSET_BITS 64 */
    -
    -/* Define for large files, on AIX-style hosts. */
    -/* #undef _LARGE_FILES */
    -
    -/* Define to `unsigned int' if <sys/types.h> does not define. */
    -/* #undef size_t */
    -
    -/* socklen_t size */
    -/* #undef socklen_t */
    -
    -/*
    - * Following are added for Win32 version of Pidgin
    - */
    -#define HAVE_VSNPRINTF 1
    -
    -#define FINCH_LIBDIR wpurple_lib_dir(NULL)
    -#define PIDGIN_LIBDIR wpurple_lib_dir(NULL)
    -#define PURPLE_DATADIR wpurple_bin_dir()
    -#define PURPLE_LIBDIR wpurple_lib_dir(NULL)
    -#define PURPLE_LOCALEDIR wpurple_locale_dir()
    -#define PURPLE_SYSCONFDIR wpurple_sysconf_dir()
    -
    -#define HAVE_FILENO 1
    -
    -#ifndef _WIN32_WINNT
    -/* _WIN32_WINNT_WINXP = 0x0501 */
    -#define _WIN32_WINNT 0x0501
    -#endif
    -
    --- a/configure.ac Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,2104 +0,0 @@
    -dnl Process this file with autoconf to produce a configure script.
    -AC_PREREQ([2.63])
    -
    -# UPDATING VERSION NUMBERS FOR RELEASES
    -#
    -# purple_micro_version += 1
    -#
    -# If any functions have been added to libpurple, Pidgin, or Finch:
    -# purple_micro_version = 0
    -# purple_minor_version += 1
    -# purple_lt_current += 1
    -#
    -# If backwards compatibility has been broken in libpurple, Pidgin, or Finch:
    -# purple_micro_version = 0
    -# purple_minor_version = 0
    -# purple_major_version += 1;
    -# purple_lt_current += 1
    -#
    -# purple_version_suffix should be similar to one of the following:
    -# For beta releases: [beta2]
    -# For code under development: [devel]
    -# For production releases: []
    -#
    -#
    -# If any code has changed in libgnt:
    -# gnt_micro_version += 1
    -#
    -# If any functions have been added to libgnt:
    -# gnt_micro_version = 0
    -# gnt_minor_version += 1
    -# gnt_lt_current += 1
    -#
    -# If backwards compatibility has been broken in libgnt:
    -# gnt_micro_version = 0
    -# gnt_minor_version = 0
    -# gnt_major_version += 1;
    -# gnt_lt_current += 1
    -#
    -# gnt_version_suffix should be similar to one of the following:
    -# For beta releases: [beta2]
    -# For code under development: [devel]
    -# For production releases: []
    -#
    -# Make sure to update finch/libgnt/configure.ac with libgnt version changes.
    -#
    -m4_define([purple_lt_current], [20])
    -m4_define([purple_major_version], [3])
    -m4_define([purple_minor_version], [0])
    -m4_define([purple_micro_version], [0])
    -m4_define([purple_version_suffix], [devel])
    -m4_define([purple_version],
    - [purple_major_version.purple_minor_version.purple_micro_version])
    -m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix]))
    -
    -# the last version for Finch 2 was 2.8.10,
    -# the first version for Finch 3 was 2.9.0
    -m4_define([gnt_lt_current], [9])
    -m4_define([gnt_major_version], [2])
    -m4_define([gnt_minor_version], [9])
    -m4_define([gnt_micro_version], [0])
    -m4_define([gnt_version_suffix], [devel])
    -m4_define([gnt_version],
    - [gnt_major_version.gnt_minor_version.gnt_micro_version])
    -m4_define([gnt_display_version], gnt_version[]m4_ifdef([gnt_version_suffix],[gnt_version_suffix]))
    -
    -
    -AC_INIT([pidgin], [purple_display_version], [devel@pidgin.im])
    -
    -if test `pwd | wc -w` -ne 1; then
    - AC_MSG_ERROR([
    -You are attempting to build in a path that contains spaces. This
    -will fail. Relocate this source tree to a path that does not contain
    -spaces and run configure again.
    -])
    -fi
    -
    -AC_CANONICAL_HOST
    -AC_CONFIG_HEADERS([config.h])
    -AC_CONFIG_MACRO_DIR([m4macros])
    -AM_INIT_AUTOMAKE([1.11 -Wno-portability dist-bzip2 subdir-objects])
    -AM_SILENT_RULES([yes])
    -
    -PURPLE_MAJOR_VERSION=purple_major_version
    -PURPLE_MINOR_VERSION=purple_minor_version
    -PURPLE_MICRO_VERSION=purple_micro_version
    -PURPLE_VERSION=purple_display_version
    -PURPLE_API_VERSION=$((purple_lt_current - purple_minor_version))
    -AC_SUBST(PURPLE_MAJOR_VERSION)
    -AC_SUBST(PURPLE_MINOR_VERSION)
    -AC_SUBST(PURPLE_MICRO_VERSION)
    -AC_SUBST(PURPLE_VERSION)
    -AC_SUBST(PURPLE_API_VERSION)
    -
    -PURPLE_LT_VERSION_INFO="purple_lt_current:purple_micro_version:purple_minor_version"
    -AC_SUBST(PURPLE_LT_VERSION_INFO)
    -
    -GNT_MAJOR_VERSION=gnt_major_version
    -GNT_MINOR_VERSION=gnt_minor_version
    -GNT_MICRO_VERSION=gnt_micro_version
    -GNT_VERSION=gnt_display_version
    -GNT_API_VERSION=$((gnt_lt_current - gnt_minor_version))
    -AC_SUBST(GNT_MAJOR_VERSION)
    -AC_SUBST(GNT_MINOR_VERSION)
    -AC_SUBST(GNT_MICRO_VERSION)
    -AC_SUBST(GNT_VERSION)
    -AC_SUBST(GNT_API_VERSION)
    -
    -GNT_LT_VERSION_INFO="gnt_lt_current:gnt_micro_version:gnt_minor_version"
    -AC_SUBST(GNT_LT_VERSION_INFO)
    -
    -AC_PATH_PROG(sedpath, sed)
    -
    -dnl Storing configure arguments
    -AC_DEFINE_UNQUOTED(CONFIG_ARGS, "$ac_configure_args", [configure arguments])
    -
    -dnl Checks for programs.
    -AC_PROG_CC
    -AM_PROG_CC_C_O
    -AC_PROG_CXX
    -LT_PREREQ([2.2.6])
    -LT_INIT([disable-static])
    -AC_PROG_INSTALL
    -PKG_PROG_PKG_CONFIG
    -AC_FUNC_ALLOCA
    -
    -dnl Check for Sun compiler
    -AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
    -
    -dnl Check for Win32
    -case "$host" in
    - *-*-mingw* | *-*-cygwin*)
    - is_win32="yes"
    - is_not_win32="no"
    - LIBS="$LIBS -lws2_32"
    - DNSAPI_LIBS="-ldnsapi"
    - PLUGIN_LDFLAGS="-avoid-version -no-undefined"
    - AC_SUBST(DNSAPI_LIBS)
    - AC_CHECK_TOOL(WINDRES, windres)
    - AC_DEFINE(IS_WIN32_CROSS_COMPILED, 1,
    - [Define to 1, when building with autotools (not necessarily
    - cross-compiling) for windows. It's a temporary hack to remain
    - non-autotools win32 build working. Drop it when we fully
    - switch our win32 build to autotools.])
    - AC_DEFINE(WIN32_LEAN_AND_MEAN, 1,
    - [Define to 1, to build faster for win32.])
    - ;;
    - *)
    - is_win32="no"
    - is_not_win32="yes"
    - PLUGIN_LDFLAGS="-avoid-version"
    - ;;
    -esac
    -AM_CONDITIONAL(IS_WIN32, test "x$is_win32" = "xyes")
    -AC_SUBST([PLUGIN_LDFLAGS])
    -
    -dnl Define *_LIBS
    -PURPLE_LIBS="\$(top_builddir)/libpurple/libpurple.la \$(GLIB_LIBS) \$(GPLUGIN_LIBS)"
    -PIDGIN_LIBS="\$(top_builddir)/pidgin/libpidgin.la \$(GTK_LIBS) \$(PURPLE_LIBS) \$(WEBKIT_LIBS)"
    -FINCH_LIBS="\$(top_builddir)/finch/libfinch.la \$(top_builddir)/finch/libgnt/libgnt.la \$(PURPLE_LIBS)"
    -AC_SUBST(PURPLE_LIBS)
    -AC_SUBST(PIDGIN_LIBS)
    -AC_SUBST(FINCH_LIBS)
    -
    -dnl Checks for header files.
    -AC_HEADER_SYS_WAIT
    -AC_CHECK_HEADERS(fcntl.h unistd.h stdint.h)
    -
    -dnl Checks for typedefs, structures, and compiler characteristics.
    -AC_CHECK_SIZEOF(time_t, ,[
    -#include <stdio.h>
    -#include <time.h>])
    -
    -AC_C_BIGENDIAN
    -
    -AC_ARG_WITH(win32-dirs, [AS_HELP_STRING([--with-win32-dirs=<classic|fhs>],
    - [use win32 classic (Program Files-like) or FHS (unix-like) directory structure (default: classic)])], [
    - if test "x$withval" != "xclassic" -a "x$withval" != "xfhs" ; then
    - AC_MSG_ERROR([Unsupported win32-dirs option. Please choose "classic" or "fhs".])
    - fi
    - with_win32_dirs="$withval"
    - ], with_win32_dirs="classic")
    -if test "x$is_win32" = "xyes" -a "x$with_win32_dirs" = "xfhs" ; then
    - AC_DEFINE(USE_WIN32_FHS, 1, [Define to 1, to use FHS on win32.])
    -fi
    -
    -dnl Check for directories
    -if test "x$is_win32" = "xyes" ; then
    - if test "x$with_win32_dirs" = "xfhs" ; then
    - AS_AC_EXPAND(win32_fhs_bindir, "$bindir")
    - AC_DEFINE_UNQUOTED([WIN32_FHS_BINDIR], ["$win32_fhs_bindir"],
    - [bindir, as defined by configure])
    - AS_AC_EXPAND(win32_fhs_libdir, "$libdir")
    - AC_DEFINE_UNQUOTED([WIN32_FHS_LIBDIR], ["$win32_fhs_libdir"],
    - [libdir, as defined by configure])
    - AS_AC_EXPAND(win32_fhs_datadir, "$datadir")
    - AC_DEFINE_UNQUOTED([WIN32_FHS_DATADIR], ["$win32_fhs_datadir"],
    - [datadir, as defined by configure])
    - AS_AC_EXPAND(win32_fhs_sysconfdir, "$sysconfdir")
    - AC_DEFINE_UNQUOTED([WIN32_FHS_SYSCONFDIR], ["$win32_fhs_sysconfdir"],
    - [sysconfdir, as defined by configure])
    - AS_AC_EXPAND(win32_fhs_localedir, "$localedir")
    - AC_DEFINE_UNQUOTED([WIN32_FHS_LOCALEDIR], ["$win32_fhs_localedir"],
    - [localedir, as defined by configure])
    -
    - purple_libdir="wpurple_lib_dir(\"purple-$PURPLE_MAJOR_VERSION\")"
    - pidgin_libdir="wpurple_lib_dir(\"pidgin-$PURPLE_MAJOR_VERSION\")"
    - finch_libdir="wpurple_lib_dir(\"finch-$PURPLE_MAJOR_VERSION\")"
    - else
    - purple_libdir="wpurple_lib_dir(NULL)"
    - pidgin_libdir="wpurple_lib_dir(NULL)"
    - finch_libdir="wpurple_lib_dir(NULL)"
    - fi
    -
    - purple_datadir="wpurple_data_dir()"
    - purple_sysconfdir="wpurple_sysconf_dir()"
    - purple_localedir="wpurple_locale_dir()"
    -else
    - AS_AC_EXPAND(purple_datadir, "$datadir")
    - purple_datadir="\"$purple_datadir\""
    - AS_AC_EXPAND(purple_sysconfdir, "$sysconfdir")
    - purple_sysconfdir="\"$purple_sysconfdir\""
    - AS_AC_EXPAND(purple_localedir, "$localedir")
    - purple_localedir="\"$purple_localedir\""
    -
    - AS_AC_EXPAND(common_libdir, "$libdir")
    - purple_libdir="\"$common_libdir/purple-$PURPLE_MAJOR_VERSION\""
    - pidgin_libdir="\"$common_libdir/pidgin-$PURPLE_MAJOR_VERSION\""
    - finch_libdir="\"$common_libdir/finch-$PURPLE_MAJOR_VERSION\""
    -fi
    -AC_DEFINE_UNQUOTED([PURPLE_DATADIR], [$purple_datadir],
    - [datadir to use, may expand into a function call that returns const char *])
    -AC_DEFINE_UNQUOTED([PURPLE_LIBDIR], [$purple_libdir],
    - [libdir to use for libpurple, may expand into a function call that returns const char *])
    -AC_DEFINE_UNQUOTED([PIDGIN_LIBDIR], [$pidgin_libdir],
    - [libdir to use for Pidgin, may expand into a function call that returns const char *])
    -AC_DEFINE_UNQUOTED([FINCH_LIBDIR], [$finch_libdir],
    - [libdir to use for Finch, may expand into a function call that returns const char *])
    -AC_DEFINE_UNQUOTED([PURPLE_SYSCONFDIR], [$purple_sysconfdir],
    - [sysconfdir to use, may expand into a function call that returns const char *])
    -AC_DEFINE_UNQUOTED([PURPLE_LOCALEDIR], [$purple_localedir],
    - [localedir to use, may expand into a function call that returns const char *])
    -
    -PURPLE_PLUGINDIR="\$(libdir)/purple-$PURPLE_MAJOR_VERSION"
    -AC_SUBST([PURPLE_PLUGINDIR])
    -PIDGIN_PLUGINDIR="\$(libdir)/pidgin-$PURPLE_MAJOR_VERSION"
    -AC_SUBST([PIDGIN_PLUGINDIR])
    -FINCH_PLUGINDIR="\$(libdir)/finch-$PURPLE_MAJOR_VERSION"
    -AC_SUBST([FINCH_PLUGINDIR])
    -
    -dnl Checks for library functions.
    -AC_CHECK_FUNCS(strdup)
    -
    -dnl Check for inet_aton
    -if test "x$is_win32" != "xyes" ; then
    - AC_CHECK_FUNC(inet_aton, , [AC_CHECK_LIB(resolv, inet_aton, ,
    - [AC_MSG_ERROR([inet_aton not found])])])
    -fi
    -AC_CHECK_LIB(nsl, gethostent)
    -if test "x$is_win32" = "xyes" ; then
    - AC_DEFINE(HAVE_GETADDRINFO, 1, [Define to 1 if you have the getaddrinfo function.])
    - AC_DEFINE(HAVE_INET_NTOP, 1, [Define to 1 if you have the `inet_ntop' function.])
    -else
    - AC_CHECK_FUNC(socket, , [AC_CHECK_LIB(socket, socket, ,
    - [AC_MSG_ERROR([socket not found])])])
    - dnl If all goes well, by this point the previous two checks will have
    - dnl pulled in -lsocket and -lnsl if we need them.
    - AC_CHECK_FUNC(getaddrinfo,
    - [AC_DEFINE([HAVE_GETADDRINFO], [1],
    - [Define to 1 if you have the getaddrinfo function.])],
    - [AC_CHECK_LIB(socket, getaddrinfo,
    - [AC_DEFINE([HAVE_GETADDRINFO]) LIBS="-lsocket -lnsl $LIBS"], , -lnsl)])
    - AC_CHECK_FUNCS(inet_ntop)
    -fi
    -AC_CHECK_FUNCS(getifaddrs)
    -dnl Check for socklen_t (in Unix98)
    -AC_MSG_CHECKING(for socklen_t)
    -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
    - #include <sys/types.h>
    - #ifdef _WIN32
    - # include <ws2tcpip.h>
    - #else
    - # include <sys/socket.h>
    - #endif
    - socklen_t x;
    -]], [[]])], [
    - AC_MSG_RESULT(yes)
    -], [
    - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
    - #include <sys/types.h>
    - #ifdef _WIN32
    - # include <ws2tcpip.h>
    - #else
    - # include <sys/socket.h>
    - #endif
    - int accept(int, struct sockaddr *, size_t *);
    - ]], [[]])], [
    - AC_MSG_RESULT(size_t)
    - AC_DEFINE(socklen_t, size_t, [socklen_t size])
    - ], [
    - AC_MSG_RESULT(int)
    - AC_DEFINE(socklen_t, int, [socklen_t size])
    - ])
    -])
    -
    -dnl Some systems do not have sa_len field for struct sockaddr.
    -AC_CHECK_MEMBER([struct sockaddr.sa_len],
    - [AC_DEFINE([HAVE_STRUCT_SOCKADDR_SA_LEN],[1],
    - [Define if struct sockaddr has an sa_len member])],[:],
    - [
    - #ifdef _WIN32
    - # include <ws2tcpip.h>
    - #else
    - # include <sys/socket.h>
    - #endif
    - ])
    -
    -dnl Check for v6-only sockets
    -AC_CHECK_DECL([IPV6_V6ONLY],
    - [AC_DEFINE([HAVE_IPV6_V6ONLY],[1],
    - [Define if the IPV6_V6ONLY setsockopt option exists])],
    - [], [
    - #ifdef _WIN32
    - # include <ws2tcpip.h>
    - #else
    - # include <netinet/in.h>
    - #endif
    - ])
    -
    -dnl to prevent the g_stat()/g_unlink() crash,
    -dnl (09:50:07) Robot101: LSchiere2: it's easy. +LC_SYS_LARGEFILE somewhere in configure.ac
    -AC_SYS_LARGEFILE
    -
    -dnl FreeBSD doesn't have libdl, dlopen is provided by libc
    -AC_CHECK_FUNC(dlopen, LIBDL="", [AC_CHECK_LIB(dl, dlopen, LIBDL="-ldl")])
    -
    -dnl Windows and Haiku do not use libm for the math functions, they are part
    -dnl of the C library
    -AC_SEARCH_LIBS([ceil], [m], [], [
    - AC_MSG_ERROR([unable to find the ceil() function])
    -])
    -
    -AC_MSG_CHECKING([for fileno()])
    -AC_RUN_IFELSE([AC_LANG_SOURCE([[
    -#include <stdio.h>
    -
    -int main(int argc, char *argv[])
    -{
    - int fd;
    -
    - fd = fileno(stdout);
    -
    - return !(fd > 0);
    -}
    -]])], [
    - AC_MSG_RESULT(yes)
    - AC_DEFINE([HAVE_FILENO], [1],
    - [Define to 1 if your stdio has int fileno(FILE *).])
    -], [
    - AC_MSG_RESULT(no)
    -], [
    - # Fallback for Cross Compiling...
    - # This will enable the compatibility code.
    - AC_MSG_RESULT(no)
    -])
    -
    -AC_MSG_CHECKING([for the %z format string in strftime()])
    -AC_RUN_IFELSE([AC_LANG_SOURCE([[
    -#include <time.h>
    -#include <stdio.h>
    -
    -int main()
    -{
    - char buf[64];
    - time_t t = time(NULL);
    -
    - if (strftime(buf, sizeof(buf), "%z", localtime(&t)) != 5)
    - return 1;
    -
    - fprintf(stderr, "strftime(\"%%z\") yields: \"%s\"\n", buf);
    -
    - return !((buf[0] == '-' || buf[0] == '+') &&
    - (buf[1] >= '0' && buf[1] <= '9') &&
    - (buf[2] >= '0' && buf[2] <= '9') &&
    - (buf[3] >= '0' && buf[3] <= '9') &&
    - (buf[4] >= '0' && buf[4] <= '9')
    - );
    -}
    -]])], [
    - AC_MSG_RESULT(yes)
    - AC_DEFINE([HAVE_STRFTIME_Z_FORMAT], [1],
    - [Define to 1 if you have a strftime() that supports the %z format string.])
    -], [
    - AC_MSG_RESULT(no)
    -], [
    - # Fallback for Cross Compiling...
    - # This will enable the compatibility code.
    - AC_MSG_RESULT(no)
    -])
    -
    -# before gettexting, in case iconv matters
    -case "$host_os" in
    -darwin*)
    - AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h, [
    - AC_CHECK_HEADER(IOKit/IOKitLib.h, [
    - AC_DEFINE(HAVE_IOKIT, 1, [Define if we have IOKit])
    - LIBS="$LIBS -framework IOKit -framework CoreFoundation"
    - ], [])
    - ], [])
    -
    - AC_MSG_CHECKING([for fink])
    - if test -d /sw; then
    - AC_MSG_RESULT([found, adding /sw to search paths])
    - CPPFLAGS="$CPPFLAGS -I/sw/include"
    - LDFLAGS="$LDFLAGS -L/sw/lib"
    - else
    - AC_MSG_RESULT([not found])
    - fi
    - ;;
    -*)
    - ;;
    -esac
    -
    -dnl #######################################################################
    -dnl # Disable creation and installation of translation files
    -dnl #######################################################################
    -AC_ARG_ENABLE(nls, AS_HELP_STRING([--disable-nls], [disable installation of translation files]), enable_i18n="$enableval", enable_i18n=yes)
    -
    -if test x$enable_i18n = xyes; then
    - IT_PROG_INTLTOOL
    - GETTEXT_PACKAGE=pidgin
    - AC_SUBST(GETTEXT_PACKAGE)
    -
    - ALL_LINGUAS="af am ar as ast az be@latin bg bn_IN bn br brx bs ca ca@valencia cs da de dz el en_AU en_CA en_GB eo es_AR es et eu fa fi fr ga gl gu he hi hr hu id it ja ka kk km kn ko ks ku_IQ ku lt lv mai mhr mk ml mn mr ms_MY my_MM nb ne nl nn oc or pa pl ps pt_BR pt ro ru sd si sk sl sq sr@latin sr sv sw ta te th tr tt uk ur uz vi xh zh_CN zh_HK zh_TW"
    - AM_GLIB_GNU_GETTEXT
    -
    - dnl If we don't have msgfmt, then po/ is going to fail -- ensure that
    - dnl AM_GLIB_GNU_GETTEXT found it.
    -
    - if test x$MSGFMT = xno -o x$MSGFMT$GMSGFMT$INTLTOOL_MSGFMT = x
    - then
    - AC_MSG_ERROR([
    -
    -The msgfmt command is required to build libpurple. If it is installed
    -on your system, ensure that it is in your path. If it is not, install
    -GNU gettext to continue.
    -
    -If you have msgfmt installed, but for some reason this error message
    -is still displayed, you have encountered what appears to be a bug in
    -third-party configure macros. Try setting the MSGFMT environment
    -variable to the absolute path to your msgfmt binary and trying
    -configure again, like this:
    -
    -MSGFMT=/path/to/msgfmt ./configure ...
    - ])
    - fi
    -fi #enable_i18n
    -
    -AM_CONDITIONAL(INSTALL_I18N, test "x$enable_i18n" = "xyes")
    -
    -dnl #######################################################################
    -dnl # Check for GLib 2.40 (required)
    -dnl #######################################################################
    -PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.40.0 gio-2.0 gobject-2.0 gthread-2.0], , [
    - AC_MSG_RESULT(no)
    - AC_MSG_ERROR([
    -
    -You must have GLib 2.40.0 or newer development headers installed to build.
    -
    -If you have these installed already you may need to install pkg-config so
    -I can find them.
    -])])
    -AC_SUBST(GLIB_CFLAGS)
    -AC_SUBST(GLIB_LIBS)
    -
    -GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
    -AC_SUBST(GLIB_GENMARSHAL)
    -
    -GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
    -AC_SUBST(GLIB_MKENUMS)
    -
    -AC_PATH_PROG(GLIB_COMPILE_RESOURCES, [glib-compile-resources])
    -
    -AC_PATH_PROG(GTESTER, gtester)
    -GLIB_TESTS
    -
    -AC_ARG_WITH([extraversion],
    - AS_HELP_STRING([--with-extraversion=STRING],
    - [extra version number to be displayed in Help->About and --help (for packagers)]),
    - EXTRA_VERSION=$withval)
    -
    -if test x"$EXTRA_VERSION" != "x" ; then
    - AC_DEFINE_UNQUOTED(DISPLAY_VERSION, "$VERSION-$EXTRA_VERSION", [display version info])
    -else
    - AC_DEFINE_UNQUOTED(DISPLAY_VERSION, "$VERSION", [display version info])
    -fi
    -
    -AC_ARG_ENABLE(missing-dependencies, [AS_HELP_STRING([--disable-missing-dependencies],
    - [skip missing dependencies instead of aborting configure])],
    - force_deps="$enableval", force_deps="yes")
    -
    -AC_ARG_WITH(x, [],
    - with_x="$withval", with_x="$is_not_win32")
    -AC_ARG_ENABLE(gtkui, [AS_HELP_STRING([--disable-gtkui],
    - [compile without GTK+ user interface])],
    - enable_gtkui="$enableval", enable_gtkui="yes")
    -AC_ARG_ENABLE(consoleui, [AS_HELP_STRING([--disable-consoleui],
    - [compile without console user interface])],
    - [enable_consoleui=$enableval force_finch=$enableval], [enable_consoleui=yes force_finch=no])
    -
    -dnl #######################################################################
    -dnl # Check for GTK+ 2.18 and other things used by the GTK UI
    -dnl #######################################################################
    -AC_ARG_ENABLE(enchant,
    - [AS_HELP_STRING([--disable-enchant],
    - [compile without Enchant spell checking support])],
    - enable_enchant="$enableval", enable_enchant="yes")
    -AC_ARG_ENABLE(gevolution,
    - [AS_HELP_STRING([--enable-gevolution],
    - [compile with the Evolution plugin])],
    - enable_gevolution="$enableval", enable_gevolution="no")
    -AC_ARG_ENABLE(cap,
    - [AS_HELP_STRING([--enable-cap],
    - [compile with Contact Availability Prediction plugin])],
    - enable_cap="$enableval", enable_cap="no")
    -AC_ARG_ENABLE(gestures,
    - [AS_HELP_STRING([--disable-gestures],
    - [compile without the gestures plugin])],
    - enable_gestures="$enableval", enable_gestures="yes")
    -AC_ARG_ENABLE(gcr,
    - [AS_HELP_STRING([--enable-gcr],
    - [compile with GCR certificate widgets])],
    - enable_gcr="$enableval", enable_gcr="no")
    -
    -AC_PATH_XTRA
    -# We can't assume that $x_libraries will be set, because autoconf does not
    -# set it in the case when the X libraries are in a standard place.
    -# Ditto for $x_includes
    -if test X"$x_libraries" = X"" || test X"$x_libraries" = XNONE; then
    - x_libpath_add=
    -else
    - x_libpath_add="-L$x_libraries"
    -fi
    -if test X"$x_includes" = X"" || test X"$x_includes" = XNONE; then
    - x_incpath_add=
    -else
    - x_incpath_add="-I$x_includes"
    -fi
    -
    -dnl #######################################################################
    -dnl Check Pidgin dependencies
    -dnl #######################################################################
    -if test "x$enable_gtkui" = "xyes" ; then
    - PKG_CHECK_MODULES(GTK, [gtk+-3.0 >= 3.4.2], , [
    - AC_MSG_RESULT(no)
    - AC_MSG_ERROR([
    -You must have GTK+ 3.4.2 or newer development headers installed to compile
    -Pidgin. If you want to build only Finch then specify --disable-gtkui when
    -running configure.
    -])])
    - AC_SUBST(GTK_CFLAGS)
    - AC_SUBST(GTK_LIBS)
    -
    - dnl We only really need Pango >= 1.4 for decent RTL support
    - PKG_CHECK_MODULES(PANGO, [pango >= 1.4.0],
    - AC_DEFINE(HAVE_PANGO14, 1, [Define if we have Pango 1.4 or newer.]),:)
    -
    - WEBKIT_VERSION=1.3.7
    - PKG_CHECK_MODULES(WEBKIT, ["webkitgtk-3.0" >= $WEBKIT_VERSION], , [
    - AC_MSG_RESULT(no)
    - AC_MSG_ERROR([
    -You must have WebKit for GTK+3 $WEBKIT_VERSION or newer development headers
    -installed to compile Pidgin. If you want to build only Finch then specify
    ---disable-gtkui when running configure.
    -])])
    - AC_SUBST(WEBKIT_CFLAGS)
    - AC_SUBST(WEBKIT_LIBS)
    -
    - dnl #######################################################################
    - dnl # Check if we should compile with enchant support
    - dnl #######################################################################
    - dnl We need enchant for spell checking dictionary enumeration,
    - dnl because webkit1 doesn't have this.
    - use_enchant=no
    - if test "x$enable_enchant" = "xyes" ; then
    - use_enchant=yes
    - PKG_CHECK_MODULES(ENCHANT, enchant, , [
    - AC_MSG_RESULT(no)
    - use_enchant=no
    - ])
    - if test "x$force_deps" = "xyes" -a "x$use_enchant" = "xno"; then
    - AC_MSG_ERROR([
    -Enchant development headers not found.
    -Use --disable-enchant if you do not need it.
    -])
    - fi
    - if test "x$use_enchant" = "xyes" ; then
    - AC_DEFINE(USE_ENCHANT, 1, [Define if we're using enchant])
    - AC_SUBST(ENCHANT_CFLAGS)
    - AC_SUBST(ENCHANT_LIBS)
    - fi
    - fi
    -
    - dnl #######################################################################
    - dnl # Check if we should compile with X support
    - dnl #######################################################################
    - if test "x$with_x" = "xyes" ; then
    - PKG_CHECK_MODULES(X11, x11,
    - [AC_DEFINE(HAVE_X11, 1, [Define to 1 if you have X11])],
    - [AC_MSG_RESULT(no)
    - if test "x$x_incpath_add" != "x" -a "x$x_libpath_add" != "x"; then
    - X11_LIBS="$x_libpath_add"
    - X11_CFLAGS="$x_incpath_add"
    - else
    - with_x="no"
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -X11 development headers not found.
    -Use --without-x if you do not need X11 support.
    -])
    - fi
    - fi
    - ])
    - AC_SUBST(X11_LIBS)
    - AC_SUBST(X11_CFLAGS)
    - else
    - enable_gestures=no
    - fi
    -
    - dnl #######################################################################
    - dnl # Check for X11 to allow the gestures plugin
    - dnl #######################################################################
    - if test "x$enable_gestures" = "xyes"; then
    - if test "x$with_x" = "xno" ; then
    - enable_gestures=no
    - fi
    - fi
    -
    - dnl #######################################################################
    - dnl # Check for stuff needed by the Evolution integration plugin.
    - dnl #######################################################################
    - if test "x$enable_gevolution" = "xyes"; then
    - evo_deps="libebook-1.2 libedata-book-1.2 evolution-data-server-1.2 >= 3.6"
    - PKG_CHECK_MODULES(EVOLUTION_ADDRESSBOOK, $evo_deps, , [
    - enable_gevolution="no"
    - ])
    - if test "x$enable_gevolution" = "xyes"; then
    - AC_DEFINE(HAVE_EVOLUTION_ADDRESSBOOK, 1, [Define if we're using evolution addressbook.])
    - AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS)
    - AC_SUBST(EVOLUTION_ADDRESSBOOK_LIBS)
    - else
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -Evolution development headers not found (libebook, libedata-book, evolution-data-server >= 3.6).
    -Use --disable-gevolution if you do not need it.
    -])
    - fi
    - fi
    - fi
    -
    - dnl #######################################################################
    - dnl # Check for libsqlite3 (for the Contact Availability Prediction plugin)
    - dnl #######################################################################
    - if test "x$enable_cap" = "xyes"; then
    - PKG_CHECK_MODULES(SQLITE3, sqlite3 >= 3.3,,[
    - AC_MSG_RESULT(no)
    - enable_cap="no"
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -sqlite3 development headers not found.
    -Use --disable-cap if you do not need the Contact Availability Prediction plugin.
    -])
    - fi])
    - fi
    -
    - dnl #######################################################################
    - dnl # Check for GCR for its certificate widgets
    - dnl #######################################################################
    - if test "x$enable_gcr" = "xyes"; then
    - PKG_CHECK_MODULES(GCR, gcr-3, [
    - AC_DEFINE(ENABLE_GCR, 1, [Define to 1 if GCR is found.])], [
    - AC_MSG_RESULT(no)
    - enable_gcr="no"
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -GCR for GTK+3 development headers not found.
    -Use --disable-gcr if you do not need GCR certificate widgets.
    -])
    - fi])
    - fi
    -
    -
    -else # GTK
    - enable_gcr=no
    - enable_cap=no
    - enable_gevolution=no
    -fi # GTK
    -
    -AM_CONDITIONAL(ENABLE_GTK, test "x$enable_gtkui" = "xyes")
    -AM_CONDITIONAL(BUILD_GEVOLUTION, test "x$enable_gevolution" = "xyes")
    -AM_CONDITIONAL(ENABLE_CAP, test "x$enable_cap" = "xyes")
    -AM_CONDITIONAL(ENABLE_GESTURES, test "x$enable_gestures" = "xyes")
    -AM_CONDITIONAL(ENABLE_GCR, test "x$enable_gcr" = "xyes")
    -
    -
    -dnl #######################################################################
    -dnl # Check for ncurses and other things used by the console UI
    -dnl #######################################################################
    -GNT_LIBS=""
    -GNT_CFLAGS=""
    -AC_ARG_WITH(ncurses-headers, [AS_HELP_STRING([--with-ncurses-headers=DIR],
    - [compile finch against the ncurses includes in DIR])],
    - [ac_ncurses_includes="$withval"], [ac_ncurses_includes=""])
    -if test "x$enable_consoleui" = "xyes"; then
    - AC_CHECK_LIB(ncursesw, initscr, [GNT_LIBS="-lncursesw"], [enable_consoleui=no])
    - AC_CHECK_LIB(panelw, update_panels, [GNT_LIBS="$GNT_LIBS -lpanelw"],
    - [enable_consoleui=no], [$GNT_LIBS])
    -
    - if test "x$is_win32" = "xyes" ; then
    - ncurses_sys_prefix="/usr/$host/sys-root/mingw"
    - else
    - ncurses_sys_prefix="/usr"
    - fi
    -
    - ncurses_sys_dirs="$ncurses_sys_prefix/include/ncursesw $ncurses_sys_prefix/include"
    -
    - if test "x$enable_consoleui" = "xyes"; then
    - dnl # Some distros put the headers in ncursesw/, some don't
    - found_ncurses_h=no
    - for location in $ac_ncurses_includes $NCURSES_HEADERS $ncurses_sys_dirs
    - do
    - f="$location/ncurses.h"
    - orig_CFLAGS="$CFLAGS"
    - orig_CPPFLAGS="$CPPFLAGS"
    - CFLAGS="$CFLAGS -I$location"
    - CPPFLAGS="$CPPFLAGS -I$location"
    - AC_CHECK_HEADER($f,[
    - AC_MSG_CHECKING([if $f supports wide characters])
    - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
    - #define _XOPEN_SOURCE_EXTENDED
    - #include <$f>
    - ]], [[
    - #ifndef get_wch
    - # error get_wch not found!
    - #endif
    - ]])], [
    - dir=$location
    - if test x"$dir" != x"." ; then
    - GNT_CFLAGS="-I$dir/"
    - else
    - GNT_CFLAGS=""
    - fi
    -
    - found_ncurses_h=yes
    - CFLAGS="$orig_CFLAGS"
    - CPPFLAGS="$orig_CPPFLAGS"
    - AC_MSG_RESULT([yes])
    - break
    - ], [
    - CFLAGS="$orig_CFLAGS"
    - CPPFLAGS="$orig_CPPFLAGS"
    - AC_MSG_RESULT([no])
    - ])
    - ])
    - done
    -
    - if test x"$found_ncurses_h" = x"no" ; then
    - GNT_LIBS=""
    - GNT_CFLAGS=""
    - enable_consoleui=no
    - fi
    - else
    - # ncursesw was not found. Look for plain old ncurses
    - enable_consoleui=yes
    - AC_CHECK_LIB(ncurses, initscr, [GNT_LIBS="-lncurses"], [enable_consoleui=no])
    - AC_CHECK_LIB(panel, update_panels, [GNT_LIBS="$GNT_LIBS -lpanel"],
    - [enable_consoleui=no], [$GNT_LIBS])
    - AC_DEFINE(NO_WIDECHAR, 1, [Define to 1 if you don't have wide-character support.])
    - if test x"$ac_ncurses_includes" != "x"; then
    - GNT_CFLAGS="-I$ac_ncurses_includes"
    - else
    - if test x"$NCURSES_HEADERS" != "x"; then
    - GNT_CFLAGS="-I$NCURSES_HEADERS"
    - fi
    - fi
    - fi
    -fi
    -
    -if test "x$force_finch" = "xyes" -a "x$enable_consoleui" != "xyes"; then
    - AC_MSG_ERROR([
    -
    -Finch will not be built. You need to install ncursesw (or ncurses) and its development headers.
    -
    -])
    -fi
    -
    -AC_SUBST(GNT_LIBS)
    -AC_SUBST(GNT_CFLAGS)
    -AM_CONDITIONAL(ENABLE_GNT, test "x$enable_consoleui" = "xyes")
    -
    -#AC_CHECK_FUNC(wcwidth, [AC_DEFINE([HAVE_WCWIDTH], [1], [Define to 1 if you have wcwidth function.])])
    -
    -dnl #######################################################################
    -dnl # Check for LibXML2 (required)
    -dnl #######################################################################
    -PKG_CHECK_MODULES(LIBXML, [libxml-2.0 >= 2.6.0], , [
    - AC_MSG_RESULT(no)
    - AC_MSG_ERROR([
    -You must have libxml2 >= 2.6.0 development headers installed to build.
    -])])
    -PKG_CHECK_EXISTS([libxml-2.0 >= 2.6.18], , [
    - AC_MSG_WARN([
    -Versions of libxml2 < 2.6.18 may contain bugs that could cause XMPP messages to be discarded.
    -])])
    -
    -AC_SUBST(LIBXML_CFLAGS)
    -AC_SUBST(LIBXML_LIBS)
    -
    -dnl #######################################################################
    -dnl # Check for JSON-GLib (required)
    -dnl #######################################################################
    -
    -PKG_CHECK_MODULES([JSON], [json-glib-1.0 >= 0.14.0], , [
    - AC_MSG_RESULT(no)
    - AC_MSG_ERROR([
    -You must have JSON-GLib >= 0.14.0 development headers installed to build.
    -])])
    -
    -AC_SUBST(JSON_CFLAGS)
    -AC_SUBST(JSON_LIBS)
    -
    -dnl #######################################################################
    -dnl # Check for GStreamer
    -dnl #######################################################################
    -AC_ARG_ENABLE(gstreamer,
    - [AS_HELP_STRING([--disable-gstreamer], [compile without GStreamer audio support])],
    - enable_gst="$enableval", enable_gst="yes")
    -
    -if test x"$enable_gst" != "xno"; then
    - PKG_CHECK_MODULES(GSTREAMER, [gstreamer-1.0], [
    - AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds])
    - AC_SUBST(GSTREAMER_CFLAGS)
    - AC_SUBST(GSTREAMER_LIBS)
    - ], [
    - AC_MSG_RESULT(no)
    - enable_gst="no"
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    - GStreamer development headers not found.
    - Use --disable-gstreamer if you do not need GStreamer (sound) support.
    - ])
    - fi
    - ])
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for GStreamer Video
    -dnl #######################################################################
    -if test "x$enable_gst" != "xno"; then
    - AC_ARG_ENABLE(gstreamer-video,
    - [AS_HELP_STRING([--disable-gstreamer-video], [compile without GStreamer 1.0 Video Overlay support])],
    - enable_gstvideo="$enableval", enable_gstvideo="yes")
    - if test "x$enable_gstvideo" != "xno"; then
    - PKG_CHECK_MODULES(GSTVIDEO, [gstreamer-video-1.0], [
    - AC_DEFINE(USE_GSTVIDEO, 1, [Use GStreamer Video Overlay support])
    - AC_SUBST(GSTVIDEO_CFLAGS)
    - AC_SUBST(GSTVIDEO_LIBS)
    - ], [
    - enable_gstvideo="no"
    - ])
    - fi
    -else
    - enable_gstvideo="no"
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for Farstream
    -dnl #######################################################################
    -AC_ARG_ENABLE(farstream,
    - [AS_HELP_STRING([--disable-farstream], [compile without farstream support])],
    - enable_farstream="$enableval", enable_farstream="yes")
    -if test "x$enable_farstream" != "xno"; then
    - PKG_CHECK_MODULES(FARSTREAM, [farstream-0.2 >= 0.2.7], [
    - AC_SUBST(FARSTREAM_CFLAGS)
    - AC_SUBST(FARSTREAM_LIBS)
    - ], [
    - enable_farstream="no"
    - ])
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for Voice and Video support
    -dnl #######################################################################
    -AC_ARG_ENABLE(vv,
    - [AS_HELP_STRING([--disable-vv], [compile without voice and video support])],
    - enable_vv="$enableval", enable_vv="yes")
    -if test "x$enable_vv" != "xno"; then
    - if test "x$enable_gst" != "xno" -a "x$enable_gstvideo" != "xno" -a "x$enable_farstream" != "xno"; then
    - AC_DEFINE(USE_VV, 1, [Use voice and video])
    - else
    - enable_vv="no"
    - if test "x$force_deps" = "xyes"; then
    - AC_MSG_ERROR([
    -Dependencies for voice/video were not met.
    -Install the necessary gstreamer and farstream packages first.
    -Or use --disable-vv if you do not need voice/video support.
    - ])
    - fi
    - fi
    -fi
    -AM_CONDITIONAL(USE_VV, test "x$enable_vv" != "xno")
    -
    -dnl #######################################################################
    -dnl # Check for Raw data streams support in Farstream
    -dnl #######################################################################
    -if test "x$enable_vv" != "xno"; then
    - PKG_CHECK_MODULES(GSTAPP, [gstreamer-app-1.0], [
    - AC_DEFINE(USE_GSTAPP, 1, [Use GStreamer Video Overlay support])
    - AC_SUBST(GSTAPP_CFLAGS)
    - AC_SUBST(GSTAPP_LIBS)
    - AC_DEFINE(HAVE_MEDIA_APPLICATION, 1, [Define if we have support for application media type.])
    - ] , )
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for Internationalized Domain Name support
    -dnl #######################################################################
    -
    -AC_ARG_ENABLE(idn,
    - [AS_HELP_STRING([--disable-idn], [compile without IDN support])],
    - [enable_idn="$enableval" force_idn=$enableval], [enable_idn="yes" force_idn=no])
    -if test "x$enable_idn" != "xno"; then
    - PKG_CHECK_MODULES(IDN, libidn >= 0.0.0, [
    - AC_DEFINE(USE_IDN, 1, [Use GNU Libidn for stringprep and IDN])
    - AC_SUBST(IDN_CFLAGS)
    - AC_SUBST(IDN_LIBS)
    - ], [
    - AC_MSG_RESULT(no)
    - enable_idn="no"
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -GNU Libidn development headers not found.
    -Use --disable-idn if you do not need it.
    -])
    - fi
    - ])
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for Meanwhile headers (for Sametime)
    -dnl #######################################################################
    -AC_ARG_ENABLE(meanwhile,
    - [AS_HELP_STRING([--disable-meanwhile],
    - [compile without meanwhile (required for Sametime support)])],
    - enable_meanwhile="$enableval", enable_meanwhile="yes")
    -if test "x$enable_meanwhile" = "xyes"; then
    - PKG_CHECK_MODULES(MEANWHILE, [meanwhile >= 1.0.0 meanwhile < 2.0.0], [
    - have_meanwhile="yes"
    - ], [
    - have_meanwhile="no"
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -Meanwhile development headers not found.
    -Use --disable-meanwhile if you do not need meanwhile (Sametime) support.
    -])
    - fi])
    -fi
    -AC_SUBST(MEANWHILE_CFLAGS)
    -AC_SUBST(MEANWHILE_LIBS)
    -
    -dnl #######################################################################
    -dnl # Check for Native Avahi headers (for Bonjour)
    -dnl #######################################################################
    -AC_ARG_ENABLE(avahi,
    - [AS_HELP_STRING([--disable-avahi],
    - [compile without avahi (required for Bonjour support)])],
    - enable_avahi="$enableval", enable_avahi="yes")
    -
    -if test "x$enable_avahi" = "xyes" -a "x$is_win32" = "xyes" ; then
    - avahiincludes="yes"
    - avahilibs="yes"
    -elif test "x$enable_avahi" = "xyes"; then
    - AC_ARG_WITH(avahi-client-includes, [AS_HELP_STRING([--with-avahi-client-includes=DIR], [compile the Bonjour plugin against the Avahi Client includes in DIR])], [ac_avahi_client_includes="$withval"], [ac_avahi_client_includes="no"])
    - AC_ARG_WITH(avahi-client-libs, [AS_HELP_STRING([--with-avahi-client-libs=DIR], [compile the Bonjour plugin against the Avahi Client libs in DIR])], [ac_avahi_client_libs="$withval"], [ac_avahi_client_libs="no"])
    - AVAHI_CFLAGS=""
    - AVAHI_LIBS=""
    -
    - dnl Attempt to autodetect Avahi
    - PKG_CHECK_MODULES(AVAHI, [avahi-client avahi-glib], [
    - avahiincludes="yes"
    - avahilibs="yes"
    - ], [
    - avahiincludes="no"
    - avahilibs="no"
    - ])
    -
    - dnl Override AVAHI_CFLAGS if the user specified an include dir
    - if test "$ac_avahi_client_includes" != "no"; then
    - AVAHI_CFLAGS="-I$ac_avahi_client_includes"
    - fi
    - CPPFLAGS_save="$CPPFLAGS"
    - CPPFLAGS="$CPPFLAGS $AVAHI_CFLAGS"
    - AC_CHECK_HEADER(avahi-client/client.h, [avahiincludes=yes], [avahiincludes=no])
    - CPPFLAGS="$CPPFLAGS $AVAHI_CFLAGS $GLIB_CFLAGS"
    - AC_CHECK_HEADER(avahi-glib/glib-malloc.h, [avahiincludes=yes], [avahiincludes=no])
    - CPPFLAGS="$CPPFLAGS_save"
    -
    - dnl Override AVAHI_LIBS if the user specified a libs dir
    - if test "$ac_avahi_client_libs" != "no"; then
    - AVAHI_LIBS="-L$ac_avahi_client_libs -lavahi-common -lavahi-client -lavahi-glib "
    - fi
    - AC_CHECK_LIB(avahi-client, avahi_client_new, [avahilibs=yes], [avahilibs=no], $AVAHI_LIBS)
    -fi
    -
    -if test "x$enable_avahi" = "xyes" -a \( "x$avahiincludes" = "xno" -o "x$avahilibs" = "xno" \); then
    - enable_avahi="no"
    - if test "x$force_deps" = "xyes"; then
    - AC_MSG_ERROR([
    -avahi development headers not found.
    -Use --disable-avahi if you do not need avahi (Bonjour) support.
    -])
    - fi
    -fi
    -AC_SUBST(AVAHI_CFLAGS)
    -AC_SUBST(AVAHI_LIBS)
    -
    -
    -dnl #######################################################################
    -dnl # Check for SILC client includes and libraries
    -dnl #######################################################################
    -AC_ARG_WITH(silc-includes, [AS_HELP_STRING([--with-silc-includes=DIR], [compile the SILC plugin against includes in DIR])], [ac_silc_includes="$withval"], [ac_silc_includes="no"])
    -AC_ARG_WITH(silc-libs, [AS_HELP_STRING([--with-silc-libs=DIR], [compile the SILC plugin against the SILC libs in DIR])], [ac_silc_libs="$withval"], [ac_silc_libs="no"])
    -SILC_CFLAGS=""
    -SILC_LIBS=""
    -have_silc="no"
    -if test -n "$with_silc_includes" || test -n "$with_silc_libs"; then
    - silc_manual_check="yes"
    -else
    - silc_manual_check="no"
    -fi
    -if test "x$silc_manual_check" = "xno"; then
    - PKG_CHECK_MODULES(SILC, [silcclient >= 1.1], [
    - have_silc="yes"
    - silcincludes="yes"
    - silcclient="yes"
    - ], [
    - have_silc="no"
    - ])
    -else
    - if test "$ac_silc_includes" != "no"; then
    - SILC_CFLAGS="-I$ac_silc_includes"
    - fi
    - CPPFLAGS_save="$CPPFLAGS"
    - CPPFLAGS="$CPPFLAGS $SILC_CFLAGS"
    - AC_CHECK_HEADER(silc.h, [silcincludes=yes])
    - CPPFLAGS="$CPPFLAGS_save"
    -
    - if test "$ac_silc_libs" != "no"; then
    - SILC_LIBS="-L$ac_silc_libs"
    - fi
    - SILC_LIBS="$SILC_LIBS -lsilc -lsilcclient -lpthread $LIBDL"
    - AC_CHECK_LIB(silcclient, silc_client_init, [silcclient=yes], , $SILC_LIBS)
    -
    - if test "x$silcincludes" = "xyes" -a "x$silcclient" = "xyes"; then
    - have_silc="yes"
    - fi
    -fi
    -AC_SUBST(SILC_LIBS)
    -AC_SUBST(SILC_CFLAGS)
    -dnl SILC Toolkit >= 1.0.1 has a new MIME API
    -if test "x$silcclient" = "xyes"; then
    - AC_DEFINE(HAVE_SILCMIME_H, 1, [Define if we have silcmime.h])
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for Gadu-Gadu protocol library (libgadu)
    -dnl #######################################################################
    -AC_ARG_ENABLE(libgadu,
    - [AS_HELP_STRING([--disable-libgadu],
    - [compile without libgadu (required for GaduGadu support)])],
    - enable_libgadu="$enableval", enable_libgadu="yes")
    -
    -if test "x$enable_libgadu" = "xyes"; then
    - PKG_CHECK_MODULES(LIBGADU, [libgadu >= 1.12.0], [
    - have_libgadu=yes
    - AC_CHECK_LIB(gadu, gg_is_gpl_compliant, [ ], [
    - LIBGADU_LIBS=""
    - LIBGADU_CFLAGS=""
    - have_libgadu=no
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_WARN([
    -libgadu is not compatible with the GPL when compiled with OpenSSL support.
    -
    -To link against libgadu, please recompile it using:
    -./configure --with-openssl=no
    -Then rerun this ./configure
    - ])
    - fi
    - ], [$LIBGADU_LIBS])
    - ], [
    - have_libgadu=no
    - ])
    -
    - if test "x$have_libgadu" != "xyes" -a "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -Libgadu development headers not found.
    -Use --disable-libgadu if you do not need GG (GaduGadu) support.
    -])
    - fi
    -fi
    -
    -AC_SUBST(LIBGADU_LIBS)
    -AC_SUBST(LIBGADU_CFLAGS)
    -
    -
    -DYNAMIC_PRPLS=all
    -AC_ARG_WITH(static-prpls, [AS_HELP_STRING([--with-static-prpls], [Link to certain protocols statically])], [STATIC_PRPLS=`echo $withval | $sedpath 's/,/ /g'`], [STATIC_PRPLS=""])
    -if test "x$STATIC_PRPLS" != "x" -a "x$DYNAMIC_PRPLS" = "xall"; then
    - DYNAMIC_PRPLS=""
    -fi
    -
    -if test "x$STATIC_PRPLS" = "xall" ; then
    - STATIC_PRPLS="bonjour facebook gg irc jabber novell oscar sametime silc simple zephyr"
    -fi
    -if test "x$have_meanwhile" != "xyes" ; then
    - STATIC_PRPLS=`echo $STATIC_PRPLS | $sedpath 's/sametime//'`
    -fi
    -if test "x$avahiincludes" != "xyes" -o "x$avahilibs" != "xyes"; then
    - STATIC_PRPLS=`echo $STATIC_PRPLS | $sedpath 's/bonjour//'`
    -fi
    -if test "x$silcincludes" != "xyes" -o "x$silcclient" != "xyes"; then
    - STATIC_PRPLS=`echo $STATIC_PRPLS | $sedpath 's/silc//'`
    -fi
    -if test "x$have_libgadu" != "xyes" ; then
    - STATIC_PRPLS=`echo $STATIC_PRPLS | $sedpath 's/gg//'`
    -fi
    -if test "x$is_win32" = "xyes" ; then
    - STATIC_PRPLS=`echo $STATIC_PRPLS | $sedpath 's/zephyr//'`
    -fi
    -AC_SUBST(STATIC_PRPLS)
    -STATIC_LINK_LIBS=
    -extern_load=
    -load_proto=
    -extern_unload=
    -unload_proto=
    -for i in $STATIC_PRPLS ; do
    - dnl Ugly special case for "libsilcpurple.la":
    - if test "x$i" = "xsilc"; then
    - STATIC_LINK_LIBS="$STATIC_LINK_LIBS \$(top_builddir)/libpurple/protocols/$i/lib${i}purple.la"
    - else
    - STATIC_LINK_LIBS="$STATIC_LINK_LIBS \$(top_builddir)/libpurple/protocols/$i/lib$i.la"
    - fi
    - extern_load="$extern_load extern gboolean ${i}_plugin_load();"
    - load_proto="$load_proto ${i}_plugin_load();"
    - extern_unload="$extern_unload extern gboolean ${i}_plugin_unload();"
    - unload_proto="$unload_proto ${i}_plugin_unload();"
    -
    - case $i in
    - bonjour) static_bonjour=yes ;;
    - facebook) static_facebook=yes ;;
    - gg) static_gg=yes ;;
    - irc) static_irc=yes ;;
    - jabber) static_jabber=yes ;;
    - novell) static_novell=yes ;;
    - oscar) static_oscar=yes ;;
    - aim) static_oscar=yes ;;
    - icq) static_oscar=yes ;;
    - sametime) static_sametime=yes ;;
    - silc) static_silc=yes ;;
    - simple) static_simple=yes ;;
    - zephyr) static_zephyr=yes ;;
    - *) echo "Invalid static protocol $i!!" ; exit 1 ;;
    - esac
    -done
    -AM_CONDITIONAL(STATIC_BONJOUR, test "x$static_bonjour" = "xyes")
    -AM_CONDITIONAL(STATIC_FACEBOOK, test "x$static_facebook" = "xyes")
    -AM_CONDITIONAL(STATIC_GG, test "x$static_gg" = "xyes")
    -AM_CONDITIONAL(STATIC_IRC, test "x$static_irc" = "xyes")
    -AM_CONDITIONAL(STATIC_JABBER, test "x$static_jabber" = "xyes")
    -AM_CONDITIONAL(STATIC_NOVELL, test "x$static_novell" = "xyes")
    -AM_CONDITIONAL(STATIC_OSCAR, test "x$static_oscar" = "xyes")
    -AM_CONDITIONAL(STATIC_SAMETIME, test "x$static_sametime" = "xyes" -a "x$have_meanwhile" = "xyes")
    -AM_CONDITIONAL(STATIC_SILC, test "x$static_silc" = "xyes" -a "x$have_silc" = "xyes")
    -AM_CONDITIONAL(STATIC_SIMPLE, test "x$static_simple" = "xyes")
    -AM_CONDITIONAL(STATIC_ZEPHYR, test "x$static_zephyr" = "xyes")
    -AC_SUBST(STATIC_LINK_LIBS)
    -AC_DEFINE_UNQUOTED(STATIC_PROTO_LOAD, $extern_load static void static_proto_load(void) { $load_proto },
    - [Loads protocols from static protocol plugin modules.])
    -AC_DEFINE_UNQUOTED(STATIC_PROTO_UNLOAD, $extern_unload static void static_proto_unload(void) { $unload_proto },
    - [Unloads protocols from static protocol plugin modules.])
    -
    -AC_ARG_WITH(dynamic_prpls, [AS_HELP_STRING([--with-dynamic-prpls], [specify which protocols to build dynamically])], [DYNAMIC_PRPLS=`echo $withval | $sedpath 's/,/ /g'`])
    -if test "x$DYNAMIC_PRPLS" = "xall" ; then
    - DYNAMIC_PRPLS="bonjour facebook gg irc jabber novell oscar sametime silc simple zephyr"
    -fi
    -if test "x$have_meanwhile" != "xyes"; then
    - DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/sametime//'`
    -fi
    -if test "x$avahiincludes" != "xyes" -o "x$avahilibs" != "xyes"; then
    - DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/bonjour//'`
    -fi
    -if test "x$silcincludes" != "xyes" -o "x$silcclient" != "xyes"; then
    - DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/silc//'`
    -fi
    -if test "x$have_libgadu" != "xyes"; then
    - DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/gg//'`
    -fi
    -if test "x$is_win32" = "xyes" ; then
    - DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/zephyr//'`
    -fi
    -AC_SUBST(DYNAMIC_PRPLS)
    -for i in $DYNAMIC_PRPLS ; do
    - case $i in
    - bonjour) dynamic_bonjour=yes ;;
    - facebook) dynamic_facebook=yes ;;
    - gg) dynamic_gg=yes ;;
    - irc) dynamic_irc=yes ;;
    - jabber) dynamic_jabber=yes ;;
    - novell) dynamic_novell=yes ;;
    - null) dynamic_null=yes ;;
    - oscar) dynamic_oscar=yes ;;
    - aim) dynamic_oscar=yes ;;
    - icq) dynamic_oscar=yes ;;
    - sametime) dynamic_sametime=yes ;;
    - silc) dynamic_silc=yes ;;
    - simple) dynamic_simple=yes ;;
    - zephyr) dynamic_zephyr=yes ;;
    - *) echo "Invalid dynamic protocol $i!!" ; exit 1 ;;
    - esac
    -done
    -
    -AC_ARG_ENABLE(plugins, [AS_HELP_STRING([--disable-plugins], [compile without plugin support])], , enable_plugins=yes)
    -AC_ARG_WITH(krb4, [AS_HELP_STRING([--with-krb4=PREFIX], [compile Zephyr plugin with Kerberos 4 support])], kerberos="$withval", kerberos="no")
    -AC_ARG_WITH(zephyr, [AS_HELP_STRING([--with-zephyr=PREFIX], [compile Zephyr plugin against external libzephyr])], zephyr="$withval", zephyr="no")
    -AM_CONDITIONAL(EXTERNAL_LIBZEPHYR, test "x$zephyr" != "xno")
    -
    -AC_CHECK_HEADERS(sys/utsname.h)
    -AC_CHECK_FUNC(uname)
    -
    -AC_ARG_ENABLE(fortify, [AS_HELP_STRING([--disable-fortify], [compile without FORTIFY_SOURCE support])], , enable_fortify=yes)
    -
    -DEBUG_CFLAGS="$DEBUG_CFLAGS -DPURPLE_DISABLE_DEPRECATED -DPIDGIN_DISABLE_DEPRECATED -DFINCH_DISABLE_DEPRECATED -DGNT_DISABLE_DEPRECATED"
    -if test "x$GCC" = "xyes"; then
    - dnl We enable -Wall later.
    - dnl If it's set after the warning CFLAGS in the compiler invocation, it counteracts the -Wno... flags.
    - dnl This leads to warnings we don't want.
    - CFLAGS=`echo $CFLAGS |$sedpath 's/-Wall//'`
    -
    - dnl ENABLE WARNINGS SUPPORTED BY THE VERSION OF GCC IN USE
    - dnl
    - dnl Future Possibilities
    - dnl
    - dnl Consider adding -Wbad-function-cast.
    - dnl This leads to spurious warnings using GPOINTER_TO_INT(), et al. directly on a function call.
    - dnl We'd need an intermediate variable.
    - dnl
    - for newflag in \
    - "-Waggregate-return" \
    - "-Wcast-align" \
    - "-Wdeclaration-after-statement" \
    - "-Wendif-labels" \
    - "-Werror-implicit-function-declaration" \
    - "-Wextra -Wno-unused-parameter" \
    - "-Wno-missing-field-initializers" \
    - "-Wformat-security" \
    - "-Werror=format-security" \
    - "-Winit-self" \
    - "-Wmissing-declarations" \
    - "-Wmissing-noreturn" \
    - "-Wmissing-prototypes" \
    - "-Wpointer-arith" \
    - "-Wfloat-equal" \
    - "-Wundef" \
    - ; do
    - orig_CFLAGS="$CFLAGS"
    - CFLAGS="$CFLAGS $newflag"
    - AC_MSG_CHECKING(for $newflag option to gcc)
    - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [
    - AC_MSG_RESULT(yes)
    - CFLAGS="$orig_CFLAGS"
    - DEBUG_CFLAGS="$DEBUG_CFLAGS $newflag"
    - ], [
    - AC_MSG_RESULT(no)
    - CFLAGS="$orig_CFLAGS"
    - ])
    - done
    -
    - if test "x$enable_fortify" = "xyes"; then
    - AC_MSG_CHECKING(for FORTIFY_SOURCE support)
    - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <features.h>]], [[
    - #if !(__GNUC_PREREQ (4, 1) \
    - || (defined __GNUC_RH_RELEASE__ && __GNUC_PREREQ (4, 0)) \
    - || (defined __GNUC_RH_RELEASE__ && __GNUC_PREREQ (3, 4) \
    - && __GNUC_MINOR__ == 4 \
    - && (__GNUC_PATCHLEVEL__ > 2 \
    - || (__GNUC_PATCHLEVEL__ == 2 && __GNUC_RH_RELEASE__ >= 8))))
    - #error No FORTIFY_SOURCE support
    - #endif
    - return 0;
    - ]])], [
    - AC_MSG_RESULT(yes)
    - DEBUG_CFLAGS="$DEBUG_CFLAGS -Wp,-D_FORTIFY_SOURCE=2"
    - ], [
    - AC_MSG_RESULT(no)
    - ])
    - fi
    -
    - DEBUG_CFLAGS="-Wall $DEBUG_CFLAGS"
    - CFLAGS="-g $CFLAGS"
    -fi
    -DEBUG_CPPFLAGS=`echo "$DEBUG_CFLAGS" | $sedpath 's/-Wdeclaration-after-statement//' | $sedpath 's/-Wmissing-prototypes//' | $sedpath 's/-Waggregate-return//'`
    -
    -if test "x$SUNCC" = "xyes"; then
    - CFLAGS="$CFLAGS -features=extensions"
    -fi
    -AC_SUBST(CFLAGS)
    -
    -AC_PATH_PROG(pidginpath, pidgin)
    -
    -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
    - #if !defined(__clang__)
    - #error
    - #endif
    -])], have_clang=yes, have_clang=no)
    -
    -AC_ARG_ENABLE(clang-address-sanitizer,
    - [AS_HELP_STRING([--enable-clang-address-sanitizer],
    - [compile with the Clang's address sanitizer enabled])],
    - enable_clang_address_sanitizer="$enableval", enable_clang_address_sanitizer="no")
    -
    -if test "x$enable_clang_address_sanitizer" = "xyes" -a "x$have_clang" = "xno"; then
    - AC_MSG_ERROR([
    -Clang address sanitizer requested, but we don't compile with Clang.
    -Disable the sanitizer or run configure script with CC and CCX set to clang binaries.
    -])
    -fi
    -
    -if test "x$have_clang" = "xyes"; then
    - GLIB_LIBS=`echo $GLIB_LIBS | $sedpath 's/-pthread/-lpthread/'`
    -fi
    -
    -if test "x$enable_clang_address_sanitizer" = "xyes"; then
    - CFLAGS="$CFLAGS -faddress-sanitizer -g -fno-omit-frame-pointer -fno-inline -fno-optimize-sibling-calls"
    -fi
    -
    -
    -AC_ARG_ENABLE(glib-errors-trace, [AS_HELP_STRING([--enable-glib-errors-trace], [print backtraces for glib errors])], enable_glibtrace="$enableval", enable_glibtrace="no")
    -if test "x$enable_glibtrace" = "xyes"; then
    - if test "x$have_clang" = "xyes"; then
    - AC_MSG_ERROR([--enable-glib-errors-trace doesn't work with clang])
    - fi
    - AC_DEFINE(ENABLE_GLIBTRACE, 1, [Define if backtraces should be printed for glib errors.])
    - dnl CFLAGS="$CFLAGS -rdynamic"
    - CFLAGS="$CFLAGS -rdynamic"
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for D-Bus libraries
    -dnl #######################################################################
    -
    -# dbus doesn't compile for win32 at the moment
    -AC_ARG_ENABLE(dbus,
    - [AS_HELP_STRING([--disable-dbus], [disable D-Bus support])], ,
    - enable_dbus="$is_not_win32")
    -
    -if test "x$enable_dbus" = "xyes" ; then
    - AC_CHECK_PROG(enable_dbus, dbus-binding-tool, yes, no)
    -fi
    -
    -if test "x$enable_dbus" = "xyes" ; then
    - PKG_CHECK_MODULES(DBUS, [dbus-1 >= 0.60 dbus-glib-1 >= 0.60], [
    - AC_SUBST(DBUS_CFLAGS)
    - AC_SUBST(DBUS_LIBS)
    - enable_dbus=yes
    - ], [
    - enable_dbus=no
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -D-Bus development headers not found.
    -Use --disable-dbus if you do not need D-Bus support.
    -])
    - fi])
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for Unity and Messaging Menu
    -dnl # Remove when Ubuntu 16.04 is EOL
    -dnl #######################################################################
    -AC_ARG_ENABLE(unity, [AC_HELP_STRING([--enable-unity],
    - [compile with support for unity integration plugin])], enable_unity="$enableval", enable_unity="no")
    -if test "$enable_unity" = yes; then
    - PKG_CHECK_MODULES(UNITY, [unity >= 6.8 messaging-menu >= 12.10], , [
    - AC_MSG_RESULT(no)
    - AC_MSG_ERROR([
    -You must have libunity9 >= 6.8 and libmessaging-menu >= 12.10 to build the unity integration plugin.
    - ])])
    - USES_MM_CHAT_SECTION="X-MessagingMenu-UsesChatSection=true"
    - AC_SUBST(UNITY_CFLAGS)
    - AC_SUBST(UNITY_LIBS)
    - AC_SUBST(USES_MM_CHAT_SECTION)
    -else
    - enable_unity=no
    -fi
    -AM_CONDITIONAL(ENABLE_UNITY, [test "x$enable_unity" = "xyes"])
    -
    -dnl #######################################################################
    -dnl # Check for Secret Service headers
    -dnl #######################################################################
    -
    -AC_ARG_ENABLE(libsecret,
    - [AC_HELP_STRING([--disable-libsecret], [enable Secret Service support])],
    - enable_secret_service="$enableval", enable_secret_service="$is_not_win32")
    -
    -if test "x$enable_secret_service" = "xyes" ; then
    - PKG_CHECK_MODULES(SECRETSERVICE, [libsecret-1], [
    - AC_SUBST(SECRETSERVICE_CFLAGS)
    - AC_SUBST(SECRETSERVICE_LIBS)
    - AC_DEFINE(HAVE_SECRETSERVICE, 1, [Define if we have Secret Service.])
    - ], [
    - AC_MSG_RESULT(no)
    - enable_secret_service="no"
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -Libsecret development headers not found
    -Use --disable-libsecret if you do not need it.
    -])
    - fi
    - ])
    -
    -fi
    -
    -AM_CONDITIONAL(ENABLE_SECRETSERVICE, test "x$enable_secret_service" = "xyes")
    -
    -dnl #######################################################################
    -dnl # Check for GNOME Keyring headers
    -dnl #######################################################################
    -
    -AC_ARG_ENABLE(gnome-keyring,
    - [AC_HELP_STRING([--disable-gnome-keyring], [disable GNOME Keyring support])],
    - enable_gnome_keyring="$enableval", enable_gnome_keyring="$is_not_win32")
    -
    -if test "x$enable_gnome_keyring" = "xyes" ; then
    - PKG_CHECK_MODULES(GNOMEKEYRING, [gnome-keyring-1], [
    - AC_SUBST(GNOMEKEYRING_CFLAGS)
    - AC_SUBST(GNOMEKEYRING_LIBS)
    - AC_DEFINE(HAVE_GNOMEKEYRING, 1, [Define if we have GNOME Keyring.])
    - ], [
    - AC_MSG_RESULT(no)
    - enable_gnome_keyring="no"
    - if test "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -GNOME Keyring development headers not found
    -Use --disable-gnome-keyring if you do not need it.
    -])
    - fi
    - ])
    -fi
    -
    -AM_CONDITIONAL(ENABLE_GNOMEKEYRING, test "x$enable_gnome_keyring" = "xyes")
    -
    -dnl #######################################################################
    -dnl # Check for KWallet headers
    -dnl #######################################################################
    -
    -AC_ARG_ENABLE(kwallet,
    - [AC_HELP_STRING([--disable-kwallet], [disable KWallet support])],
    - enable_kwallet="$enableval", enable_kwallet="$is_not_win32")
    -AC_ARG_WITH(kwallet-includes, [AC_HELP_STRING([--with-kwallet-includes=DIR], [compile the KWallet plugin against includes in DIR])], [ac_kwallet_includes="$withval"], [ac_kwallet_includes="no"])
    -AC_ARG_WITH(kwallet-libs, [AC_HELP_STRING([--with-kwallet-libs=DIR], [compile the KWallet plugin against the KWallet libs in DIR])], [ac_kwallet_libs="$withval"], [ac_kwallet_libs="no"])
    -
    -if test "x$enable_kwallet" = "xyes"; then
    - dnl Ensure C++ compiler works
    - AC_CHECK_PROG(CXXTEST, [$CXX], [$CXX])
    - if test "x$CXXTEST" = "x"; then
    - enable_kwallet=no
    - if test "x$force_deps" = "xyes"; then
    - AC_MSG_ERROR([
    -A C++ compiler was not found.
    -Use --disable-kwallet if you do not need KWallet support.
    -])
    - fi
    - fi
    -fi
    -
    -AC_LANG_PUSH([C++])
    -CPPFLAGS_save="$CPPFLAGS"
    -LIBS_save="$LIBS"
    -
    -if test "x$enable_kwallet" = "xyes"; then
    - PKG_CHECK_MODULES(QT4, [QtCore], [
    - AC_SUBST(QT4_CFLAGS)
    - AC_SUBST(QT4_LIBS)
    - ], [
    - AC_MSG_RESULT(no)
    - enable_kwallet=no
    - if test "x$force_deps" = "xyes"; then
    - AC_MSG_ERROR([
    -Qt4 development headers not found.
    -Use --disable-kwallet if you do not need KWallet support.
    -])
    - fi
    - ])
    -fi
    -
    -if test "x$enable_kwallet" = "xyes"; then
    - AC_MSG_CHECKING([for metaobject compiler])
    - MOC=`$PKG_CONFIG --variable=moc_location QtCore`
    - AC_SUBST(MOC)
    - AC_MSG_RESULT([$MOC])
    -
    - KWALLET_CXXFLAGS=""
    - KWALLET_LIBS=""
    - if test -z "$with_kwallet_includes" || test -z "$with_kwallet_libs"; then
    - AC_CHECK_PROG(KDE4_CONFIG, kde4-config, kde4-config, no)
    - if test "x$KDE4_CONFIG" = "xno"; then
    - enable_kwallet=no
    - if test "x$force_deps" = "xyes"; then
    - AC_MSG_ERROR([
    -kde4-config not found. $KDE4_CONFIG
    -Use --disable-kwallet if you do not need KWallet support.
    -Use --with-kwallet-includes and --with-kwallet-libs to set up includes manually.
    -])
    - fi
    - fi
    - fi
    -fi
    -
    -if test "x$enable_kwallet" = "xyes"; then
    - if test "$ac_kwallet_includes" != "no"; then
    - KWALLET_CXXFLAGS="-I$ac_kwallet_includes"
    - elif test "x$KDE4_CONFIG" != "xno"; then
    - KWALLET_CXXFLAGS="$QT4_CFLAGS -I`$KDE4_CONFIG --path include`"
    - fi
    - CPPFLAGS="$CPPFLAGS $KWALLET_CXXFLAGS"
    - AC_CHECK_HEADER([kwallet.h], , [
    - enable_kwallet=no
    - if test "x$force_deps" = "xyes"; then
    - AC_MSG_ERROR([
    -KWallet development headers not found.
    -Use --disable-kwallet if you do not need KWallet support.
    -])
    - fi
    -])
    -fi
    -
    -if test "x$enable_kwallet" = "xyes"; then
    - AC_MSG_CHECKING([for KWallet libraries])
    - if test "$ac_kwallet_libs" != "no"; then
    - KWALLET_LIBS="-L$ac_kwallet_libs -lkdeui"
    - elif test "x$KDE4_CONFIG" != "xno"; then
    - KWALLET_LIBS="-L`$KDE4_CONFIG --install lib`/kde4/devel -lkdeui"
    - else
    - KWALLET_LIBS="-lkdeui"
    - fi
    - KWALLET_LIBS="$KWALLET_LIBS"
    - LIBS="$LIBS $KWALLET_LIBS $QT4_LIBS"
    - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <kwallet.h>],
    - [KWallet::Wallet::LocalWallet();])], [AC_MSG_RESULT([yes])],
    - [
    - AC_MSG_RESULT(no)
    - enable_kwallet=no
    - if test "x$force_deps" = "xyes"; then
    - AC_MSG_ERROR([
    -KWallet development libraries not found.
    -Use --disable-kwallet if you do not need KWallet support.
    -])
    - fi
    - ])
    -fi
    -
    -CPPFLAGS="$CPPFLAGS_save"
    -LIBS="$LIBS_save"
    -AC_LANG_POP
    -
    -AC_SUBST(KWALLET_CXXFLAGS)
    -AC_SUBST(KWALLET_LIBS)
    -
    -AM_CONDITIONAL(ENABLE_KWALLET, test "x$enable_kwallet" = "xyes")
    -
    -dnl #######################################################################
    -dnl # Check for GPlugin 0.0.17
    -dnl #######################################################################
    -if test "x$enable_plugins" = "xyes" ; then
    - PKG_CHECK_MODULES(GPLUGIN, [gplugin >= 0.0.17 gmodule-2.0], [
    - dnl # GPLUGIN_REQ sets pkg-config requirements in the .pc file
    - GPLUGIN_REQ=[", gplugin"]
    - ], [
    - AC_MSG_RESULT(no)
    - AC_MSG_ERROR([
    - GPlugin 0.0.17 development headers not found, which are required if you wish to
    - enable plugins.
    - Use --disable-plugins if you want to disable plugins.
    - ])])
    - AC_SUBST(GPLUGIN_REQ)
    - AC_SUBST(GPLUGIN_CFLAGS)
    - AC_SUBST(GPLUGIN_LIBS)
    -else
    - enable_introspection=no
    -fi
    -
    -dnl # Check for gobject introspection
    -GOBJECT_INTROSPECTION_CHECK([1.30.0])
    -
    -if test "x$enable_introspection" = "xyes" ; then
    - AC_DEFINE(ENABLE_INTROSPECTION, 1, [Define if GObject introspection is enabled.])
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for Python
    -dnl #######################################################################
    -
    -dnl Python scripts are used to auto-generate about 3000 lines of C
    -dnl and XML code that wraps (part of) the existing API so that
    -dnl it is now accessible through D-Bus.
    -
    -dnl Python is only required if --enable-dbus is used, and only for
    -dnl the build process to generate the code, not for running pidgin.
    -dnl This autogenerated code is system-independent, so in principle we
    -dnl can generate all of it before shipping. But I thought adding
    -dnl auto-generated stuff to the repository is inelegant.
    -dnl Alternatively, these python scripts could be rewritten
    -dnl in C (brrrr ...).
    -
    -AC_ARG_WITH([python],
    - AS_HELP_STRING([--with-python=PATH],
    - [which python interpreter to use for dbus code generation]),
    - PYTHON=$withval)
    -
    -if test "x$enable_dbus" = "xyes" || test "x$enable_consoleui" = "xyes" ; then
    - if test -z "$PYTHON" -a "x$is_win32" = "xyes" ; then
    - dnl there are problems with include files when cross compiling
    - dnl feel free to fix it, if you want
    - PYTHON=no
    - elif test -z "$PYTHON" -o "x$PYTHON" = "xyes"; then
    - AC_PATH_PROG([PYTHON], [python], [no])
    - fi
    -
    - if test x"$PYTHON" = x"no" -a "x$is_win32" != "xyes" ; then
    - AC_MSG_WARN([python interpreter not found in your path])
    - enable_dbus=no
    - fi
    -
    - if test "x$PYTHON" != "xno" ; then
    - if $PYTHON -c "import sys; sys.exit(sys.version[[:3]] >= '2.4')" ; then
    - AC_MSG_WARN([python version >= 2.4 required])
    - enable_dbus=no
    - fi
    - fi
    -fi
    -
    -dnl ###########################################################################
    -dnl # Find the D-Bus services dir.
    -dnl #
    -dnl # This is a 3 step process that
    -dnl #
    -dnl # 1. checks if --with-dbus-services was set, if so use that.
    -dnl # 2. checks if --prefix was given, if so use that.
    -dnl # 3. fallbacks to installing into what should be the correct system
    -dnl # directories.
    -dnl #
    -dnl # This is still prone to error if one of the legacy directories exist
    -dnl # although a newer dbus is installed. But I have tried to order the
    -dnl # directory searching to keep this situation at a minimum.
    -dnl ###########################################################################
    -AC_ARG_WITH(dbus-services, [AS_HELP_STRING([--with-dbus-services=<dir>], [where the D-Bus services directory is located.])])
    -
    -DBUS_SERVICES_DIR=""
    -
    -if test x"$enable_dbus" = "xyes" ; then
    - AC_MSG_CHECKING([location of the D-Bus services directory])
    - if ! test -z "$with_dbus_services" ; then
    - if ! test -d "$with_dbus_services" ; then
    - AC_MSG_ERROR([$with_dbus_services does not exist, if this is the correct location please make sure that it exists.])
    - fi
    -
    - DBUS_SERVICES_DIR="$with_dbus_services"
    - else
    - if test x"$prefix" = x"NONE" ; then
    - dnl # no prefix given, so we look for the correct dbus system paths.
    - dnl # if a prefix is given, we use it.
    -
    - serviceprefixes="$prefix/share $prefix/lib /usr/share /usr/local/share"
    - DBUS_SERVICES_DIR=""
    -
    - for d in $serviceprefixes ; do
    - dir="$d/dbus-1/services"
    - if test -d $dir ; then
    - DBUS_SERVICES_DIR="$dir"
    - break
    - fi
    - done
    -
    - if test -z $DBUS_SERVICES_DIR ; then
    - AC_MSG_ERROR([D-Bus services directory was not found! Please use --with-dbus-services and specify its location.])
    - fi
    - else
    - DBUS_SERVICES_DIR="$datadir/dbus-1/services"
    - fi
    - fi
    - AC_MSG_RESULT([$DBUS_SERVICES_DIR])
    - AC_DEFINE(HAVE_DBUS, 1, [Define if we are using D-Bus.])
    -fi
    -AC_SUBST(DBUS_SERVICES_DIR)
    -
    -if test "x$enable_dbus" = "xyes" ; then
    - echo "Building with D-Bus support"
    -else
    - echo "Building without D-Bus support"
    -fi
    -
    -AM_CONDITIONAL(ENABLE_DBUS, test "x$enable_dbus" = "xyes")
    -
    -dnl Check for Python headers (currently useful only for libgnt)
    -dnl (Thanks to XChat)
    -if test "x$enable_consoleui" = "xyes" -a ! -z "$PYTHON" -a x"$PYTHON" != x"no" ; then
    - AC_MSG_CHECKING(for Python compile flags)
    - if test -f ${PYTHON}-config; then
    - PY_CFLAGS=`${PYTHON}-config --includes`
    - PY_LIBS=`${PYTHON}-config --libs`
    - AC_DEFINE(USE_PYTHON, [1], [Define if python headers are available.])
    - AC_MSG_RESULT(ok)
    - else
    - AC_MSG_RESULT([Cannot find ${PYTHON}-config])
    - PY_CFLAGS=""
    - PY_LIBS=""
    - fi
    -fi
    -AC_SUBST(PY_CFLAGS)
    -AC_SUBST(PY_LIBS)
    -
    -dnl #######################################################################
    -dnl # SSL support
    -dnl #
    -dnl # Thanks go to Evolution for the checks.
    -dnl #######################################################################
    -
    -AC_ARG_WITH(system-ssl-certs, [AS_HELP_STRING([--with-system-ssl-certs=<dir>], [directory containing system-wide SSL CA certificates])], [ssl_certificates_dir=$withval])
    -
    -SSL_CERTIFICATES_DIR=""
    -if ! test -z "$ssl_certificates_dir" ; then
    - if test "x$ssl_certificates_dir" = "xyes" ; then
    - AC_MSG_ERROR([--with-system-ssl-certs requires that a location is specified, eg. --with-system-ssl-certs=/etc/pki/tls/certs])
    - fi
    - if ! test -d "$ssl_certificates_dir" ; then
    - if test "x$is_win32" = "xyes" ; then
    - AC_MSG_WARN([$ssl_certificates_dir does not exist. \
    -It may be OK when cross-compiling, but please make sure about it.])
    - else
    - AC_MSG_ERROR([$ssl_certificates_dir does not exist, \
    -if this is the correct location please make sure that it exists.])
    - fi
    - fi
    - SSL_CERTIFICATES_DIR="$ssl_certificates_dir"
    -fi
    -AC_SUBST(SSL_CERTIFICATES_DIR)
    -if test "x$SSL_CERTIFICATES_DIR" != "x" ; then
    - AC_DEFINE_UNQUOTED([SSL_CERTIFICATES_DIR], ["$SSL_CERTIFICATES_DIR"],
    - [Directory where SSL certificates can be found])
    -fi
    -AM_CONDITIONAL(INSTALL_SSL_CERTIFICATES, test "x$SSL_CERTIFICATES_DIR" = "x")
    -
    -if test "$ac_cv_cygwin" = yes ; then
    - LDADD="$LDADD -static"
    - AC_DEFINE(DEBUG, 1, [Define if debugging is enabled.])
    -fi
    -
    -AC_SUBST(DEBUG_CPPFLAGS)
    -AC_SUBST(DEBUG_CFLAGS)
    -AC_SUBST(LDADD)
    -AC_SUBST(LIBS)
    -
    -if test "x$enable_plugins" = "xyes" ; then
    - AC_DEFINE(PURPLE_PLUGINS, 1, [Define if plugins are enabled.])
    - AM_CONDITIONAL(PLUGINS, true)
    - PLUGINS_DEFINE="#define PURPLE_PLUGINS 1"
    -else
    - AM_CONDITIONAL(PLUGINS, false)
    - PLUGINS_DEFINE="#undef PURPLE_PLUGINS"
    -fi
    -AC_SUBST(PLUGINS_DEFINE)
    -
    -dnl #######################################################################
    -dnl # Check for Nettle (Crypto Library)
    -dnl #######################################################################
    -AC_ARG_ENABLE(nettle,
    - [AC_HELP_STRING([--disable-nettle], [disable Nettle support])],
    - enable_nettle="$enableval", enable_nettle="yes")
    -
    -if test "x$enable_nettle" = "xyes" ; then
    - PKG_CHECK_MODULES(NETTLE, [nettle >= 3.0], [
    - enable_nettle="yes"
    - AC_SUBST(NETTLE_CFLAGS)
    - AC_SUBST(NETTLE_LIBS)
    - AC_DEFINE(HAVE_NETTLE, 1, [Define if we have Nettle.])
    - ], [
    - enable_nettle="no"
    - ])
    -
    - if test "x$enable_nettle" != "xyes" -a "x$force_deps" = "xyes" ; then
    - AC_MSG_ERROR([
    -Nettle development headers not found
    -Use --disable-nettle if you do not need it.
    -])
    - fi
    -fi
    -
    -AM_CONDITIONAL(ENABLE_NETTLE, test "x$enable_nettle" = "xyes")
    -
    -dnl #######################################################################
    -dnl # Check for Cyrus-SASL (for xmpp/irc)
    -dnl #######################################################################
    -dnl AC_CHECK_SIZEOF(short)
    -AC_CHECK_FUNCS(snprintf connect)
    -AC_SUBST(SASL_LIBS)
    -AC_ARG_ENABLE(cyrus-sasl, AS_HELP_STRING([--enable-cyrus-sasl], [enable Cyrus SASL support for xmpp/irc]), enable_cyrus_sasl=$enableval, enable_cyrus_sasl=no)
    -if test "x$enable_cyrus_sasl" = "xyes" ; then
    - AC_CHECK_LIB(sasl2, sasl_client_init, [
    - AM_CONDITIONAL(USE_CYRUS_SASL, true)
    - AC_DEFINE(HAVE_CYRUS_SASL, [1], [Define to 1 if Cyrus SASL is present])
    - SASL_LIBS=-"lsasl2"
    - ], [
    - AM_CONDITIONAL(USE_CYRUS_SASL, false)
    - AC_MSG_ERROR([Cyrus SASL library not found])
    - ])
    -else
    - AM_CONDITIONAL(USE_CYRUS_SASL, false)
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for Kerberos (for Zephyr)
    -dnl #######################################################################
    -AC_DEFINE(ZEPHYR_INT32, long, [Size of an int32.])
    -AC_SUBST(KRB4_CFLAGS)
    -AC_SUBST(KRB4_LDFLAGS)
    -AC_SUBST(KRB4_LIBS)
    -if test "$kerberos" != "no" ; then
    - if test "$kerberos" != "yes" ; then
    - KRB4_CFLAGS="-I${kerberos}/include"
    - if test -d "$kerberos/include/kerberosIV" ; then
    - KRB4_CFLAGS="$KRB4_CFLAGS -I${kerberos}/include/kerberosIV"
    - fi
    - KRB4_LDFLAGS="-L${kerberos}/lib"
    - elif test -d /usr/local/include/kerberosIV ; then
    - KRB4_CFLAGS="-I/usr/local/include/kerberosIV"
    - elif test -d /usr/include/kerberosIV ; then
    - KRB4_CFLAGS="-I/usr/include/kerberosIV"
    - fi
    - AC_DEFINE(ZEPHYR_USES_KERBEROS, 1, [Define if kerberos should be used in Zephyr.])
    -
    - orig_LDFLAGS="$LDFLAGS"
    - LDFLAGS="$LDFLAGS $KRB4_LDFLAGS"
    - AC_CHECK_LIB(krb4, krb_rd_req,
    - [KRB4_LIBS="-lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"],
    - [AC_CHECK_LIB(krb, krb_rd_req,
    - [KRB4_LIBS="-lkrb -ldes"],
    - [AC_MSG_ERROR([Kerberos 4 libraries not found])],
    - -ldes)],
    - -ldes425 -lkrb5 -lk5crypto -lcom_err)
    - orig_LIBS="$LIBS"
    - LIBS="$LIBS $KRB4_LIBS"
    - AC_CHECK_FUNCS(krb_set_key krb_rd_req krb_get_lrealm)
    - AC_CHECK_FUNCS(krb_get_err_text krb_log)
    - LIBS="$orig_LIBS"
    - LDFLAGS="$orig_LDFLAGS"
    -fi
    -
    -dnl #######################################################################
    -dnl # Check for external libzephyr
    -dnl #######################################################################
    -AC_SUBST(ZEPHYR_CFLAGS)
    -AC_SUBST(ZEPHYR_LDFLAGS)
    -AC_SUBST(ZEPHYR_LIBS)
    -if test "$zephyr" != "no" ; then
    - if test "$zephyr" != "yes" ; then
    - ZEPHYR_CFLAGS="-I${zephyr}/include"
    - ZEPHYR_LDFLAGS="-L${zephyr}/lib"
    - elif test -d /usr/athena/include/zephyr ; then
    - ZEPHYR_CFLAGS="-I/usr/athena/include"
    - elif test -d /usr/include/zephyr ; then
    - ZEPHYR_CFLAGS="-I/usr/include"
    - elif test -d /usr/local/include/zephyr ; then
    - ZEPHYR_CFLAGS="-I/usr/local/include"
    - fi
    - AC_DEFINE(LIBZEPHYR_EXT, 1 , [Define if external libzephyr should be used.])
    - AM_CONDITIONAL(EXTERNAL_LIBZEPHYR, test "x$zephyr" != "xno")
    - orig_LDFLAGS="$LDFLAGS"
    - LDFLAGS="$LDFLAGS $ZEPHYR_LDFLAGS"
    - AC_CHECK_LIB(zephyr, ZInitialize,
    - [ZEPHYR_LIBS="-lzephyr"],
    - [AC_MSG_ERROR([Zephyr libraries not found])],
    - -lzephyr)
    - orig_LIBS="$LIBS"
    - LIBS="$orig_LIBS"
    - LDFLAGS="$orig_LDFLAGS"
    -fi
    -
    -AC_MSG_CHECKING(for me pot o' gold)
    -AC_MSG_RESULT(no)
    -AC_CHECK_FUNCS(gethostid timegm)
    -AC_CHECK_HEADERS(paths.h sgtty.h sys/cdefs.h)
    -AC_CHECK_HEADERS(sys/file.h sys/filio.h sys/ioctl.h sys/msgbuf.h)
    -AC_CHECK_HEADERS(sys/select.h sys/uio.h sys/wait.h)
    -AC_CHECK_HEADERS(termios.h)
    -
    -# sys/sysctl.h on OpenBSD 4.2 requires sys/param.h
    -# sys/sysctl.h on FreeBSD requires sys/types.h
    -AC_CHECK_HEADERS(sys/param.h)
    -AC_CHECK_HEADERS(sys/sysctl.h, [], [],
    - [[
    - #include <sys/types.h>
    - #ifdef HAVE_PARAM_H
    - # include <sys/param.h>
    - #endif
    - ]])
    -
    -AC_CHECK_HEADERS(sys/socket.h)
    -AC_VAR_TIMEZONE_EXTERNALS
    -
    -AC_CHECK_MEMBER([struct tm.tm_gmtoff],
    - [AC_DEFINE(HAVE_TM_GMTOFF, 1, [Define if you have a tm_gmtoff member in struct tm])],
    - [],
    - [[#include <time.h>]])
    -
    -dnl #######################################################################
    -dnl # Disable pixmap installation
    -dnl #######################################################################
    -AC_ARG_ENABLE(pixmaps-install, AS_HELP_STRING([--disable-pixmaps-install], [disable installation of pixmap files - Pidgin still needs them!]), enable_pixmaps="$enableval", enable_pixmaps=yes)
    -
    -AM_CONDITIONAL(INSTALL_PIXMAPS, test "x$enable_pixmaps" = "xyes")
    -
    -dnl #######################################################################
    -dnl # Tweak status tray icon installation directory
    -dnl #######################################################################
    -AC_ARG_ENABLE(trayicon-compat, AS_HELP_STRING([--enable-trayicon-compat], [install tray icons in location compatible with older releases of hicolor-icon-theme]), enable_traycompat="$enableval", enable_traycompat=no)
    -
    -AM_CONDITIONAL(ENABLE_TRAYCOMPAT, test "x$enable_traycompat" = "xyes")
    -
    -# check for gtk-doc
    -m4_ifdef([GTK_DOC_CHECK], [
    -GTK_DOC_CHECK([1.16],[--flavour no-tmpl])
    -],[
    - if test "x$force_deps" = "xyes" -a "x$enable_gtk_doc" = "xyes"; then
    - AC_MSG_ERROR([
    -You have requested to generate documentation, but gtk-doc was not found.
    - ])
    - fi
    -
    - AM_CONDITIONAL([ENABLE_GTK_DOC], false)
    - enable_gtk_doc=no
    -])
    -
    -AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug],
    - [compile with debugging support])], , enable_debug=no)
    -
    -if test "x$enable_debug" = "xyes" ; then
    - AC_DEFINE(DEBUG, 1, [Define if debugging is enabled.])
    -fi
    -
    -AM_CONDITIONAL(PURPLE_AVAILABLE, true)
    -
    -AC_CONFIG_FILES([Makefile
    - doc/Makefile
    - doc/pidgin.1
    - doc/finch.1
    - doc/reference/Makefile
    - doc/reference/finch/Makefile
    - doc/reference/finch/version.xml
    - doc/reference/libpurple/Makefile
    - doc/reference/libpurple/version.xml
    - doc/reference/protocols/Makefile
    - doc/reference/protocols/facebook/Makefile
    - doc/reference/protocols/version.xml
    - doc/reference/pidgin/Makefile
    - doc/reference/pidgin/version.xml
    - m4macros/Makefile
    - pidgin/Makefile
    - pidgin/data/im.pidgin.Pidgin.desktop.in
    - pidgin/data/pidgin-3.pc
    - pidgin/data/pidgin-3-uninstalled.pc
    - pidgin/pixmaps/Makefile
    - pidgin/pixmaps/emotes/default/24/Makefile
    - pidgin/pixmaps/emotes/small/16/Makefile
    - pidgin/plugins/Makefile
    - pidgin/plugins/cap/Makefile
    - pidgin/plugins/disco/Makefile
    - pidgin/plugins/gestures/Makefile
    - pidgin/plugins/gevolution/Makefile
    - pidgin/plugins/musicmessaging/Makefile
    - pidgin/plugins/ticker/Makefile
    - pidgin/plugins/win32/transparency/Makefile
    - pidgin/plugins/win32/winprefs/Makefile
    - pidgin/themes/Makefile
    - pidgin/win32/pidgin_dll_rc.rc
    - pidgin/win32/pidgin_exe_rc.rc
    - libpurple/data/purple-url-handler.desktop.in
    - libpurple/data/purple-3.pc
    - libpurple/data/purple-3-uninstalled.pc
    - libpurple/example/Makefile
    - libpurple/plugins/Makefile
    - libpurple/plugins/keyrings/Makefile
    - libpurple/Makefile
    - libpurple/protocols/Makefile
    - libpurple/protocols/bonjour/Makefile
    - libpurple/protocols/facebook/Makefile
    - libpurple/protocols/gg/Makefile
    - libpurple/protocols/irc/Makefile
    - libpurple/protocols/jabber/Makefile
    - libpurple/protocols/jabber/tests/Makefile
    - libpurple/protocols/novell/Makefile
    - libpurple/protocols/null/Makefile
    - libpurple/protocols/oscar/Makefile
    - libpurple/protocols/oscar/tests/Makefile
    - libpurple/protocols/sametime/Makefile
    - libpurple/protocols/silc/Makefile
    - libpurple/protocols/simple/Makefile
    - libpurple/protocols/zephyr/Makefile
    - libpurple/tests/Makefile
    - libpurple/purple.h
    - libpurple/version.h
    - libpurple/win32/libpurplerc.rc
    - share/sounds/Makefile
    - share/ca-certs/Makefile
    - finch/finch.pc
    - finch/finch_winres.rc
    - finch/libfinch_winres.rc
    - finch/Makefile
    - finch/libgnt/Makefile
    - finch/libgnt/gnt.pc
    - finch/libgnt/libgnt_winres.rc
    - finch/libgnt/wms/Makefile
    - finch/plugins/Makefile
    - po/Makefile.in
    - ])
    -AC_OUTPUT
    -
    -echo
    -echo $PACKAGE $VERSION
    -
    -echo
    -echo Build GTK+ UI................. : $enable_gtkui
    -echo Build console UI.............. : $enable_consoleui
    -echo Build for X11................. : $with_x
    -echo
    -echo Enable Gestures............... : $enable_gestures
    -echo Protocols to build dynamically : $DYNAMIC_PRPLS
    -echo Protocols to link statically.. : $STATIC_PRPLS
    -echo
    -echo Build with GStreamer support.. : $enable_gst
    -echo Build with D-Bus support...... : $enable_dbus
    -echo Build with voice and video.... : $enable_vv
    -if test "x$enable_dbus" = "xyes" ; then
    - eval eval echo D-Bus services directory...... : $DBUS_SERVICES_DIR
    -fi
    -echo Build with GNU Libidn......... : $enable_idn
    -if test "x$SSL_CERTIFICATES_DIR" != "x" ; then
    - eval eval echo SSL CA certificates directory. : $SSL_CERTIFICATES_DIR
    -fi
    -echo Build with Nettle support..... : $enable_nettle
    -echo Build with Cyrus SASL support. : $enable_cyrus_sasl
    -echo Use kerberos 4 with zephyr.... : $kerberos
    -echo Use external libzephyr........ : $zephyr
    -echo Install pixmaps............... : $enable_pixmaps
    -echo Old tray icon compatibility... : $enable_traycompat
    -echo Install translations.......... : $enable_i18n
    -echo Has you....................... : yes
    -echo
    -echo Build with Enchant support.... : $use_enchant
    -echo Build with GCR widgets........ : $enable_gcr
    -echo Build Unity integration plugin.: $enable_unity
    -echo
    -echo Build with GNOME Keyring...... : $enable_gnome_keyring
    -echo Build with KWallet............ : $enable_kwallet
    -echo Build with Secret Service..... : $enable_secret_service
    -echo
    -echo Build with plugin support..... : $enable_plugins
    -echo Enable Introspection...........: $enable_introspection
    -
    -if test "x$is_win32" = "xyes" ; then
    - echo
    - echo Win32 directory structure..... : $with_win32_dirs
    -fi
    -
    -echo
    -echo Print debugging messages...... : $enable_debug
    -echo Generate documentation........ : $enable_gtk_doc
    -echo
    -eval eval echo Pidgin will be installed in $bindir.
    -if test "x$pidginpath" != "x" ; then
    - echo Warning: You have an old copy of Pidgin at $pidginpath.
    -fi
    -if test "x$enable_pixmaps" = "xno" ; then
    - echo
    - echo Warning: You have disabled the installation of pixmap data, but Pidgin
    - echo still requires installed pixmaps. Be sure you know what you are doing.
    -fi
    -if test "x$enable_i18n" = "xno" ; then
    - echo
    - echo Warning: You have disabled the building and installation of translation
    - echo data. This will prevent building Pidgin desktop files.
    - echo Be sure you know what you are doing.
    -fi
    -echo
    -echo configure complete, now type \'make\'
    -echo
    -
    --- a/doc/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,20 +0,0 @@
    -if ENABLE_GTK_DOC
    -SUBDIRS = reference
    -endif
    -
    -man_MANS =
    -
    -if ENABLE_GTK
    -man_MANS += pidgin.1
    -endif
    -
    -if ENABLE_GNT
    -man_MANS += finch.1
    -endif
    -
    -EXTRA_DIST = \
    - funniest_home_convos.txt \
    - finch.1.in \
    - gtkrc-2.0 \
    - pidgin.1.in \
    - the_penguin.txt
    --- a/doc/reference/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,9 +0,0 @@
    -if ENABLE_GTK
    -GTK_DIR=pidgin
    -endif
    -
    -if ENABLE_GNT
    -GNT_DIR=finch
    -endif
    -
    -SUBDIRS = libpurple protocols $(GNT_DIR) $(GTK_DIR)
    --- a/doc/reference/finch/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,137 +0,0 @@
    -## Process this file with automake to produce Makefile.in
    -
    -# We require automake 1.6 at least.
    -AUTOMAKE_OPTIONS = 1.6
    -
    -# This is a blank Makefile.am for using gtk-doc.
    -# Copy this to your project's API docs directory and modify the variables to
    -# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
    -# of using the various options.
    -
    -# The name of the module, e.g. 'glib'.
    -DOC_MODULE=finch
    -
    -# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
    -#DOC_MODULE_VERSION=2
    -
    -# The top-level XML file (SGML in the past). You can change this if you want to.
    -DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
    -
    -# The directory containing the source code. Relative to $(srcdir).
    -# gtk-doc will search all .c & .h files beneath here for inline comments
    -# documenting the functions and macros.
    -# e.g. DOC_SOURCE_DIR=../../../gtk
    -DOC_SOURCE_DIR=$(top_srcdir)/$(DOC_MODULE)
    -
    -# Extra options to pass to gtkdoc-scangobj. Not normally needed.
    -SCANGOBJ_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-scan.
    -# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
    -SCAN_OPTIONS=\
    - --deprecated-guards="PURPLE_DISABLE_DEPRECATED|GNT_DISABLE_DEPRECATED|FINCH_DISABLE_DEPRECATED" \
    - --rebuild-types \
    - --rebuild-sections
    -
    -# Extra options to supply to gtkdoc-mkdb.
    -# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
    -MKDB_OPTIONS=--xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
    -
    -# Extra options to supply to gtkdoc-mktmpl
    -# e.g. MKTMPL_OPTIONS=--only-section-tmpl
    -MKTMPL_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-mkhtml
    -MKHTML_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-fixref. Not normally needed.
    -# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
    -FIXXREF_OPTIONS=
    -
    -# Used for dependencies. The docs will be rebuilt if any of these change.
    -# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
    -# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
    -HFILE_GLOB=$(top_srcdir)/$(DOC_MODULE)/*.h
    -CFILE_GLOB=$(top_srcdir)/$(DOC_MODULE)/*.c
    -
    -# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
    -# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
    -EXTRA_HFILES=
    -
    -# Header files or dirs to ignore when scanning. Use base file/dir names
    -# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
    -IGNORE_HFILES=\
    - plugins \
    - test \
    - libgnt/wms \
    - gntinternal.h \
    - gnt-skel.h
    -
    -# Images to copy into HTML directory.
    -# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
    -HTML_IMAGES=
    -
    -# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
    -# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
    -content_files=version.xml
    -
    -# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
    -# These files must be listed here *and* in content_files
    -# e.g. expand_content_files=running.sgml
    -expand_content_files=
    -
    -# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
    -# Only needed if you are using gtkdoc-scangobj to dynamically query widget
    -# signals and properties.
    -# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
    -# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
    -GTKDOC_CFLAGS = \
    - -I$(top_srcdir) \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_srcdir)/finch \
    - -I$(top_srcdir)/finch/libgnt \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(INTROSPECTION_CFLAGS) \
    - $(GNT_CFLAGS)
    -
    -GTKDOC_LIBS = \
    - $(top_builddir)/finch/libfinch.la \
    - $(top_builddir)/libpurple/libpurple.la \
    - $(DBUS_LIBS) \
    - $(INTLLIBS) \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(LIBXML_LIBS) \
    - $(GNT_LIBS) \
    - $(GSTREAMER_LIBS) \
    - $(INTROSPECTION_LIBS) \
    - $(top_builddir)/finch/libgnt/libgnt.la
    -
    -# This includes the standard gtk-doc make rules, copied by gtkdocize.
    -include $(top_srcdir)/gtk-doc.make
    -
    -# Other files to distribute
    -# e.g. EXTRA_DIST += version.xml.in
    -EXTRA_DIST += version.xml.in
    -
    -# Files not to distribute
    -# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
    -# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
    -DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt
    -
    -dist-hook: html-build.stamp
    -
    -# Comment this out if you want 'make check' to test you doc status
    -# and run some sanity checks
    -if ENABLE_GTK_DOC
    -TESTS_ENVIRONMENT = \
    - DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
    - SRCDIR=$(abs_srcdir)
    -#TODO: fix and enable
    -#TESTS = $(GTKDOC_CHECK)
    -endif
    --- a/doc/reference/libpurple/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,179 +0,0 @@
    -## Process this file with automake to produce Makefile.in
    -
    -# We require automake 1.6 at least.
    -AUTOMAKE_OPTIONS = 1.6
    -
    -# This is a blank Makefile.am for using gtk-doc.
    -# Copy this to your project's API docs directory and modify the variables to
    -# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
    -# of using the various options.
    -
    -# The name of the module, e.g. 'glib'.
    -DOC_MODULE=libpurple
    -
    -# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
    -#DOC_MODULE_VERSION=2
    -
    -# The top-level XML file (SGML in the past). You can change this if you want to.
    -DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
    -
    -# The directory containing the source code. Relative to $(srcdir).
    -# gtk-doc will search all .c & .h files beneath here for inline comments
    -# documenting the functions and macros.
    -# e.g. DOC_SOURCE_DIR=../../../gtk
    -DOC_SOURCE_DIR=$(top_srcdir)/$(DOC_MODULE)
    -
    -# Extra options to pass to gtkdoc-scangobj. Not normally needed.
    -SCANGOBJ_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-scan.
    -# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
    -SCAN_OPTIONS=\
    - --deprecated-guards="PURPLE_DISABLE_DEPRECATED" \
    - --rebuild-types \
    - --rebuild-sections
    -
    -# Extra options to supply to gtkdoc-mkdb.
    -# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
    -MKDB_OPTIONS=--xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
    -
    -# Extra options to supply to gtkdoc-mktmpl
    -# e.g. MKTMPL_OPTIONS=--only-section-tmpl
    -MKTMPL_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-mkhtml
    -MKHTML_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-fixref. Not normally needed.
    -# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
    -FIXXREF_OPTIONS=
    -
    -# Used for dependencies. The docs will be rebuilt if any of these change.
    -# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
    -# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
    -HFILE_GLOB=$(top_srcdir)/$(DOC_MODULE)/*.h
    -CFILE_GLOB=$(top_srcdir)/$(DOC_MODULE)/*.c
    -
    -# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
    -# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
    -# TODO: those files are not properly scanned when building out-of-tree
    -EXTRA_HFILES = \
    - $(top_builddir)/$(DOC_MODULE)/enums.h \
    - $(top_builddir)/$(DOC_MODULE)/purple.h \
    - $(top_builddir)/$(DOC_MODULE)/version.h
    -
    -# Header files or dirs to ignore when scanning. Use base file/dir names
    -# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
    -IGNORE_HFILES=\
    - example \
    - plugins \
    - protocols \
    - tests \
    - tests.h \
    - win32 \
    - backend-fs2.h \
    - dbus-define-api.h \
    - dbus-types.h \
    - glibcompat.h \
    - internal.h \
    - purple-client.h \
    - purple-client-bindings.h \
    - valgrind.h
    -
    -# Images to copy into HTML directory.
    -# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
    -HTML_IMAGES=
    -
    -# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
    -# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
    -content_files = version.xml \
    - plugin_i18n.xml \
    - plugin_ids.xml \
    - signals_account.xml \
    - signals_blist.xml \
    - signals_certificate.xml \
    - signals_cmd.xml \
    - signals_connection.xml \
    - signals_conversation.xml \
    - signals_core.xml \
    - signals_dbus_server.xml \
    - signals_jabber.xml \
    - signals_log.xml \
    - signals_notify.xml \
    - signals_plugin.xml \
    - signals_protocol.xml \
    - signals_savedstatus.xml \
    - signals_sound.xml \
    - signals_xfer.xml \
    - tut_c_plugins.xml \
    - tut_signals.xml \
    - ui_ops.xml
    -
    -# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
    -# These files must be listed here *and* in content_files
    -# e.g. expand_content_files=running.sgml
    -expand_content_files=
    -
    -# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
    -# Only needed if you are using gtkdoc-scangobj to dynamically query widget
    -# signals and properties.
    -# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
    -# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
    -GTKDOC_CFLAGS = \
    - -I$(top_srcdir) \
    - -I$(top_srcdir)/libpurple \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(FARSTREAM_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(GSTVIDEO_CFLAGS) \
    - $(GSTINTERFACES_CFLAGS) \
    - $(IDN_CFLAGS) \
    - $(NETWORKMANAGER_CFLAGS) \
    - $(JSON_CFLAGS) \
    - $(INTROSPECTION_CFLAGS)
    -
    -GTKDOC_LIBS = \
    - $(top_builddir)/libpurple/libpurple.la \
    - $(STATIC_LINK_LIBS) \
    - $(DBUS_LIBS) \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(LIBXML_LIBS) \
    - $(NETWORKMANAGER_LIBS) \
    - $(INTLLIBS) \
    - $(FARSTREAM_LIBS) \
    - $(GSTREAMER_LIBS) \
    - $(GSTVIDEO_LIBS) \
    - $(GSTINTERFACES_LIBS) \
    - $(IDN_LIBS) \
    - $(JSON_LIBS) \
    - $(INTROSPECTION_LIBS) \
    - -lm
    -
    -# This includes the standard gtk-doc make rules, copied by gtkdocize.
    -include $(top_srcdir)/gtk-doc.make
    -
    -# Other files to distribute
    -# e.g. EXTRA_DIST += version.xml.in
    -EXTRA_DIST += version.xml.in
    -
    -# Files not to distribute
    -# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
    -# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
    -DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt
    -
    -dist-hook: html-build.stamp
    -
    -# Comment this out if you want 'make check' to test you doc status
    -# and run some sanity checks
    -if ENABLE_GTK_DOC
    -TESTS_ENVIRONMENT = \
    - DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
    - SRCDIR=$(abs_srcdir)
    -#TODO: fix and enable
    -#TESTS = $(GTKDOC_CHECK)
    -endif
    --- a/doc/reference/pidgin/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,151 +0,0 @@
    -## Process this file with automake to produce Makefile.in
    -
    -# We require automake 1.6 at least.
    -AUTOMAKE_OPTIONS = 1.6
    -
    -# This is a blank Makefile.am for using gtk-doc.
    -# Copy this to your project's API docs directory and modify the variables to
    -# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
    -# of using the various options.
    -
    -# The name of the module, e.g. 'glib'.
    -DOC_MODULE=pidgin
    -
    -# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
    -#DOC_MODULE_VERSION=2
    -
    -# The top-level XML file (SGML in the past). You can change this if you want to.
    -DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
    -
    -# The directory containing the source code. Relative to $(srcdir).
    -# gtk-doc will search all .c & .h files beneath here for inline comments
    -# documenting the functions and macros.
    -# e.g. DOC_SOURCE_DIR=../../../gtk
    -DOC_SOURCE_DIR=$(top_srcdir)/$(DOC_MODULE)
    -
    -# Extra options to pass to gtkdoc-scangobj. Not normally needed.
    -SCANGOBJ_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-scan.
    -# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
    -SCAN_OPTIONS=\
    - --deprecated-guards="PURPLE_DISABLE_DEPRECATED|PIDGIN_DISABLE_DEPRECATED" \
    - --rebuild-types \
    - --rebuild-sections
    -
    -# Extra options to supply to gtkdoc-mkdb.
    -# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
    -MKDB_OPTIONS=--xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
    -
    -# Extra options to supply to gtkdoc-mktmpl
    -# e.g. MKTMPL_OPTIONS=--only-section-tmpl
    -MKTMPL_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-mkhtml
    -MKHTML_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-fixref. Not normally needed.
    -# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
    -FIXXREF_OPTIONS=
    -
    -# Used for dependencies. The docs will be rebuilt if any of these change.
    -# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
    -# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
    -HFILE_GLOB=$(top_srcdir)/$(DOC_MODULE)/*.h
    -CFILE_GLOB=$(top_srcdir)/$(DOC_MODULE)/*.c
    -
    -# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
    -# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
    -EXTRA_HFILES=
    -
    -# Header files or dirs to ignore when scanning. Use base file/dir names
    -# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
    -IGNORE_HFILES=\
    - pixmaps \
    - plugins \
    - themes \
    - win32 \
    - gtk3compat.h \
    - gtkinternal.h \
    - pidgin.gresource.h
    -
    -# Images to copy into HTML directory.
    -# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
    -HTML_IMAGES=
    -
    -# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
    -# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
    -content_files = version.xml \
    - signals_gtkaccount.xml \
    - signals_gtkblist.xml \
    - signals_gtkconv.xml \
    - signals_gtklog.xml
    -
    -# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
    -# These files must be listed here *and* in content_files
    -# e.g. expand_content_files=running.sgml
    -expand_content_files=
    -
    -# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
    -# Only needed if you are using gtkdoc-scangobj to dynamically query widget
    -# signals and properties.
    -# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
    -# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
    -GTKDOC_CFLAGS = \
    - -I$(top_srcdir) \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(GCR_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(GSTVIDEO_CFLAGS) \
    - $(GSTINTERFACES_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(X11_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(WEBKIT_CFLAGS) \
    - $(INTROSPECTION_CFLAGS)
    -
    -GTKDOC_LIBS = \
    - $(top_builddir)/pidgin/libpidgin.la \
    - $(top_builddir)/libpurple/libpurple.la \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(GCR_LIBS) \
    - $(DBUS_LIBS) \
    - $(GSTREAMER_LIBS) \
    - $(GSTVIDEO_LIBS) \
    - $(GSTINTERFACES_LIBS) \
    - $(INTLLIBS) \
    - $(LIBXML_LIBS) \
    - $(WEBKIT_LIBS) \
    - $(GTK_LIBS) \
    - $(X11_LIBS) \
    - $(INTROSPECTION_LIBS)
    -
    -# This includes the standard gtk-doc make rules, copied by gtkdocize.
    -include $(top_srcdir)/gtk-doc.make
    -
    -# Other files to distribute
    -# e.g. EXTRA_DIST += version.xml.in
    -EXTRA_DIST += version.xml.in
    -
    -# Files not to distribute
    -# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
    -# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
    -DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt
    -
    -dist-hook: html-build.stamp
    -
    -# Comment this out if you want 'make check' to test you doc status
    -# and run some sanity checks
    -if ENABLE_GTK_DOC
    -TESTS_ENVIRONMENT = \
    - DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
    - SRCDIR=$(abs_srcdir)
    -#TODO: fix and enable
    -#TESTS = $(GTKDOC_CHECK)
    -endif
    --- a/doc/reference/protocols/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,2 +0,0 @@
    -EXTRA_DIST = version.xml.in
    -SUBDIRS = facebook
    --- a/doc/reference/protocols/facebook/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,123 +0,0 @@
    -## Process this file with automake to produce Makefile.in
    -
    -# We require automake 1.6 at least.
    -AUTOMAKE_OPTIONS = 1.6
    -
    -# This is a blank Makefile.am for using gtk-doc.
    -# Copy this to your project's API docs directory and modify the variables to
    -# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
    -# of using the various options.
    -
    -# The name of the module, e.g. 'glib'.
    -DOC_MODULE=facebook
    -
    -# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
    -#DOC_MODULE_VERSION=2
    -
    -# The top-level XML file (SGML in the past). You can change this if you want to.
    -DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
    -
    -# The directory containing the source code. Relative to $(srcdir).
    -# gtk-doc will search all .c & .h files beneath here for inline comments
    -# documenting the functions and macros.
    -# e.g. DOC_SOURCE_DIR=../../../gtk
    -DOC_SOURCE_DIR=$(top_srcdir)/libpurple/protocols/$(DOC_MODULE)
    -
    -# Extra options to pass to gtkdoc-scangobj. Not normally needed.
    -SCANGOBJ_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-scan.
    -# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
    -SCAN_OPTIONS=\
    - --deprecated-guards="PURPLE_DISABLE_DEPRECATED" \
    - --rebuild-types \
    - --rebuild-sections
    -
    -# Extra options to supply to gtkdoc-mkdb.
    -# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
    -MKDB_OPTIONS=--xml-mode --output-format=xml
    -
    -# Extra options to supply to gtkdoc-mktmpl
    -# e.g. MKTMPL_OPTIONS=--only-section-tmpl
    -MKTMPL_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-mkhtml
    -MKHTML_OPTIONS=
    -
    -# Extra options to supply to gtkdoc-fixref. Not normally needed.
    -# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
    -FIXXREF_OPTIONS=
    -
    -# Used for dependencies. The docs will be rebuilt if any of these change.
    -# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
    -# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
    -HFILE_GLOB=$(top_srcdir)/libpurple/protocols/$(DOC_MODULE)/*.h
    -CFILE_GLOB=$(top_srcdir)/libpurple/protocols/$(DOC_MODULE)/*.c
    -
    -# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
    -# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
    -# TODO: those files are not properly scanned when building out-of-tree
    -EXTRA_HFILES =
    -
    -# Header files or dirs to ignore when scanning. Use base file/dir names
    -# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
    -IGNORE_HFILES=
    -
    -# Images to copy into HTML directory.
    -# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
    -HTML_IMAGES=
    -
    -# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
    -# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
    -content_files = ../version.xml
    -
    -# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
    -# These files must be listed here *and* in content_files
    -# e.g. expand_content_files=running.sgml
    -expand_content_files=
    -
    -# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
    -# Only needed if you are using gtkdoc-scangobj to dynamically query widget
    -# signals and properties.
    -# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
    -# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
    -GTKDOC_CFLAGS = \
    - -I$(top_srcdir) \
    - -I$(top_srcdir)/libpurple/protocols/$(DOC_MODULE) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(JSON_CFLAGS) \
    - $(INTROSPECTION_CFLAGS)
    -
    -GTKDOC_LIBS = \
    - $(top_builddir)/libpurple/protocols/$(DOC_MODULE)/lib$(DOC_MODULE).la \
    - $(STATIC_LINK_LIBS) \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(INTLLIBS) \
    - $(JSON_LIBS) \
    - $(INTROSPECTION_LIBS)
    -
    -# This includes the standard gtk-doc make rules, copied by gtkdocize.
    -include $(top_srcdir)/gtk-doc.make
    -
    -# Other files to distribute
    -# e.g. EXTRA_DIST += version.xml.in
    -
    -# Files not to distribute
    -# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
    -# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
    -DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt
    -
    -dist-hook: html-build.stamp
    -
    -# Comment this out if you want 'make check' to test you doc status
    -# and run some sanity checks
    -if ENABLE_GTK_DOC
    -TESTS_ENVIRONMENT = \
    - DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
    - SRCDIR=$(abs_srcdir)
    -#TODO: fix and enable
    -#TESTS = $(GTKDOC_CHECK)
    -endif
    --- a/finch/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,184 +0,0 @@
    -EXTRA_DIST = \
    - finch.pc.in
    -
    -pkgconfigdir = $(libdir)/pkgconfig
    -pkgconfig_DATA = finch.pc
    -
    -SUBDIRS = libgnt . plugins
    -
    -if ENABLE_GNT
    -
    -# XXX: should this be lib_, or noinst_?
    -lib_LTLIBRARIES = libfinch.la
    -bin_PROGRAMS = finch
    -
    -endif
    -
    -libfinch_la_SOURCES = \
    - gntaccount.c \
    - gntblist.c \
    - gntcertmgr.c \
    - gntconn.c \
    - gntconv.c \
    - gntdebug.c \
    - gntidle.c \
    - gntlog.c \
    - gntmedia.c \
    - gntmenuutil.c \
    - gntnotify.c \
    - gntplugin.c \
    - gntpounce.c \
    - gntprefs.c \
    - gntrequest.c \
    - gntroomlist.c \
    - gntsound.c \
    - gntstatus.c \
    - gntui.c \
    - gntxfer.c \
    - libfinch.c
    -
    -libfinch_la_headers = \
    - gntaccount.h \
    - gntblist.h \
    - gntcertmgr.h \
    - gntconn.h \
    - gntconv.h \
    - gntdebug.h \
    - finch.h \
    - gntidle.h \
    - gntlog.h \
    - gntmedia.h \
    - gntmenuutil.h \
    - gntnotify.h \
    - gntplugin.h \
    - gntpounce.h \
    - gntprefs.h \
    - gntrequest.h \
    - gntroomlist.h \
    - gntsound.h \
    - gntstatus.h \
    - gntui.h \
    - gntxfer.h
    -
    -finch_SOURCES = \
    - finch.c
    -
    -libfinchincludedir=$(includedir)/finch
    -libfinchinclude_HEADERS = \
    - $(libfinch_la_headers)
    -
    -libfinch_la_DEPENDENCIES = @LIBOBJS@
    -libfinch_la_LDFLAGS = -export-dynamic -no-undefined \
    - -version-info $(PURPLE_LT_VERSION_INFO)
    -libfinch_la_LIBADD = \
    - @LIBOBJS@ \
    - $(DBUS_LIBS) \
    - $(INTLLIBS) \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(LIBXML_LIBS) \
    - $(GNT_LIBS) \
    - $(GSTREAMER_LIBS) \
    - $(GSTVIDEO_LIBS) \
    - $(INTROSPECTION_LIBS) \
    - ./libgnt/libgnt.la \
    - $(top_builddir)/libpurple/libpurple.la
    -
    -finch_DEPENDENCIES = $(builddir)/libfinch.la
    -finch_LDFLAGS = -export-dynamic
    -finch_LDADD = $(builddir)/libfinch.la $(libfinch_la_LIBADD)
    -
    -if IS_WIN32
    -libfinch_la_LIBADD += \
    - -lwinmm
    -
    -.rc.o: %.rc
    - $(AM_V_GEN)$(WINDRES) -i $< -o $@
    -
    -FINCH_WIN32RES = finch_winres.o
    -finch_DEPENDENCIES += $(FINCH_WIN32RES)
    -finch_LDFLAGS += -Wl,$(FINCH_WIN32RES)
    -
    -LIBFINCH_WIN32RES = libfinch_winres.o
    -libfinch_la_DEPENDENCIES += $(LIBFINCH_WIN32RES)
    -libfinch_la_LDFLAGS += -Wl,$(LIBFINCH_WIN32RES)
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -DSTANDALONE \
    - -I$(top_srcdir)/libpurple/ \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir) \
    - -I$(srcdir)/libgnt/ \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(INTROSPECTION_CFLAGS) \
    - $(GNT_CFLAGS)
    -
    -if ENABLE_GNT
    --include $(INTROSPECTION_MAKEFILE)
    -INTROSPECTION_GIRS =
    -INTROSPECTION_SCANNER_ARGS = \
    - --warn-all \
    - --add-include-path=$(prefix)/share/gir-1.0 \
    - --add-include-path=$(builddir)/libgnt \
    - --add-include-path=$(top_builddir)/libpurple \
    - --pkg=purple-$(PURPLE_MAJOR_VERSION) \
    - --pkg-export=finch
    -
    -INTROSPECTION_COMPILER_ARGS = \
    - --includedir=$(prefix)/share/gir-1.0 \
    - --includedir=$(builddir)/libgnt \
    - --includedir=$(top_builddir)/libpurple
    -
    -if HAVE_INTROSPECTION
    -introspection_sources = $(libfinchinclude_HEADERS)
    -
    -Finch-$(PURPLE_MAJOR_VERSION).$(PURPLE_MINOR_VERSION).gir: $(builddir)/libfinch.la
    -Finch_3_0_gir_INCLUDES = \
    - Gnt-$(GNT_MAJOR_VERSION).$(GNT_MINOR_VERSION) \
    - Purple-$(PURPLE_MAJOR_VERSION).$(PURPLE_MINOR_VERSION)
    -
    -Finch_3_0_gir_CFLAGS = \
    - $(INCLUDES) \
    - -DSTANDALONE \
    - -DDATADIR=\"$(datadir)\" \
    - -DLIBDIR=\"$(libdir)/finch/\" \
    - -DLOCALEDIR=\"$(datadir)/locale\" \
    - -DSYSCONFDIR=\"$(sysconfdir)\" \
    - -I$(top_srcdir)/libpurple/ \
    - -I$(top_builddir)/libpurple/ \
    - -I$(top_srcdir) \
    - -I$(srcdir)/libgnt/ \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(INTROSPECTION_CFLAGS) \
    - $(GNT_CFLAGS)
    -
    -Finch_3_0_gir_LIBS = $(builddir)/libfinch.la
    -Finch_3_0_gir_FILES = $(introspection_sources)
    -INTROSPECTION_GIRS += Finch-$(PURPLE_MAJOR_VERSION).$(PURPLE_MINOR_VERSION).gir
    -INTROSPECTION_SCANNER_ENV = PKG_CONFIG_PATH=$(top_builddir)/libpurple/data/
    -
    -girdir = \
    - $(prefix)/share/gir-1.0 \
    - $(INTROSPECTION_GIRDIR)
    -gir_DATA = $(INTROSPECTION_GIRS)
    -
    -typelibdir = \
    - $(prefix)/share/gir-1.0 \
    - $(INTROSPECTION_TYPELIBDIR)
    -typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
    -
    -CLEANFILES = $(gir_DATA) $(typelib_DATA)
    -endif
    -
    -endif # ENABLE_GNT
    --- a/finch/gntnotify.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/finch/gntnotify.c Fri Nov 17 14:23:40 2017 +0300
    @@ -385,11 +385,12 @@
    finch_notify_sr_new_rows(PurpleConnection *gc,
    PurpleNotifySearchResults *results, void *data)
    {
    - GntTree *tree = GNT_TREE(data);
    + GntWindow *window = GNT_WINDOW(data);
    + GntTree *tree = GNT_TREE(g_object_get_data(G_OBJECT(window), "tree-widget"));
    GList *o;
    GntTreeRow *prev = NULL;
    - /* XXX: Do I need to empty the tree here? */
    + gnt_tree_remove_all(GNT_TREE(tree));
    for (o = results->rows; o; o = o->next)
    {
    @@ -493,12 +494,16 @@
    g_signal_connect(G_OBJECT(tree), "destroy",
    G_CALLBACK(notify_sr_destroy_cb), NULL);
    - finch_notify_sr_new_rows(gc, results, tree);
    + g_object_set_data(G_OBJECT(window), "tree-widget", tree);
    + finch_notify_sr_new_rows(gc, results, window);
    +
    + g_signal_connect(G_OBJECT(window), "destroy",
    + G_CALLBACK(notify_msg_window_destroy_cb), GINT_TO_POINTER(PURPLE_NOTIFY_SEARCHRESULTS));
    gnt_widget_show(window);
    g_object_set_data(G_OBJECT(window), "notify-results", results);
    - return tree;
    + return window;
    }
    static void *
    --- a/finch/libgnt/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,134 +0,0 @@
    -SUBDIRS = . wms
    -pkgconfigdir = $(libdir)/pkgconfig
    -pkgconfig_DATA = gnt.pc
    -
    -lib_LTLIBRARIES = libgnt.la
    -
    -noinst_HEADERS = gntinternal.h
    -
    -libgnt_la_SOURCES = \
    - gntwidget.c \
    - gntbindable.c \
    - gntbox.c \
    - gntbutton.c \
    - gntcheckbox.c \
    - gntclipboard.c \
    - gntcolors.c \
    - gntcombobox.c \
    - gntentry.c \
    - gntfilesel.c \
    - gntkeys.c \
    - gntlabel.c \
    - gntline.c \
    - gntmenu.c \
    - gntmenuitem.c \
    - gntmenuitemcheck.c \
    - gntprogressbar.c \
    - gntslider.c \
    - gntstyle.c \
    - gnttextview.c \
    - gnttree.c \
    - gntutils.c \
    - gntwindow.c \
    - gntwm.c \
    - gntws.c \
    - gntmain.c
    -
    -libgnt_la_headers = \
    - gntwidget.h \
    - gntbindable.h \
    - gntbox.h \
    - gntbutton.h \
    - gntcheckbox.h \
    - gntclipboard.h \
    - gntcolors.h \
    - gntcombobox.h \
    - gntentry.h \
    - gntfilesel.h \
    - gntkeys.h \
    - gntlabel.h \
    - gntline.h \
    - gntmenu.h \
    - gntmenuitem.h \
    - gntmenuitemcheck.h \
    - gntprogressbar.h \
    - gntslider.h \
    - gntstyle.h \
    - gnttextview.h \
    - gnttree.h \
    - gntutils.h \
    - gntwindow.h \
    - gntwm.h \
    - gntws.h \
    - gnt.h
    -
    -libgnt_laincludedir=$(includedir)/gnt
    -libgnt_lainclude_HEADERS = \
    - $(libgnt_la_headers)
    -
    -libgnt_la_DEPENDENCIES =
    -libgnt_la_LDFLAGS = -export-dynamic -version-info $(GNT_LT_VERSION_INFO) -no-undefined
    -libgnt_la_LIBADD = \
    - $(GLIB_LIBS) \
    - $(GNT_LIBS) \
    - $(LIBXML_LIBS) \
    - $(INTROSPECTION_LIBS) \
    - $(PY_LIBS)
    -
    -if IS_WIN32
    -
    -.rc.o: %.rc
    - $(AM_V_GEN)$(WINDRES) -i $< -o $@
    -
    -LIBGNT_WIN32RES = libgnt_winres.o
    -libgnt_la_DEPENDENCIES += $(LIBGNT_WIN32RES)
    -libgnt_la_LDFLAGS += -Wl,$(LIBGNT_WIN32RES)
    -
    -libgnt_la_LIBADD += -lgmodule-2.0
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - $(GLIB_CFLAGS) \
    - $(GNT_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(INTROSPECTION_CFLAGS) \
    - $(PY_CFLAGS)
    -
    --include $(INTROSPECTION_MAKEFILE)
    -INTROSPECTION_GIRS =
    -INTROSPECTION_SCANNER_ARGS = \
    - --add-include-path=$(prefix)/share/gir-1.0 \
    - --warn-all
    -INTROSPECTION_COMPILER_ARGS = --includedir=$(prefix)/share/gir-1.0
    -
    -if HAVE_INTROSPECTION
    -introspection_sources = $(libgnt_lainclude_HEADERS)
    -
    -Gnt-$(GNT_MAJOR_VERSION).$(GNT_MINOR_VERSION).gir: $(builddir)/libgnt.la
    -Gnt_2_9_gir_INCLUDES = GObject-2.0
    -Gnt_2_9_gir_CFLAGS = \
    - $(INCLUDES) \
    - $(GLIB_CFLAGS) \
    - $(GNT_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(INTROSPECTION_CFLAGS) \
    - $(PY_CFLAGS)
    -
    -Gnt_2_9_gir_LIBS = $(builddir)/libgnt.la
    -Gnt_2_9_gir_FILES = $(introspection_sources)
    -INTROSPECTION_GIRS += Gnt-$(GNT_MAJOR_VERSION).$(GNT_MINOR_VERSION).gir
    -
    -girdir = \
    - $(prefix)/share/gir-1.0 \
    - $(INTROSPECTION_GIRDIR)
    -gir_DATA = $(INTROSPECTION_GIRS)
    -
    -typelibdir = \
    - $(prefix)/share/gir-1.0 \
    - $(INTROSPECTION_TYPELIBDIR)
    -typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
    -
    -CLEANFILES = $(gir_DATA) $(typelib_DATA)
    -endif
    --- a/finch/libgnt/gntmain.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/finch/libgnt/gntmain.c Fri Nov 17 14:23:40 2017 +0300
    @@ -551,10 +551,11 @@
    #ifdef SIGWINCH
    static void (*org_winch_handler)(int);
    +static void (*org_winch_handler_sa)(int, siginfo_t *, void *);
    #endif
    static void
    -sighandler(int sig)
    +sighandler(int sig, siginfo_t *info, void *data)
    {
    switch (sig) {
    #ifdef SIGWINCH
    @@ -563,18 +564,17 @@
    g_idle_add((GSourceFunc)refresh_screen, NULL);
    if (org_winch_handler)
    org_winch_handler(sig);
    - signal(SIGWINCH, sighandler);
    + if (org_winch_handler_sa)
    + org_winch_handler_sa(sig, info, data);
    break;
    #endif
    #ifndef _WIN32
    case SIGCHLD:
    clean_pid();
    - signal(SIGCHLD, sighandler);
    break;
    #endif
    case SIGINT:
    ask_before_exit();
    - signal(SIGINT, sighandler);
    break;
    }
    }
    @@ -602,6 +602,10 @@
    {
    char *filename;
    const char *locale;
    + struct sigaction act;
    +#ifdef SIGWINCH
    + struct sigaction oact;
    +#endif
    if (channel)
    return;
    @@ -654,14 +658,26 @@
    werase(stdscr);
    wrefresh(stdscr);
    + act.sa_sigaction = sighandler;
    + sigemptyset(&act.sa_mask);
    + act.sa_flags = SA_SIGINFO;
    +
    #ifdef SIGWINCH
    - org_winch_handler = signal(SIGWINCH, sighandler);
    + org_winch_handler = NULL;
    + org_winch_handler_sa = NULL;
    + sigaction(SIGWINCH, &act, &oact);
    + if (oact.sa_flags & SA_SIGINFO)
    + {
    + org_winch_handler_sa = oact.sa_sigaction;
    + }
    + else if (oact.sa_handler != SIG_DFL && oact.sa_handler != SIG_IGN)
    + {
    + org_winch_handler = oact.sa_handler;
    + }
    #endif
    -#ifndef _WIN32
    - signal(SIGCHLD, sighandler);
    + sigaction(SIGCHLD, &act, NULL);
    + sigaction(SIGINT, &act, NULL);
    signal(SIGPIPE, SIG_IGN);
    -#endif
    - signal(SIGINT, sighandler);
    #if !GLIB_CHECK_VERSION(2, 36, 0)
    /* GLib type system is automaticaly initialized since 2.36. */
    --- a/finch/libgnt/gntwm.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/finch/libgnt/gntwm.c Fri Nov 17 14:23:40 2017 +0300
    @@ -166,37 +166,37 @@
    cchar_t ch;
    PANEL *below = panel;
    - sx = panel->win->_begx;
    - ex = panel->win->_maxx + sx;
    - sy = panel->win->_begy;
    - ey = panel->win->_maxy + sy;
    + sx = getbegx(panel->win);
    + ex = getmaxx(panel->win) + sx;
    + sy = getbegy(panel->win);
    + ey = getmaxy(panel->win) + sy;
    while ((below = panel_below(below)) != NULL) {
    - if (sy > below->win->_begy + below->win->_maxy ||
    - ey < below->win->_begy)
    + if (sy > getbegy(below->win) + getmaxy(below->win) ||
    + ey < getbegy(below->win))
    continue;
    - if (sx > below->win->_begx + below->win->_maxx ||
    - ex < below->win->_begx)
    + if (sx > getbegx(below->win) + getmaxx(below->win) ||
    + ex < getbegx(below->win))
    continue;
    - for (y = MAX(sy, below->win->_begy); y <= MIN(ey, below->win->_begy + below->win->_maxy); y++) {
    - if (mvwin_wch(below->win, y - below->win->_begy, sx - 1 - below->win->_begx, &ch) != OK)
    + for (y = MAX(sy, getbegy(below->win)); y <= MIN(ey, getbegy(below->win) + getmaxy(below->win)); y++) {
    + if (mvwin_wch(below->win, y - getbegy(below->win), sx - 1 - getbegx(below->win), &ch) != OK)
    goto right;
    w = widestringwidth(ch.chars);
    if (w > 1 && (ch.attr & 1)) {
    ch.chars[0] = ' ';
    ch.attr &= ~ A_CHARTEXT;
    - mvwadd_wch(below->win, y - below->win->_begy, sx - 1 - below->win->_begx, &ch);
    - touchline(below->win, y - below->win->_begy, 1);
    + mvwadd_wch(below->win, y - getbegy(below->win), sx - 1 - getbegx(below->win), &ch);
    + touchline(below->win, y - getbegy(below->win), 1);
    }
    right:
    - if (mvwin_wch(below->win, y - below->win->_begy, ex + 1 - below->win->_begx, &ch) != OK)
    + if (mvwin_wch(below->win, y - getbegy(below->win), ex + 1 - getbegx(below->win), &ch) != OK)
    continue;
    w = widestringwidth(ch.chars);
    if (w > 1 && !(ch.attr & 1)) {
    ch.chars[0] = ' ';
    ch.attr &= ~ A_CHARTEXT;
    - mvwadd_wch(below->win, y - below->win->_begy, ex + 1 - below->win->_begx, &ch);
    - touchline(below->win, y - below->win->_begy, 1);
    + mvwadd_wch(below->win, y - getbegy(below->win), ex + 1 - getbegx(below->win), &ch);
    + touchline(below->win, y - getbegy(below->win), 1);
    }
    }
    }
    --- a/finch/libgnt/wms/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,41 +0,0 @@
    -wms = irssi.la
    -if PURPLE_AVAILABLE
    -# These custom wms depend on libpurple
    -purple_wms = s.la
    -else
    -purple_wms =
    -endif
    -
    -s_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -irssi_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -plugin_LTLIBRARIES = \
    - $(wms) \
    - $(purple_wms)
    -
    -plugindir = $(libdir)/gnt
    -
    -irssi_la_SOURCES = irssi.c
    -irssi_la_LIBADD = \
    - $(GLIB_LIBS) \
    - ../libgnt.la
    -
    -s_la_SOURCES = s.c
    -s_la_LIBADD = \
    - $(GLIB_LIBS) \
    - ../libgnt.la \
    - $(top_builddir)/libpurple/libpurple.la
    -
    -EXTRA_DIST =
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/finch \
    - -I$(top_srcdir)/finch/libgnt \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(GNT_CFLAGS) \
    - $(PLUGIN_CFLAGS)
    -
    --- a/finch/plugins/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,63 +0,0 @@
    -gntclipboard_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -gntgf_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -gnthistory_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -gntlastlog_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -gnttinyurl_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -grouping_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if PLUGINS
    -
    -plugin_LTLIBRARIES = \
    - gntclipboard.la \
    - gntgf.la \
    - gnthistory.la \
    - gntlastlog.la \
    - gnttinyurl.la \
    - grouping.la
    -
    -plugindir = @FINCH_PLUGINDIR@
    -
    -gntclipboard_la_SOURCES = gntclipboard.c
    -gntgf_la_SOURCES = gntgf.c
    -gnthistory_la_SOURCES = gnthistory.c
    -gntlastlog_la_SOURCES = lastlog.c
    -gnttinyurl_la_SOURCES = gnttinyurl.c
    -grouping_la_SOURCES = grouping.c
    -
    -gntclipboard_la_CFLAGS = $(X11_CFLAGS)
    -gntgf_la_CFLAGS = $(X11_CFLAGS)
    -
    -gntclipboard_la_LIBADD = @FINCH_LIBS@ $(X11_LIBS)
    -gntgf_la_LIBADD = @FINCH_LIBS@ $(X11_LIBS)
    -gnthistory_la_LIBADD = @FINCH_LIBS@
    -gntlastlog_la_LIBADD = @FINCH_LIBS@
    -gnttinyurl_la_LIBADD = @FINCH_LIBS@
    -grouping_la_LIBADD = @FINCH_LIBS@
    -
    -endif # PLUGINS
    -
    -EXTRA_DIST = pietray.py
    -
    -AM_CPPFLAGS = \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_srcdir) \
    - -I$(top_srcdir)/finch \
    - -I$(top_srcdir)/finch/libgnt \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(GNT_CFLAGS) \
    - $(PLUGIN_CFLAGS)
    -
    -#
    -# This part allows people to build their own plugins in here.
    -# Yes, it's a mess.
    -#
    -SUFFIXES = .c .so
    -.c.so:
    - $(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
    - $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module @PLUGIN_LDFLAGS@ $(PLUGIN_LIBS)
    - @rm -f tmp$@.lo tmp$@.o libtmp$@.la
    - @cp .libs/libtmp$@.so.so $@
    - @rm -rf .libs/libtmp$@.*
    --- a/glib-tap.mk Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,135 +0,0 @@
    -# GLIB - Library of useful C routines
    -
    -AM_TESTS_ENVIRONMENT= \
    - G_TEST_SRCDIR="$(abs_srcdir)" \
    - G_TEST_BUILDDIR="$(abs_builddir)" \
    - G_DEBUG=gc-friendly \
    - MALLOC_CHECK_=2 \
    - MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256))
    -LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh
    -LOG_COMPILER = $(top_srcdir)/tap-test
    -
    -NULL =
    -
    -# initialize variables for unconditional += appending
    -BUILT_SOURCES =
    -BUILT_EXTRA_DIST =
    -CLEANFILES = *.log *.trs
    -DISTCLEANFILES =
    -MAINTAINERCLEANFILES =
    -EXTRA_DIST =
    -TESTS =
    -
    -installed_test_LTLIBRARIES =
    -installed_test_PROGRAMS =
    -installed_test_SCRIPTS =
    -nobase_installed_test_DATA =
    -
    -noinst_LTLIBRARIES =
    -noinst_PROGRAMS =
    -noinst_SCRIPTS =
    -noinst_DATA =
    -
    -check_LTLIBRARIES =
    -check_PROGRAMS =
    -check_SCRIPTS =
    -check_DATA =
    -
    -# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
    -# will belong in exactly one of the following variables.
    -#
    -# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
    -#
    -# test_programs, test_scripts, test_data, test_ltlibraries
    -#
    -# The above are used to list files that are involved in both uninstalled and installed testing. The
    -# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
    -# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
    -# installed in the same way as it appears in the package layout.
    -#
    -# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
    -# like so:
    -#
    -# installed_test_programs, uninstalled_test_programs
    -# installed_test_scripts, uninstalled_test_scripts
    -# installed_test_data, uninstalled_test_data
    -# installed_test_ltlibraries, uninstalled_test_ltlibraries
    -#
    -# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
    -# that should not themselves be run as testcases (but exist to be used from other testcases):
    -#
    -# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
    -# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
    -#
    -# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
    -# file automatically end up in the tarball.
    -#
    -# dist_test_scripts, dist_test_data, dist_test_extra_scripts
    -# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
    -# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
    -#
    -# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
    -# standard automake convention of not disting programs scripts or data by default.
    -#
    -# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
    -# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
    -# gtester. That's a bit strange for scripts, but it's possible.
    -
    -TESTS += $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
    - $(dist_test_scripts) $(dist_uninstalled_test_scripts)
    -
    -# Note: build even the installed-only targets during 'make check' to ensure that they still work.
    -# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
    -# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
    -# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
    -all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
    - $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
    -all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \
    - $(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts)
    -all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
    - $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
    -all_test_scripts += $(all_dist_test_scripts)
    -EXTRA_DIST += $(all_dist_test_scripts)
    -all_test_data = $(test_data) $(uninstalled_test_data) $(installed_test_data)
    -all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
    -all_test_data += $(all_dist_test_data)
    -EXTRA_DIST += $(all_dist_test_data)
    -all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
    -
    -if ENABLE_ALWAYS_BUILD_TESTS
    -noinst_LTLIBRARIES += $(all_test_ltlibs)
    -noinst_PROGRAMS += $(all_test_programs)
    -noinst_SCRIPTS += $(all_test_scripts)
    -noinst_DATA += $(all_test_data)
    -else
    -check_LTLIBRARIES += $(all_test_ltlibs)
    -check_PROGRAMS += $(all_test_programs)
    -check_SCRIPTS += $(all_test_scripts)
    -check_DATA += $(all_test_data)
    -endif
    -
    -if ENABLE_INSTALLED_TESTS
    -installed_test_PROGRAMS += $(test_programs) $(installed_test_programs) \
    - $(test_extra_programs) $(installed_test_extra_programs)
    -installed_test_SCRIPTS += $(test_scripts) $(installed_test_scripts) \
    - $(test_extra_scripts) $(installed_test_extra_scripts)
    -installed_test_SCRIPTS += $(dist_test_scripts) $(dist_test_extra_scripts) \
    - $(dist_installed_test_scripts) $(dist_installed_test_extra_scripts)
    -nobase_installed_test_DATA += $(test_data) $(installed_test_data)
    -nobase_installed_test_DATA += $(dist_test_data) $(dist_installed_test_data)
    -installed_test_LTLIBRARIES += $(test_ltlibraries) $(installed_test_ltlibraries)
    -installed_testcases = $(test_programs) $(installed_test_programs) \
    - $(test_scripts) $(installed_test_scripts) \
    - $(dist_test_scripts) $(dist_installed_test_scripts)
    -
    -installed_test_meta_DATA = $(installed_testcases:=.test)
    -
    -%.test: %$(EXEEXT) Makefile
    - $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
    - echo 'Type=session' >> $@.tmp; \
    - echo 'Exec=$(installed_testdir)/$(notdir $<) --tap' >> $@.tmp; \
    - echo 'Output=TAP' >> $@.tmp; \
    - mv $@.tmp $@)
    -
    -CLEANFILES += $(installed_test_meta_DATA)
    -endif
    --- a/libpurple/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,506 +0,0 @@
    -EXTRA_DIST = \
    - dbus-analyze-functions.py \
    - dbus-analyze-signals.py \
    - dbus-analyze-types.py \
    - enums.c.in \
    - enums.h.in \
    - glibcompat.h \
    - purple-notifications-example \
    - purple-remote \
    - purple-send \
    - purple-send-async \
    - purple-url-handler \
    - purple.h.in \
    - tag.sh \
    - version.h.in \
    - Makefile.mingw \
    - data/purple-3.pc.in \
    - data/purple-3-uninstalled.pc.in \
    - data/purple-url-handler.desktop.in \
    - win32/global.mak \
    - win32/libc_interface.c \
    - win32/libc_interface.h \
    - win32/libc_internal.h \
    - win32/libpurplerc.rc.in \
    - win32/rules.mak \
    - win32/targets.mak \
    - win32/wpurpleerror.h \
    - win32/win32dep.c \
    - win32/win32dep.h
    -
    -SUBDIRS = . plugins protocols tests example
    -
    -purple_coresources = \
    - account.c \
    - accounts.c \
    - accountopt.c \
    - blistnode.c \
    - buddy.c \
    - buddylist.c \
    - buddyicon.c \
    - chat.c \
    - circularbuffer.c \
    - cmds.c \
    - connection.c \
    - contact.c \
    - conversation.c \
    - conversationtypes.c \
    - conversations.c \
    - core.c \
    - countingnode.c \
    - debug.c \
    - e2ee.c \
    - eventloop.c \
    - group.c \
    - http.c \
    - idle.c \
    - image.c \
    - image-store.c \
    - keyring.c \
    - log.c \
    - media/backend-fs2.c \
    - media/backend-iface.c \
    - media/candidate.c \
    - media/codec.c \
    - media/enum-types.c \
    - media.c \
    - mediamanager.c \
    - memorypool.c \
    - message.c \
    - mime.c \
    - nat-pmp.c \
    - network.c \
    - notify.c \
    - plugins.c \
    - pluginpref.c \
    - pounce.c \
    - prefs.c \
    - presence.c \
    - proxy.c \
    - protocol.c \
    - protocols.c \
    - purple-gio.c \
    - queuedoutputstream.c \
    - request.c \
    - request-datasheet.c \
    - roomlist.c \
    - savedstatuses.c \
    - server.c \
    - signals.c \
    - smiley-custom.c \
    - smiley-list.c \
    - smiley-parser.c \
    - smiley-theme.c \
    - smiley.c \
    - status.c \
    - stringref.c \
    - stun.c \
    - sound.c \
    - sound-theme.c \
    - sound-theme-loader.c \
    - sslconn.c \
    - theme.c \
    - theme-loader.c \
    - theme-manager.c \
    - tls-certificate.c \
    - tls-certificate-info.c \
    - trie.c \
    - upnp.c \
    - util.c \
    - version.c \
    - whiteboard.c \
    - xfer.c \
    - xmlnode.c
    -
    -purple_builtsources = \
    - enums.c
    -
    -purple_coreheaders = \
    - account.h \
    - accounts.h \
    - accountopt.h \
    - blistnode.h \
    - buddy.h \
    - buddylist.h \
    - buddyicon.h \
    - chat.h \
    - circularbuffer.h \
    - cmds.h \
    - connection.h \
    - contact.h \
    - conversation.h \
    - conversationtypes.h \
    - conversations.h \
    - core.h \
    - countingnode.h \
    - dbus-maybe.h \
    - debug.h \
    - e2ee.h \
    - eventloop.h \
    - group.h \
    - http.h \
    - idle.h \
    - image.h \
    - image-store.h \
    - keyring.h \
    - log.h \
    - media.h \
    - mediamanager.h \
    - memorypool.h \
    - message.h \
    - mime.h \
    - nat-pmp.h \
    - network.h \
    - notify.h \
    - plugins.h \
    - pluginpref.h \
    - pounce.h \
    - prefs.h \
    - presence.h \
    - proxy.h \
    - protocol.h \
    - protocols.h \
    - purple-gio.h \
    - queuedoutputstream.h \
    - request.h \
    - request-datasheet.h \
    - roomlist.h \
    - savedstatuses.h \
    - server.h \
    - signals.h \
    - smiley-custom.h \
    - smiley-list.h \
    - smiley-parser.h \
    - smiley-theme.h \
    - smiley.h \
    - status.h \
    - stringref.h \
    - stun.h \
    - sound.h \
    - sound-theme.h \
    - sound-theme-loader.h \
    - sslconn.h \
    - tests.h \
    - theme.h \
    - theme-loader.h \
    - theme-manager.h \
    - tls-certificate.h \
    - tls-certificate-info.h \
    - trie.h \
    - upnp.h \
    - util.h \
    - whiteboard.h \
    - xfer.h \
    - xmlnode.h
    -
    -if USE_VV
    -purple_coreheaders += media-gst.h
    -else
    -EXTRA_DIST += media-gst.h
    -endif
    -
    -if IS_WIN32
    -purple_coresources += \
    - win32/libc_interface.c \
    - win32/win32dep.c
    -
    -purple_coreheaders += \
    - win32/libc_interface.h \
    - win32/libc_internal.h \
    - win32/win32dep.h \
    - win32/wpurpleerror.h
    -
    -.rc.o: %.rc
    - $(AM_V_GEN)$(WINDRES) -i $< -o $@
    -
    -LIBPURPLE_WIN32RES = win32/libpurplerc.o
    -LIBPURPLE_WIN32RES_LDFLAGS = -Wl,$(LIBPURPLE_WIN32RES)
    -endif
    -
    -purple_mediaheaders = \
    - backend-iface.h \
    - candidate.h \
    - codec.h \
    - enum-types.h
    -
    -purple_builtheaders = purple.h version.h enums.h
    -
    -purple_enumheaders = \
    - $(srcdir)/account.h \
    - $(srcdir)/buddyicon.h \
    - $(srcdir)/connection.h \
    - $(srcdir)/conversation.h \
    - $(srcdir)/conversationtypes.h \
    - $(srcdir)/debug.h \
    - $(srcdir)/eventloop.h \
    - $(srcdir)/notify.h \
    - $(srcdir)/plugins.h \
    - $(srcdir)/protocol.h \
    - $(srcdir)/protocols.h \
    - $(srcdir)/roomlist.h \
    - $(srcdir)/status.h \
    - $(srcdir)/sound.h \
    - $(srcdir)/xfer.h \
    - $(srcdir)/xmlnode.h
    -
    -
    -# glib-mkenums doesn't handle VPATHs well, sed is used here to fix the
    -# include paths and documentation.
    -# Escaping possible . in $(srcdir) to \. for sed pattern.
    -enums.h: $(srcdir)/enums.h.in $(purple_enumheaders)
    - $(AM_V_GEN)$(GLIB_MKENUMS) --template $(srcdir)/enums.h.in $(purple_enumheaders) > $@
    - sed -i 's,$(subst .,\.,$(srcdir))/,,g' $@
    -
    -enums.c: $(srcdir)/enums.c.in $(purple_enumheaders)
    - $(AM_V_GEN)$(GLIB_MKENUMS) --template $(srcdir)/enums.c.in $(purple_enumheaders) > $@
    - sed -i 's,$(subst .,\.,$(srcdir))/,,g' $@
    -
    -CLEANFILES = \
    - enums.c \
    - enums.h
    -
    -DISTCLEANFILES = \
    - data/purple-url-handler.desktop
    -
    -if ENABLE_DBUS
    -
    -CLEANFILES += \
    - dbus-bindings.ch \
    - dbus-client-binding.c \
    - dbus-client-binding.h \
    - dbus-signals.ch \
    - dbus-types.ch \
    - dbus-types.h \
    - purple-client-bindings.ch \
    - purple-client-bindings.h \
    - purple.service
    -
    -# purple dbus server
    -
    -dbus_sources = dbus-server.c dbus-useful.c
    -dbus_headers = dbus-server.h dbus-bindings.h dbus-purple.h dbus-useful.h dbus-define-api.h dbus-types.h
    -
    -dbus_exported = dbus-useful.h dbus-define-api.h account.h accounts.h blistnode.h \
    - buddy.h buddylist.h buddyicon.h connection.h conversation.h \
    - conversationtypes.h conversations.h core.h xfer.h log.h notify.h \
    - prefs.h presence.h roomlist.h savedstatuses.h smiley.h smiley-list.h \
    - status.h server.h util.h xmlnode.h protocol.h protocols.h
    -
    -# Filter out enums.h as it doesn't actually generate anything.
    -# This way making from a VPATH and distcheck doesn't fail due
    -# to not being able to find the enums.h file if it's already
    -# been generated in the $(srcdir).
    -purple_build_coreheaders = $(addprefix $(srcdir)/, $(purple_coreheaders)) \
    - $(addprefix $(srcdir)/media/, $(purple_mediaheaders)) \
    - $(filter-out: enums.h, $(purple_builtheaders))
    -dbus_build_exported = $(addprefix $(srcdir)/, $(dbus_exported))
    -# We should probably make this better
    -dbus_signals = $(addprefix $(srcdir)/, $(purple_coresources)) \
    - $(srcdir)/protocols/irc/irc.c \
    - $(srcdir)/protocols/jabber/jabber.c
    -
    -dbus-types.ch: dbus-analyze-types.py $(purple_build_coreheaders)
    - $(AM_V_GEN) $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DEFINE_TYPE\(%s\) -o $@ $(purple_build_coreheaders)
    -
    -dbus-types.h: dbus-analyze-types.py $(purple_build_coreheaders)
    - $(AM_V_GEN) $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DECLARE_TYPE\(%s\) -o $@ $(purple_build_coreheaders)
    -
    -dbus-bindings.ch: dbus-analyze-functions.py $(dbus_exported)
    - $(AM_V_GEN)$(PYTHON) $(srcdir)/dbus-analyze-functions.py -o $@ $(dbus_build_exported)
    -
    -dbus-signals.ch: dbus-analyze-signals.py $(dbus_signals)
    - $(AM_V_GEN) $(PYTHON) $(srcdir)/dbus-analyze-signals.py -o $@ $(dbus_signals)
    -
    -dbus-server.$(OBJEXT): dbus-bindings.ch dbus-signals.ch dbus-types.ch dbus-types.h
    -dbus-server.lo: dbus-bindings.ch dbus-signals.ch dbus-types.ch dbus-types.h
    -
    -# Declare these as dependencies so they're built even if `make distcheck`
    -# is run immediately after configuring.
    -$(libpurple_la_OBJECTS): dbus-types.h enums.h
    -
    -# libpurple-client
    -
    -libpurple_client_lib = libpurple-client.la
    -
    -libpurple_client_la_SOURCES = purple-client.c purple-client.h
    -libpurple_client_la_LDFLAGS = -version-info $(PURPLE_LT_VERSION_INFO) -no-undefined
    -libpurple_client_la_LIBADD = $(DBUS_LIBS)
    -
    -purple-client-bindings.ch: dbus-analyze-functions.py $(dbus_exported)
    - $(AM_V_GEN) $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client -o $@ $(dbus_build_exported)
    -
    -purple-client-bindings.h: dbus-analyze-types.py dbus-analyze-functions.py $(purple_coreheaders) $(addprefix media/, $(purple_mediaheaders)) $(purple_builtheaders) $(dbus_exported)
    - $(AM_V_GEN) $(PYTHON) $(srcdir)/dbus-analyze-types.py --keyword=enum --verbatim -o $@ $(purple_build_coreheaders)
    - $(AM_V_at) $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client --headers --append -o $@ $(dbus_build_exported)
    -
    -$(libpurple_client_la_OBJECTS): purple-client-bindings.h purple-client-bindings.ch
    -
    -# purple-client-example
    -
    -purple_client_example_SOURCES = purple-client-example.c
    -
    -purple_client_example_DEPENDENCIES = libpurple-client.la
    -
    -purple_client_example_LDADD = \
    - libpurple-client.la \
    - $(GLIB_LIBS) \
    - $(DBUS_LIBS)
    -
    -bin_PROGRAMS = purple-client-example
    -
    -purple-client-example.$(OBJEXT): purple-client-bindings.h
    -
    -# scripts
    -
    -bin_SCRIPTS = purple-remote purple-send purple-send-async purple-url-handler
    -
    -BUILT_SOURCES = $(purple_builtheaders) \
    - $(purple_builtsources) \
    - dbus-bindings.ch \
    - dbus-signals.ch \
    - dbus-types.ch \
    - dbus-types.h \
    - purple-client-bindings.ch \
    - purple-client-bindings.h
    -
    -else
    -
    -BUILT_SOURCES = $(purple_builtheaders) $(purple_builtsources)
    -
    -# Declare these as dependencies so they're built even if `make distcheck`
    -# is run immediately after configuring.
    -$(libpurple_la_OBJECTS): enums.h
    -
    -endif
    -
    -lib_LTLIBRARIES = libpurple.la $(libpurple_client_lib)
    -
    -libpurple_la_SOURCES = \
    - $(purple_coresources) \
    - $(purple_builtsources) \
    - $(dbus_sources)
    -
    -noinst_HEADERS= \
    - internal.h \
    - media/backend-fs2.h \
    - valgrind.h
    -
    -libpurpleincludedir=$(includedir)/libpurple
    -libpurpleinclude_HEADERS = \
    - $(purple_coreheaders) \
    - $(purple_builtheaders) \
    - $(dbus_headers)
    -
    -mediaincludedir=$(includedir)/libpurple/media
    -mediainclude_HEADERS = \
    - $(addprefix $(srcdir)/media/, $(purple_mediaheaders))
    -
    -pkgconfigdir = $(libdir)/pkgconfig
    -pkgconfig_DATA = data/purple-3.pc
    -
    -if INSTALL_I18N
    -DESKTOP_FILE=data/purple-url-handler.desktop
    -
    -appsdir = $(datadir)/applications
    -apps_in_files = data/purple-url-handler.desktop.in
    -apps_DATA = $(apps_in_files:.desktop.in=.desktop)
    -
    -# silenced INTLTOOL_DESKTOP_RULE
    -%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po)
    - $(AM_V_GEN) LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ > /dev/null
    -
    -@INTLTOOL_XML_RULE@
    -
    -endif # INSTALL_I18N
    -
    -libpurple_la_DEPENDENCIES = \
    - $(STATIC_LINK_LIBS) $(LIBPURPLE_WIN32RES)
    -
    -libpurple_la_LDFLAGS = -export-dynamic -version-info $(PURPLE_LT_VERSION_INFO) \
    - -no-undefined $(LIBPURPLE_WIN32RES_LDFLAGS)
    -libpurple_la_LIBADD = \
    - $(STATIC_LINK_LIBS) \
    - $(DBUS_LIBS) \
    - $(DNSAPI_LIBS) \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(LIBXML_LIBS) \
    - $(NETWORKMANAGER_LIBS) \
    - $(INTLLIBS) \
    - $(FARSTREAM_LIBS) \
    - $(GSTREAMER_LIBS) \
    - $(GSTVIDEO_LIBS) \
    - $(GSTAPP_LIBS) \
    - $(GSTINTERFACES_LIBS) \
    - $(IDN_LIBS) \
    - $(JSON_LIBS) \
    - $(INTROSPECTION_LIBS) \
    - -lm
    -
    -AM_CPPFLAGS = \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(FARSTREAM_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(GSTVIDEO_CFLAGS) \
    - $(GSTAPP_CFLAGS) \
    - $(GSTINTERFACES_CFLAGS) \
    - $(IDN_CFLAGS) \
    - $(NETWORKMANAGER_CFLAGS) \
    - $(JSON_CFLAGS) \
    - $(INTROSPECTION_CFLAGS)
    -
    --include $(INTROSPECTION_MAKEFILE)
    -INTROSPECTION_GIRS =
    -INTROSPECTION_SCANNER_ARGS = --add-include-path=$(prefix)/share/gir-1.0 --warn-all --pkg-export=purple-$(PURPLE_MAJOR_VERSION)
    -INTROSPECTION_COMPILER_ARGS = --includedir=$(prefix)/share/gir-1.0
    -
    -if HAVE_INTROSPECTION
    -introspection_sources = \
    - $(libpurpleinclude_HEADERS) \
    - $(addprefix media/, $(purple_mediaheaders))
    -
    -Purple-$(PURPLE_MAJOR_VERSION).$(PURPLE_MINOR_VERSION).gir: $(builddir)/libpurple.la
    -Purple_3_0_gir_INCLUDES = Gio-2.0 GObject-2.0
    -if PLUGINS
    -Purple_3_0_gir_INCLUDES += GPlugin-0.0
    -endif
    -if ENABLE_DBUS
    -Purple_3_0_gir_INCLUDES += DBus-1.0 DBusGLib-1.0
    -endif
    -
    -Purple_3_0_gir_CFLAGS = \
    - -I$(srcdir) \
    - $(INCLUDES) \
    - -DDATADIR=\"$(datadir)\" \
    - -DLIBDIR=\"$(libdir)/purple-$(PURPLE_MAJOR_VERSION)/\" \
    - -DLOCALEDIR=\"$(datadir)/locale\" \
    - -DSYSCONFDIR=\"$(sysconfdir)\" \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(FARSTREAM_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(GSTVIDEO_CFLAGS) \
    - $(GSTINTERFACES_CFLAGS) \
    - $(IDN_CFLAGS) \
    - $(NETWORKMANAGER_CFLAGS) \
    - $(JSON_CFLAGS) \
    - $(INTROSPECTION_CFLAGS)
    -
    -Purple_3_0_gir_LIBS = $(builddir)/libpurple.la
    -Purple_3_0_gir_FILES = $(introspection_sources)
    -INTROSPECTION_GIRS += Purple-$(PURPLE_MAJOR_VERSION).$(PURPLE_MINOR_VERSION).gir
    -
    -girdir = $(prefix)/share/gir-1.0 $(INTROSPECTION_GIRDIR)
    -gir_DATA = $(INTROSPECTION_GIRS)
    -
    -typelibdir = $(prefix)/share/gir-1.0 $(INTROSPECTION_TYPELIBDIR)
    -typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
    -
    -CLEANFILES += $(gir_DATA) $(typelib_DATA)
    -endif
    --- a/libpurple/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,224 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libpurple
    -#
    -
    -PIDGIN_TREE_TOP := ..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libpurple
    -
    -ifeq ($(CYRUS_SASL), 1)
    -NEEDED_DLLS = $(CYRUS_SASL_TOP)/bin/libsasl2-3.dll
    -
    -CYRUS_SASL_PLUGINS = \
    - $(CYRUS_SASL_TOP)/lib/sasl2/libanonymous-3.dll \
    - $(CYRUS_SASL_TOP)/lib/sasl2/libcrammd5-3.dll \
    - $(CYRUS_SASL_TOP)/lib/sasl2/libdigestmd5-3.dll \
    - $(CYRUS_SASL_TOP)/lib/sasl2/libplain-3.dll
    -
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP) \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(JSON_GLIB_TOP)/include/json-glib-1.0 \
    - -I$(LIBXML2_TOP)/include/libxml2 \
    - -I$(NSS_TOP)/include/nspr4 \
    - -I$(NSS_TOP)/include/nss3 \
    - -I$(GNUTLS_TOP)/include \
    - $(VV_INCLUDE_PATHS)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(JSON_GLIB_TOP)/lib \
    - -L$(LIBXML2_TOP)/lib \
    - -L$(NSS_TOP)/lib \
    - -L$(GNUTLS_TOP)/lib \
    - $(VV_LIB_PATHS)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -ifeq "$(USE_VV)" "1"
    -VV_SRC = \
    - media/backend-fs2.c \
    - media/backend-iface.c \
    - media/codec.c
    -else
    -VV_SRC =
    -endif
    -
    -BUILT_SRC = enums.c
    -
    -C_SRC = \
    - $(BUILT_SRC) \
    - account.c \
    - accounts.c \
    - accountopt.c \
    - blistnode.c \
    - blistnodetypes.c \
    - buddylist.c \
    - buddyicon.c \
    - certificate.c \
    - circularbuffer.c \
    - cmds.c \
    - connection.c \
    - conversation.c \
    - conversationtypes.c \
    - conversations.c \
    - core.c \
    - debug.c \
    - dnsquery.c \
    - dnssrv.c \
    - e2ee.c \
    - eventloop.c \
    - http.c \
    - idle.c \
    - image.c \
    - image-store.c \
    - keyring.c \
    - log.c \
    - media/candidate.c \
    - media/enum-types.c \
    - mediamanager.c \
    - media.c \
    - memorypool.c \
    - mime.c \
    - nat-pmp.c \
    - network.c \
    - notify.c \
    - plugins.c \
    - pluginpref.c \
    - pounce.c \
    - prefs.c \
    - presence.c \
    - proxy.c \
    - protocol.c \
    - protocols.c \
    - request.c \
    - request-datasheet.c \
    - roomlist.c \
    - savedstatuses.c \
    - server.c \
    - signals.c \
    - smiley.c \
    - smiley-custom.c \
    - smiley-list.c \
    - smiley-parser.c \
    - smiley-theme.c \
    - sound-theme-loader.c \
    - sound-theme.c \
    - sound.c \
    - sslconn.c \
    - status.c \
    - stringref.c \
    - stun.c \
    - theme-loader.c \
    - theme-manager.c \
    - theme.c \
    - trie.c \
    - upnp.c \
    - util.c \
    - version.c \
    - whiteboard.c \
    - xfer.c \
    - xmlnode.c \
    - win32/libc_interface.c \
    - win32/win32dep.c \
    - $(VV_SRC)
    -
    -RC_SRC = win32/libpurplerc.rc
    -
    -ENUM_HEADERS = \
    - account.h \
    - connection.h \
    - conversation.h \
    - conversationtypes.h \
    - roomlist.h \
    - status.h \
    - xfer.h
    -
    -OBJECTS = $(C_SRC:%.c=%.o) $(RC_SRC:%.rc=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -ldnsapi \
    - -lglib-2.0 \
    - -lgthread-2.0 \
    - -lgobject-2.0 \
    - -lgmodule-2.0 \
    - -lintl \
    - -lws2_32 \
    - -lxml2 \
    - -ljson-glib-1.0 \
    - -lnss3 \
    - -lnspr4 \
    - -lgnutls \
    - -lz \
    - $(VV_LIBS)
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install install_shallow clean
    -
    -all: $(TARGET).dll
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PROTOS_TOP) -f $(MINGW_MAKEFILE)
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PLUGINS_TOP) -f $(MINGW_MAKEFILE)
    -
    -install_shallow: $(PURPLE_INSTALL_DIR) $(TARGET).dll
    - cp $(TARGET).dll $(PURPLE_INSTALL_DIR)
    - cp $(NEEDED_DLLS) $(PURPLE_INSTALL_DIR)
    -ifeq ($(CYRUS_SASL), 1)
    - mkdir -p $(PURPLE_INSTALL_DIR)/sasl2
    - cp $(CYRUS_SASL_PLUGINS) $(PURPLE_INSTALL_DIR)/sasl2
    -endif
    -
    -install: install_shallow all
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PROTOS_TOP) -f $(MINGW_MAKEFILE) install
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PLUGINS_TOP) -f $(MINGW_MAKEFILE) install
    -
    -./win32/libpurplerc.rc: ./win32/libpurplerc.rc.in $(PIDGIN_TREE_TOP)/VERSION
    - @echo -e " GEN\t$@"
    - @sed -e 's/@PURPLE_VERSION@/$(PURPLE_VERSION)/g' \
    - -e 's/@PURPLE_MAJOR_VERSION@/$(PURPLE_MAJOR_VERSION)/g' \
    - -e 's/@PURPLE_MINOR_VERSION@/$(PURPLE_MINOR_VERSION)/g' \
    - -e 's/@PURPLE_MICRO_VERSION@/$(PURPLE_MICRO_VERSION)/g' \
    - -e 's/@PURPLE_API_VERSION@/$(PURPLE_API_VERSION)/g' \
    - $@.in > $@
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H) $(PURPLE_VERSION_H) $(PURPLE_PURPLE_H)
    -
    -enums.h: enums.h.in $(ENUM_HEADERS)
    - @echo -e " GEN\t$@"
    - @$(GLIB_MKENUMS) --template enums.h.in $(ENUM_HEADERS) > enums.h
    -
    -enums.c: enums.c.in enums.h $(ENUM_HEADERS)
    - @echo -e " GEN\t$@"
    - @$(GLIB_MKENUMS) --template enums.c.in $(ENUM_HEADERS) > enums.c
    -
    -$(TARGET).dll $(TARGET).dll.a: $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -Wl,--output-def,$(TARGET).def,--out-implib,$(TARGET).dll.a -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS) $(RC_SRC) $(PURPLE_VERSION_H) $(PURPLE_PURPLE_H) enums.h enums.c
    - rm -f $(TARGET).dll $(TARGET).dll.a $(TARGET).def
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PROTOS_TOP) -f $(MINGW_MAKEFILE) clean
    - $(MAKE_at) $(MAKE) -C $(PURPLE_PLUGINS_TOP) -f $(MINGW_MAKEFILE) clean
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/account.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/account.c Fri Nov 17 14:23:40 2017 +0300
    @@ -2566,7 +2566,7 @@
    }
    static PurpleXmlNode *
    -proxy_settings_to_xmlnode(PurpleProxyInfo *proxy_info)
    +proxy_settings_to_xmlnode(const PurpleProxyInfo *proxy_info)
    {
    PurpleXmlNode *node, *child;
    PurpleProxyType proxy_type;
    @@ -2705,7 +2705,7 @@
    PurpleXmlNode *node, *child;
    const char *tmp;
    PurplePresence *presence;
    - PurpleProxyInfo *proxy_info;
    + const PurpleProxyInfo *proxy_info;
    PurpleAccountPrivate *priv = PURPLE_ACCOUNT_GET_PRIVATE(account);
    node = purple_xmlnode_new("account");
    --- a/libpurple/account.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/account.h Fri Nov 17 14:23:40 2017 +0300
    @@ -42,7 +42,7 @@
    typedef struct _PurpleAccountClass PurpleAccountClass;
    typedef gboolean (*PurpleFilterAccountFunc)(PurpleAccount *account);
    -typedef void (*PurpleAccountRequestAuthorizationCb)(const char *, void *);
    +typedef void (*PurpleAccountRequestAuthorizationCb)(const char *response, void *data);
    typedef void (*PurpleAccountRegistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
    typedef void (*PurpleAccountUnregistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
    typedef void (*PurpleSetPublicAliasSuccessCallback)(PurpleAccount *account, const char *new_alias);
    --- a/libpurple/blistnode.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/blistnode.h Fri Nov 17 14:23:40 2017 +0300
    @@ -96,7 +96,7 @@
    * See purple_blist_node_get_parent(), purple_blist_node_get_first_child(),
    * purple_blist_node_get_sibling_next(), purple_blist_node_get_sibling_prev().
    *
    - * Returns: The next node
    + * Returns: (transfer none): The next node
    */
    PurpleBlistNode *purple_blist_node_next(PurpleBlistNode *node, gboolean offline);
    @@ -109,7 +109,7 @@
    * See purple_blist_node_get_first_child(), purple_blist_node_get_sibling_next(),
    * purple_blist_node_get_sibling_prev(), purple_blist_node_next().
    *
    - * Returns: The parent node.
    + * Returns: (transfer none): The parent node.
    */
    PurpleBlistNode *purple_blist_node_get_parent(PurpleBlistNode *node);
    --- a/libpurple/buddyicon.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/buddyicon.c Fri Nov 17 14:23:40 2017 +0300
    @@ -176,6 +176,7 @@
    if (!purple_image_save(img, path))
    purple_debug_error("buddyicon", "failed to save icon %s", path);
    +
    g_free(path);
    }
    --- a/libpurple/cmds.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/cmds.h Fri Nov 17 14:23:40 2017 +0300
    @@ -75,7 +75,7 @@
    * A function implementing a command, as passed to purple_cmd_register().
    */
    /* TODO document the arguments to these functions. */
    -typedef PurpleCmdRet (*PurpleCmdFunc)(PurpleConversation *, const gchar *cmd,
    +typedef PurpleCmdRet (*PurpleCmdFunc)(PurpleConversation *conversation, const gchar *cmd,
    gchar **args, gchar **error, void *data);
    /**
    * PurpleCmdId:
    --- a/libpurple/connection.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/connection.h Fri Nov 17 14:23:40 2017 +0300
    @@ -405,7 +405,7 @@
    *
    * Returns the connection's account.
    *
    - * Returns: The connection's account.
    + * Returns: (transfer none): The connection's account.
    */
    PurpleAccount *purple_connection_get_account(const PurpleConnection *gc);
    @@ -415,7 +415,7 @@
    *
    * Returns the protocol managing a connection.
    *
    - * Returns: The protocol.
    + * Returns: (transfer none): The protocol.
    */
    PurpleProtocol *purple_connection_get_protocol(const PurpleConnection *gc);
    --- a/libpurple/eventloop.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/eventloop.h Fri Nov 17 14:23:40 2017 +0300
    @@ -53,7 +53,7 @@
    * purple_input_add(), the file descriptor on which the event occurred, and the
    * condition that was satisfied to cause the callback to be invoked.
    */
    -typedef void (*PurpleInputFunction)(gpointer, gint, PurpleInputCondition);
    +typedef void (*PurpleInputFunction)(gpointer data, gint fd, PurpleInputCondition cond);
    G_BEGIN_DECLS
    --- a/libpurple/example/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,24 +0,0 @@
    -noinst_PROGRAMS = nullclient
    -
    -nullclient_SOURCES = defines.h nullclient.c
    -nullclient_DEPENDENCIES =
    -nullclient_LDFLAGS = -export-dynamic
    -nullclient_LDADD = \
    - $(top_builddir)/libpurple/libpurple.la \
    - $(DBUS_LIBS) \
    - $(INTLLIBS) \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(LIBXML_LIBS) \
    - $(GSTVIDEO_LIBS)
    -
    -AM_CPPFLAGS = \
    - -DSTANDALONE \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_srcdir) \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS)
    --- a/libpurple/image.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/image.h Fri Nov 17 14:23:40 2017 +0300
    @@ -80,7 +80,7 @@
    /**
    * purple_image_new_from_bytes:
    - * @bytes: (transfer none) A #GBytes containing the raw image data.
    + * @bytes: (transfer none): A #GBytes containing the raw image data.
    *
    * Loads a raw image data as a new #PurpleImage object.
    *
    @@ -91,7 +91,7 @@
    /**
    * purple_image_new_from_file:
    * @path: the path to the image file.
    - * @error: (optional) An optional return address for a #GError
    + * @error: (optional) (out): An optional return address for a #GError
    *
    * Loads an image file as a new #PurpleImage object. The @path must exists, be
    * readable and should point to a valid image file. If you don't set @be_eager
    @@ -118,7 +118,7 @@
    /**
    * purple_image_new_take_data:
    - * @data: (transfer full) the pointer to the image data buffer.
    + * @data: (transfer full): the pointer to the image data buffer.
    * @length: the length of @data.
    *
    * Creates a new #PurpleImage object with contents of @data buffer.
    --- a/libpurple/media.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/media.c Fri Nov 17 14:23:40 2017 +0300
    @@ -1458,20 +1458,12 @@
    gchar dtmf, guint8 volume, guint16 duration)
    {
    #ifdef USE_VV
    - PurpleAccount *account = NULL;
    - PurpleConnection *gc = NULL;
    - PurpleProtocol *protocol = NULL;
    PurpleMediaBackendIface *backend_iface = NULL;
    if (media)
    {
    - account = purple_media_get_account(media);
    backend_iface = PURPLE_MEDIA_BACKEND_GET_INTERFACE(media->priv->backend);
    }
    - if (account)
    - gc = purple_account_get_connection(account);
    - if (gc)
    - protocol = purple_connection_get_protocol(gc);
    if (dtmf == 'a')
    dtmf = 'A';
    @@ -1484,11 +1476,7 @@
    g_return_val_if_fail(strchr("0123456789ABCD#*", dtmf), FALSE);
    - if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, MEDIA_IFACE, send_dtmf)
    - && purple_protocol_media_iface_send_dtmf(protocol, media, dtmf, volume, duration))
    - {
    - return TRUE;
    - } else if (backend_iface && backend_iface->send_dtmf
    + if (backend_iface && backend_iface->send_dtmf
    && backend_iface->send_dtmf(media->priv->backend,
    session_id, dtmf, volume, duration))
    {
    --- a/libpurple/media/backend-fs2.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/media/backend-fs2.c Fri Nov 17 14:23:40 2017 +0300
    @@ -1059,7 +1059,7 @@
    FsParticipant *participant;
    PurpleMediaBackendFs2Session *session;
    PurpleMediaBackendFs2Stream *media_stream;
    - gchar *name;
    + const gchar *name;
    value = gst_structure_get_value(structure, "stream");
    stream = g_value_get_object(value);
    @@ -1073,8 +1073,7 @@
    local_candidate->foundation);
    g_object_get(stream, "participant", &participant, NULL);
    - g_object_get(participant, "cname", &name, NULL);
    - g_object_unref(participant);
    + name = g_object_get_data(G_OBJECT(participant), "purple-name");
    media_stream = get_stream(self, session->id, name);
    media_stream->local_candidates = g_list_append(
    @@ -1085,24 +1084,25 @@
    g_signal_emit_by_name(self, "new-candidate",
    session->id, name, candidate);
    g_object_unref(candidate);
    + g_object_unref(participant);
    } else if (gst_structure_has_name(structure,
    "farstream-local-candidates-prepared")) {
    const GValue *value;
    FsStream *stream;
    FsParticipant *participant;
    PurpleMediaBackendFs2Session *session;
    - gchar *name;
    value = gst_structure_get_value(structure, "stream");
    stream = g_value_get_object(value);
    session = get_session_from_fs_stream(self, stream);
    g_object_get(stream, "participant", &participant, NULL);
    - g_object_get(participant, "cname", &name, NULL);
    - g_object_unref(participant);
    g_signal_emit_by_name(self, "candidates-prepared",
    - session->id, name);
    + session->id,
    + g_object_get_data(G_OBJECT(participant), "purple-name"));
    +
    + g_object_unref(participant);
    } else if (gst_structure_has_name(structure,
    "farstream-new-active-candidate-pair")) {
    const GValue *value;
    @@ -1112,7 +1112,6 @@
    FsParticipant *participant;
    PurpleMediaBackendFs2Session *session;
    PurpleMediaCandidate *lcandidate, *rcandidate;
    - gchar *name;
    value = gst_structure_get_value(structure, "stream");
    stream = g_value_get_object(value);
    @@ -1122,8 +1121,6 @@
    remote_candidate = g_value_get_boxed(value);
    g_object_get(stream, "participant", &participant, NULL);
    - g_object_get(participant, "cname", &name, NULL);
    - g_object_unref(participant);
    session = get_session_from_fs_stream(self, stream);
    @@ -1131,8 +1128,11 @@
    rcandidate = candidate_from_fs(remote_candidate);
    g_signal_emit_by_name(self, "active-candidate-pair",
    - session->id, name, lcandidate, rcandidate);
    -
    + session->id,
    + g_object_get_data(G_OBJECT(participant), "purple-name"),
    + lcandidate, rcandidate);
    +
    + g_object_unref(participant);
    g_object_unref(lcandidate);
    g_object_unref(rcandidate);
    } else if (gst_structure_has_name(structure,
    @@ -1775,6 +1775,9 @@
    return FALSE;
    }
    + g_object_set_data_full(G_OBJECT(participant), "purple-name",
    + g_strdup(name), g_free);
    +
    if (g_object_class_find_property(G_OBJECT_GET_CLASS(participant),
    "cname")) {
    g_object_set(participant, "cname", name, NULL);
    --- a/libpurple/media/backend-iface.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/media/backend-iface.h Fri Nov 17 14:23:40 2017 +0300
    @@ -188,7 +188,7 @@
    * @self: The media backend the stream is in.
    * @sess_id: The session id the stream is associated with.
    * @participant: The participant the stream is associated with.
    - * @codecs: (element-type PurpleMediaCodec) The list of remote codecs to set.
    + * @codecs: (element-type PurpleMediaCodec): The list of remote codecs to set.
    *
    * Sets the remote codecs on a stream.
    *
    --- a/libpurple/plugins.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/plugins.h Fri Nov 17 14:23:40 2017 +0300
    @@ -500,7 +500,7 @@
    *
    * Returns a plugin's #PurplePluginInfo instance.
    *
    - * Returns: (transfer none) The plugin's #PurplePluginInfo instance.
    + * Returns: (transfer none): The plugin's #PurplePluginInfo instance.
    * GPlugin refs the plugin info object before returning it. This workaround
    * is to avoid managing the reference counts everywhere in our codebase
    * where we use the plugin info. The plugin info instance is guaranteed to
    --- a/libpurple/plugins/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,137 +0,0 @@
    -DIST_SUBDIRS = keyrings
    -
    -if ENABLE_DBUS
    -DBUS_LTLIB = dbus-example.la
    -endif
    -
    -SUBDIRS = \
    - keyrings
    -
    -plugindir = @PURPLE_PLUGINDIR@
    -
    -autoaccept_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -buddynote_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -codeinline_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -debug_example_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -helloworld_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -idle_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -joinpart_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -log_reader_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -notify_example_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -offlinemsg_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -one_time_password_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -pluginpref_example_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -psychic_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -signals_test_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -simple_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -statenotify_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -# this can't be in a conditional otherwise automake 1.4 yells
    -dbus_example_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if PLUGINS
    -
    -plugin_LTLIBRARIES = \
    - autoaccept.la \
    - buddynote.la \
    - idle.la \
    - joinpart.la \
    - log_reader.la \
    - offlinemsg.la \
    - psychic.la \
    - statenotify.la
    -
    -noinst_LTLIBRARIES = \
    - codeinline.la \
    - debug_example.la \
    - helloworld.la \
    - notify_example.la \
    - one_time_password.la \
    - pluginpref_example.la \
    - signals_test.la \
    - simple.la \
    - $(DBUS_LTLIB)
    -
    -autoaccept_la_SOURCES = autoaccept.c
    -buddynote_la_SOURCES = buddynote.c
    -codeinline_la_SOURCES = codeinline.c
    -debug_example_la_SOURCES = debug_example.c
    -helloworld_la_SOURCES = helloworld.c
    -idle_la_SOURCES = idle.c
    -joinpart_la_SOURCES = joinpart.c
    -log_reader_la_SOURCES = log_reader.c
    -notify_example_la_SOURCES = notify_example.c
    -offlinemsg_la_SOURCES = offlinemsg.c
    -one_time_password_la_SOURCES = one_time_password.c
    -pluginpref_example_la_SOURCES = pluginpref_example.c
    -psychic_la_SOURCES = psychic.c
    -signals_test_la_SOURCES = signals-test.c
    -simple_la_SOURCES = simple.c
    -statenotify_la_SOURCES = statenotify.c
    -
    -autoaccept_la_LIBADD = @PURPLE_LIBS@
    -buddynote_la_LIBADD = @PURPLE_LIBS@
    -codeinline_la_LIBADD = @PURPLE_LIBS@
    -idle_la_LIBADD = @PURPLE_LIBS@
    -joinpart_la_LIBADD = @PURPLE_LIBS@
    -log_reader_la_LIBADD = @PURPLE_LIBS@
    -notify_example_la_LIBADD = @PURPLE_LIBS@
    -offlinemsg_la_LIBADD = @PURPLE_LIBS@
    -one_time_password_la_LIBADD = @PURPLE_LIBS@
    -pluginpref_example_la_LIBADD = @PURPLE_LIBS@
    -psychic_la_LIBADD = @PURPLE_LIBS@
    -signals_test_la_LIBADD = @PURPLE_LIBS@
    -simple_la_LIBADD = @PURPLE_LIBS@
    -statenotify_la_LIBADD = @PURPLE_LIBS@
    -
    -if ENABLE_DBUS
    -
    -CLEANFILES = dbus-example-bindings.ch
    -dbus_example_la_SOURCES = dbus-example.c
    -
    -dbus_example_la_LIBADD = @PURPLE_LIBS@ $(DBUS_LIBS)
    -
    -.PHONY: always
    -
    -$(top_builddir)/libpurple/dbus-types.h: always
    - $(AM_V_GEN)cd $(@D) && $(MAKE) $(AM_MAKEFLAGS) $(@F)
    -
    -dbus-example-bindings.ch: $(top_srcdir)/libpurple/dbus-analyze-functions.py $(dbus_example_la_SOURCES)
    - $(AM_V_GEN)cat $(srcdir)/$(dbus_example_la_SOURCES) | \
    - $(PYTHON) $(top_srcdir)/libpurple/dbus-analyze-functions.py --export-only > $@
    -
    -$(dbus_example_la_OBJECTS) dbus-example.so: dbus-example-bindings.ch $(top_builddir)/libpurple/dbus-types.h
    -
    -
    -endif # ENABLE_DBUS
    -
    -endif # PLUGINS
    -
    -EXTRA_DIST = \
    - Makefile.mingw \
    - dbus-buddyicons-example.py \
    - filectl.c \
    - startup.py
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(PLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS)
    -
    -PLUGIN_LIBS =
    -
    -#
    -# This part allows people to build their own plugins in here.
    -# Yes, it's a mess.
    -#
    -SUFFIXES = .c .so
    -.c.so:
    - $(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
    - $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module @PLUGIN_LDFLAGS@ $(PLUGIN_LIBS)
    - @rm -f tmp$@.lo tmp$@.o libtmp$@.la
    - @cp .libs/libtmp$@*.so $@
    - @rm -rf .libs/libtmp$@.*
    --- a/libpurple/plugins/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,73 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libpurple Plugins
    -#
    -
    -PIDGIN_TREE_TOP := ../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -KEYRING_PLUGIN := ./keyrings
    -
    -.SUFFIXES:
    -.SUFFIXES: .c .dll
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PIDGIN_TREE_TOP) \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lgmodule-2.0 \
    - -lintl \
    - -lws2_32 \
    - -lpurple
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all clean plugins install
    -
    -all: $(PURPLE_DLL).a plugins
    - $(MAKE_at) $(MAKE) -C $(KEYRING_PLUGIN) -f $(MINGW_MAKEFILE)
    -
    -install: all $(PURPLE_INSTALL_PLUGINS_DIR)
    - $(MAKE_at) $(MAKE) -C $(KEYRING_PLUGIN) -f $(MINGW_MAKEFILE) install
    - cp *.dll $(PURPLE_INSTALL_PLUGINS_DIR)
    -
    -%.dll: %.c $(PURPLE_CONFIG_H) $(PURPLE_VERSION_H)
    - $(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@.o -c $<
    - $(CC) -shared $@.o $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $@
    -
    -plugins: \
    - autoaccept.dll \
    - buddynote.dll \
    - idle.dll \
    - joinpart.dll \
    - log_reader.dll \
    - offlinemsg.dll \
    - psychic.dll \
    - statenotify.dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f *.o *.dll
    - $(MAKE_at) $(MAKE) -C $(KEYRING_PLUGIN) -f $(MINGW_MAKEFILE) clean
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/plugins/keyrings/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,99 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw \
    - wincred.c
    -CLEANFILES =
    -
    -plugindir = @PURPLE_PLUGINDIR@
    -
    -if ENABLE_NETTLE
    -
    -internalkeyring_la_CFLAGS = $(AM_CPPFLAGS) $(NETTLE_CFLAGS)
    -internalkeyring_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -internalkeyring_la_SOURCES = internalkeyring.c
    -internalkeyring_la_LIBADD = @PURPLE_LIBS@ $(NETTLE_LIBS)
    -
    -endif
    -
    -if ENABLE_SECRETSERVICE
    -
    -secretservice_la_CFLAGS = $(AM_CPPFLAGS) $(SECRETSERVICE_CFLAGS)
    -secretservice_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -secretservice_la_SOURCES = secretservice.c
    -secretservice_la_LIBADD = @PURPLE_LIBS@ $(SECRETSERVICE_LIBS)
    -
    -endif
    -
    -if ENABLE_GNOMEKEYRING
    -
    -gnomekeyring_la_CFLAGS = $(AM_CPPFLAGS) $(GNOMEKEYRING_CFLAGS)
    -gnomekeyring_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -gnomekeyring_la_SOURCES = gnomekeyring.c
    -gnomekeyring_la_LIBADD = @PURPLE_LIBS@ $(GNOMEKEYRING_LIBS)
    -
    -endif
    -
    -if IS_WIN32
    -
    -wincred_la_CFLAGS = $(AM_CPPFLAGS)
    -wincred_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -wincred_la_SOURCES = wincred.c
    -wincred_la_LIBADD = @PURPLE_LIBS@
    -
    -endif
    -
    -if ENABLE_KWALLET
    -
    -kwallet_la_CXXFLAGS = $(KWALLET_CXXFLAGS) $(QT4_CFLAGS)
    -kwallet_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -kwallet_la_SOURCES = kwallet.cpp
    -kwallet_la_BUILTSOURCES = kwallet.moc
    -kwallet_la_LIBADD = @PURPLE_LIBS@ $(KWALLET_LIBS) $(QT4_LIBS)
    -
    -kwallet.cpp: kwallet.moc
    -
    -kwallet.moc:
    - $(AM_V_GEN)$(MOC) $(kwallet_la_CXXFLAGS) -i $(srcdir)/kwallet.cpp -o $@
    -
    -CLEANFILES += kwallet.moc
    -
    -endif
    -
    -if PLUGINS
    -
    -plugin_LTLIBRARIES =
    -
    -if ENABLE_NETTLE
    -plugin_LTLIBRARIES += \
    - internalkeyring.la
    -endif
    -
    -if ENABLE_SECRETSERVICE
    -plugin_LTLIBRARIES += \
    - secretservice.la
    -endif
    -
    -if ENABLE_GNOMEKEYRING
    -plugin_LTLIBRARIES += \
    - gnomekeyring.la
    -endif
    -
    -if IS_WIN32
    -plugin_LTLIBRARIES += \
    - wincred.la
    -endif
    -
    -if ENABLE_KWALLET
    -plugin_LTLIBRARIES += \
    - kwallet.la
    -endif
    -
    -endif
    -
    -#XXX: that might be done better than adding DEBUG_CPPFLAGS to all objects (not only C++ ones)
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CPPFLAGS) \
    - $(PLUGIN_CFLAGS)
    --- a/libpurple/plugins/keyrings/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,82 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for keyring plugins.
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -##
    -## VARIABLE DEFINITIONS
    -##
    -TARGET_INTERNAL = internalkeyring
    -TARGET_WINCRED = wincred
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += \
    - -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += \
    - -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC_INTERNAL = internalkeyring.c
    -OBJECTS_INTERNAL = $(C_SRC_INTERNAL:%.c=%.o)
    -
    -C_SRC_WINCRED = wincred.c
    -OBJECTS_WINCRED = $(C_SRC_WINCRED:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET_INTERNAL).dll $(TARGET_WINCRED).dll
    -
    -install: all $(PURPLE_INSTALL_PLUGINS_DIR) $(PURPLE_INSTALL_DIR)
    - cp $(TARGET_INTERNAL).dll $(PURPLE_INSTALL_PLUGINS_DIR)
    - cp $(TARGET_WINCRED).dll $(PURPLE_INSTALL_PLUGINS_DIR)
    -
    -$(OBJECTS_INTERNAL): $(PURPLE_CONFIG_H)
    -
    -##
    -## BUILD DLL
    -##
    -$(TARGET_INTERNAL).dll: $(PURPLE_DLL) $(OBJECTS_INTERNAL)
    - $(CC) -shared $(OBJECTS_INTERNAL) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET_INTERNAL).dll
    -
    -$(TARGET_WINCRED).dll: $(PURPLE_DLL) $(OBJECTS_WINCRED)
    - $(CC) -shared $(OBJECTS_WINCRED) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET_WINCRED).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS_INTERNAL) $(TARGET_INTERNAL).dll
    - rm -f $(OBJECTS_WINCRED) $(TARGET_WINCRED).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/pounce.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/pounce.h Fri Nov 17 14:23:40 2017 +0300
    @@ -81,7 +81,7 @@
    *
    * A pounce callback.
    */
    -typedef void (*PurplePounceCb)(PurplePounce *, PurplePounceEvent, void *);
    +typedef void (*PurplePounceCb)(PurplePounce *pounce, PurplePounceEvent event, void *data);
    G_BEGIN_DECLS
    --- a/libpurple/prefs.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/prefs.h Fri Nov 17 14:23:40 2017 +0300
    @@ -130,24 +130,26 @@
    void (*schedule_save)(void);
    /**
    + * connect_callback:
    + * @name: The preference name.
    + * @data: The object to be passed when triggering the callback
    + *
    * Called when a callback is added to a preference. The UI must keep
    * track of it and call #purple_prefs_trigger_callback_object with the
    * data attribute.
    *
    - * @param name The preference name.
    - * @param data The object to be passed when triggering the callback
    - * @return A pointer to a ui_data object.
    - * */
    + * Returns: A pointer to a ui_data object.
    + */
    void *(*connect_callback)(const char *name, PurplePrefCallbackData *data);
    /**
    + * disconnect_callback:
    + * @name The preference name
    + * @ui_data The object that was returned from the connect_callback UI OP.
    + *
    * Called when a callback is removed from a preference. The ui_data
    * object is the one returned from connect_callback.
    - *
    - * @param name The preference name
    - * @param ui_data The object that was returned from the
    - * connect_callback UI OP.
    - * */
    + */
    void (*disconnect_callback)(const char *name, void *ui_data);
    void (*_purple_reserved1)(void);
    --- a/libpurple/protocol.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/protocol.h Fri Nov 17 14:23:40 2017 +0300
    @@ -128,9 +128,9 @@
    {
    GObjectClass parent_class;
    - void (*login)(PurpleAccount *);
    + void (*login)(PurpleAccount *account);
    - void (*close)(PurpleConnection *);
    + void (*close)(PurpleConnection *connection);
    GList *(*status_types)(PurpleAccount *account);
    @@ -215,7 +215,7 @@
    GTypeInterface parent_iface;
    /*< public >*/
    - GList *(*get_actions)(PurpleConnection *);
    + GList *(*get_actions)(PurpleConnection *connection);
    const char *(*list_emblem)(PurpleBuddy *buddy);
    @@ -226,9 +226,9 @@
    GList *(*blist_node_menu)(PurpleBlistNode *node);
    - void (*buddy_free)(PurpleBuddy *);
    + void (*buddy_free)(PurpleBuddy *buddy);
    - void (*convo_closed)(PurpleConnection *, const char *who);
    + void (*convo_closed)(PurpleConnection *connection, const char *who);
    const char *(*normalize)(const PurpleAccount *account, const char *who);
    @@ -323,20 +323,20 @@
    GTypeInterface parent_iface;
    /*< public >*/
    - void (*register_user)(PurpleAccount *);
    + void (*register_user)(PurpleAccount *account);
    - void (*unregister_user)(PurpleAccount *, PurpleAccountUnregistrationCb cb,
    + void (*unregister_user)(PurpleAccount *account, PurpleAccountUnregistrationCb cb,
    void *user_data);
    - void (*set_info)(PurpleConnection *, const char *info);
    + void (*set_info)(PurpleConnection *connection, const char *info);
    - void (*get_info)(PurpleConnection *, const char *who);
    + void (*get_info)(PurpleConnection *connection, const char *who);
    void (*set_status)(PurpleAccount *account, PurpleStatus *status);
    - void (*set_idle)(PurpleConnection *, int idletime);
    + void (*set_idle)(PurpleConnection *connection, int idletime);
    - void (*change_passwd)(PurpleConnection *, const char *old_pass,
    + void (*change_passwd)(PurpleConnection *connection, const char *old_pass,
    const char *new_pass);
    void (*add_buddy)(PurpleConnection *pc, PurpleBuddy *buddy,
    @@ -345,23 +345,23 @@
    void (*add_buddies)(PurpleConnection *pc, GList *buddies, GList *groups,
    const char *message);
    - void (*remove_buddy)(PurpleConnection *, PurpleBuddy *buddy,
    + void (*remove_buddy)(PurpleConnection *connection, PurpleBuddy *buddy,
    PurpleGroup *group);
    - void (*remove_buddies)(PurpleConnection *, GList *buddies, GList *groups);
    + void (*remove_buddies)(PurpleConnection *connection, GList *buddies, GList *groups);
    - void (*keepalive)(PurpleConnection *);
    + void (*keepalive)(PurpleConnection *connection);
    - void (*alias_buddy)(PurpleConnection *, const char *who,
    + void (*alias_buddy)(PurpleConnection *connection, const char *who,
    const char *alias);
    - void (*group_buddy)(PurpleConnection *, const char *who,
    + void (*group_buddy)(PurpleConnection *connection, const char *who,
    const char *old_group, const char *new_group);
    - void (*rename_group)(PurpleConnection *, const char *old_name,
    + void (*rename_group)(PurpleConnection *connection, const char *old_name,
    PurpleGroup *group, GList *moved_buddies);
    - void (*set_buddy_icon)(PurpleConnection *, PurpleImage *img);
    + void (*set_buddy_icon)(PurpleConnection *connection, PurpleImage *img);
    void (*remove_group)(PurpleConnection *gc, PurpleGroup *group);
    @@ -410,9 +410,9 @@
    GTypeInterface parent_iface;
    /*< public >*/
    - int (*send)(PurpleConnection *, PurpleMessage *msg);
    + int (*send)(PurpleConnection *connection, PurpleMessage *msg);
    - unsigned int (*send_typing)(PurpleConnection *, const char *name,
    + unsigned int (*send_typing)(PurpleConnection *connection, const char *name,
    PurpleIMTypingState state);
    };
    @@ -493,22 +493,22 @@
    GTypeInterface parent_iface;
    /*< public >*/
    - GList *(*info)(PurpleConnection *);
    + GList *(*info)(PurpleConnection *connection);
    - GHashTable *(*info_defaults)(PurpleConnection *, const char *chat_name);
    + GHashTable *(*info_defaults)(PurpleConnection *connection, const char *chat_name);
    - void (*join)(PurpleConnection *, GHashTable *components);
    + void (*join)(PurpleConnection *connection, GHashTable *components);
    - void (*reject)(PurpleConnection *, GHashTable *components);
    + void (*reject)(PurpleConnection *connection, GHashTable *components);
    char *(*get_name)(GHashTable *components);
    - void (*invite)(PurpleConnection *, int id,
    + void (*invite)(PurpleConnection *connection, int id,
    const char *message, const char *who);
    - void (*leave)(PurpleConnection *, int id);
    + void (*leave)(PurpleConnection *connection, int id);
    - int (*send)(PurpleConnection *, int id, PurpleMessage *msg);
    + int (*send)(PurpleConnection *connection, int id, PurpleMessage *msg);
    char *(*get_user_real_name)(PurpleConnection *gc, int id, const char *who);
    @@ -573,12 +573,12 @@
    GTypeInterface parent_iface;
    /*< public >*/
    - gboolean (*can_receive)(PurpleConnection *, const char *who);
    + gboolean (*can_receive)(PurpleConnection *connection, const char *who);
    - void (*send)(PurpleConnection *, const char *who,
    + void (*send)(PurpleConnection *connection, const char *who,
    const char *filename);
    - PurpleXfer *(*new_xfer)(PurpleConnection *, const char *who);
    + PurpleXfer *(*new_xfer)(PurpleConnection *connection, const char *who);
    };
    #define PURPLE_PROTOCOL_HAS_XFER_IFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_PROTOCOL_XFER_IFACE))
    @@ -848,14 +848,14 @@
    /* Protocol Class API */
    /**************************************************************************/
    -void purple_protocol_class_login(PurpleProtocol *, PurpleAccount *);
    +void purple_protocol_class_login(PurpleProtocol *protocol, PurpleAccount *account);
    -void purple_protocol_class_close(PurpleProtocol *, PurpleConnection *);
    +void purple_protocol_class_close(PurpleProtocol *protocol, PurpleConnection *connection);
    -GList *purple_protocol_class_status_types(PurpleProtocol *,
    +GList *purple_protocol_class_status_types(PurpleProtocol *protocol,
    PurpleAccount *account);
    -const char *purple_protocol_class_list_icon(PurpleProtocol *,
    +const char *purple_protocol_class_list_icon(PurpleProtocol *protocol,
    PurpleAccount *account, PurpleBuddy *buddy);
    /**************************************************************************/
    @@ -869,42 +869,42 @@
    */
    GType purple_protocol_client_iface_get_type(void);
    -GList *purple_protocol_client_iface_get_actions(PurpleProtocol *,
    - PurpleConnection *);
    +GList *purple_protocol_client_iface_get_actions(PurpleProtocol *protocol,
    + PurpleConnection *connection);
    -const char *purple_protocol_client_iface_list_emblem(PurpleProtocol *,
    +const char *purple_protocol_client_iface_list_emblem(PurpleProtocol *protocol,
    PurpleBuddy *buddy);
    -char *purple_protocol_client_iface_status_text(PurpleProtocol *,
    +char *purple_protocol_client_iface_status_text(PurpleProtocol *protocol,
    PurpleBuddy *buddy);
    -void purple_protocol_client_iface_tooltip_text(PurpleProtocol *,
    +void purple_protocol_client_iface_tooltip_text(PurpleProtocol *protocol,
    PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, gboolean full);
    -GList *purple_protocol_client_iface_blist_node_menu(PurpleProtocol *,
    +GList *purple_protocol_client_iface_blist_node_menu(PurpleProtocol *protocol,
    PurpleBlistNode *node);
    -void purple_protocol_client_iface_buddy_free(PurpleProtocol *, PurpleBuddy *);
    +void purple_protocol_client_iface_buddy_free(PurpleProtocol *protocol, PurpleBuddy *buddy);
    -void purple_protocol_client_iface_convo_closed(PurpleProtocol *,
    - PurpleConnection *, const char *who);
    +void purple_protocol_client_iface_convo_closed(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *who);
    -const char *purple_protocol_client_iface_normalize(PurpleProtocol *,
    +const char *purple_protocol_client_iface_normalize(PurpleProtocol *protocol,
    const PurpleAccount *account, const char *who);
    -PurpleChat *purple_protocol_client_iface_find_blist_chat(PurpleProtocol *,
    +PurpleChat *purple_protocol_client_iface_find_blist_chat(PurpleProtocol *protocol,
    PurpleAccount *account, const char *name);
    -gboolean purple_protocol_client_iface_offline_message(PurpleProtocol *,
    +gboolean purple_protocol_client_iface_offline_message(PurpleProtocol *protocol,
    const PurpleBuddy *buddy);
    -GHashTable *purple_protocol_client_iface_get_account_text_table(PurpleProtocol *,
    +GHashTable *purple_protocol_client_iface_get_account_text_table(PurpleProtocol *protocol,
    PurpleAccount *account);
    -PurpleMood *purple_protocol_client_iface_get_moods(PurpleProtocol *,
    +PurpleMood *purple_protocol_client_iface_get_moods(PurpleProtocol *protocol,
    PurpleAccount *account);
    -gssize purple_protocol_client_iface_get_max_message_size(PurpleProtocol *,
    +gssize purple_protocol_client_iface_get_max_message_size(PurpleProtocol *protocol,
    PurpleConversation *conv);
    /**************************************************************************/
    @@ -918,66 +918,66 @@
    */
    GType purple_protocol_server_iface_get_type(void);
    -void purple_protocol_server_iface_register_user(PurpleProtocol *,
    - PurpleAccount *);
    +void purple_protocol_server_iface_register_user(PurpleProtocol *protocol,
    + PurpleAccount *account);
    /**
    * purple_protocol_server_iface_unregister_user:
    * @cb: (scope call):
    */
    -void purple_protocol_server_iface_unregister_user(PurpleProtocol *,
    - PurpleAccount *, PurpleAccountUnregistrationCb cb, void *user_data);
    +void purple_protocol_server_iface_unregister_user(PurpleProtocol *protocol,
    + PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
    -void purple_protocol_server_iface_set_info(PurpleProtocol *, PurpleConnection *,
    +void purple_protocol_server_iface_set_info(PurpleProtocol *protocol, PurpleConnection *connection,
    const char *info);
    -void purple_protocol_server_iface_get_info(PurpleProtocol *, PurpleConnection *,
    +void purple_protocol_server_iface_get_info(PurpleProtocol *protocol, PurpleConnection *connection,
    const char *who);
    -void purple_protocol_server_iface_set_status(PurpleProtocol *,
    +void purple_protocol_server_iface_set_status(PurpleProtocol *protocol,
    PurpleAccount *account, PurpleStatus *status);
    -void purple_protocol_server_iface_set_idle(PurpleProtocol *, PurpleConnection *,
    +void purple_protocol_server_iface_set_idle(PurpleProtocol *protocol, PurpleConnection *connection,
    int idletime);
    -void purple_protocol_server_iface_change_passwd(PurpleProtocol *,
    - PurpleConnection *, const char *old_pass, const char *new_pass);
    +void purple_protocol_server_iface_change_passwd(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *old_pass, const char *new_pass);
    -void purple_protocol_server_iface_add_buddy(PurpleProtocol *,
    +void purple_protocol_server_iface_add_buddy(PurpleProtocol *protocol,
    PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group,
    const char *message);
    -void purple_protocol_server_iface_add_buddies(PurpleProtocol *,
    +void purple_protocol_server_iface_add_buddies(PurpleProtocol *protocol,
    PurpleConnection *pc, GList *buddies, GList *groups,
    const char *message);
    -void purple_protocol_server_iface_remove_buddy(PurpleProtocol *,
    - PurpleConnection *, PurpleBuddy *buddy, PurpleGroup *group);
    +void purple_protocol_server_iface_remove_buddy(PurpleProtocol *protocol,
    + PurpleConnection *connection, PurpleBuddy *buddy, PurpleGroup *group);
    -void purple_protocol_server_iface_remove_buddies(PurpleProtocol *,
    - PurpleConnection *, GList *buddies, GList *groups);
    +void purple_protocol_server_iface_remove_buddies(PurpleProtocol *protocol,
    + PurpleConnection *connection, GList *buddies, GList *groups);
    -void purple_protocol_server_iface_keepalive(PurpleProtocol *,
    - PurpleConnection *);
    +void purple_protocol_server_iface_keepalive(PurpleProtocol *protocol,
    + PurpleConnection *connection);
    -void purple_protocol_server_iface_alias_buddy(PurpleProtocol *,
    - PurpleConnection *, const char *who, const char *alias);
    +void purple_protocol_server_iface_alias_buddy(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *who, const char *alias);
    -void purple_protocol_server_iface_group_buddy(PurpleProtocol *,
    - PurpleConnection *, const char *who, const char *old_group,
    +void purple_protocol_server_iface_group_buddy(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *who, const char *old_group,
    const char *new_group);
    -void purple_protocol_server_iface_rename_group(PurpleProtocol *,
    - PurpleConnection *, const char *old_name, PurpleGroup *group,
    +void purple_protocol_server_iface_rename_group(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *old_name, PurpleGroup *group,
    GList *moved_buddies);
    -void purple_protocol_server_iface_set_buddy_icon(PurpleProtocol *,
    - PurpleConnection *, PurpleImage *img);
    +void purple_protocol_server_iface_set_buddy_icon(PurpleProtocol *protocol,
    + PurpleConnection *connection, PurpleImage *img);
    -void purple_protocol_server_iface_remove_group(PurpleProtocol *,
    +void purple_protocol_server_iface_remove_group(PurpleProtocol *protocol,
    PurpleConnection *gc, PurpleGroup *group);
    -int purple_protocol_server_iface_send_raw(PurpleProtocol *,
    +int purple_protocol_server_iface_send_raw(PurpleProtocol *protocol,
    PurpleConnection *gc, const char *buf, int len);
    /**
    @@ -985,7 +985,7 @@
    * @success_cb: (scope call):
    * @failure_cb: (scope call):
    */
    -void purple_protocol_server_iface_set_public_alias(PurpleProtocol *,
    +void purple_protocol_server_iface_set_public_alias(PurpleProtocol *protocol,
    PurpleConnection *gc, const char *alias,
    PurpleSetPublicAliasSuccessCallback success_cb,
    PurpleSetPublicAliasFailureCallback failure_cb);
    @@ -995,7 +995,7 @@
    * @success_cb: (scope call):
    * @failure_cb: (scope call):
    */
    -void purple_protocol_server_iface_get_public_alias(PurpleProtocol *,
    +void purple_protocol_server_iface_get_public_alias(PurpleProtocol *protocol,
    PurpleConnection *gc, PurpleGetPublicAliasSuccessCallback success_cb,
    PurpleGetPublicAliasFailureCallback failure_cb);
    @@ -1010,11 +1010,11 @@
    */
    GType purple_protocol_im_iface_get_type(void);
    -int purple_protocol_im_iface_send(PurpleProtocol *, PurpleConnection *,
    +int purple_protocol_im_iface_send(PurpleProtocol *protocol, PurpleConnection *connection,
    PurpleMessage *msg);
    -unsigned int purple_protocol_im_iface_send_typing(PurpleProtocol *,
    - PurpleConnection *, const char *name, PurpleIMTypingState state);
    +unsigned int purple_protocol_im_iface_send_typing(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *name, PurpleIMTypingState state);
    /**************************************************************************/
    /* Protocol Chat Interface API */
    @@ -1027,34 +1027,34 @@
    */
    GType purple_protocol_chat_iface_get_type(void);
    -GList *purple_protocol_chat_iface_info(PurpleProtocol *,
    - PurpleConnection *);
    +GList *purple_protocol_chat_iface_info(PurpleProtocol *protocol,
    + PurpleConnection *connection);
    -GHashTable *purple_protocol_chat_iface_info_defaults(PurpleProtocol *,
    - PurpleConnection *, const char *chat_name);
    +GHashTable *purple_protocol_chat_iface_info_defaults(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *chat_name);
    -void purple_protocol_chat_iface_join(PurpleProtocol *, PurpleConnection *,
    +void purple_protocol_chat_iface_join(PurpleProtocol *protocol, PurpleConnection *connection,
    GHashTable *components);
    -void purple_protocol_chat_iface_reject(PurpleProtocol *,
    - PurpleConnection *, GHashTable *components);
    +void purple_protocol_chat_iface_reject(PurpleProtocol *protocol,
    + PurpleConnection *connection, GHashTable *components);
    -char *purple_protocol_chat_iface_get_name(PurpleProtocol *,
    +char *purple_protocol_chat_iface_get_name(PurpleProtocol *protocol,
    GHashTable *components);
    -void purple_protocol_chat_iface_invite(PurpleProtocol *,
    - PurpleConnection *, int id, const char *message, const char *who);
    +void purple_protocol_chat_iface_invite(PurpleProtocol *protocol,
    + PurpleConnection *connection, int id, const char *message, const char *who);
    -void purple_protocol_chat_iface_leave(PurpleProtocol *, PurpleConnection *,
    +void purple_protocol_chat_iface_leave(PurpleProtocol *protocol, PurpleConnection *connection,
    int id);
    -int purple_protocol_chat_iface_send(PurpleProtocol *, PurpleConnection *,
    +int purple_protocol_chat_iface_send(PurpleProtocol *protocol, PurpleConnection *connection,
    int id, PurpleMessage *msg);
    -char *purple_protocol_chat_iface_get_user_real_name(PurpleProtocol *,
    +char *purple_protocol_chat_iface_get_user_real_name(PurpleProtocol *protocol,
    PurpleConnection *gc, int id, const char *who);
    -void purple_protocol_chat_iface_set_topic(PurpleProtocol *,
    +void purple_protocol_chat_iface_set_topic(PurpleProtocol *protocol,
    PurpleConnection *gc, int id, const char *topic);
    /**************************************************************************/
    @@ -1068,20 +1068,20 @@
    */
    GType purple_protocol_privacy_iface_get_type(void);
    -void purple_protocol_privacy_iface_add_permit(PurpleProtocol *,
    - PurpleConnection *, const char *name);
    +void purple_protocol_privacy_iface_add_permit(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *name);
    -void purple_protocol_privacy_iface_add_deny(PurpleProtocol *,
    - PurpleConnection *, const char *name);
    +void purple_protocol_privacy_iface_add_deny(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *name);
    -void purple_protocol_privacy_iface_rem_permit(PurpleProtocol *,
    - PurpleConnection *, const char *name);
    +void purple_protocol_privacy_iface_rem_permit(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *name);
    -void purple_protocol_privacy_iface_rem_deny(PurpleProtocol *,
    - PurpleConnection *, const char *name);
    +void purple_protocol_privacy_iface_rem_deny(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *name);
    -void purple_protocol_privacy_iface_set_permit_deny(PurpleProtocol *,
    - PurpleConnection *);
    +void purple_protocol_privacy_iface_set_permit_deny(PurpleProtocol *protocol,
    + PurpleConnection *connection);
    /**************************************************************************/
    /* Protocol Xfer Interface API */
    @@ -1094,14 +1094,14 @@
    */
    GType purple_protocol_xfer_iface_get_type(void);
    -gboolean purple_protocol_xfer_iface_can_receive(PurpleProtocol *,
    - PurpleConnection *, const char *who);
    +gboolean purple_protocol_xfer_iface_can_receive(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *who);
    -void purple_protocol_xfer_iface_send(PurpleProtocol *, PurpleConnection *,
    +void purple_protocol_xfer_iface_send(PurpleProtocol *protocol, PurpleConnection *connection,
    const char *who, const char *filename);
    -PurpleXfer *purple_protocol_xfer_iface_new_xfer(PurpleProtocol *,
    - PurpleConnection *, const char *who);
    +PurpleXfer *purple_protocol_xfer_iface_new_xfer(PurpleProtocol *protocol,
    + PurpleConnection *connection, const char *who);
    /**************************************************************************/
    /* Protocol Roomlist Interface API */
    @@ -1114,16 +1114,16 @@
    */
    GType purple_protocol_roomlist_iface_get_type(void);
    -PurpleRoomlist *purple_protocol_roomlist_iface_get_list(PurpleProtocol *,
    +PurpleRoomlist *purple_protocol_roomlist_iface_get_list(PurpleProtocol *protocol,
    PurpleConnection *gc);
    -void purple_protocol_roomlist_iface_cancel(PurpleProtocol *,
    +void purple_protocol_roomlist_iface_cancel(PurpleProtocol *protocol,
    PurpleRoomlist *list);
    -void purple_protocol_roomlist_iface_expand_category(PurpleProtocol *,
    +void purple_protocol_roomlist_iface_expand_category(PurpleProtocol *protocol,
    PurpleRoomlist *list, PurpleRoomlistRoom *category);
    -char *purple_protocol_roomlist_iface_room_serialize(PurpleProtocol *,
    +char *purple_protocol_roomlist_iface_room_serialize(PurpleProtocol *protocol,
    PurpleRoomlistRoom *room);
    /**************************************************************************/
    @@ -1137,10 +1137,10 @@
    */
    GType purple_protocol_attention_iface_get_type(void);
    -gboolean purple_protocol_attention_iface_send(PurpleProtocol *,
    +gboolean purple_protocol_attention_iface_send(PurpleProtocol *protocol,
    PurpleConnection *gc, const char *username, guint type);
    -GList *purple_protocol_attention_iface_get_types(PurpleProtocol *,
    +GList *purple_protocol_attention_iface_get_types(PurpleProtocol *protocol,
    PurpleAccount *acct);
    /**************************************************************************/
    @@ -1154,13 +1154,13 @@
    */
    GType purple_protocol_media_iface_get_type(void);
    -gboolean purple_protocol_media_iface_initiate_session(PurpleProtocol *,
    +gboolean purple_protocol_media_iface_initiate_session(PurpleProtocol *protocol,
    PurpleAccount *account, const char *who, PurpleMediaSessionType type);
    -PurpleMediaCaps purple_protocol_media_iface_get_caps(PurpleProtocol *,
    +PurpleMediaCaps purple_protocol_media_iface_get_caps(PurpleProtocol *protocol,
    PurpleAccount *account, const char *who);
    -gboolean purple_protocol_media_iface_send_dtmf(PurpleProtocol *,
    +gboolean purple_protocol_media_iface_send_dtmf(PurpleProtocol *protocol,
    PurpleMedia *media, gchar dtmf, guint8 volume, guint8 duration);
    /**************************************************************************/
    @@ -1174,16 +1174,28 @@
    */
    GType purple_protocol_factory_iface_get_type(void);
    -PurpleConnection *purple_protocol_factory_iface_connection_new(PurpleProtocol *,
    +/**
    + * purple_protocol_factory_iface_connection_new: (skip)
    + */
    +PurpleConnection *purple_protocol_factory_iface_connection_new(PurpleProtocol *protocol,
    PurpleAccount *account, const char *password);
    -PurpleRoomlist *purple_protocol_factory_iface_roomlist_new(PurpleProtocol *,
    +/**
    + * purple_protocol_factory_iface_roomlist_new: (skip)
    + */
    +PurpleRoomlist *purple_protocol_factory_iface_roomlist_new(PurpleProtocol *protocol,
    PurpleAccount *account);
    -PurpleWhiteboard *purple_protocol_factory_iface_whiteboard_new(PurpleProtocol *,
    +/**
    + * purple_protocol_factory_iface_whiteboard_new: (skip)
    + */
    +PurpleWhiteboard *purple_protocol_factory_iface_whiteboard_new(PurpleProtocol *protocol,
    PurpleAccount *account, const char *who, int state);
    -PurpleXfer *purple_protocol_factory_iface_xfer_new(PurpleProtocol *,
    +/**
    + * purple_protocol_factory_iface_xfer_new: (skip)
    + */
    +PurpleXfer *purple_protocol_factory_iface_xfer_new(PurpleProtocol *protocol,
    PurpleAccount *account, PurpleXferType type, const char *who);
    G_END_DECLS
    --- a/libpurple/protocols.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/protocols.h Fri Nov 17 14:23:40 2017 +0300
    @@ -34,7 +34,7 @@
    #define PURPLE_TYPE_PROTOCOL_ACTION (purple_protocol_action_get_type())
    typedef struct _PurpleProtocolAction PurpleProtocolAction;
    -typedef void (*PurpleProtocolActionCallback)(PurpleProtocolAction *);
    +typedef void (*PurpleProtocolActionCallback)(PurpleProtocolAction *action);
    #define PURPLE_TYPE_ATTENTION_TYPE (purple_attention_type_get_type())
    @@ -466,7 +466,7 @@
    *
    * Retrieves the list of stock status types from a protocol.
    *
    - * Returns: (element-type PurpleStatus): List of statuses
    + * Returns: (transfer full) (element-type PurpleStatus): List of statuses
    */
    GList *purple_protocol_get_statuses(PurpleAccount *account,
    PurplePresence *presence);
    --- a/libpurple/protocols/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -EXTRA_DIST = Makefile.mingw
    -
    -DIST_SUBDIRS = bonjour facebook gg irc jabber novell null oscar sametime silc simple zephyr
    -
    -SUBDIRS = $(DYNAMIC_PRPLS) $(STATIC_PRPLS)
    --- a/libpurple/protocols/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,29 +0,0 @@
    -# Makefile.mingw
    -#
    -# Author: hermanator12002@yahoo.com
    -# Date 9/11/02
    -# Description: Protocols Makefile for win32 (mingw) port of libpurple
    -#
    -
    -PIDGIN_TREE_TOP := ../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -SUBDIRS = gg irc jabber novell null oscar sametime silc simple bonjour
    -
    -.PHONY: all install clean
    -
    -all:
    - $(MAKE_at) for subdir in $(SUBDIRS); do \
    - $(MAKE) -C $$subdir -f $(MINGW_MAKEFILE) || exit 1; \
    - done;
    -
    -install: all
    - $(MAKE_at) for subdir in $(SUBDIRS); do \
    - $(MAKE) -C $$subdir -f $(MINGW_MAKEFILE) install || exit 1; \
    - done;
    -
    -clean:
    - $(MAKE_at) for subdir in $(SUBDIRS); do \
    - $(MAKE) -C $$subdir -f $(MINGW_MAKEFILE) clean || exit 1; \
    - done;
    -
    --- a/libpurple/protocols/bonjour/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,64 +0,0 @@
    -EXTRA_DIST = \
    - mdns_avahi.c \
    - mdns_dns_sd.c \
    - dns_sd_proxy.c \
    - dns_sd_proxy.h \
    - Makefile.mingw
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -BONJOURSOURCES = \
    - bonjour.c \
    - bonjour.h \
    - buddy.c \
    - buddy.h \
    - jabber.c \
    - jabber.h \
    - mdns_common.c \
    - mdns_common.h \
    - mdns_interface.h \
    - mdns_types.h \
    - parser.c \
    - parser.h \
    - bonjour_ft.c \
    - bonjour_ft.h
    -
    -if IS_WIN32
    -BONJOURSOURCES += dns_sd_proxy.c mdns_dns_sd.c
    -else
    -BONJOURSOURCES += mdns_avahi.c
    -endif
    -
    -AM_CFLAGS = $(st)
    -
    -libbonjour_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if STATIC_BONJOUR
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = libbonjour.la
    -libbonjour_la_SOURCES = $(BONJOURSOURCES)
    -libbonjour_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = libbonjour.la
    -libbonjour_la_SOURCES = $(BONJOURSOURCES)
    -
    -endif
    -
    -libbonjour_la_LIBADD = @PURPLE_LIBS@ $(LIBXML_LIBS) $(AVAHI_LIBS)
    -
    -if IS_WIN32
    -libbonjour_la_LIBADD += -lnetapi32
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(AVAHI_CFLAGS)
    --- a/libpurple/protocols/bonjour/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,92 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libbonjour
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libbonjour
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -CFLAGS += -DUSE_BONJOUR_APPLE
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(LIBXML2_TOP)/include/libxml2 \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(LIBXML2_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = bonjour.c \
    - bonjour_ft.c \
    - buddy.c \
    - dns_sd_proxy.c \
    - jabber.c \
    - mdns_common.c \
    - mdns_dns_sd.c \
    - parser.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lnetapi32 \
    - -lxml2 \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/facebook/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,52 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -FACEBOOKSOURCES = \
    - api.c \
    - api.h \
    - data.c \
    - data.h \
    - facebook.h \
    - facebook.c \
    - http.c \
    - http.h \
    - id.h \
    - json.c \
    - json.h \
    - mqtt.c \
    - mqtt.h \
    - thrift.c \
    - thrift.h \
    - util.c \
    - util.h
    -
    -AM_CFLAGS = $(st)
    -
    -libfacebook_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if STATIC_FACEBOOK
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = libfacebook.la
    -libfacebook_la_SOURCES = $(FACEBOOKSOURCES)
    -libfacebook_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = libfacebook.la
    -libfacebook_la_SOURCES = $(FACEBOOKSOURCES)
    -libfacebook_la_LIBADD = @PURPLE_LIBS@ $(JSON_LIBS)
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir) \
    - $(GLIB_CFLAGS) \
    - $(JSON_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS)
    --- a/libpurple/protocols/facebook/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,94 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libfacebook
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libfacebook
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(JSON_GLIB_TOP)/include/json-glib-1.0 \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(GPLUGIN_TOP) \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(JSON_GLIB_TOP)/lib \
    - -L$(GPLUGIN_TOP) \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = \
    - api.c \
    - data.c \
    - facebook.c \
    - http.c \
    - json.c \
    - mqtt.c \
    - thrift.c \
    - util.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgio-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lgplugin \
    - -ljson-glib-1.0 \
    - -lz \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/gg/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,88 +0,0 @@
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -EXTRA_DIST = \
    - account.c \
    - account.h \
    - Makefile.mingw
    -
    -GGSOURCES = \
    - avatar.c \
    - avatar.h \
    - blist.c \
    - blist.h \
    - chat.c \
    - chat.h \
    - edisc.c \
    - edisc.h \
    - gg.c \
    - gg.h \
    - html.c \
    - html.h \
    - image-prpl.c \
    - image-prpl.h \
    - keymapper.c \
    - keymapper.h \
    - libgadu-events.c \
    - libgadu-events.h \
    - libgaduw.c \
    - libgaduw.h \
    - message-prpl.c \
    - message-prpl.h \
    - multilogon.c \
    - multilogon.h \
    - pubdir-prpl.c \
    - pubdir-prpl.h \
    - purplew.c \
    - purplew.h \
    - resolver-purple.c \
    - resolver-purple.h \
    - roster.c \
    - roster.h \
    - servconn.c \
    - servconn.h \
    - status.c \
    - status.h \
    - tcpsocket.c \
    - tcpsocket.h \
    - utils.c \
    - utils.h \
    - validator.c \
    - validator.h \
    - xml.c \
    - xml.h \
    - oauth/oauth.c \
    - oauth/oauth.h \
    - oauth/oauth-parameter.c \
    - oauth/oauth-parameter.h \
    - oauth/oauth-purple.c \
    - oauth/oauth-purple.h
    -
    -AM_CFLAGS = $(st)
    -
    -libgg_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if STATIC_GG
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = libgg.la
    -libgg_la_SOURCES = $(GGSOURCES)
    -libgg_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = libgg.la
    -libgg_la_SOURCES = $(GGSOURCES)
    -
    -endif
    -
    -libgg_la_LIBADD = @PURPLE_LIBS@ $(LIBGADU_LIBS) $(JSON_LIBS)
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(LIBGADU_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(JSON_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS)
    --- a/libpurple/protocols/gg/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,115 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libgg
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libgg
    -CFLAGS += -DGG_IGNORE_DEPRECATED
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS +=\
    - -I$(PIDGIN_TREE_TOP) \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(GNUTLS_TOP)/include \
    - -I$(JSON_GLIB_TOP)/include/json-glib-1.0 \
    - -I$(LIBGADU_TOP)/include
    -
    -LIB_PATHS += \
    - -L$(GTK_TOP)/lib \
    - -L$(GNUTLS_TOP)/lib \
    - -L$(LIBGADU_TOP)/lib \
    - -L$(JSON_GLIB_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = \
    - avatar.c \
    - blist.c \
    - chat.c \
    - edisc.c \
    - gg.c \
    - html.c \
    - image-prpl.c \
    - keymapper.c \
    - libgadu-events.c \
    - libgaduw.c \
    - message-prpl.c \
    - multilogon.c \
    - oauth/oauth.c \
    - oauth/oauth-parameter.c \
    - oauth/oauth-purple.c \
    - pubdir-prpl.c \
    - purplew.c \
    - resolver-purple.c \
    - roster.c \
    - servconn.c \
    - status.c \
    - tcpsocket.c \
    - utils.c \
    - validator.c \
    - xml.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lgadu \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lgnutls \
    - -lintl \
    - -ljson-glib-1.0 \
    - -lpurple \
    - -lws2_32 \
    - -lz
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/gg/blist.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/protocols/gg/blist.c Fri Nov 17 14:23:40 2017 +0300
    @@ -125,7 +125,7 @@
    g = g_strdup("Gadu-Gadu");
    - if ('\0' != data_tbl[F_GROUP]) {
    + if ('\0' != *(data_tbl[F_GROUP])) {
    /* XXX: Probably buddy should be added to all the groups. */
    /* Hard limit to at most 50 groups */
    gchar **group_tbl = g_strsplit(data_tbl[F_GROUP], ",", 50);
    --- a/libpurple/protocols/irc/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,39 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -IRCSOURCES = \
    - cmds.c \
    - dcc_send.c \
    - irc.c \
    - irc.h \
    - msgs.c \
    - parse.c
    -
    -AM_CFLAGS = $(st)
    -
    -libirc_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if STATIC_IRC
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = libirc.la
    -libirc_la_SOURCES = $(IRCSOURCES)
    -libirc_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = libirc.la
    -libirc_la_SOURCES = $(IRCSOURCES)
    -libirc_la_LIBADD = @PURPLE_LIBS@ $(SASL_LIBS)
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS)
    --- a/libpurple/protocols/irc/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,93 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libirc
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libirc
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = cmds.c \
    - dcc_send.c \
    - irc.c \
    - msgs.c \
    - parse.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lpurple
    -
    -
    -ifeq ($(CYRUS_SASL), 1)
    -INCLUDE_PATHS += -I$(CYRUS_SASL_TOP)/include
    -LIB_PATHS += -L$(CYRUS_SASL_TOP)/lib
    -LIBS += -llibsasl2
    -endif
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -##
    -## BUILD DLL
    -##
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/jabber/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,135 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -JABBERSOURCES = \
    - adhoccommands.c \
    - adhoccommands.h \
    - auth.c \
    - auth.h \
    - auth_digest_md5.c \
    - auth_digest_md5.h \
    - auth_plain.c \
    - auth_scram.c \
    - auth_scram.h \
    - buddy.c \
    - buddy.h \
    - bosh.c \
    - bosh.h \
    - caps.c \
    - caps.h \
    - chat.c \
    - chat.h \
    - data.c \
    - data.h \
    - disco.c \
    - disco.h \
    - google/gmail.c \
    - google/gmail.h \
    - google/google.c \
    - google/google.h \
    - google/google_p2p.c \
    - google/google_p2p.h \
    - google/google_presence.c \
    - google/google_presence.h \
    - google/google_roster.c \
    - google/google_roster.h \
    - google/google_session.c \
    - google/google_session.h \
    - google/jingleinfo.c \
    - google/jingleinfo.h \
    - google/relay.c \
    - google/relay.h \
    - gtalk.c \
    - gtalk.h \
    - ibb.c \
    - ibb.h \
    - iq.c \
    - iq.h \
    - jabber.c \
    - jabber.h \
    - jingle/jingle.c \
    - jingle/jingle.h \
    - jingle/content.c \
    - jingle/content.h \
    - jingle/iceudp.c \
    - jingle/iceudp.h \
    - jingle/rawudp.c \
    - jingle/rawudp.h \
    - jingle/rtp.c \
    - jingle/rtp.h \
    - jingle/session.c \
    - jingle/session.h \
    - jingle/transport.c \
    - jingle/transport.h \
    - jutil.c \
    - jutil.h \
    - message.c \
    - message.h \
    - namespaces.h \
    - oob.c \
    - oob.h \
    - parser.c \
    - parser.h \
    - pep.c \
    - pep.h \
    - ping.c \
    - ping.h \
    - presence.c \
    - presence.h \
    - roster.c \
    - roster.h \
    - si.c \
    - si.h \
    - useravatar.c \
    - useravatar.h \
    - usermood.c \
    - usermood.h \
    - usernick.c \
    - usernick.h \
    - usertune.c \
    - usertune.h \
    - xdata.c \
    - xdata.h \
    - xmpp.c \
    - xmpp.h
    -
    -AM_CFLAGS = $(st)
    -
    -libjabber_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if USE_CYRUS_SASL
    -JABBERSOURCES += auth_cyrus.c
    -endif
    -
    -if STATIC_JABBER
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = libjabber.la
    -libjabber_la_SOURCES = $(JABBERSOURCES)
    -libjabber_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = libjabber.la
    -libjabber_la_SOURCES = $(JABBERSOURCES)
    -libjabber_la_LIBADD = @PURPLE_LIBS@ $(SASL_LIBS) $(LIBXML_LIBS) $(IDN_LIBS)\
    - $(FARSTREAM_LIBS) \
    - $(GSTREAMER_LIBS)
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(IDN_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(FARSTREAM_CFLAGS) \
    - $(GSTREAMER_CFLAGS)
    -
    -SUBDIRS = tests
    --- a/libpurple/protocols/jabber/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,142 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libjabber
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libjabber
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(LIBXML2_TOP)/include/libxml2 \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP) \
    - $(VV_INCLUDE_PATHS)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(LIBXML2_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L. \
    - $(VV_LIB_PATHS)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -ifeq "$(USE_VV)" "1"
    -VV_SRC = google/google_p2p.c
    -else
    -VV_SRC =
    -endif
    -
    -C_SRC = \
    - adhoccommands.c \
    - auth.c \
    - auth_cyrus.c \
    - auth_digest_md5.c \
    - auth_plain.c \
    - auth_scram.c \
    - buddy.c \
    - bosh.c \
    - caps.c \
    - chat.c \
    - data.c \
    - disco.c \
    - google/gmail.c \
    - google/google.c \
    - google/google_presence.c \
    - google/google_roster.c \
    - google/google_session.c \
    - google/jingleinfo.c \
    - google/relay.c \
    - gtalk.c \
    - ibb.c \
    - iq.c \
    - jabber.c \
    - jingle/jingle.c \
    - jingle/content.c \
    - jingle/iceudp.c \
    - jingle/rawudp.c \
    - jingle/rtp.c \
    - jingle/session.c \
    - jingle/transport.c \
    - jutil.c \
    - message.c \
    - oob.c \
    - parser.c \
    - pep.c \
    - ping.c \
    - presence.c \
    - roster.c \
    - si.c \
    - useravatar.c \
    - usermood.c \
    - usernick.c \
    - usertune.c \
    - xdata.c \
    - xmpp.c \
    - $(VV_SRC)
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - $(VV_LIBS) \
    - -lxml2 \
    - -lws2_32 \
    - -lintl \
    - -lpurple
    -
    -ifeq ($(CYRUS_SASL), 1)
    -INCLUDE_PATHS += -I$(CYRUS_SASL_TOP)/include
    -LIB_PATHS += -L$(CYRUS_SASL_TOP)/lib
    -LIBS += -llibsasl2
    -endif
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS) $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/jabber/jingle/rtp.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/protocols/jabber/jingle/rtp.c Fri Nov 17 14:23:40 2017 +0300
    @@ -819,6 +819,7 @@
    JingleTransport *transport;
    JabberBuddy *jb;
    JabberBuddyResource *jbr;
    + gboolean ret = FALSE;
    const gchar *transport_type;
    gchar *resource = NULL, *me = NULL, *sid = NULL;
    @@ -827,16 +828,15 @@
    jb = jabber_buddy_find(js, who, FALSE);
    if (!jb) {
    purple_debug_error("jingle-rtp", "Could not find Jabber buddy\n");
    - return FALSE;
    + goto out;
    }
    resource = jabber_get_resource(who);
    jbr = jabber_buddy_find_resource(jb, resource);
    - g_free(resource);
    if (!jbr) {
    purple_debug_error("jingle-rtp", "Could not find buddy's resource - %s\n", resource);
    - return FALSE;
    + goto out;
    }
    if (jabber_resource_has_capability(jbr, JINGLE_TRANSPORT_ICEUDP)) {
    @@ -848,7 +848,7 @@
    } else {
    purple_debug_error("jingle-rtp", "Resource doesn't support "
    "the same transport types\n");
    - return FALSE;
    + goto out;
    }
    /* set ourselves as initiator */
    @@ -856,7 +856,6 @@
    sid = jabber_get_next_id(js);
    session = jingle_session_create(js, sid, me, who, TRUE);
    - g_free(sid);
    if (type & PURPLE_MEDIA_AUDIO) {
    @@ -878,13 +877,17 @@
    g_object_notify_by_pspec(G_OBJECT(content), properties[PROP_MEDIA_TYPE]);
    }
    - g_free(me);
    -
    if (jingle_rtp_get_media(session) == NULL) {
    - return FALSE;
    + goto out;
    }
    - return TRUE;
    + ret = TRUE;
    +
    +out:
    + g_free(me);
    + g_free(resource);
    + g_free(sid);
    + return ret;
    }
    void
    --- a/libpurple/protocols/jabber/tests/.hgignore Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,10 +0,0 @@
    -syntax: regexp
    -^test_jabber_caps$
    -^test_jabber_digest_md5$
    -^test_jabber_jutil$
    -^test_jabber_scram$
    -
    -syntax: glob
    -*.log
    -*.trs
    -
    --- a/libpurple/protocols/jabber/tests/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,36 +0,0 @@
    -include $(top_srcdir)/glib-tap.mk
    -
    -COMMON_LIBS=\
    - $(top_builddir)/libpurple/libpurple.la \
    - $(top_builddir)/libpurple/protocols/jabber/libjabber.la \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(LIBXML_LIBS)
    -
    -test_programs=\
    - test_jabber_caps \
    - test_jabber_digest_md5 \
    - test_jabber_jutil \
    - test_jabber_scram
    -
    -test_jabber_caps_SOURCES=test_jabber_caps.c
    -test_jabber_caps_LDADD=$(COMMON_LIBS)
    -
    -test_jabber_digest_md5_SOURCES=test_jabber_digest_md5.c
    -test_jabber_digest_md5_LDADD=$(COMMON_LIBS)
    -
    -test_jabber_jutil_SOURCES=test_jabber_jutil.c
    -test_jabber_jutil_LDADD=$(COMMON_LIBS)
    -
    -test_jabber_scram_SOURCES=test_jabber_scram.c
    -test_jabber_scram_LDADD=$(COMMON_LIBS)
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(PLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS)
    --- a/libpurple/protocols/novell/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,55 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -NOVELLSOURCES = \
    - nmfield.h \
    - nmfield.c \
    - nmconn.h \
    - nmconn.c \
    - nmconference.h \
    - nmconference.c \
    - nmcontact.h \
    - nmcontact.c \
    - nmevent.h \
    - nmevent.c \
    - nmmessage.h \
    - nmmessage.c \
    - nmrequest.h \
    - nmrequest.c \
    - nmrtf.h \
    - nmrtf.c \
    - nmuser.h \
    - nmuser.c \
    - nmuserrecord.h \
    - nmuserrecord.c \
    - novell.h \
    - novell.c
    -
    -AM_CFLAGS = $(st)
    -
    -libnovell_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if STATIC_NOVELL
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = libnovell.la
    -libnovell_la_SOURCES = $(NOVELLSOURCES)
    -libnovell_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = libnovell.la
    -libnovell_la_SOURCES = $(NOVELLSOURCES)
    -libnovell_la_LIBADD = @PURPLE_LIBS@
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS)
    --- a/libpurple/protocols/novell/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,89 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libnovell
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libnovell
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = \
    - nmfield.c \
    - nmconn.c \
    - nmconference.c \
    - nmcontact.c \
    - nmevent.c \
    - nmmessage.c \
    - nmrequest.c \
    - nmrtf.c \
    - nmuser.c \
    - nmuserrecord.c \
    - novell.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/null/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,26 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw \
    - README
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -NULLSOURCES = \
    - nullprpl.h \
    - nullprpl.c
    -
    -AM_CFLAGS = $(st)
    -
    -libnull_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -# nullprpl isn't built by default; when it is built, it's dynamically linked
    -st =
    -pkg_LTLIBRARIES = libnull.la
    -libnull_la_SOURCES = $(NULLSOURCES)
    -libnull_la_LIBADD = @PURPLE_LIBS@
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS)
    --- a/libpurple/protocols/null/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,80 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libnull
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libnull
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = nullprpl.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lintl \
    - -lws2_32 \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install install_real clean
    -
    -all: $(TARGET).dll
    -
    -install_real: all $(DLL_INSTALL_DIR) $(PURPLE_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -install: all
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/oscar/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,83 +0,0 @@
    -EXTRA_DIST = \
    - COPYING \
    - AUTHORS \
    - Makefile.mingw
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -OSCARSOURCES = \
    - authorization.c \
    - aim.c \
    - aim.h \
    - bstream.c \
    - clientlogin.c \
    - kerberos.c \
    - encoding.c \
    - encoding.h \
    - family_admin.c \
    - family_alert.c \
    - family_auth.c \
    - family_bart.c \
    - family_bos.c \
    - family_buddy.c \
    - family_chat.c \
    - family_chatnav.c \
    - family_icq.c \
    - family_icbm.c \
    - family_locate.c \
    - family_oservice.c \
    - family_popup.c \
    - family_feedbag.c \
    - family_stats.c \
    - family_userlookup.c \
    - flap_connection.c \
    - icq.c \
    - icq.h \
    - misc.c \
    - msgcookie.c \
    - odc.c \
    - oft.c \
    - oscar.c \
    - oscar.h \
    - oscarcommon.h \
    - oscar_data.c \
    - peer.c \
    - peer.h \
    - peer_proxy.c \
    - rxhandlers.c \
    - snac.c \
    - snactypes.h \
    - tlv.c \
    - userinfo.c \
    - util.c \
    - visibility.c \
    - visibility.h
    -
    -AM_CFLAGS = $(st)
    -
    -liboscar_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if STATIC_OSCAR
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = liboscar.la
    -liboscar_la_SOURCES = $(OSCARSOURCES)
    -liboscar_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = liboscar.la
    -liboscar_la_SOURCES = $(OSCARSOURCES)
    -liboscar_la_LIBADD = @PURPLE_LIBS@
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS)
    -
    -SUBDIRS=tests
    --- a/libpurple/protocols/oscar/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,116 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of liboscar
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = liboscar
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    - ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    - endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L.
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = \
    - aim.c \
    - authorization.c \
    - bstream.c \
    - clientlogin.c \
    - encoding.c \
    - family_admin.c \
    - family_alert.c \
    - family_auth.c \
    - family_bart.c \
    - family_bos.c \
    - family_buddy.c \
    - family_chat.c \
    - family_chatnav.c \
    - family_feedbag.c \
    - family_icbm.c \
    - family_icq.c \
    - family_locate.c \
    - family_oservice.c \
    - family_popup.c \
    - family_stats.c \
    - family_userlookup.c \
    - flap_connection.c \
    - icq.c \
    - kerberos.c \
    - misc.c \
    - msgcookie.c \
    - odc.c \
    - oft.c \
    - oscar.c \
    - oscar_data.c \
    - peer.c \
    - peer_proxy.c \
    - rxhandlers.c \
    - snac.c \
    - tlv.c \
    - userinfo.c \
    - util.c \
    - visibility.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lintl \
    - -lws2_32 \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS) $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/oscar/tests/.hgignore Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,7 +0,0 @@
    -syntax: regexp
    -^test_oscar_util$
    -
    -syntax: glob
    -*.log
    -*.trs
    -
    --- a/libpurple/protocols/oscar/tests/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,22 +0,0 @@
    -include $(top_srcdir)/glib-tap.mk
    -
    -COMMON_LIBS=\
    - $(top_builddir)/libpurple/libpurple.la \
    - $(top_builddir)/libpurple/protocols/oscar/liboscar.la \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS)
    -
    -test_programs=\
    - test_oscar_util
    -
    -test_oscar_util_SOURCES=test_oscar_util.c
    -test_oscar_util_LDADD=$(COMMON_LIBS)
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(PLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS)
    --- a/libpurple/protocols/sametime/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,38 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -noinst_HEADERS = sametime.h
    -
    -SAMETIMESOURCES = sametime.c
    -
    -AM_CFLAGS = \
    - $(st)
    -
    -if STATIC_SAMETIME
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = libsametime.la
    -libsametime_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = libsametime.la
    -
    -endif
    -
    -libsametime_la_SOURCES = $(SAMETIMESOURCES)
    -libsametime_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -libsametime_la_LIBADD = @PURPLE_LIBS@ $(MEANWHILE_LIBS)
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(MEANWHILE_CFLAGS) \
    - -DG_LOG_DOMAIN=\"sametime\"
    -
    --- a/libpurple/protocols/sametime/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,84 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libsametime
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libsametime
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    - ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    - endif
    -endif
    -
    -CFLAGS += -DG_LOG_DOMAIN=\"sametime\"
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(MEANWHILE_TOP)/include/meanwhile \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(MEANWHILE_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = sametime.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lintl \
    - -lws2_32 \
    - -lmeanwhile \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR) $(PURPLE_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/silc/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,47 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw \
    - README \
    - TODO
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -SILCSOURCES = \
    - buddy.c \
    - chat.c \
    - ft.c \
    - ops.c \
    - pk.c \
    - silc.c \
    - silcpurple.h \
    - util.c \
    - wb.c \
    - wb.h
    -
    -AM_CFLAGS = $(st)
    -
    -libsilcpurple_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if STATIC_SILC
    -
    -st = -DPURPLE_STATIC_PRPL $(SILC_CFLAGS)
    -noinst_LTLIBRARIES = libsilcpurple.la
    -libsilcpurple_la_SOURCES = $(SILCSOURCES)
    -libsilcpurple_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st = $(SILC_CFLAGS)
    -pkg_LTLIBRARIES = libsilcpurple.la
    -libsilcpurple_la_SOURCES = $(SILCSOURCES)
    -
    -endif
    -
    -libsilcpurple_la_LIBADD = @PURPLE_LIBS@ $(SILC_LIBS)
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(SILC_CFLAGS)
    --- a/libpurple/protocols/silc/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,91 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libsilc protocol plugin
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -DEFINES := $(subst -DWIN32_LEAN_AND_MEAN,,$(DEFINES))
    -
    -TARGET = libsilc
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP) \
    - -I$(SILC_TOOLKIT)/include
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L$(SILC_TOOLKIT)/lib
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = silc.c \
    - buddy.c \
    - chat.c \
    - ft.c \
    - ops.c \
    - pk.c \
    - util.c \
    - wb.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lpurple \
    - -lsilc \
    - -lsilcclient
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR) $(PURPLE_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -Wl,--image-base,0x74000000 -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/simple/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,41 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw
    -
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -SIMPLESOURCES = \
    - ntlm.c \
    - ntlm.h \
    - simple.c \
    - simple.h \
    - sipmsg.c \
    - sipmsg.h
    -
    -AM_CFLAGS = $(st)
    -
    -libsimple_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -libsimple_la_LIBADD = $(NETTLE_LIBS)
    -
    -if STATIC_SIMPLE
    -
    -st = -DPURPLE_STATIC_PRPL
    -noinst_LTLIBRARIES = libsimple.la
    -libsimple_la_SOURCES = $(SIMPLESOURCES)
    -libsimple_la_CFLAGS = $(AM_CFLAGS)
    -
    -else
    -
    -st =
    -pkg_LTLIBRARIES = libsimple.la
    -libsimple_la_SOURCES = $(SIMPLESOURCES)
    -libsimple_la_LIBADD += @PURPLE_LIBS@
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(NETTLE_CFLAGS)
    --- a/libpurple/protocols/simple/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,79 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libsimple
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libsimple
    -TYPE = PLUGIN
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = simple.c \
    - sipmsg.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/protocols/zephyr/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,110 +0,0 @@
    -pkgdir = @PURPLE_PLUGINDIR@
    -
    -ZEPHYRSOURCES = \
    - ZAsyncLocate.c \
    - ZCkAuth.c \
    - ZCkIfNot.c \
    - ZClosePort.c \
    - ZCmpUID.c \
    - ZCmpUIDP.c \
    - ZFlsLocs.c \
    - ZFlsSubs.c \
    - ZFmtAuth.c \
    - ZFmtList.c \
    - ZFmtNotice.c \
    - ZFmtRaw.c \
    - ZFmtRawLst.c \
    - ZFmtSmRLst.c \
    - ZFmtSmRaw.c \
    - ZFreeNot.c \
    - ZGetLocs.c \
    - ZGetSender.c \
    - ZGetSubs.c \
    - ZGetWGPort.c \
    - ZIfNotice.c \
    - ZInit.c \
    - ZLocations.c \
    - ZMakeAscii.c \
    - ZMkAuth.c \
    - ZNewLocU.c \
    - ZOpenPort.c \
    - ZParseNot.c \
    - ZPeekIfNot.c \
    - ZPeekNot.c \
    - ZPeekPkt.c \
    - ZPending.c \
    - ZReadAscii.c \
    - ZRecvNot.c \
    - ZRecvPkt.c \
    - ZRetSubs.c \
    - ZSendList.c \
    - ZSendNot.c \
    - ZSendPkt.c \
    - ZSendRLst.c \
    - ZSendRaw.c \
    - ZSetDest.c \
    - ZSetFD.c \
    - ZSetSrv.c \
    - ZSubs.c \
    - ZVariables.c \
    - ZWait4Not.c \
    - ZhmStat.c \
    - Zinternal.c \
    - com_err.h \
    - error_message.c \
    - error_table.h \
    - et_name.c \
    - init_et.c \
    - internal.h \
    - mit-copyright.h \
    - mit-sipb-copyright.h \
    - sysdep.h \
    - zephyr_err.c \
    - zephyr_err.h \
    - zephyr_internal.h \
    - zephyr.c \
    - zephyr.h
    -
    -ZEPHYRSOURCESEXT = zephyr.c zephyr.h
    -
    -AM_CFLAGS = $(st)
    -
    -ZEPHYRLIBS = $(KRB4_LDFLAGS) $(KRB4_LIBS)
    -
    -ZEPHYRLIBSEXT = $(ZEPHYR_LDFLAGS) $(ZEPHYR_LIBS)
    -
    -libzephyr_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if STATIC_ZEPHYR
    -
    -st = -DPURPLE_STATIC_PRPL -Dlint
    -noinst_LTLIBRARIES = libzephyr.la
    -libzephyr_la_SOURCES = $(ZEPHYRSOURCES)
    -libzephyr_la_CFLAGS = $(AM_CFLAGS)
    -libzephyr_la_LIBADD = @PURPLE_LIBS@ $(ZEPHYRLIBS)
    -
    -else
    -
    -st = -Dlint
    -pkg_LTLIBRARIES = libzephyr.la
    -
    -if EXTERNAL_LIBZEPHYR
    -libzephyr_la_SOURCES = $(ZEPHYRSOURCESEXT)
    -libzephyr_la_LIBADD = @PURPLE_LIBS@ $(ZEPHYRLIBSEXT)
    -else
    -libzephyr_la_SOURCES = $(ZEPHYRSOURCES)
    -libzephyr_la_LIBADD = @PURPLE_LIBS@ $(ZEPHYRLIBS)
    -endif
    -
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir) \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/libpurple/protocols \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(KRB4_CFLAGS) \
    - $(DEBUG_CFLAGS)
    --- a/libpurple/protocols/zephyr/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,150 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of libzephyr
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = libzephyr
    -KRB4_TOP := $(WIN32_DEV_TOP)/kfw-2.6.3-final.fixed
    -USE_KRB4 := false
    -DEFINES += -DWIN32 -DKRB5_SYSTYPES__
    -TYPE = PLUGIN
    -
    -ifeq ($(USE_KRB4),true)
    - DEFINES += -DZEPHYR_USES_KERBEROS
    -endif
    -
    -# Static or Plugin...
    -ifeq ($(TYPE),STATIC)
    - DEFINES += -DSTATIC
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
    -else
    -ifeq ($(TYPE),PLUGIN)
    - DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
    -endif
    -endif
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I$(ZEPHYR_ROOT) \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -ifeq ($(USE_KRB4), true)
    - INCLUDE_PATHS += -I$(KRB4_TOP)/inc/krb4
    -endif
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP)
    -
    -ifeq ($(USE_KRB4), true)
    - LIB_PATHS+=-L$(KRB4_TOP)/lib/i386
    -endif
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = ZAsyncLocate.c \
    - ZCkAuth.c \
    - ZCkIfNot.c \
    - ZClosePort.c \
    - ZCmpUID.c \
    - ZCmpUIDP.c \
    - ZFlsLocs.c \
    - ZFlsSubs.c \
    - ZFmtAuth.c \
    - ZFmtList.c \
    - ZFmtNotice.c \
    - ZFmtRaw.c \
    - ZFmtRawLst.c \
    - ZFmtSmRLst.c \
    - ZFmtSmRaw.c \
    - ZFreeNot.c \
    - ZGetLocs.c \
    - ZGetSender.c \
    - ZGetSubs.c \
    - ZGetWGPort.c \
    - ZIfNotice.c \
    - ZInit.c \
    - ZLocations.c \
    - ZMakeAscii.c \
    - ZMkAuth.c \
    - ZNewLocU.c \
    - ZOpenPort.c \
    - ZParseNot.c \
    - ZPeekIfNot.c \
    - ZPeekNot.c \
    - ZPeekPkt.c \
    - ZPending.c \
    - ZReadAscii.c \
    - ZRecvNot.c \
    - ZRecvPkt.c \
    - ZRetSubs.c \
    - ZSendList.c \
    - ZSendNot.c \
    - ZSendPkt.c \
    - ZSendRLst.c \
    - ZSendRaw.c \
    - ZSetDest.c \
    - ZSetFD.c \
    - ZSetSrv.c \
    - ZSubs.c \
    - ZVariables.c \
    - ZWait4Not.c \
    - ZhmStat.c \
    - Zinternal.c \
    - error_message.c \
    - et_name.c \
    - init_et.c \
    - zephyr_err.c \
    - zephyr.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lpurple
    -
    -ifeq ($(USE_KRB4),true)
    - LIBS+= -lkrbv4w32
    -endif
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(DLL_INSTALL_DIR)
    - cp $(TARGET).dll $(DLL_INSTALL_DIR)
    -
    -$(OBJECTS): $(PURPLE_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -Wl,--enable-stdcall-fixup -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f $(OBJECTS)
    - rm -f $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/libpurple/request.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/request.h Fri Nov 17 14:23:40 2017 +0300
    @@ -133,7 +133,7 @@
    PURPLE_REQUEST_ICON_ERROR
    } PurpleRequestIconType;
    -typedef void (*PurpleRequestCancelCb)(gpointer);
    +typedef void (*PurpleRequestCancelCb)(gpointer data);
    /**
    * PurpleRequestUiOps:
    @@ -202,7 +202,7 @@
    void (*_purple_reserved4)(void);
    };
    -typedef void (*PurpleRequestInputCb)(void *, const char *);
    +typedef void (*PurpleRequestInputCb)(void *data, const char *value);
    typedef gboolean (*PurpleRequestFieldValidator)(PurpleRequestField *field,
    gchar **errmsg, gpointer user_data);
    @@ -216,12 +216,12 @@
    * argument is the <literal>user_data</literal> parameter; the second is the
    * index in the list of actions of the one chosen.
    */
    -typedef void (*PurpleRequestActionCb)(void *, int);
    +typedef void (*PurpleRequestActionCb)(void *data, int action);
    -typedef void (*PurpleRequestChoiceCb)(void *, gpointer);
    -typedef void (*PurpleRequestFieldsCb)(void *, PurpleRequestFields *fields);
    -typedef void (*PurpleRequestFileCb)(void *, const char *filename);
    -typedef void (*PurpleRequestHelpCb)(gpointer);
    +typedef void (*PurpleRequestChoiceCb)(void *data, gpointer value);
    +typedef void (*PurpleRequestFieldsCb)(void *data, PurpleRequestFields *fields);
    +typedef void (*PurpleRequestFileCb)(void *data, const char *filename);
    +typedef void (*PurpleRequestHelpCb)(gpointer data);
    G_BEGIN_DECLS
    @@ -1841,7 +1841,7 @@
    /**
    * purple_request_field_email_validator:
    * @field: The field.
    - * @errmsg: (Optional) destination for error message.
    + * @errmsg: (out) (optional): destination for error message.
    * @user_data: Ignored.
    *
    * Validates a field which should contain an email address.
    --- a/libpurple/sslconn.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/sslconn.h Fri Nov 17 14:23:40 2017 +0300
    @@ -50,10 +50,10 @@
    typedef struct _PurpleSslConnection PurpleSslConnection;
    -typedef void (*PurpleSslInputFunction)(gpointer, PurpleSslConnection *,
    - PurpleInputCondition);
    -typedef void (*PurpleSslErrorFunction)(PurpleSslConnection *, PurpleSslErrorType,
    - gpointer);
    +typedef void (*PurpleSslInputFunction)(gpointer data, PurpleSslConnection *connection,
    + PurpleInputCondition cond);
    +typedef void (*PurpleSslErrorFunction)(PurpleSslConnection *connection, PurpleSslErrorType err,
    + gpointer data);
    /**
    * PurpleSslConnection:
    --- a/libpurple/stun.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/stun.h Fri Nov 17 14:23:40 2017 +0300
    @@ -88,7 +88,7 @@
    time_t lookup_time;
    };
    -typedef void (*PurpleStunCallback) (PurpleStunNatDiscovery *);
    +typedef void (*PurpleStunCallback) (PurpleStunNatDiscovery *discovery);
    G_BEGIN_DECLS
    --- a/libpurple/tests.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/tests.h Fri Nov 17 14:23:40 2017 +0300
    @@ -30,8 +30,8 @@
    const gchar *output;
    } PurpleTestStringData;
    -typedef const gchar *(*PurpleTestStringFunc)(const gchar *);
    -typedef gchar *(*PurpleTestStringFreeFunc)(const gchar *);
    +typedef const gchar *(*PurpleTestStringFunc)(const gchar *str);
    +typedef gchar *(*PurpleTestStringFreeFunc)(const gchar *str);
    static inline void
    purple_test_string_compare(PurpleTestStringFunc func,
    --- a/libpurple/tests/.hgignore Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,16 +0,0 @@
    -syntax: regexp
    -^test_md[45]$
    -^test_sha(1|256)$
    -^test_des3?$
    -^test_hmac$
    -^test_image$
    -^test_smiley$
    -^test_smiley_list$
    -^test_trie$
    -^test_util$
    -^test_xmlnode$
    -
    -syntax: glob
    -*.log
    -*.trs
    -
    --- a/libpurple/tests/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,45 +0,0 @@
    -include $(top_srcdir)/glib-tap.mk
    -
    -COMMON_LIBS=\
    - $(top_builddir)/libpurple/libpurple.la \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS)
    -
    -test_programs=\
    - test_image \
    - test_smiley \
    - test_smiley_list \
    - test_trie \
    - test_util \
    - test_xmlnode
    -
    -test_image_SOURCES=test_image.c
    -test_image_LDADD=$(COMMON_LIBS)
    -
    -test_smiley_SOURCES=test_smiley.c
    -test_smiley_LDADD=$(COMMON_LIBS)
    -
    -test_smiley_list_SOURCES=test_smiley_list.c
    -test_smiley_list_LDADD=$(COMMON_LIBS)
    -
    -test_trie_SOURCES=test_trie.c
    -test_trie_LDADD=$(COMMON_LIBS)
    -
    -test_util_SOURCES=test_util.c
    -test_util_LDADD=$(COMMON_LIBS)
    -
    -test_xmlnode_SOURCES=test_xmlnode.c
    -test_xmlnode_LDADD=$(COMMON_LIBS)
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -DTEST_DATA_DIR=\"$(srcdir)/data\" \
    - $(DEBUG_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(PLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS)
    -
    -EXTRA_DIST += \
    - data/test-image.png
    --- a/libpurple/tests/test_util.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/tests/test_util.c Fri Nov 17 14:23:40 2017 +0300
    @@ -523,6 +523,30 @@
    }
    /******************************************************************************
    + * URI Escaping
    + *****************************************************************************/
    +static void
    +test_uri_escape_for_open(void) {
    + /* make sure shell stuff is escaped... */
    + gchar *result = purple_uri_escape_for_open("https://$(xterm)");
    + g_assert_cmpstr("https://%24%28xterm%29", ==, result);
    + g_free(result);
    +
    + result = purple_uri_escape_for_open("https://`xterm`");
    + g_assert_cmpstr("https://%60xterm%60", ==, result);
    + g_free(result);
    +
    + result = purple_uri_escape_for_open("https://$((25 + 13))");
    + g_assert_cmpstr("https://%24%28%2825%20+%2013%29%29", ==, result);
    + g_free(result);
    +
    + /* ...but keep brackets so that ipv6 links can be opened. */
    + result = purple_uri_escape_for_open("https://[123:4567:89a::::]");
    + g_assert_cmpstr("https://[123:4567:89a::::]", ==, result);
    + g_free(result);
    +}
    +
    +/******************************************************************************
    * MANE
    *****************************************************************************/
    gint
    @@ -570,5 +594,8 @@
    g_test_add_func("/util/test_strdup_withhtml",
    test_util_strdup_withhtml);
    + g_test_add_func("/util/test_uri_escape_for_open",
    + test_uri_escape_for_open);
    +
    return g_test_run();
    }
    --- a/libpurple/theme-loader.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/theme-loader.h Fri Nov 17 14:23:40 2017 +0300
    @@ -58,8 +58,8 @@
    {
    GObjectClass parent_class;
    - PurpleTheme *(*purple_theme_loader_build)(const gchar*);
    - gboolean (*probe_directory)(const gchar *);
    + PurpleTheme *(*purple_theme_loader_build)(const gchar *dir);
    + gboolean (*probe_directory)(const gchar *dir);
    /*< private >*/
    void (*purple_reserved1)(void);
    --- a/libpurple/theme-manager.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/theme-manager.h Fri Nov 17 14:23:40 2017 +0300
    @@ -34,7 +34,7 @@
    #include "theme.h"
    #include "theme-loader.h"
    -typedef void (*PurpleThemeFunc) (PurpleTheme *);
    +typedef void (*PurpleThemeFunc) (PurpleTheme *theme);
    typedef struct _PurpleThemeManager PurpleThemeManager;
    typedef struct _PurpleThemeManagerClass PurpleThemeManagerClass;
    --- a/libpurple/util.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/util.c Fri Nov 17 14:23:40 2017 +0300
    @@ -1547,7 +1547,7 @@
    pln = "\302\256"; /* or use g_unichar_to_utf8(0xae); */
    else if(IS_ENTITY("&apos;"))
    pln = "\'";
    - else if(text[1] == '#' && g_ascii_isxdigit(text[2])) {
    + else if(text[1] == '#' && (g_ascii_isxdigit(text[2]) || text[2] == 'x')) {
    static char buf[7];
    const char *start = text + 2;
    char *end;
    @@ -4423,6 +4423,17 @@
    return result;
    }
    +char *
    +purple_uri_escape_for_open(const char *unescaped)
    +{
    + /* Replace some special characters like $ with their percent-encoded value.
    + * This shouldn't be necessary because we shell-escape the entire arg before
    + * exec'ing the browser, however, we had a report that a URL containing
    + * $(xterm) was causing xterm to start on his system. This is obviously a
    + * bug on his system, but it's pretty easy for us to protect against it. */
    + return g_uri_escape_string(unescaped, "[]:;/%#,+?=&@", FALSE);
    +}
    +
    /**************************************************************************
    * UTF8 String Functions
    **************************************************************************/
    --- a/libpurple/util.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/util.h Fri Nov 17 14:23:40 2017 +0300
    @@ -1416,6 +1416,17 @@
    */
    GList *purple_uri_list_extract_filenames(const gchar *uri_list);
    +/**
    + * This function escapes any characters that might be interpreted by the shell
    + * when executing a program to open a URI on some systems.
    + *
    + * @param unescaped The unescaped URI.
    + *
    + * @return A newly allocated string with any shell metacharacters replaced with
    + * their escaped equivalents.
    + */
    +char *purple_uri_escape_for_open(const char *unescaped);
    +
    /**************************************************************************
    * UTF8 String Functions
    **************************************************************************/
    --- a/libpurple/win32/libc_interface.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/libpurple/win32/libc_interface.c Fri Nov 17 14:23:40 2017 +0300
    @@ -33,6 +33,7 @@
    #include <glib.h>
    #include "debug.h"
    #include "libc_internal.h"
    +#include "util.h"
    #include <glib/gstdio.h>
    #include "util.h"
    --- a/m4macros/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,6 +0,0 @@
    -installed_m4=purple.m4
    -
    -EXTRA_DIST=$(installed_m4) as-ac-expand.m4
    -
    -m4datadir=$(datadir)/aclocal
    -m4data_DATA=$(installed_m4)
    --- a/m4macros/as-ac-expand.m4 Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,49 +0,0 @@
    -dnl as-ac-expand.m4 0.2.0 -*- autoconf -*-
    -dnl autostars m4 macro for expanding directories using configure's prefix
    -
    -dnl (C) 2003, 2004, 2005 Thomas Vander Stichele <thomas at apestaart dot org>
    -
    -dnl Copying and distribution of this file, with or without modification,
    -dnl are permitted in any medium without royalty provided the copyright
    -dnl notice and this notice are preserved.
    -
    -dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
    -
    -dnl example:
    -dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
    -dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
    -
    -AC_DEFUN([AS_AC_EXPAND],
    -[
    - EXP_VAR=[$1]
    - FROM_VAR=[$2]
    -
    - dnl first expand prefix and exec_prefix if necessary
    - prefix_save=$prefix
    - exec_prefix_save=$exec_prefix
    -
    - dnl if no prefix given, then use /usr/local, the default prefix
    - if test "x$prefix" = "xNONE"; then
    - prefix="$ac_default_prefix"
    - fi
    - dnl if no exec_prefix given, then use prefix
    - if test "x$exec_prefix" = "xNONE"; then
    - exec_prefix=$prefix
    - fi
    -
    - full_var="$FROM_VAR"
    - dnl loop until it doesn't change anymore
    - while true; do
    - new_full_var="`eval echo $full_var`"
    - if test "x$new_full_var" = "x$full_var"; then break; fi
    - full_var=$new_full_var
    - done
    -
    - dnl clean up
    - full_var=$new_full_var
    - AC_SUBST([$1], "$full_var")
    -
    - dnl restore prefix and exec_prefix
    - prefix=$prefix_save
    - exec_prefix=$exec_prefix_save
    -])
    --- a/m4macros/glibtests.m4 Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,28 +0,0 @@
    -dnl GLIB_TESTS
    -dnl
    -
    -AC_DEFUN([GLIB_TESTS],
    -[
    - AC_ARG_ENABLE(installed-tests,
    - AS_HELP_STRING([--enable-installed-tests],
    - [Enable installation of some test cases]),
    - [case ${enableval} in
    - yes) ENABLE_INSTALLED_TESTS="1" ;;
    - no) ENABLE_INSTALLED_TESTS="" ;;
    - *) AC_MSG_ERROR([bad value ${enableval} for --enable-installed-tests]) ;;
    - esac])
    - AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], test "$ENABLE_INSTALLED_TESTS" = "1")
    - AC_ARG_ENABLE(always-build-tests,
    - AS_HELP_STRING([--enable-always-build-tests],
    - [Enable always building tests during 'make all']),
    - [case ${enableval} in
    - yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;;
    - no) ENABLE_ALWAYS_BUILD_TESTS="" ;;
    - *) AC_MSG_ERROR([bad value ${enableval} for --enable-always-build-tests]) ;;
    - esac])
    - AM_CONDITIONAL([ENABLE_ALWAYS_BUILD_TESTS], test "$ENABLE_ALWAYS_BUILD_TESTS" = "1")
    - if test "$ENABLE_INSTALLED_TESTS" = "1"; then
    - AC_SUBST(installed_test_metadir, [${datadir}/installed-tests/]AC_PACKAGE_NAME)
    - AC_SUBST(installed_testdir, [${libexecdir}/installed-tests/]AC_PACKAGE_NAME)
    - fi
    -])
    --- a/m4macros/introspection.m4 Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,96 +0,0 @@
    -dnl -*- mode: autoconf -*-
    -dnl Copyright 2009 Johan Dahlin
    -dnl
    -dnl This file is free software; the author(s) gives unlimited
    -dnl permission to copy and/or distribute it, with or without
    -dnl modifications, as long as this notice is preserved.
    -dnl
    -
    -# serial 1
    -
    -m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
    -[
    - AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
    - AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
    - AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
    -
    - dnl enable/disable introspection
    - m4_if([$2], [require],
    - [dnl
    - enable_introspection=yes
    - ],[dnl
    - AC_ARG_ENABLE(introspection,
    - AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
    - [Enable introspection for this build]),,
    - [enable_introspection=auto])
    - ])dnl
    -
    - AC_MSG_CHECKING([for gobject-introspection])
    -
    - dnl presence/version checking
    - AS_CASE([$enable_introspection],
    - [no], [dnl
    - found_introspection="no (disabled, use --enable-introspection to enable)"
    - ],dnl
    - [yes],[dnl
    - PKG_CHECK_EXISTS([gobject-introspection-1.0],,
    - AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
    - PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
    - found_introspection=yes,
    - AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
    - ],dnl
    - [auto],[dnl
    - PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
    - dnl Canonicalize enable_introspection
    - enable_introspection=$found_introspection
    - ],dnl
    - [dnl
    - AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
    - ])dnl
    -
    - AC_MSG_RESULT([$found_introspection])
    -
    - INTROSPECTION_SCANNER=
    - INTROSPECTION_COMPILER=
    - INTROSPECTION_GENERATE=
    - INTROSPECTION_GIRDIR=
    - INTROSPECTION_TYPELIBDIR=
    - if test "x$found_introspection" = "xyes"; then
    - INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
    - INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
    - INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
    - INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
    - INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
    - INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
    - INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
    - INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
    - fi
    - AC_SUBST(INTROSPECTION_SCANNER)
    - AC_SUBST(INTROSPECTION_COMPILER)
    - AC_SUBST(INTROSPECTION_GENERATE)
    - AC_SUBST(INTROSPECTION_GIRDIR)
    - AC_SUBST(INTROSPECTION_TYPELIBDIR)
    - AC_SUBST(INTROSPECTION_CFLAGS)
    - AC_SUBST(INTROSPECTION_LIBS)
    - AC_SUBST(INTROSPECTION_MAKEFILE)
    -
    - AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
    -])
    -
    -
    -dnl Usage:
    -dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
    -
    -AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
    -[
    - _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
    -])
    -
    -dnl Usage:
    -dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
    -
    -
    -AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
    -[
    - _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
    -])
    --- a/m4macros/purple.m4 Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,102 +0,0 @@
    -dnl ###########################################################################
    -dnl # Configure paths for libpurple
    -dnl # Gary Kramlich 2005
    -dnl #
    -dnl # Based off of glib-2.0.m4 by Owen Taylor
    -dnl ###########################################################################
    -
    -dnl ###########################################################################
    -dnl # AM_PATH_PURPLE([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
    -dnl #
    -dnl # Test for purple and define PURPLE_CFLAGS, PURPLE_LIBS, PURPLE_DATADIR, and
    -dnl # PURPLE_LIBDIR
    -dnl ###########################################################################
    -AC_DEFUN([AM_PATH_PURPLE],
    -[dnl
    - AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
    -
    - no_purple=""
    -
    - if test x"$PKG_CONFIG" != x"no" ; then
    - if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
    - :
    - else
    - echo "*** pkg-config is too old; version 0.7 or newer is required."
    - no_purple="yes"
    - PKG_CONFIG="no"
    - fi
    - else
    - no_purple="yes"
    - fi
    -
    - min_version=ifelse([$1], ,2.0.0,$1)
    - found_version=""
    -
    - AC_MSG_CHECKING(for purple - version >= $min_version)
    -
    - if test x"$no_purple" = x"" ; then
    - PURPLE_DATADIR=`$PKG_CONFIG --variable=datadir purple`
    - PURPLE_LIBDIR=`$PKG_CONFIG --variable=libdir purple`
    -
    - PURPLE_CFLAGS=`$PKG_CONFIG --cflags purple`
    - PURPLE_LIBS=`$PKG_CONFIG --libs purple`
    -
    - purple_version=`$PKG_CONFIG --modversion purple`
    - purple_major_version=`echo $purple_version | cut -d. -f 1`
    - purple_minor_version=`echo $purple_version | cut -d. -f 2`
    -
    - dnl # stash the micro version in a temp variable. Then stash
    - dnl # the numeric for it in purple_micro_version and anything
    - dnl # else in purple_extra_version.
    - purple_micro_version_temp=`echo $purple_version | cut -d. -f 3`
    - purple_micro_version=`echo $purple_micro_version_temp | sed 's/[[^0-9]]//g'`
    - purple_extra_version=`echo $purple_micro_version_temp | sed 's/[[0-9]]//g'`
    -
    - dnl # get the major, minor, and macro that the user gave us
    - min_major_version=`echo $min_version | cut -d. -f 1`
    - min_minor_version=`echo $min_version | cut -d. -f 2`
    - min_micro_version=`echo $min_version | cut -d. -f 3`
    -
    - dnl # check the users version against the version from pkg-config
    - if test $purple_major_version -eq $min_major_version -a \
    - $purple_minor_version -ge $min_minor_version -a \
    - $purple_micro_version -ge $min_micro_version
    - then
    - :
    - else
    - no_purple="yes"
    - found_version="$purple_major_version.$purple_minor_version.$purple_micro_version$purple_extra_version"
    - fi
    -
    - dnl # Do we want a compile test here?
    - fi
    -
    - if test x"$no_purple" = x"" ; then
    - AC_MSG_RESULT(yes (version $purple_major_version.$purple_minor_version.$purple_micro_version$purple_extra_version))
    - ifelse([$2], , :, [$2])
    - else
    - AC_MSG_RESULT(no)
    - if test x"$PKG_CONFIG" = x"no" ; then
    - echo "*** A new enough version of pkg-config was not found."
    - echo "*** See http://www.freedesktop.org/software/pkgconfig/"
    - fi
    -
    - if test x"found_version" != x"" ; then
    - echo "*** A new enough version of purple was not found."
    - echo "*** You have version $found_version"
    - echo "*** See https://pidgin.im/"
    - fi
    -
    - PURPLE_CFLAGS=""
    - PURPLE_LIBS=""
    - PURPLE_DATADIR=""
    - PURPLE_LIBDIR=""
    -
    - ifelse([$3], , :, [$3])
    - fi
    -
    - AC_SUBST(PURPLE_CFLAGS)
    - AC_SUBST(PURPLE_LIBS)
    - AC_SUBST(PURPLE_DATADIR)
    - AC_SUBST(PURPLE_LIBDIR)
    -])
    --- a/pidgin/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,319 +0,0 @@
    -EXTRA_DIST = \
    - about.ui \
    - about.html \
    - about.md \
    - credits.json \
    - gtk3compat.h \
    - gtkdebug.html \
    - logo.png \
    - pidgin.gresource.xml \
    - Makefile.mingw \
    - data/im.pidgin.Pidgin.appdata.xml.in \
    - data/im.pidgin.Pidgin.desktop.in \
    - data/pidgin-3.pc.in \
    - data/pidgin-3-uninstalled.pc.in \
    - win32/MinimizeToTray.h \
    - win32/MinimizeToTray.c \
    - win32/pidgin_dll_rc.rc.in \
    - win32/pidgin_exe_rc.rc.in \
    - win32/prepare-workspace.sh \
    - win32/gtkdocklet-win32.c \
    - win32/gtkwin32dep.c \
    - win32/gtkwin32dep.h \
    - win32/resource.h \
    - win32/untar.c \
    - win32/untar.h \
    - win32/winpidgin.c \
    - win32/nsis/generate_gtk_zip.sh \
    - win32/nsis/pixmaps/pidgin-header.bmp \
    - win32/nsis/pixmaps/pidgin-intro.bmp \
    - win32/nsis/pixmaps/pidgin-install.ico \
    - win32/nsis/available.lst \
    - win32/nsis/pidgin-installer.nsi \
    - win32/nsis/pidgin-plugin.nsh \
    - win32/nsis/create_nsis_translations.pl \
    - win32/nsis/nsis_translations.desktop.in
    -
    -if ENABLE_GTK
    -
    -SUBDIRS = . pixmaps plugins themes
    -
    -# XXX: should this be lib_, or noinst_?
    -lib_LTLIBRARIES = libpidgin.la
    -bin_PROGRAMS = pidgin
    -
    -libpidgin_la_SOURCES = \
    - pidginstock.c \
    - gtkaccount.c \
    - gtkblist.c \
    - gtkblist-theme.c \
    - gtkblist-theme-loader.c \
    - gtkcellrendererexpander.c \
    - gtkcertmgr.c \
    - gtkconn.c \
    - gtkconv.c \
    - gtkconv-theme.c \
    - gtkconv-theme-loader.c \
    - gtkdebug.c \
    - gtkdialogs.c \
    - gtkdnd-hints.c \
    - gtkdocklet.c \
    - gtkicon-theme.c \
    - gtkicon-theme-loader.c \
    - gtkidle.c \
    - gtklog.c \
    - gtkmedia.c \
    - gtkmenutray.c \
    - gtknotify.c \
    - gtkplugin.c \
    - gtkpluginpref.c \
    - gtkpounce.c \
    - gtkprefs.c \
    - gtkprivacy.c \
    - gtkrequest.c \
    - gtkroomlist.c \
    - gtksavedstatuses.c \
    - gtkscrollbook.c \
    - gtksmiley-manager.c \
    - gtksmiley-theme.c \
    - gtksound.c \
    - gtkstatus-icon-theme.c \
    - gtkstatusbox.c \
    - gtkutils.c \
    - gtkwebview.c \
    - gtkwebviewtoolbar.c \
    - gtkwhiteboard.c \
    - gtkxfer.c \
    - libpidgin.c \
    - minidialog.c \
    - pidginabout.c \
    - pidginresources.c \
    - pidgintooltip.c
    -
    -libpidgin_la_headers = \
    - gtkaccount.h \
    - gtkblist.h \
    - gtkblist-theme.h \
    - gtkblist-theme-loader.h \
    - gtkcellrendererexpander.h \
    - gtkcertmgr.h \
    - gtkconn.h \
    - gtkconv.h \
    - gtkconvwin.h \
    - gtkconv-theme.h \
    - gtkconv-theme-loader.h \
    - gtkdebug.h \
    - gtkdialogs.h \
    - gtkdnd-hints.h \
    - gtkdocklet.h \
    - gtkicon-theme.h \
    - gtkicon-theme-loader.h \
    - gtkidle.h \
    - gtklog.h \
    - gtkmedia.h \
    - gtkmenutray.h \
    - gtknickcolors.h \
    - gtknotify.h \
    - gtkplugin.h \
    - gtkpluginpref.h \
    - gtkprefs.h \
    - gtkprivacy.h \
    - gtkpounce.h \
    - gtkrequest.h \
    - gtkroomlist.h \
    - gtksavedstatuses.h \
    - gtkscrollbook.h \
    - gtksmiley-manager.h \
    - gtksmiley-theme.h \
    - gtksound.h \
    - gtkstatus-icon-theme.h \
    - gtkstatusbox.h \
    - pidginstock.h \
    - gtkutils.h \
    - gtkwebview.h \
    - gtkwebviewtoolbar.h \
    - gtkwhiteboard.h \
    - gtkxfer.h \
    - minidialog.h \
    - pidginabout.h \
    - pidgintooltip.h \
    - pidgin.h
    -
    -pidgin_SOURCES = \
    - pidgin.c
    -
    -noinst_HEADERS= gtkinternal.h
    -
    -if IS_WIN32
    -libpidgin_la_SOURCES += \
    - win32/gtkwin32dep.c \
    - win32/untar.c
    -
    -# Files that looks like obsolete (were used in Pidgin2):
    -# win32/gtkdocklet-win32.c
    -# win32/MinimizeToTray.c
    -# win32/MinimizeToTray.h
    -
    -pidgin_SOURCES += \
    - win32/winpidgin.c \
    - win32/pidgin_exe_rc.rc
    -
    -libpidgin_la_headers += \
    - win32/gtkwin32dep.h \
    - win32/resource.h \
    - win32/untar.h
    -
    -.rc.o: %.rc
    - $(AM_V_GEN)$(WINDRES) -I $(srcdir)/win32 -I $(srcdir) -i $< -o $@
    -
    -LIBPIDGIN_WIN32RES = win32/pidgin_dll_rc.o
    -LIBPIDGIN_WIN32RES_LDFLAGS = -Wl,$(LIBPIDGIN_WIN32RES)
    -endif
    -
    -libpidginincludedir=$(includedir)/pidgin
    -libpidgininclude_HEADERS = \
    - $(libpidgin_la_headers)
    -
    -libpidgin_la_builtheaders = pidginresources.h
    -libpidgin_la_builtsources = pidginresources.c
    -
    -BUILT_SOURCES = $(libpidgin_la_builtheaders) $(libpidgin_la_builtsources)
    -
    -CLEANFILES = pidginresources.h pidginresources.c
    -
    -%resources.h: %.gresource.xml
    - $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --generate-header --target $@ --c-name $* --sourcedir $(srcdir) $<
    -
    -%resources.c: %.gresource.xml
    - $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --generate-source --target $@ --c-name $* --sourcedir $(srcdir) $<
    -
    -pidginresources.c: gtkdebug.html
    -pidginresources.h: gtkdebug.html
    -gtkdebug.c: pidginresources.h
    -
    -libpidgin_la_DEPENDENCIES = @LIBOBJS@ $(LIBPIDGIN_WIN32RES)
    -libpidgin_la_LDFLAGS = -export-dynamic -no-undefined \
    - -version-info $(PURPLE_LT_VERSION_INFO) $(LIBPIDGIN_WIN32RES_LDFLAGS)
    -libpidgin_la_LIBADD = \
    - @LIBOBJS@ \
    - $(ENCHANT_LIBS) \
    - $(GLIB_LIBS) \
    - $(GPLUGIN_LIBS) \
    - $(GCR_LIBS) \
    - $(DBUS_LIBS) \
    - $(GSTREAMER_LIBS) \
    - $(GSTVIDEO_LIBS) \
    - $(GSTINTERFACES_LIBS) \
    - $(INTLLIBS) \
    - $(JSON_LIBS) \
    - $(LIBXML_LIBS) \
    - $(WEBKIT_LIBS) \
    - $(GTK_LIBS) \
    - $(X11_LIBS) \
    - $(INTROSPECTION_LIBS) \
    - $(top_builddir)/libpurple/libpurple.la
    -
    -pidgin_DEPENDENCIES = $(builddir)/libpidgin.la
    -pidgin_LDFLAGS = -export-dynamic
    -pidgin_LDADD = $(builddir)/libpidgin.la $(libpidgin_la_LIBADD)
    -
    -if IS_WIN32
    -libpidgin_la_LIBADD += -lwinmm
    -pidgin_LDFLAGS += -mwindows
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/libpurple/ \
    - -I$(top_builddir) \
    - -I$(top_srcdir) \
    - $(ENCHANT_CFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(GCR_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(GSTVIDEO_CFLAGS) \
    - $(GSTINTERFACES_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(JSON_CFLAGS) \
    - $(X11_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(WEBKIT_CFLAGS) \
    - $(INTROSPECTION_CFLAGS)
    -
    -pkgconfigdir = $(libdir)/pkgconfig
    -pkgconfig_DATA = data/pidgin-3.pc
    -
    -if INSTALL_I18N
    -DESKTOP_FILE=data/im.pidgin.Pidgin.desktop
    -
    -appsdir = $(datadir)/applications
    -apps_in_files = data/im.pidgin.Pidgin.desktop.in
    -apps_DATA = $(apps_in_files:.desktop.in=.desktop)
    -
    -# silenced INTLTOOL_DESKTOP_RULE
    -%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po)
    - $(AM_V_GEN) LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ > /dev/null
    -
    -appdatadir = $(datarootdir)/metainfo
    -appdata_DATA = $(appdata_in_files:.xml.in=.xml)
    -appdata_in_files = data/im.pidgin.Pidgin.appdata.xml.in
    -
    -@INTLTOOL_XML_RULE@
    -
    -endif # INSTALL_I18N
    -
    -CLEANFILES += $(appdata_DATA)
    -DISTCLEANFILES = $(DESKTOP_FILE)
    -
    --include $(INTROSPECTION_MAKEFILE)
    -INTROSPECTION_GIRS =
    -INTROSPECTION_SCANNER_ARGS = --warn-all --add-include-path=$(top_builddir)/libpurple --add-include-path=$(prefix)/share/gir-1.0 --pkg=purple-$(PURPLE_MAJOR_VERSION) --pkg-export=pidgin-$(PURPLE_MAJOR_VERSION)
    -INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/libpurple --includedir=$(prefix)/share/gir-1.0
    -
    -if HAVE_INTROSPECTION
    -introspection_sources = $(libpidgininclude_HEADERS)
    -
    -Pidgin-$(PURPLE_MAJOR_VERSION).$(PURPLE_MINOR_VERSION).gir: $(builddir)/libpidgin.la
    -Pidgin_3_0_gir_INCLUDES = GObject-2.0 Gtk-3.0 Purple-$(PURPLE_MAJOR_VERSION).$(PURPLE_MINOR_VERSION)
    -Pidgin_3_0_gir_CFLAGS = \
    - $(INCLUDES) \
    - -DDATADIR=\"$(datadir)\" \
    - -DLIBDIR=\"$(libdir)/pidgin/\" \
    - -DLOCALEDIR=\"$(datadir)/locale\" \
    - -DSYSCONFDIR=\"$(sysconfdir)\" \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/libpurple/ \
    - -I$(top_builddir) \
    - -I$(top_srcdir) \
    - $(GLIB_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(GCR_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(GSTVIDEO_CFLAGS) \
    - $(GSTINTERFACES_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(X11_CFLAGS) \
    - $(DBUS_CFLAGS) \
    - $(GTKSPELL_CFLAGS) \
    - $(LIBXML_CFLAGS) \
    - $(WEBKIT_CFLAGS) \
    - $(INTROSPECTION_CFLAGS)
    -
    -Pidgin_3_0_gir_LIBS = $(builddir)/libpidgin.la
    -Pidgin_3_0_gir_FILES = $(introspection_sources)
    -INTROSPECTION_GIRS += Pidgin-$(PURPLE_MAJOR_VERSION).$(PURPLE_MINOR_VERSION).gir
    -INTROSPECTION_SCANNER_ENV = PKG_CONFIG_PATH=$(top_builddir)/libpurple/data/
    -
    -girdir = $(prefix)/share/gir-1.0 $(INTROSPECTION_GIRDIR)
    -gir_DATA = $(INTROSPECTION_GIRS)
    -
    -typelibdir = $(prefix)/share/gir-1.0 $(INTROSPECTION_TYPELIBDIR)
    -typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
    -
    -CLEANFILES += $(gir_DATA) $(typelib_DATA)
    -endif
    -
    -endif # ENABLE_GTK
    --- a/pidgin/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,198 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of Pidgin
    -#
    -
    -PIDGIN_TREE_TOP := ..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -DEFINES := $(subst -DWIN32_LEAN_AND_MEAN,,$(DEFINES))
    -
    -##
    -## VARIABLE DEFINITIONS
    -##
    -EXE_TARGET := pidgin
    -PIDGIN_TARGET := pidgin
    -EXE_NAME := $(EXE_TARGET).exe
    -
    -WINAPP := -mwindows
    -
    -LDFLAGS := $(WINAPP) $(LD_HARDENING_OPTIONS) -Wl,--enable-auto-import -lssp
    -
    -##
    -## INCLUDE PATHS
    -##
    -PURPLE_INCLUDE_PATHS = \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP) \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include
    -
    -INCLUDE_PATHS += \
    - $(PURPLE_INCLUDE_PATHS) \
    - -I$(PIDGIN_TOP) \
    - -I$(PIDGIN_TOP)/win32 \
    - $(VV_INCLUDE_PATHS) \
    - -I$(GTK_TOP)/include/gtk-2.0 \
    - -I$(GTK_TOP)/include/pango-1.0 \
    - -I$(GTK_TOP)/include/atk-1.0 \
    - -I$(GTK_TOP)/include/cairo \
    - -I$(GTK_TOP)/include/gdk-pixbuf-2.0 \
    - -I$(GTK_TOP)/lib/gtk-2.0/include \
    - -I$(LIBSOUP_TOP)/include/libsoup-2.4 \
    - -I$(LIBGADU_TOP)/include \
    - -I$(WEBKITGTK_TOP)/include/webkitgtk-1.0
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(WEBKITGTK_TOP)/lib \
    - -L$(LIBGADU_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L$(PIDGIN_TOP) \
    - $(VV_LIB_PATHS)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -PIDGIN_C_SRC = \
    - gtkaccount.c \
    - gtkblist-theme-loader.c \
    - gtkblist-theme.c \
    - gtkblist.c \
    - gtkcellrendererexpander.c \
    - gtkcertmgr.c \
    - gtkconn.c \
    - gtkconv.c \
    - gtkconv-theme.c \
    - gtkconv-theme-loader.c \
    - gtkdebug.c \
    - gtkdialogs.c \
    - gtkdnd-hints.c \
    - gtkdocklet.c \
    - gtkicon-theme-loader.c \
    - gtkicon-theme.c \
    - gtkidle.c \
    - gtklog.c \
    - gtkmedia.c \
    - gtkmenutray.c \
    - gtknotify.c \
    - gtkplugin.c \
    - gtkpluginpref.c \
    - gtkpounce.c \
    - gtkprefs.c \
    - gtkprivacy.c \
    - gtkrequest.c \
    - gtkroomlist.c \
    - gtksavedstatuses.c \
    - gtkscrollbook.c \
    - gtksmiley-manager.c \
    - gtksmiley-theme.c \
    - gtksound.c \
    - gtkstatus-icon-theme.c \
    - gtkstatusbox.c \
    - gtkutils.c \
    - gtkwebview.c \
    - gtkwebviewtoolbar.c \
    - gtkwhiteboard.c \
    - gtkxfer.c \
    - libpidgin.c \
    - minidialog.c \
    - pidgin.c \
    - pidginstock.c \
    - pidgintooltip.c \
    - win32/gtkwin32dep.c \
    - win32/untar.c
    -
    -PIDGIN_RC_SRC = win32/pidgin_dll_rc.rc
    -PIDGIN_OBJECTS = $(PIDGIN_C_SRC:%.c=%.o) $(PIDGIN_RC_SRC:%.rc=%.o)
    -
    -EXE_RC_SRC = win32/pidgin_exe_rc.rc
    -EXE_C_SRC = win32/winpidgin.c
    -EXE_OBJECTS = $(EXE_C_SRC:%.c=%.o) $(EXE_RC_SRC:%.rc=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -
    -PIDGIN_LIBS = \
    - -lintl \
    - -lglib-2.0 \
    - -lgobject-2.0 \
    - -lgthread-2.0 \
    - -lpurple \
    - -lz \
    - -lgtk-win32-2.0 \
    - -latk-1.0 \
    - -lcairo \
    - -lpango-1.0 \
    - -lgdk-win32-2.0 \
    - -lgdk_pixbuf-2.0 \
    - -lgdi32 \
    - -lgadu \
    - -lwinmm \
    - $(VV_LIBS) \
    - -lwebkitgtk-1.0
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install install_shallow clean
    -
    -all: $(EXE_TARGET).exe $(PIDGIN_TARGET).dll
    - $(MAKE_at) $(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE)
    -
    -gtkdialogs.c: $(PIDGIN_REVISION_H)
    -
    -win32/pidgin_exe_rc.rc: win32/pidgin_exe_rc.rc.in $(PIDGIN_TREE_TOP)/VERSION
    - @echo -e " GEN\t$@"
    - @sed -e 's/@PURPLE_VERSION@/$(PIDGIN_VERSION)/g' \
    - -e 's/@PURPLE_MAJOR_VERSION@/$(PURPLE_MAJOR_VERSION)/g' \
    - -e 's/@PURPLE_MINOR_VERSION@/$(PURPLE_MINOR_VERSION)/g' \
    - -e 's/@PURPLE_MICRO_VERSION@/$(PURPLE_MICRO_VERSION)/g' \
    - -e 's/@PURPLE_API_VERSION@/$(PURPLE_API_VERSION)/g' \
    - $@.in > $@
    -
    -install_shallow: $(PIDGIN_INSTALL_DIR) $(EXE_TARGET).exe $(PIDGIN_TARGET).dll
    - cp $(EXE_TARGET).exe $(PIDGIN_TARGET).dll $(PIDGIN_INSTALL_DIR)
    - mkdir -p "$(PIDGIN_INSTALL_DIR)/theme"
    - cp -r themes/* "$(PIDGIN_INSTALL_DIR)/theme/"
    - chmod -R 777 "$(PIDGIN_INSTALL_DIR)/theme/"
    -
    -install: install_shallow all
    - $(MAKE_at) $(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE) install
    - $(MAKE_at) $(MAKE) -C $(PIDGIN_PIXMAPS_TOP) -f $(MINGW_MAKEFILE) install
    -
    -win32/pidgin_dll_rc.rc: win32/pidgin_dll_rc.rc.in $(PIDGIN_TREE_TOP)/VERSION
    - @echo -e " GEN\t$@"
    - @sed -e 's/@PURPLE_VERSION@/$(PIDGIN_VERSION)/g' \
    - -e 's/@PURPLE_MAJOR_VERSION@/$(PURPLE_MAJOR_VERSION)/g' \
    - -e 's/@PURPLE_MINOR_VERSION@/$(PURPLE_MINOR_VERSION)/g' \
    - -e 's/@PURPLE_MICRO_VERSION@/$(PURPLE_MICRO_VERSION)/g' \
    - -e 's/@PURPLE_API_VERSION@/$(PURPLE_API_VERSION)/g' \
    - $@.in > $@
    -
    -$(EXE_OBJECTS) $(PIDGIN_OBJECTS): $(PIDGIN_CONFIG_H)
    -
    -gtkdebug.c: gtkdebug.html.h
    -
    -$(PIDGIN_TARGET).dll $(PIDGIN_TARGET).dll.a: $(PURPLE_DLL).a $(PIDGIN_OBJECTS)
    - $(CC) -shared $(PIDGIN_OBJECTS) $(LIB_PATHS) $(PIDGIN_LIBS) $(DLL_LD_FLAGS) -Wl,--output-def,$(PIDGIN_TARGET).def,--out-implib,$(PIDGIN_TARGET).dll.a -o $(PIDGIN_TARGET).dll
    -
    -$(EXE_TARGET).exe: $(PIDGIN_CONFIG_H) $(PIDGIN_DLL).a $(EXE_OBJECTS) $(PIDGIN_TARGET).dll
    - $(CC) $(EXE_OBJECTS) $(LDFLAGS) -o $(EXE_TARGET).exe
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - $(MAKE_at) $(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE) clean
    - $(MAKE_at) $(MAKE) -C $(PIDGIN_PIXMAPS_TOP) -f $(MINGW_MAKEFILE) clean
    - rm -f $(PIDGIN_OBJECTS) $(PIDGIN_RC_SRC) $(EXE_OBJECTS) $(EXE_RC_SRC)
    - rm -f $(PIDGIN_TARGET).dll $(PIDGIN_TARGET).dll.a $(PIDGIN_TARGET).def
    - rm -f $(EXE_TARGET).exe
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/pidgin/gtkblist.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkblist.c Fri Nov 17 14:23:40 2017 +0300
    @@ -55,6 +55,7 @@
    #include "gtkstatusbox.h"
    #include "gtkscrollbook.h"
    #include "gtksmiley-manager.h"
    +#include "gtkstyle.h"
    #include "gtkblist-theme.h"
    #include "gtkblist-theme-loader.h"
    #include "gtkutils.h"
    @@ -4251,7 +4252,7 @@
    gchar *
    pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased)
    {
    - const char *name, *name_color, *name_font, *status_color, *status_font;
    + const char *name, *name_color, *name_font, *status_color, *status_font, *dim_grey;
    char *text = NULL;
    PurpleProtocol *protocol = NULL;
    PurpleContact *contact;
    @@ -4354,13 +4355,15 @@
    theme = pidgin_blist_get_theme();
    name_color = NULL;
    + dim_grey = pidgin_style_is_dark(NULL) ? "light slate grey" : "dim grey";
    +
    if (theme) {
    if (purple_presence_is_idle(presence)) {
    namefont = statusfont = pidgin_blist_theme_get_idle_text_info(theme);
    - name_color = "dim grey";
    + name_color = dim_grey;
    } else if (!purple_presence_is_online(presence)) {
    namefont = pidgin_blist_theme_get_offline_text_info(theme);
    - name_color = "dim grey";
    + name_color = dim_grey;
    statusfont = pidgin_blist_theme_get_status_text_info(theme);
    } else if (purple_presence_is_available(presence)) {
    namefont = pidgin_blist_theme_get_online_text_info(theme);
    @@ -4374,14 +4377,14 @@
    && (purple_presence_is_idle(presence)
    || !purple_presence_is_online(presence)))
    {
    - name_color = "dim grey";
    + name_color = dim_grey;
    }
    }
    name_color = theme_font_get_color_default(namefont, name_color);
    name_font = theme_font_get_face_default(namefont, "");
    - status_color = theme_font_get_color_default(statusfont, "dim grey");
    + status_color = theme_font_get_color_default(statusfont, dim_grey);
    status_font = theme_font_get_face_default(statusfont, "");
    if (aliased && selected) {
    @@ -6554,7 +6557,7 @@
    textcolor = pidgin_theme_font_get_color_describe(pair);
    else
    /* If no theme them default to making idle buddy names grey */
    - textcolor = "dim grey";
    + textcolor = pidgin_style_is_dark(NULL) ? "light slate grey" : "dim grey";
    if (textcolor) {
    idle = g_strdup_printf("<span color='%s' font_desc='%s'>%d:%02d</span>",
    --- a/pidgin/gtkblist.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkblist.h Fri Nov 17 14:23:40 2017 +0300
    @@ -241,7 +241,7 @@
    * This may be an existing pixbuf that has been given an additional ref,
    * so it shouldn't be modified.
    *
    - * Returns: A GdkPixbuf for the emblem to show, or NULL
    + * Returns: (transfer full): A GdkPixbuf for the emblem to show, or NULL
    */
    GdkPixbuf *
    pidgin_blist_get_emblem(PurpleBlistNode *node);
    @@ -250,6 +250,8 @@
    * pidgin_blist_get_status_icon:
    *
    * Useful for the buddy ticker
    + *
    + * Returns: (transfer full): A #GdkPixbuf of status icon.
    */
    GdkPixbuf *pidgin_blist_get_status_icon(PurpleBlistNode *node,
    PidginStatusIconSize size);
    @@ -317,7 +319,7 @@
    *
    * Gets Pidgin's current buddy list theme
    *
    - * Returns: the current theme
    + * Returns: (transfer none): the current theme
    */
    PidginBlistTheme *pidgin_blist_get_theme(void);
    @@ -332,7 +334,7 @@
    *
    * Gets the current list of sort methods.
    *
    - * Returns: A GSlist of sort methods
    + * Returns: (transfer none) (element-type PidginBlistSortMethod): A GSlist of sort methods
    */
    GList *pidgin_blist_get_sort_methods(void);
    @@ -348,7 +350,7 @@
    * pidgin_blist_sort_method_reg:
    * @id: The unique ID of the sorting method
    * @name: The method's name.
    - * @func: A pointer to the function.
    + * @func: (scope call): A pointer to the function.
    *
    * Registers a buddy list sorting method.
    */
    --- a/pidgin/gtkconv-theme.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkconv-theme.h Fri Nov 17 14:23:40 2017 +0300
    @@ -179,7 +179,7 @@
    *
    * Get a list of available variants for a conversation theme.
    *
    - * Returns: The list of variants. This GList and the string data are owned by
    + * Returns: (element-type utf8): The list of variants. This GList and the string data are owned by
    * the theme and should not be freed by the caller.
    */
    const GList *pidgin_conversation_theme_get_variants(PidginConvTheme *theme);
    @@ -210,7 +210,7 @@
    *
    * Get (and reference) the array of nick colors
    *
    - * Returns: Pointer to GArray of nick colors, or NULL if no colors in theme
    + * Returns: (transfer container) (element-type GdkRGBA): Pointer to GArray of nick colors, or NULL if no colors in theme
    */
    GArray *pidgin_conversation_theme_get_nick_colors(PidginConvTheme *theme);
    --- a/pidgin/gtkconv.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkconv.c Fri Nov 17 14:23:40 2017 +0300
    @@ -61,6 +61,7 @@
    #include "gtkpounce.h"
    #include "gtkprefs.h"
    #include "gtkprivacy.h"
    +#include "gtkstyle.h"
    #include "gtkutils.h"
    #include "gtkwebview.h"
    #include "pidginstock.h"
    @@ -8940,6 +8941,57 @@
    e2ee_stock = NULL;
    }
    +/* Invalidate the first tab color set */
    +static gboolean tab_color_fuse = TRUE;
    +
    +static void
    +pidgin_conversations_set_tab_colors(void)
    +{
    + /* Set default tab colors */
    + GString *str = g_string_new(NULL);
    + GtkSettings *settings = gtk_settings_get_default();
    + GtkStyle *parent = gtk_rc_get_style_by_paths(settings, "tab-container.tab-label*", NULL, G_TYPE_NONE), *now;
    + struct {
    + const char *stylename;
    + const char *labelname;
    + const char *color;
    + } styles[] = {
    + {"pidgin_tab_label_typing_default", "tab-label-typing", "#4e9a06"},
    + {"pidgin_tab_label_typed_default", "tab-label-typed", "#c4a000"},
    + {"pidgin_tab_label_attention_default", "tab-label-attention", "#006aff"},
    + {"pidgin_tab_label_unreadchat_default", "tab-label-unreadchat", "#cc0000"},
    + {"pidgin_tab_label_event_default", "tab-label-event", "#888a85"},
    + {NULL, NULL, NULL}
    + };
    + int iter;
    +
    + if(tab_color_fuse) {
    + tab_color_fuse = FALSE;
    + return;
    + }
    +
    + for (iter = 0; styles[iter].stylename; iter++) {
    + now = gtk_rc_get_style_by_paths(settings, styles[iter].labelname, NULL, G_TYPE_NONE);
    + if (parent == now ||
    + (parent && now && parent->rc_style == now->rc_style)) {
    + GdkColor color;
    + gdk_color_parse(styles[iter].color, &color);
    + pidgin_style_adjust_contrast(gtk_widget_get_default_style(), &color);
    +
    + g_string_append_printf(str, "style \"%s\" {\n"
    + "fg[ACTIVE] = \"%s\"\n"
    + "}\n"
    + "widget \"*%s\" style \"%s\"\n",
    + styles[iter].stylename,
    + gdk_color_to_string(&color),
    + styles[iter].labelname, styles[iter].stylename);
    + }
    + }
    + gtk_rc_parse_string(str->str);
    + g_string_free(str, TRUE);
    + gtk_rc_reset_styles(settings);
    +}
    +
    void
    pidgin_conversations_uninit(void)
    {
    @@ -10247,6 +10299,9 @@
    purple_signal_emit(pidgin_conversations_get_handle(),
    "conversation-window-created", win);
    + /* Fix colours */
    + pidgin_conversations_set_tab_colors();
    +
    return win;
    }
    @@ -11210,6 +11265,9 @@
    gdk_rgba_parse(&nick_highlight, DEFAULT_HIGHLIGHT_COLOR);
    gdk_rgba_parse(&send_color, DEFAULT_SEND_COLOR);
    + pidgin_style_adjust_contrast(NULL, &nick_highlight);
    + pidgin_style_adjust_contrast(NULL, &send_color);
    +
    srand(background.red * 65535 + background.green * 65535 + background.blue * 65535 + 1);
    breakout_time = time(NULL) + 3;
    --- a/pidgin/gtkconv.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkconv.h Fri Nov 17 14:23:40 2017 +0300
    @@ -180,7 +180,7 @@
    *
    * Returns the default theme for GTK+ conversations.
    *
    - * Returns: The default GTK+ conversation theme.
    + * Returns: (transfer none): The default GTK+ conversation theme.
    */
    PurpleTheme *pidgin_conversations_get_default_theme(void);
    @@ -222,7 +222,7 @@
    * converations returned if greater than zero. The returned list should
    * be freed by the caller.
    *
    - * Returns: List of PurpleConversation matching criteria, or %NULL.
    + * Returns: (transfer container) (element-type PurpleConversation): List of PurpleConversation matching criteria, or %NULL.
    */
    GList *
    pidgin_conversations_get_unseen_all(PidginUnseenState min_state,
    @@ -243,7 +243,7 @@
    * returned if greater than zero. The returned list should be freed by the
    * caller.
    *
    - * Returns: List of PurpleIMConversation matching criteria, or %NULL.
    + * Returns: (transfer container) (element-type PurpleConversation): List of PurpleIMConversation matching criteria, or %NULL.
    */
    GList *
    pidgin_conversations_get_unseen_ims(PidginUnseenState min_state,
    @@ -264,7 +264,7 @@
    * returned if greater than zero. The returned list should be freed by the
    * caller.
    *
    - * Returns: List of PurpleChatConversation matching criteria, or %NULL.
    + * Returns: (transfer container) (element-type PurpleConversation): List of PurpleChatConversation matching criteria, or %NULL.
    */
    GList *
    pidgin_conversations_get_unseen_chats(PidginUnseenState min_state,
    @@ -273,8 +273,8 @@
    /**
    * pidgin_conversations_fill_menu:
    - * @menu: Menu widget to add items to.
    - * @convs: List of PurpleConversation to add to menu.
    + * @menu: Menu widget to add items to.
    + * @convs: (element-type PurpleConversation): List of PurpleConversation to add to menu.
    *
    * Fill a menu with a list of conversations. Clicking the conversation
    * menu item will present that conversation to the user.
    @@ -315,7 +315,7 @@
    * @conv: The conversation.
    * @small_icon: Whether to get the small icon.
    *
    - * Returns: The tab icon.
    + * Returns: (transfer full): The tab icon.
    */
    GdkPixbuf *pidgin_conv_get_tab_icon(PurpleConversation *conv, gboolean small_icon);
    --- a/pidgin/gtkconvwin.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkconvwin.h Fri Nov 17 14:23:40 2017 +0300
    @@ -206,7 +206,7 @@
    * pidgin_conv_window_get_active_conversation:
    * @win: The conversation window
    *
    - * Returns: The active #PurpleConversation in @win.
    + * Returns: (transfer none): The active #PurpleConversation in @win.
    */
    PurpleConversation *pidgin_conv_window_get_active_conversation(const PidginConvWindow *win);
    @@ -283,10 +283,23 @@
    * GTK+ Conversation Placement API
    **************************************************************************/
    -typedef void (*PidginConvPlacementFunc)(PidginConversation *);
    +/**
    + * PidginConvPlacementFunc: (skip)
    + */
    +typedef void (*PidginConvPlacementFunc)(PidginConversation *conv);
    +/**
    + * pidgin_conv_placement_get_options: (skip)
    + */
    GList *pidgin_conv_placement_get_options(void);
    +/**
    + * pidgin_conv_placement_get_name: (skip)
    + */
    const char *pidgin_conv_placement_get_name(const char *id);
    +
    +/**
    + * pidgin_conv_placement_place: (skip)
    + */
    void pidgin_conv_placement_place(PidginConversation *gtkconv);
    /**
    --- a/pidgin/gtkdialogs.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkdialogs.h Fri Nov 17 14:23:40 2017 +0300
    @@ -39,17 +39,17 @@
    void pidgin_dialogs_destroy_all(void);
    void pidgin_dialogs_plugins_info(void);
    void pidgin_dialogs_im(void);
    -void pidgin_dialogs_im_with_user(PurpleAccount *, const char *);
    +void pidgin_dialogs_im_with_user(PurpleAccount *account, const char *username);
    void pidgin_dialogs_info(void);
    void pidgin_dialogs_log(void);
    -void pidgin_dialogs_alias_buddy(PurpleBuddy *);
    -void pidgin_dialogs_alias_chat(PurpleChat *);
    -void pidgin_dialogs_remove_buddy(PurpleBuddy *);
    -void pidgin_dialogs_remove_group(PurpleGroup *);
    -void pidgin_dialogs_remove_chat(PurpleChat *);
    -void pidgin_dialogs_remove_contact(PurpleContact *);
    -void pidgin_dialogs_merge_groups(PurpleGroup *, const char *);
    +void pidgin_dialogs_alias_buddy(PurpleBuddy *buddy);
    +void pidgin_dialogs_alias_chat(PurpleChat *chat);
    +void pidgin_dialogs_remove_buddy(PurpleBuddy *buddy);
    +void pidgin_dialogs_remove_group(PurpleGroup *group);
    +void pidgin_dialogs_remove_chat(PurpleChat *chat);
    +void pidgin_dialogs_remove_contact(PurpleContact *contact);
    +void pidgin_dialogs_merge_groups(PurpleGroup *group, const char *name);
    G_END_DECLS
    --- a/pidgin/gtkdocklet.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkdocklet.h Fri Nov 17 14:23:40 2017 +0300
    @@ -45,7 +45,7 @@
    /**
    * pidgin_docklet_get_status_icon:
    *
    - * Returns: The #GtkStatusIcon used for the docklet.
    + * Returns: (transfer none): The #GtkStatusIcon used for the docklet.
    */
    GtkStatusIcon *pidgin_docklet_get_status_icon(void);
    --- a/pidgin/gtkmenutray.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkmenutray.h Fri Nov 17 14:23:40 2017 +0300
    @@ -82,7 +82,7 @@
    *
    * Gets the box for the PidginMenuTray
    *
    - * Returns: The box that this menu tray is using
    + * Returns: (transfer none): The box that this menu tray is using
    */
    GtkWidget *pidgin_menu_tray_get_box(PidginMenuTray *menu_tray);
    --- a/pidgin/gtknotify.c Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtknotify.c Fri Nov 17 14:23:40 2017 +0300
    @@ -1336,13 +1336,7 @@
    GSList *argv = NULL, *argv_remote = NULL;
    gchar **usercmd_argv = NULL;
    - /* Replace some special characters like $ with their percent-encoded
    - value. This shouldn't be necessary because we shell-escape the entire
    - arg before exec'ing the browser, however, we had a report that a URL
    - containing $(xterm) was causing xterm to start on his system. This is
    - obviously a bug on his system, but it's pretty easy for us to protect
    - against it. */
    - uri_escaped = g_uri_escape_string(uri, ":;/%#,+?=&@", FALSE);
    + uri_escaped = purple_uri_escape_for_open(uri);
    web_browser = purple_prefs_get_string(PIDGIN_PREFS_ROOT
    "/browsers/browser");
    --- a/pidgin/gtknotify.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtknotify.h Fri Nov 17 14:23:40 2017 +0300
    @@ -83,8 +83,6 @@
    * pidgin_notify_emails_present:
    *
    * Presents mail dialog to the user.
    - *
    - * Returns: void.
    */
    void pidgin_notify_emails_present(void *data);
    --- a/pidgin/gtkplugin.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkplugin.h Fri Nov 17 14:23:40 2017 +0300
    @@ -41,7 +41,7 @@
    typedef struct _PidginPluginInfo PidginPluginInfo;
    typedef struct _PidginPluginInfoClass PidginPluginInfoClass;
    -typedef GtkWidget *(*PidginPluginConfigFrameCb)(PurplePlugin *);
    +typedef GtkWidget *(*PidginPluginConfigFrameCb)(PurplePlugin *plugin);
    /**
    * PidginPluginInfo:
    --- a/pidgin/gtkpluginpref.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkpluginpref.h Fri Nov 17 14:23:40 2017 +0300
    @@ -41,7 +41,7 @@
    *
    * Creates a Gtk Preference frame for a PurplePluginPrefFrame
    *
    - * Returns: The gtk preference frame
    + * Returns: (transfer full): The gtk preference frame
    */
    GtkWidget *pidgin_plugin_pref_create_frame(PurplePluginPrefFrame *frame);
    --- a/pidgin/gtkprefs.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkprefs.h Fri Nov 17 14:23:40 2017 +0300
    @@ -54,6 +54,8 @@
    * @page: The page to which the new checkbox will be added
    *
    * Add a new checkbox for a boolean preference
    + *
    + * Returns: (transfer full): The new checkbox
    */
    GtkWidget *pidgin_prefs_checkbox(const char *title, const char *key,
    GtkWidget *page);
    @@ -69,9 +71,9 @@
    *
    * Add a new spin button representing an int preference
    *
    - * Returns: An hbox containing both the label and the spinner. Can be
    - * used to set the widgets to sensitive or insensitive based on the
    - * value of a checkbox.
    + * Returns: (transfer full): An hbox containing both the label and the spinner. Can be
    + * used to set the widgets to sensitive or insensitive based on the
    + * value of a checkbox.
    */
    GtkWidget *pidgin_prefs_labeled_spin_button(GtkWidget *page,
    const gchar *title, const char *key, int min, int max, GtkSizeGroup *sg);
    @@ -85,9 +87,9 @@
    *
    * Add a new entry representing a string preference
    *
    - * Returns: An hbox containing both the label and the entry. Can be used to set
    - * the widgets to sensitive or insensitive based on the value of a
    - * checkbox.
    + * Returns: (transfer full) :An hbox containing both the label and the entry. Can be used to set
    + * the widgets to sensitive or insensitive based on the value of a
    + * checkbox.
    */
    GtkWidget *pidgin_prefs_labeled_entry(GtkWidget *page, const gchar *title,
    const char *key, GtkSizeGroup *sg);
    @@ -102,9 +104,9 @@
    * Add a new entry representing a password (string) preference
    * The entry will use a password-style text entry (the text is substituded)
    *
    - * Returns: An hbox containing both the label and the entry. Can be used to set
    - * the widgets to sensitive or insensitive based on the value of a
    - * checkbox.
    + * Returns: (transfer full): An hbox containing both the label and the entry. Can be used to set
    + * the widgets to sensitive or insensitive based on the value of a
    + * checkbox.
    */
    GtkWidget *pidgin_prefs_labeled_password(GtkWidget *page, const gchar *title,
    const char *key, GtkSizeGroup *sg);
    @@ -119,6 +121,8 @@
    * paired as label/value
    *
    * Add a new dropdown representing a preference of the specified type
    + *
    + * Returns: (transfer full): The new dropdown.
    */
    GtkWidget *pidgin_prefs_dropdown(GtkWidget *page, const gchar *title,
    PurplePrefType type, const char *key, ...);
    @@ -130,9 +134,11 @@
    * @type: The type of preference to be stored in the dropdown
    * @key: The key of the pref that will be represented by the dropdown
    * @menuitems: The choices to be added to the dropdown, choices should
    - * be paired as label/value
    + * be paired as label/value
    *
    * Add a new dropdown representing a preference of the specified type
    + *
    + * Returns: (transfer full): The new dropdown.
    */
    GtkWidget *pidgin_prefs_dropdown_from_list(GtkWidget *page,
    const gchar * title, PurplePrefType type, const char *key,
    --- a/pidgin/gtkrequest.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkrequest.h Fri Nov 17 14:23:40 2017 +0300
    @@ -47,7 +47,7 @@
    *
    * Gets dialog window for specified libpurple request.
    *
    - * Returns: The dialog window.
    + * Returns: (transfer none): The dialog window.
    */
    GtkWindow *
    pidgin_request_get_dialog_window(void *ui_handle);
    --- a/pidgin/gtksavedstatuses.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtksavedstatuses.h Fri Nov 17 14:23:40 2017 +0300
    @@ -70,12 +70,12 @@
    /**
    * pidgin_status_menu:
    * @status: The default saved_status to show as 'selected'
    - * @callback: The callback to call when the selection changes
    + * @callback: (scope call): The callback to call when the selection changes
    *
    * Creates a dropdown menu of saved statuses and calls a callback
    * when one is selected
    *
    - * Returns: The menu widget
    + * Returns: (transfer full): The menu widget
    */
    GtkWidget *pidgin_status_menu(PurpleSavedStatus *status, GCallback callback);
    --- a/pidgin/gtksmiley-theme.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtksmiley-theme.h Fri Nov 17 14:23:40 2017 +0300
    @@ -148,7 +148,7 @@
    *
    * Returns the list of currently available smiley themes.
    *
    - * Returns: (transfer none): the #GList of #PidginSmileyTheme's.
    + * Returns: (transfer none) (element-type PidginSmileyTheme): the #GList of #PidginSmileyTheme's.
    */
    GList *
    pidgin_smiley_theme_get_all(void);
    --- a/pidgin/gtkstatusbox.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkstatusbox.h Fri Nov 17 14:23:40 2017 +0300
    @@ -159,7 +159,7 @@
    GType pidgin_status_box_get_type (void) G_GNUC_CONST;
    GtkWidget *pidgin_status_box_new (void);
    -GtkWidget *pidgin_status_box_new_with_account (PurpleAccount *);
    +GtkWidget *pidgin_status_box_new_with_account (PurpleAccount *account);
    void
    pidgin_status_box_add(PidginStatusBox *status_box, PidginStatusBoxItemType type, GdkPixbuf *pixbuf, const char *text, const char *sec_text, gpointer data);
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/pidgin/gtkstyle.c Fri Nov 17 14:23:40 2017 +0300
    @@ -0,0 +1,70 @@
    +/*
    + * @file gtkstyle.c GTK+ Style utility functions
    + * @ingroup pidgin
    + */
    +
    +/* pidgin
    + *
    + * Pidgin is the legal property of its developers, whose names are too numerous
    + * to list here. Please refer to the COPYRIGHT file distributed with this
    + * source distribution.
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + *
    + */
    +#include "gtkstyle.h"
    +
    +/* Assume light mode */
    +static gboolean dark_mode_cache = FALSE;
    +
    +gboolean
    +pidgin_style_is_dark(GtkStyle *style) {
    + GdkColor bg;
    +
    + if (!style) {
    + return dark_mode_cache;
    + }
    +
    + bg = style->base[GTK_STATE_NORMAL];
    +
    + if (bg.red != 0xFFFF || bg.green != 0xFFFF || bg.blue != 0xFFFF) {
    + dark_mode_cache = ((int) bg.red + (int) bg.green + (int) bg.blue) < (65536 * 3 / 2);
    + }
    +
    + return dark_mode_cache;
    +}
    +
    +void
    +pidgin_style_adjust_contrast(GtkStyle *style, GdkColor *color) {
    + if (pidgin_style_is_dark(style)) {
    + gdouble r, g, b, h, s, v;
    +
    + r = ((gdouble) color->red) / 65535.0;
    + g = ((gdouble) color->green) / 65535.0;
    + b = ((gdouble) color->blue) / 65535.0;
    +
    + gtk_rgb_to_hsv(r, g, b, &h, &s, &v);
    +
    + v += 0.3;
    + v = v > 1.0 ? 1.0 : v;
    + s = 0.7;
    +
    + gtk_hsv_to_rgb(h, s, v, &r, &g, &b);
    +
    + color->red = (guint16) (r * 65535.0);
    + color->green = (guint16) (g * 65535.0);
    + color->blue = (guint16) (b * 65535.0);
    + }
    +}
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/pidgin/gtkstyle.h Fri Nov 17 14:23:40 2017 +0300
    @@ -0,0 +1,59 @@
    +/**
    + * @file gtkstyle.h GTK+ Style utility functions
    + * @ingroup pidgin
    + */
    +
    +/* pidgin
    + *
    + * Pidgin is the legal property of its developers, whose names are too numerous
    + * to list here. Please refer to the COPYRIGHT file distributed with this
    + * source distribution.
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + */
    +#ifndef _PIDGINSTYLE_H_
    +#define _PIDGINSTYLE_H_
    +
    +#include <gtk/gtk.h>
    +
    +G_BEGIN_DECLS
    +
    +/*@{*/
    +
    +/**
    + * Returns TRUE if dark mode is enabled and foreground colours should be invertred
    + *
    + * @param style The GtkStyle in use, or NULL to use a cached version.
    + *
    + * @return @c TRUE if dark mode, @c FALSE otherwise
    + */
    +
    +gboolean pidgin_style_is_dark(GtkStyle *style);
    +
    +/**
    + * Lighten a color if dark mode is enabled.
    + *
    + * @param style The GtkStyle in use.
    + *
    + * @param color Color to be lightened. Transformed color will be written here.
    + */
    +
    +void pidgin_style_adjust_contrast(GtkStyle *style, GdkColor *color);
    +
    +/*@}*/
    +
    +G_END_DECLS
    +
    +#endif /* _PIDGINSTYLE_H_ */
    --- a/pidgin/gtkutils.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkutils.h Fri Nov 17 14:23:40 2017 +0300
    @@ -104,7 +104,7 @@
    * function puts both widgets in a nice GtkFrame. They're separated by an
    * attractive GtkSeparator.
    *
    - * Returns: The GtkFrame containing the toolbar and webview.
    + * Returns: (transfer full): The GtkFrame containing the toolbar and webview.
    */
    GtkWidget *pidgin_create_webview(gboolean editable, GtkWidget **webview_ret, GtkWidget **sw_ret);
    @@ -114,7 +114,7 @@
    *
    * Creates a small button
    *
    - * Returns: A GtkButton created from the image.
    + * Returns: (transfer full): A GtkButton created from the image.
    */
    GtkWidget *pidgin_create_small_button(GtkWidget *image);
    @@ -126,6 +126,8 @@
    * @resizable: Whether the window should be resizable (%TRUE) or not (%FALSE)
    *
    * Creates a new window
    + *
    + * Returns: (transfer full): A new window.
    */
    GtkWidget *pidgin_create_window(const char *title, guint border_width, const char *role, gboolean resizable);
    @@ -137,6 +139,8 @@
    * @resizable: Whether the window should be resizable (%TRUE) or not (%FALSE)
    *
    * Creates a new dialog window
    + *
    + * Returns: (transfer full): A new dialog window.
    */
    GtkWidget *pidgin_create_dialog(const char *title, guint border_width, const char *role, gboolean resizable);
    @@ -144,6 +148,8 @@
    * pidgin_create_video_widget:
    *
    * Creates a new drawing area suitable for displaying a video
    + *
    + * Returns: (transfer full): A new drawing area for displaying video.
    */
    GtkWidget *pidgin_create_video_widget(void);
    @@ -154,6 +160,8 @@
    * @spacing: the number of pixels to place by default between children
    *
    * Retrieves the main content box (vbox) from a pidgin dialog window
    + *
    + * Returns: (transfer none): The main vbox from @dialog.
    */
    GtkWidget *pidgin_dialog_get_vbox_with_properties(GtkDialog *dialog, gboolean homogeneous, gint spacing);
    @@ -162,19 +170,21 @@
    * @dialog: The dialog window
    *
    * Retrieves the main content box (vbox) from a pidgin dialog window
    + *
    + * Returns: (transfer none): the main vbox from @dialog.
    */
    GtkWidget *pidgin_dialog_get_vbox(GtkDialog *dialog);
    /**
    * pidgin_dialog_add_button:
    - * @dialog: The dialog window
    - * @label: The stock-id or the label for the button
    - * @callback: The callback function for the button
    - * @callbackdata: The user data for the callback function
    + * @dialog: The dialog window
    + * @label: The stock-id or the label for the button
    + * @callback: (scope call): The callback function for the button
    + * @callbackdata: The user data for the callback function
    *
    * Add a button to a dialog created by #pidgin_create_dialog.
    *
    - * Returns: The created button.
    + * Returns: (transfer full): The created button.
    */
    GtkWidget *pidgin_dialog_add_button(GtkDialog *dialog, const char *label,
    GCallback callback, gpointer callbackdata);
    @@ -184,6 +194,8 @@
    * @dialog: The dialog window
    *
    * Retrieves the action area (button box) from a pidgin dialog window
    + *
    + * Returns: (transfer none): The action area (button box) from @dialog.
    */
    GtkWidget *pidgin_dialog_get_action_area(GtkDialog *dialog);
    @@ -210,7 +222,7 @@
    /**
    * pidgin_toggle_sensitive_array:
    * @w: %NULL. Used for signal handlers.
    - * @data: The array containing the widgets to toggle.
    + * @data: (element-type GtkWidget): The array containing the widgets to toggle.
    *
    * Toggles the sensitivity of all widgets in a pointer array.
    */
    @@ -231,21 +243,21 @@
    *
    * Adds a separator to a menu.
    *
    - * Returns: The separator.
    + * Returns: (transfer full): The separator.
    */
    GtkWidget *pidgin_separator(GtkWidget *menu);
    /**
    * pidgin_new_check_item:
    - * @menu: The menu to which to append the check menu item.
    - * @str: The title to use for the newly created menu item.
    - * @cb: A function to call when the menu item is activated.
    - * @data: Data to pass to the signal function.
    - * @checked: The initial state of the check item
    + * @menu: The menu to which to append the check menu item.
    + * @str: The title to use for the newly created menu item.
    + * @cb: (scope call): A function to call when the menu item is activated.
    + * @data: Data to pass to the signal function.
    + * @checked: The initial state of the check item
    *
    * Creates a check menu item.
    *
    - * Returns: The newly created menu item.
    + * Returns: (transfer full): The newly created menu item.
    */
    GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
    GCallback cb, gpointer data, gboolean checked);
    @@ -256,12 +268,12 @@
    * @mnemonic: The title for the menu item.
    * @icon: An icon to place to the left of the menu item,
    * or %NULL for no icon.
    - * @cb: A function to call when the menu item is activated.
    + * @cb: (scope call): A function to call when the menu item is activated.
    * @data: Data to pass to the signal function.
    *
    * Creates a menu item.
    *
    - * Returns: The newly created menu item.
    + * Returns: (transfer full): The newly created menu item.
    */
    GtkWidget *pidgin_new_menu_item(GtkWidget *menu, const char *mnemonic,
    const char *icon, GCallback cb, gpointer data);
    @@ -274,7 +286,7 @@
    *
    * Creates a button with the specified text and stock icon.
    *
    - * Returns: The button.
    + * Returns: (transfer full): The button.
    */
    GtkWidget *pidgin_pixbuf_button_from_stock(const char *text, const char *icon,
    PidginButtonOrientation style);
    @@ -285,7 +297,7 @@
    *
    * Creates a toolbar button with the stock icon.
    *
    - * Returns: The button.
    + * Returns: (transfer full): The button.
    */
    GtkWidget *pidgin_pixbuf_toolbar_button_from_stock(const char *stock);
    @@ -296,19 +308,19 @@
    *
    * Creates a HIG preferences frame.
    *
    - * Returns: The vbox to put things into.
    + * Returns: (transfer full): The vbox to put things into.
    */
    GtkWidget *pidgin_make_frame(GtkWidget *parent, const char *title);
    /**
    * pidgin_protocol_option_menu_new:
    - * @id: The protocol to select by default.
    - * @cb: The callback to call when a protocol is selected.
    + * @id: The protocol to select by default.
    + * @cb: (scope call): The callback to call when a protocol is selected.
    * @user_data: Data to pass to the callback function.
    *
    * Creates a drop-down option menu filled with protocols.
    *
    - * Returns: The drop-down option menu.
    + * Returns: (transfer full): The drop-down option menu.
    */
    GtkWidget *pidgin_protocol_option_menu_new(const char *id,
    GCallback cb,
    @@ -328,16 +340,16 @@
    /**
    * pidgin_account_option_menu_new:
    * @default_account: The account to select by default.
    - * @show_all: Whether or not to show all accounts, or just
    - * active accounts.
    - * @cb: The callback to call when an account is selected.
    - * @filter_func: A function for checking if an account should
    - * be shown. This can be NULL.
    - * @user_data: Data to pass to the callback function.
    + * @show_all: Whether or not to show all accounts, or just
    + * active accounts.
    + * @cb: (scope call): The callback to call when an account is selected.
    + * @filter_func: (scope call): A function for checking if an account should
    + * be shown. This can be NULL.
    + * @user_data: Data to pass to the callback function.
    *
    * Creates a drop-down option menu filled with accounts.
    *
    - * Returns: The drop-down option menu.
    + * Returns: (transfer full): The drop-down option menu.
    */
    GtkWidget *pidgin_account_option_menu_new(PurpleAccount *default_account,
    gboolean show_all, GCallback cb,
    @@ -350,7 +362,7 @@
    *
    * Gets the currently selected account from an account drop down box.
    *
    - * Returns: Returns the PurpleAccount that is currently selected.
    + * Returns: (transfer none): Returns the PurpleAccount that is currently selected.
    */
    PurpleAccount *pidgin_account_option_menu_get_selected(GtkWidget *optmenu);
    @@ -370,7 +382,7 @@
    * @optmenu: A menu for accounts, returned by pidgin_account_option_menu_new().
    * If @optmenu is not %NULL, it'll be updated when a username is chosen
    * from the autocomplete list.
    - * @filter_func: A function for checking if an autocomplete entry
    + * @filter_func: (scope call): A function for checking if an autocomplete entry
    * should be shown. This can be %NULL.
    * @user_data: The data to be passed to the filter_func function.
    *
    @@ -525,7 +537,7 @@
    * Returns the base image to represent the account, based on
    * the currently selected theme.
    *
    - * Returns: A newly-created pixbuf with a reference count of 1,
    + * Returns: (transfer full): A newly-created pixbuf with a reference count of 1,
    * or NULL if any of several error conditions occurred:
    * the file could not be opened, there was no loader
    * for the file's format, there was not enough memory
    @@ -542,7 +554,7 @@
    *
    * Creates a status icon for a given primitve
    *
    - * Returns: A GdkPixbuf, created from stock
    + * Returns: (transfer full): A GdkPixbuf, created from stock
    */
    GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive primitive, GtkWidget *w, const char *size);
    @@ -574,7 +586,7 @@
    *
    * Append a PurpleMenuAction to a menu.
    *
    - * Returns: The menuitem added.
    + * Returns: (transfer full): The menuitem added.
    */
    GtkWidget *pidgin_append_menu_action(GtkWidget *menu, PurpleMenuAction *act,
    gpointer gobject);
    @@ -614,7 +626,7 @@
    *
    * Creates a File Selection widget for choosing a buddy icon
    *
    - * Returns: The file dialog
    + * Returns: (transfer full): The file dialog
    */
    GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char*,gpointer), gpointer data);
    @@ -646,7 +658,7 @@
    *
    * The type of callbacks passed to pidgin_make_mini_dialog().
    */
    -typedef void (*PidginUtilMiniDialogCallback)(gpointer user_data, GtkButton *);
    +typedef void (*PidginUtilMiniDialogCallback)(gpointer user_data, GtkButton *button);
    /**
    * pidgin_make_mini_dialog:
    @@ -673,7 +685,7 @@
    *
    * See <link linkend="pidgin-pidginstock">Stock Resources</link>.
    *
    - * Returns: A #PidginMiniDialog, suitable for passing to
    + * Returns: (transfer full): A #PidginMiniDialog, suitable for passing to
    * pidgin_blist_add_alert().
    */
    GtkWidget *pidgin_make_mini_dialog(PurpleConnection *handle,
    @@ -682,9 +694,24 @@
    /**
    * pidgin_make_mini_dialog_with_custom_icon:
    + * @custom_icon: A custom GdkPixbuf to use.
    + * @primary: The primary text
    + * @secondary: The secondary text, or %NULL for no description.
    + * @user_data: Data to pass to the callbacks
    + * @...: a %NULL-terminated list of button labels
    + * (<type>char *</type>) and callbacks
    + * (#PidginUtilMiniDialogCallback). @user_data will be
    + * passed as the first argument. (Callbacks may lack a
    + * second argument, or be %NULL to take no action when
    + * the corresponding button is pressed.) When a button is
    + * pressed, the callback (if any) will be called; when
    + * the callback returns the dialog will be destroyed.
    *
    * Does exactly what pidgin_make_mini_dialog() does, except you can specify
    * a custom icon for the dialog.
    + *
    + * Returns: (transfer full): A #PidginMiniDialog, suitable for passing to
    + * pidgin_blist_add_alert().
    */
    GtkWidget *pidgin_make_mini_dialog_with_custom_icon(PurpleConnection *gc,
    GdkPixbuf *custom_icon,
    @@ -748,13 +775,13 @@
    /**
    * pidgin_text_combo_box_entry_new:
    - * @default_item: Initial contents of GtkEntry
    - * @items: GList containing strings to add to GtkComboBox
    + * @default_item: Initial contents of GtkEntry
    + * @items: (element-type utf8): GList containing strings to add to GtkComboBox
    *
    * Create a simple text GtkComboBoxEntry equivalent
    *
    - * Returns: A newly created text GtkComboBox containing a GtkEntry
    - * child.
    + * Returns: (transfer full): A newly created text GtkComboBox containing a GtkEntry
    + * child.
    */
    GtkWidget *pidgin_text_combo_box_entry_new(const char *default_item, GList *items);
    @@ -798,7 +825,7 @@
    *
    * Add a labelled widget to a GtkBox
    *
    - * Returns: A GtkBox already added to the GtkBox containing the GtkLabel and the GtkWidget.
    + * Returns: (transfer full): A GtkBox already added to the GtkBox containing the GtkLabel and the GtkWidget.
    */
    GtkWidget *pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, GtkSizeGroup *sg, GtkWidget *widget, gboolean expand, GtkWidget **p_label);
    @@ -809,7 +836,7 @@
    *
    * Create a GdkPixbuf from a chunk of image data.
    *
    - * Returns: A GdkPixbuf created from the image data, or NULL if
    + * Returns: (transfer full): A GdkPixbuf created from the image data, or NULL if
    * there was an error parsing the data.
    */
    GdkPixbuf *pidgin_pixbuf_from_data(const guchar *buf, gsize count);
    @@ -821,7 +848,7 @@
    *
    * Create a GdkPixbufAnimation from a chunk of image data.
    *
    - * Returns: A GdkPixbufAnimation created from the image data, or NULL if
    + * Returns: (transfer full): A GdkPixbufAnimation created from the image data, or NULL if
    * there was an error parsing the data.
    */
    GdkPixbufAnimation *pidgin_pixbuf_anim_from_data(const guchar *buf, gsize count);
    @@ -832,7 +859,7 @@
    *
    * Create a GdkPixbuf from a PurpleImage.
    *
    - * Returns: a GdkPixbuf created from the @image.
    + * Returns: (transfer full): a GdkPixbuf created from the @image.
    */
    GdkPixbuf *
    pidgin_pixbuf_from_image(PurpleImage *image);
    @@ -856,7 +883,7 @@
    * gdk-pixbuf where the aforementioned bug is fixed. However, it might be
    * nice to keep this function around for the debug message that it logs.
    *
    - * Returns: The GdkPixbuf if successful. Otherwise NULL is returned and
    + * Returns: (transfer full): The GdkPixbuf if successful. Otherwise NULL is returned and
    * a warning is logged.
    */
    GdkPixbuf *pidgin_pixbuf_new_from_file(const char *filename);
    @@ -882,7 +909,7 @@
    * gdk-pixbuf where the aforementioned bug is fixed. However, it might be
    * nice to keep this function around for the debug message that it logs.
    *
    - * Returns: The GdkPixbuf if successful. Otherwise NULL is returned and
    + * Returns: (transfer full): The GdkPixbuf if successful. Otherwise NULL is returned and
    * a warning is logged.
    */
    GdkPixbuf *pidgin_pixbuf_new_from_file_at_size(const char *filename, int width, int height);
    @@ -909,7 +936,7 @@
    * gdk-pixbuf where the aforementioned bug is fixed. However, it might be
    * nice to keep this function around for the debug message that it logs.
    *
    - * Returns: The GdkPixbuf if successful. Otherwise NULL is returned and
    + * Returns: (transfer full): The GdkPixbuf if successful. Otherwise NULL is returned and
    * a warning is logged.
    */
    GdkPixbuf *pidgin_pixbuf_new_from_file_at_scale(const char *filename, int width, int height, gboolean preserve_aspect_ratio);
    @@ -928,7 +955,7 @@
    * If new image is created, @src reference cound will be decreased and new image
    * with a ref count of 1 will be returned.
    *
    - * Returns: The image with proper sizing. %NULL in case of error.
    + * Returns: (transfer full): The image with proper sizing. %NULL in case of error.
    */
    GdkPixbuf *
    pidgin_pixbuf_scale_down(GdkPixbuf *src, guint max_width, guint max_height,
    @@ -944,6 +971,8 @@
    * @height: Desired widget height, or -1 for default
    *
    * Add scrollbars to a widget
    + *
    + * Returns: (transfer full): A scrolled window with @child packed inside of it.
    */
    GtkWidget *pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, GtkShadowType shadow_type, int width, int height);
    --- a/pidgin/gtkwebview.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkwebview.h Fri Nov 17 14:23:40 2017 +0300
    @@ -101,13 +101,13 @@
    GList *protocols;
    - void (*buttons_update)(PidginWebView *, PidginWebViewButtons);
    - void (*toggle_format)(PidginWebView *, PidginWebViewButtons);
    - void (*clear_format)(PidginWebView *);
    - void (*update_format)(PidginWebView *);
    - void (*changed)(PidginWebView *);
    - void (*html_appended)(PidginWebView *, WebKitDOMRange *);
    - gboolean (*insert_image)(PidginWebView *, PurpleImage *);
    + void (*buttons_update)(PidginWebView *webview, PidginWebViewButtons buttons);
    + void (*toggle_format)(PidginWebView *webview, PidginWebViewButtons buttons);
    + void (*clear_format)(PidginWebView *webview);
    + void (*update_format)(PidginWebView *webview);
    + void (*changed)(PidginWebView *webview);
    + void (*html_appended)(PidginWebView *webview, WebKitDOMRange *range);
    + gboolean (*insert_image)(PidginWebView *webview, PurpleImage *image);
    };
    G_BEGIN_DECLS
    @@ -602,7 +602,7 @@
    pidgin_webview_get_DOM_height(PidginWebView *webview);
    /**
    - * pidgin_webview_get_DOM_height:
    + * pidgin_webview_get_font_size:
    * @webview: the PidginWebView.
    *
    * Look for the font size used on the current webview
    @@ -666,7 +666,7 @@
    *
    * Returns the toolbar associated with the webview.
    *
    - * Returns: the toolbar.
    + * Returns: (transfer none): the toolbar.
    */
    GtkWidget *
    pidgin_webview_get_toolbar(PidginWebView *webview);
    --- a/pidgin/gtkwebviewtoolbar.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/gtkwebviewtoolbar.h Fri Nov 17 14:23:40 2017 +0300
    @@ -110,7 +110,7 @@
    *
    * Returns the wide toolbar variant widget for the given @toolbar.
    *
    - * Returns: the wide toolbar variant.
    + * Returns: (transfer none): the wide toolbar variant.
    */
    GtkWidget *
    pidgin_webviewtoolbar_get_wide_view(PidginWebViewToolbar *toolbar);
    @@ -121,7 +121,7 @@
    *
    * Returns the lean toolbar variant widget for the given @toolbar.
    *
    - * Returns: the lean toolbar variant.
    + * Returns: (transfer none): the lean toolbar variant.
    */
    GtkWidget *
    pidgin_webviewtoolbar_get_lean_view(PidginWebViewToolbar *toolbar);
    --- a/pidgin/meson.build Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/meson.build Fri Nov 17 14:23:40 2017 +0300
    @@ -35,6 +35,7 @@
    'gtksound.c',
    'gtkstatus-icon-theme.c',
    'gtkstatusbox.c',
    + 'gtkstyle.c',
    'gtkutils.c',
    'gtkwebview.c',
    'gtkwebviewtoolbar.c',
    @@ -84,6 +85,7 @@
    'gtksound.h',
    'gtkstatus-icon-theme.h',
    'gtkstatusbox.h',
    + 'gtkstyle.h',
    'pidginstock.h',
    'gtkutils.h',
    'gtkwebview.h',
    @@ -219,7 +221,7 @@
    gnome.generate_gir(libpidgin,
    sources : introspection_sources,
    - includes : ['GObject-2.0', 'Gtk-3.0', libpurple_gir[0]],
    + includes : ['GObject-2.0', 'Gtk-3.0', libpurple_gir[0], 'WebKit-3.0'],
    namespace : 'Pidgin',
    symbol_prefix : 'pidgin',
    identifier_prefix : 'Pidgin',
    --- a/pidgin/minidialog.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/minidialog.h Fri Nov 17 14:23:40 2017 +0300
    @@ -187,7 +187,7 @@
    /**
    * pidgin_mini_dialog_set_link_callback:
    * @mini_dialog: a mini-dialog
    - * @cb: the callback to invoke
    + * @cb: (scope call): the callback to invoke
    * @user_data: the user data to pass to the callback
    *
    * Sets a callback which gets invoked when a hyperlink in the dialog's description is clicked on.
    @@ -218,7 +218,7 @@
    * pidgin_mini_dialog_add_button:
    * @mini_dialog: a mini-dialog
    * @text: the text to display on the new button
    - * @clicked_cb: the function to call when the button is clicked
    + * @clicked_cb: (scope call): the function to call when the button is clicked
    * @user_data: arbitrary data to pass to @clicked_cb when it is
    * called.
    *
    @@ -232,6 +232,11 @@
    /**
    * pidgin_mini_dialog_add_non_closing_button:
    + * @mini_dialog: a mini-dialog
    + * @text: the text to display on the new button
    + * @clicked_cb: (scope call): the function to call when the button is clicked
    + * @user_data: arbitrary data to pass to @clicked_cb when it is
    + * called.
    *
    * Equivalent to pidgin_mini_dialog_add_button(), the only difference
    * is that the mini-dialog won't be closed after the button is clicked.
    --- a/pidgin/pidgintooltip.h Sun Oct 08 20:42:20 2017 +0300
    +++ b/pidgin/pidgintooltip.h Fri Nov 17 14:23:40 2017 +0300
    @@ -70,10 +70,10 @@
    /**
    * pidgin_tooltip_setup_for_treeview:
    - * @tree: The treeview
    - * @userdata: The userdata to send to the callback functions
    - * @create_cb: Callback function to create the tooltip for a GtkTreePath
    - * @paint_cb: Callback function to paint the tooltip
    + * @tree: The treeview
    + * @userdata: The userdata to send to the callback functions
    + * @create_cb: (scope call): Callback function to create the tooltip for a GtkTreePath
    + * @paint_cb: (scope call): Callback function to paint the tooltip
    *
    * Setup tooltip drawing functions for a treeview.
    *
    @@ -84,10 +84,10 @@
    /**
    * pidgin_tooltip_setup_for_widget:
    - * @widget: The widget
    - * @userdata: The userdata to send to the callback functions
    - * @create_cb: Callback function to create the tooltip for the widget
    - * @paint_cb: Callback function to paint the tooltip
    + * @widget: The widget
    + * @userdata: The userdata to send to the callback functions
    + * @create_cb: (scope call): Callback function to create the tooltip for the widget
    + * @paint_cb: (scope call): Callback function to paint the tooltip
    *
    * Setup tooltip drawing functions for any widget.
    *
    @@ -107,8 +107,8 @@
    * pidgin_tooltip_show:
    * @widget: The widget the tooltip is for
    * @userdata: The userdata to send to the callback functions
    - * @create_cb: Callback function to create the tooltip from the GtkTreePath
    - * @paint_cb: Callback function to paint the tooltip
    + * @create_cb: (scope call): Callback function to create the tooltip from the GtkTreePath
    + * @paint_cb: (scope call): Callback function to paint the tooltip
    *
    * Create and show a tooltip.
    */
    --- a/pidgin/pixmaps/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,604 +0,0 @@
    -pidginpixmapdir = $(datadir)/pixmaps/pidgin
    -pidginiconsdir = $(datadir)
    -
    -SUBDIRS = emotes/default/24 emotes/small/16
    -
    -if INSTALL_PIXMAPS
    -MAKEFILE_MINGW = \
    - emotes/default/24/Makefile.mingw \
    - emotes/small/16/Makefile.mingw
    -
    -ANIMATIONS_16 = \
    - animations/16/connect0.png \
    - animations/16/connect1.png \
    - animations/16/connect2.png \
    - animations/16/connect3.png \
    - animations/16/connect4.png \
    - animations/16/connect5.png \
    - animations/16/connect6.png \
    - animations/16/connect7.png \
    - animations/16/connect8.png \
    - animations/16/process-working0.png \
    - animations/16/process-working1.png \
    - animations/16/process-working2.png \
    - animations/16/process-working3.png \
    - animations/16/process-working4.png \
    - animations/16/process-working5.png \
    - animations/16/process-working6.png \
    - animations/16/process-working7.png \
    - animations/16/process-working8.png \
    - animations/16/process-working9.png \
    - animations/16/process-working10.png \
    - animations/16/process-working11.png \
    - animations/16/process-working12.png \
    - animations/16/process-working13.png \
    - animations/16/process-working14.png \
    - animations/16/process-working15.png \
    - animations/16/process-working16.png \
    - animations/16/process-working17.png \
    - animations/16/process-working18.png \
    - animations/16/process-working19.png \
    - animations/16/process-working20.png \
    - animations/16/process-working21.png \
    - animations/16/process-working22.png \
    - animations/16/process-working23.png \
    - animations/16/process-working24.png \
    - animations/16/process-working25.png \
    - animations/16/process-working26.png \
    - animations/16/process-working27.png \
    - animations/16/process-working28.png \
    - animations/16/process-working29.png \
    - animations/16/process-working30.png \
    - animations/16/typing0.png \
    - animations/16/typing1.png \
    - animations/16/typing2.png \
    - animations/16/typing3.png \
    - animations/16/typing4.png \
    - animations/16/typing5.png
    -
    -DIALOGS_16_SCALABLE = \
    - dialogs/16/scalable/error.svg \
    - dialogs/16/scalable/info.svg \
    - dialogs/16/scalable/mail.svg
    -
    -DIALOGS_16 = \
    - dialogs/16/auth.png \
    - dialogs/16/error.png \
    - dialogs/16/info.png \
    - dialogs/16/mail.png \
    - dialogs/16/question.png
    -
    -DIALOGS_64 = \
    - dialogs/64/auth.png \
    - dialogs/64/cool.png \
    - dialogs/64/dialog.png \
    - dialogs/64/error.png \
    - dialogs/64/info.png \
    - dialogs/64/mail.png \
    - dialogs/64/question.png \
    - dialogs/64/warning.png
    -
    -DIALOGS_SCALABLE = \
    - dialogs/scalable/auth.svg \
    - dialogs/scalable/cool.svg \
    - dialogs/scalable/dialog.svg \
    - dialogs/scalable/error.svg \
    - dialogs/scalable/info.svg \
    - dialogs/scalable/question.svg \
    - dialogs/scalable/warning.svg
    -
    -E2EE_STATES_16 = \
    - e2ee/16/finished.png \
    - e2ee/16/not-private.png \
    - e2ee/16/private.png \
    - e2ee/16/unverified.png
    -
    -EMBLEMS_16 = \
    - emblems/16/aol-client.png \
    - emblems/16/birthday.png \
    - emblems/16/blocked.png \
    - emblems/16/bot.png \
    - emblems/16/external.png \
    - emblems/16/female.png \
    - emblems/16/founder.png \
    - emblems/16/free-for-chat.png \
    - emblems/16/game.png \
    - emblems/16/half-operator.png \
    - emblems/16/hiptop.png \
    - emblems/16/male.png \
    - emblems/16/mobile.png \
    - emblems/16/not-authorized.png \
    - emblems/16/operator.png \
    - emblems/16/secure.png \
    - emblems/16/unavailable.png \
    - emblems/16/video.png \
    - emblems/16/voice.png
    -
    -EMBLEMS_SCALABLE = \
    - emblems/scalable/aol-client.svg \
    - emblems/scalable/blocked.svg \
    - emblems/scalable/bot.svg \
    - emblems/scalable/external.svg \
    - emblems/scalable/female.svg \
    - emblems/scalable/free-for-chat.svg \
    - emblems/scalable/game.svg \
    - emblems/scalable/male.svg \
    - emblems/scalable/not-authorized.svg \
    - emblems/scalable/secure.svg \
    - emblems/scalable/unavailable.svg \
    - emblems/scalable/video.svg \
    - emblems/scalable/voice.svg
    -
    -EMOTES_DEFAULT_24_SCALABLE = \
    - emotes/default/24/scalable/airplane.svg \
    - emotes/default/24/scalable/bad.svg \
    - emotes/default/24/scalable/beer.svg \
    - emotes/default/24/scalable/bomb.svg \
    - emotes/default/24/scalable/bowl.svg \
    - emotes/default/24/scalable/boy.svg \
    - emotes/default/24/scalable/brb.svg \
    - emotes/default/24/scalable/cake.svg \
    - emotes/default/24/scalable/camera.svg \
    - emotes/default/24/scalable/can.svg \
    - emotes/default/24/scalable/car.svg \
    - emotes/default/24/scalable/cat.svg \
    - emotes/default/24/scalable/chicken.svg \
    - emotes/default/24/scalable/cigarette.svg \
    - emotes/default/24/scalable/clock.svg \
    - emotes/default/24/scalable/cloudy.svg \
    - emotes/default/24/scalable/clover.svg \
    - emotes/default/24/scalable/clown.svg \
    - emotes/default/24/scalable/coffee.svg \
    - emotes/default/24/scalable/coins.svg \
    - emotes/default/24/scalable/computer.svg \
    - emotes/default/24/scalable/console.svg \
    - emotes/default/24/scalable/cow.svg \
    - emotes/default/24/scalable/dog.svg \
    - emotes/default/24/scalable/drink.svg \
    - emotes/default/24/scalable/film.svg \
    - emotes/default/24/scalable/flag.svg \
    - emotes/default/24/scalable/ghost.svg \
    - emotes/default/24/scalable/girl.svg \
    - emotes/default/24/scalable/goat.svg \
    - emotes/default/24/scalable/good.svg \
    - emotes/default/24/scalable/hammer.svg \
    - emotes/default/24/scalable/handcuffs.svg \
    - emotes/default/24/scalable/island.svg \
    - emotes/default/24/scalable/knife.svg \
    - emotes/default/24/scalable/lamp.svg \
    - emotes/default/24/scalable/liquor.svg \
    - emotes/default/24/scalable/mail.svg \
    - emotes/default/24/scalable/mobile.svg \
    - emotes/default/24/scalable/monkey.svg \
    - emotes/default/24/scalable/moon.svg \
    - emotes/default/24/scalable/musical-note.svg \
    - emotes/default/24/scalable/peace.svg \
    - emotes/default/24/scalable/phone.svg \
    - emotes/default/24/scalable/pidgin-emotes.svg \
    - emotes/default/24/scalable/pig.svg \
    - emotes/default/24/scalable/pill.svg \
    - emotes/default/24/scalable/pizza.svg \
    - emotes/default/24/scalable/plate.svg \
    - emotes/default/24/scalable/poop.svg \
    - emotes/default/24/scalable/present.svg \
    - emotes/default/24/scalable/rainbow.svg \
    - emotes/default/24/scalable/rain.svg \
    - emotes/default/24/scalable/rose-dead.svg \
    - emotes/default/24/scalable/rose.svg \
    - emotes/default/24/scalable/search.svg \
    - emotes/default/24/scalable/sheep.svg \
    - emotes/default/24/scalable/shout.svg \
    - emotes/default/24/scalable/skeleton.svg \
    - emotes/default/24/scalable/snail.svg \
    - emotes/default/24/scalable/snowman.svg \
    - emotes/default/24/scalable/soccerball.svg \
    - emotes/default/24/scalable/star.svg \
    - emotes/default/24/scalable/sun.svg \
    - emotes/default/24/scalable/thunder.svg \
    - emotes/default/24/scalable/turtle.svg \
    - emotes/default/24/scalable/tv.svg \
    - emotes/default/24/scalable/umbrella.svg \
    - emotes/default/24/scalable/watermelon.svg \
    - emotes/default/24/scalable/yin-yang.svg
    -
    -EMOTES_SMALL_16_SCALABLE = \
    - emotes/small/16/scalable/mobile.svg \
    - emotes/small/16/scalable/pidgin-emotes.svg
    -
    -PROTOCOLS_16_SCALABLE = \
    - protocols/16/scalable/aim.svg \
    - protocols/16/scalable/bonjour.svg \
    - protocols/16/scalable/gadu-gadu.svg \
    - protocols/16/scalable/novell.svg \
    - protocols/16/scalable/icq.svg \
    - protocols/16/scalable/irc.svg \
    - protocols/16/scalable/jabber.svg \
    - protocols/16/scalable/meanwhile.svg \
    - protocols/16/scalable/silc.svg \
    - protocols/16/scalable/simple.svg \
    - protocols/16/scalable/zephyr.svg
    -
    -PROTOCOLS_16 = \
    - protocols/16/aim.png \
    - protocols/16/bonjour.png \
    - protocols/16/facebook.png \
    - protocols/16/gadu-gadu.png \
    - protocols/16/google-talk.png \
    - protocols/16/novell.png \
    - protocols/16/icq.png \
    - protocols/16/irc.png \
    - protocols/16/jabber.png \
    - protocols/16/meanwhile.png \
    - protocols/16/silc.png \
    - protocols/16/simple.png \
    - protocols/16/zephyr.png
    -
    -ICONS_16_SCALABLE = \
    - icons/hicolor/16x16/apps/scalable/pidgin.svg
    -
    -ICONS_16 = icons/hicolor/16x16/apps/pidgin.png
    -
    -ICONS_22 = icons/hicolor/22x22/apps/pidgin.png
    -
    -ICONS_24_SCALABLE = \
    - icons/hicolor/24x24/apps/scalable/pidgin.svg
    -
    -ICONS_24 = icons/hicolor/24x24/apps/pidgin.png
    -
    -ICONS_32_SCALABLE = \
    - icons/hicolor/32x32/apps/scalable/pidgin.svg
    -
    -ICONS_32 = icons/hicolor/32x32/apps/pidgin.png
    -
    -ICONS_48 = icons/hicolor/48x48/apps/pidgin.png
    -
    -ICONS_SCALABLE = icons/hicolor/scalable/apps/pidgin.svg
    -
    -PROTOCOLS_22_SCALABLE = \
    - protocols/22/scalable/aim.svg \
    - protocols/22/scalable/bonjour.svg \
    - protocols/22/scalable/gadu-gadu.svg \
    - protocols/22/scalable/novell.svg \
    - protocols/22/scalable/icq.svg \
    - protocols/22/scalable/irc.svg \
    - protocols/22/scalable/jabber.svg \
    - protocols/22/scalable/meanwhile.svg \
    - protocols/22/scalable/silc.svg \
    - protocols/22/scalable/simple.svg \
    - protocols/22/scalable/zephyr.svg
    -
    -PROTOCOLS_22 = \
    - protocols/22/aim.png \
    - protocols/22/bonjour.png \
    - protocols/22/facebook.png \
    - protocols/22/gadu-gadu.png \
    - protocols/22/google-talk.png \
    - protocols/22/novell.png \
    - protocols/22/icq.png \
    - protocols/22/irc.png \
    - protocols/22/jabber.png \
    - protocols/22/meanwhile.png \
    - protocols/22/silc.png \
    - protocols/22/simple.png \
    - protocols/22/zephyr.png
    -
    -PROTOCOLS_48 = \
    - protocols/48/aim.png \
    - protocols/48/bonjour.png \
    - protocols/48/facebook.png \
    - protocols/48/gadu-gadu.png \
    - protocols/48/google-talk.png \
    - protocols/48/novell.png \
    - protocols/48/icq.png \
    - protocols/48/irc.png \
    - protocols/48/jabber.png \
    - protocols/48/meanwhile.png \
    - protocols/48/silc.png \
    - protocols/48/simple.png \
    - protocols/48/zephyr.png
    -
    -PROTOCOLS_SCALABLE = \
    - protocols/scalable/aim.svg \
    - protocols/scalable/bonjour.svg \
    - protocols/scalable/gadu-gadu.svg \
    - protocols/scalable/google-talk.svg \
    - protocols/scalable/novell.svg \
    - protocols/scalable/icq.svg \
    - protocols/scalable/irc.svg \
    - protocols/scalable/jabber.svg \
    - protocols/scalable/meanwhile.svg \
    - protocols/scalable/silc.svg \
    - protocols/scalable/simple.svg \
    - protocols/scalable/zephyr.svg
    -
    -STATUS_11 = \
    - status/11/available.png \
    - status/11/away.png \
    - status/11/busy.png \
    - status/11/chat.png \
    - status/11/extended-away.png \
    - status/11/invisible.png \
    - status/11/log-in.png \
    - status/11/log-out.png \
    - status/11/offline.png \
    - status/11/person.png
    -
    -STATUS_11_RTL = \
    - status/11/rtl/extended-away.png \
    - status/11/rtl/log-in.png \
    - status/11/rtl/log-out.png
    -
    -STATUS_16 = \
    - status/16/available.png \
    - status/16/away.png \
    - status/16/busy.png \
    - status/16/chat.png \
    - status/16/extended-away.png \
    - status/16/invisible.png \
    - status/16/log-in.png \
    - status/16/log-out.png \
    - status/16/offline.png \
    - status/16/person.png
    -
    -STATUS_16_RTL = \
    - status/16/rtl/extended-away.png \
    - status/16/rtl/log-in.png \
    - status/16/rtl/log-out.png
    -
    -STATUS_22 = \
    - status/22/available.png \
    - status/22/away.png \
    - status/22/busy.png \
    - status/22/chat.png \
    - status/22/extended-away.png \
    - status/22/invisible.png \
    - status/22/log-in.png \
    - status/22/log-out.png \
    - status/22/offline.png \
    - status/22/person.png
    -
    -STATUS_22_RTL = \
    - status/22/rtl/extended-away.png \
    - status/22/rtl/log-in.png \
    - status/22/rtl/log-out.png
    -
    -STATUS_32 = \
    - status/32/available.png \
    - status/32/away.png \
    - status/32/busy.png \
    - status/32/chat.png \
    - status/32/extended-away.png \
    - status/32/invisible.png \
    - status/32/log-in.png \
    - status/32/log-out.png \
    - status/32/offline.png \
    - status/32/person.png
    -
    -STATUS_32_RTL = \
    - status/32/rtl/extended-away.png \
    - status/32/rtl/log-in.png \
    - status/32/rtl/log-out.png
    -
    -STATUS_48 = \
    - status/48/available.png \
    - status/48/away.png \
    - status/48/busy.png \
    - status/48/chat.png \
    - status/48/extended-away.png \
    - status/48/invisible.png \
    - status/48/log-in.png \
    - status/48/log-out.png \
    - status/48/offline.png \
    - status/48/person.png
    -
    -STATUS_48_RTL = \
    - status/48/rtl/extended-away.png \
    - status/48/rtl/log-in.png \
    - status/48/rtl/log-out.png
    -
    -TOOLBAR_11 = \
    - toolbar/11/message-new.png
    -
    -TOOLBAR_16_SCALABLE = \
    - toolbar/16/scalable/change-bgcolor.svg \
    - toolbar/16/scalable/change-fgcolor.svg \
    - toolbar/16/scalable/emote-select.svg \
    - toolbar/16/scalable/font-size-down.svg \
    - toolbar/16/scalable/font-size-up.svg
    -
    -TOOLBAR_16 = \
    - toolbar/16/audio-call.png \
    - toolbar/16/change-bgcolor.png \
    - toolbar/16/change-fgcolor.png \
    - toolbar/16/emote-select.png \
    - toolbar/16/font-face.png \
    - toolbar/16/font-size-down.png \
    - toolbar/16/font-size-up.png \
    - toolbar/16/insert.png \
    - toolbar/16/insert-image.png \
    - toolbar/16/insert-link.png \
    - toolbar/16/insert-screenshot.png \
    - toolbar/16/message-new.png \
    - toolbar/16/plugins.png \
    - toolbar/16/send-file.png \
    - toolbar/16/transfer.png \
    - toolbar/16/unblock.png \
    - toolbar/16/video-call.png \
    - toolbar/16/get-attention.png
    -
    -TOOLBAR_22_SCALABLE = \
    - toolbar/22/scalable/select-avatar.svg \
    - toolbar/22/scalable/video-call.svg \
    - toolbar/22/scalable/audio-call.svg
    -
    -TOOLBAR_22 = \
    - toolbar/22/select-avatar.png \
    - toolbar/22/video-call.png \
    - toolbar/22/audio-call.png
    -
    -TOOLBAR_32_SCALABLE = \
    - toolbar/32/scalable/video-call.svg \
    - toolbar/32/scalable/audio-call.svg
    -
    -TOOLBAR_32 = \
    - toolbar/32/video-call.png \
    - toolbar/32/audio-call.png
    -
    -TOOLBAR_48_SCALABLE = \
    - toolbar/48/scalable/video-call.svg \
    - toolbar/48/scalable/audio-call.svg
    -
    -TOOLBAR_48 = \
    - toolbar/48/video-call.png \
    - toolbar/48/audio-call.png
    -
    -TRAY_16_ICO = \
    - tray/16/available_4bit.ico \
    - tray/16/away_4bit.ico \
    - tray/16/busy_4bit.ico \
    - tray/16/connecting_4bit.ico \
    - tray/16/extended-away_4bit.ico \
    - tray/16/invisible_4bit.ico \
    - tray/16/message_4bit.ico \
    - tray/16/offline_4bit.ico
    -
    -TRAY_THEME = tray/hicolor/index.theme
    -
    -TRAY_16 = \
    - tray/hicolor/16x16/status/pidgin-tray-away.png \
    - tray/hicolor/16x16/status/pidgin-tray-busy.png \
    - tray/hicolor/16x16/status/pidgin-tray-invisible.png \
    - tray/hicolor/16x16/status/pidgin-tray-connect.png \
    - tray/hicolor/16x16/status/pidgin-tray-xa.png \
    - tray/hicolor/16x16/status/pidgin-tray-email.png \
    - tray/hicolor/16x16/status/pidgin-tray-pending.png \
    - tray/hicolor/16x16/status/pidgin-tray-offline.png \
    - tray/hicolor/16x16/status/pidgin-tray-available.png
    -
    -TRAY_22 = \
    - tray/hicolor/22x22/status/pidgin-tray-away.png \
    - tray/hicolor/22x22/status/pidgin-tray-busy.png \
    - tray/hicolor/22x22/status/pidgin-tray-connect.png \
    - tray/hicolor/22x22/status/pidgin-tray-xa.png \
    - tray/hicolor/22x22/status/pidgin-tray-invisible.png \
    - tray/hicolor/22x22/status/pidgin-tray-email.png \
    - tray/hicolor/22x22/status/pidgin-tray-pending.png \
    - tray/hicolor/22x22/status/pidgin-tray-offline.png \
    - tray/hicolor/22x22/status/pidgin-tray-available.png
    -
    -TRAY_32 = \
    - tray/hicolor/32x32/status/pidgin-tray-away.png \
    - tray/hicolor/32x32/status/pidgin-tray-busy.png \
    - tray/hicolor/32x32/status/pidgin-tray-connect.png \
    - tray/hicolor/32x32/status/pidgin-tray-xa.png \
    - tray/hicolor/32x32/status/pidgin-tray-invisible.png \
    - tray/hicolor/32x32/status/pidgin-tray-email.png \
    - tray/hicolor/32x32/status/pidgin-tray-pending.png \
    - tray/hicolor/32x32/status/pidgin-tray-offline.png \
    - tray/hicolor/32x32/status/pidgin-tray-available.png
    -
    -TRAY_48 = \
    - tray/hicolor/48x48/status/pidgin-tray-away.png \
    - tray/hicolor/48x48/status/pidgin-tray-busy.png \
    - tray/hicolor/48x48/status/pidgin-tray-connect.png \
    - tray/hicolor/48x48/status/pidgin-tray-xa.png \
    - tray/hicolor/48x48/status/pidgin-tray-invisible.png \
    - tray/hicolor/48x48/status/pidgin-tray-email.png \
    - tray/hicolor/48x48/status/pidgin-tray-pending.png \
    - tray/hicolor/48x48/status/pidgin-tray-offline.png \
    - tray/hicolor/48x48/status/pidgin-tray-available.png
    -
    -EXTRA_DIST = \
    - edit.png \
    - info.png \
    - logo.png \
    - logo.svg \
    - logo-nonvv.png \
    - pause.png \
    - arrow-down.xpm \
    - arrow-up.xpm \
    - arrow-right.xpm \
    - arrow-left.xpm \
    - Makefile.mingw \
    - pidgin.ico \
    - $(MAKEFILE_MINGW) \
    - $(DIALOGS_16_SCALABLE) \
    - $(ICONS_16_SCALABLE) \
    - $(ICONS_24_SCALABLE) \
    - $(ICONS_32_SCALABLE) \
    - $(EMOTES_DEFAULT_24_SCALABLE) \
    - $(PROTOCOLS_16_SCALABLE) \
    - $(PROTOCOLS_22_SCALABLE) \
    - $(TOOLBAR_16_SCALABLE) \
    - $(TOOLBAR_22_SCALABLE) \
    - $(TOOLBAR_32_SCALABLE) \
    - $(TOOLBAR_48_SCALABLE)
    -
    -pidginbuttonpixdir = $(datadir)/pixmaps/pidgin/buttons
    -pidginbuttonpix_DATA = edit.png pause.png info.png
    -
    -pidgindistpixdir = $(datadir)/pixmaps/pidgin
    -pidgindistpix_DATA = logo.png arrow-down.xpm arrow-left.xpm arrow-right.xpm arrow-up.xpm
    -
    -nobase_dist_pidginpixmap_DATA = \
    - $(ANIMATIONS_16) \
    - $(DIALOGS_16) \
    - $(DIALOGS_64) \
    - $(DIALOGS_SCALABLE) \
    - $(E2EE_STATES_16) \
    - $(EMBLEMS_16) \
    - $(EMBLEMS_SCALABLE) \
    - $(PROTOCOLS_16) \
    - $(PROTOCOLS_22) \
    - $(PROTOCOLS_48) \
    - $(PROTOCOLS_SCALABLE) \
    - $(STATUS_11) \
    - $(STATUS_11_RTL) \
    - $(STATUS_16) \
    - $(STATUS_16_RTL) \
    - $(STATUS_22) \
    - $(STATUS_22_RTL) \
    - $(STATUS_32) \
    - $(STATUS_32_RTL) \
    - $(STATUS_48) \
    - $(STATUS_48_RTL) \
    - $(TOOLBAR_11) \
    - $(TOOLBAR_16) \
    - $(TOOLBAR_22) \
    - $(TOOLBAR_32) \
    - $(TOOLBAR_48) \
    - $(TRAY_THEME) \
    - $(TRAY_16_ICO)
    -if ENABLE_TRAYCOMPAT
    -# Install in a location compatible with hicolor-icon-theme 0.9
    -
    -pidginpixmaptray16dir = $(datadir)/pixmaps/pidgin/tray/hicolor/16x16/actions
    -dist_pidginpixmaptray16_DATA = $(TRAY_16)
    -
    -pidginpixmaptray22dir = $(datadir)/pixmaps/pidgin/tray/hicolor/22x22/actions
    -dist_pidginpixmaptray22_DATA = $(TRAY_22)
    -
    -pidginpixmaptray32dir = $(datadir)/pixmaps/pidgin/tray/hicolor/32x32/actions
    -dist_pidginpixmaptray32_DATA = $(TRAY_32)
    -
    -pidginpixmaptray48dir = $(datadir)/pixmaps/pidgin/tray/hicolor/48x48/actions
    -dist_pidginpixmaptray48_DATA = $(TRAY_48)
    -
    -else
    -# Install in the "correct" locations
    -
    -nobase_dist_pidginpixmap_DATA += \
    - $(TRAY_16) \
    - $(TRAY_22) \
    - $(TRAY_32) \
    - $(TRAY_48)
    -endif
    -
    -nobase_dist_pidginicons_DATA = \
    - $(ICONS_16) \
    - $(ICONS_22) \
    - $(ICONS_24) \
    - $(ICONS_32) \
    - $(ICONS_48) \
    - $(ICONS_SCALABLE)
    -endif
    --- a/pidgin/pixmaps/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,51 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
    -#
    -
    -PIDGIN_TREE_TOP := ../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -datadir := $(PIDGIN_INSTALL_DIR)
    --include ./Makefile.am.mingw
    -
    -.PHONY: install clean
    -
    -install: ./Makefile.am.mingw
    - $(MAKE_at) if test '$(SUBDIRS)'; then \
    - list='$(SUBDIRS)'; for subdir in $$list; do \
    - $(MAKE) -C $$subdir -f $(MINGW_MAKEFILE) install || exit 1 ;\
    - done; \
    - fi;
    - if test '$(nobase_dist_pidginpixmap_DATA)'; then \
    - list='$(nobase_dist_pidginpixmap_DATA)'; for file in $$list; do \
    - dir=`dirname $$file`; \
    - mkdir -p $(pidginpixmapdir)/$$dir; \
    - cp $$file $(pidginpixmapdir)/$$dir/; \
    - done; \
    - fi;
    - if test '$(pidginbuttonpix_DATA)'; then \
    - mkdir -p $(pidginbuttonpixdir); \
    - cp $(pidginbuttonpix_DATA) $(pidginbuttonpixdir); \
    - fi;
    - if test '$(pidgindistpix_DATA)'; then \
    - mkdir -p $(pidgindistpixdir); \
    - cp $(pidgindistpix_DATA) $(pidgindistpixdir); \
    - fi;
    -
    -clean: ./Makefile.am.mingw
    - $(MAKE_at) if test '$(SUBDIRS)'; then \
    - list='$(SUBDIRS)'; for subdir in $$list; do \
    - $(MAKE) -C $$subdir -f $(MINGW_MAKEFILE) clean;\
    - done; \
    - fi;
    - rm -f ./Makefile.am.mingw
    -
    -./Makefile.am.mingw: ./Makefile.am ./Makefile.mingw
    - sed \
    - -e 's/^if\ INSTALL_PIXMAPS/ifeq (\$$(INSTALL_PIXMAPS), 1)/' \
    - -e 's/^if\ ENABLE_TRAYCOMPAT/ifeq (\$$(ENABLE_TRAYCOMPAT), 1)/' \
    - $< > $@
    - include $@
    -
    --- a/pidgin/pixmaps/emotes/default/24/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,203 +0,0 @@
    -SMILEYS = \
    - act-up.png \
    - airplane.png \
    - alien.png \
    - amorous.png \
    - angel.png \
    - angry.png \
    - arrogant.png \
    - at-wits-end.png \
    - bad.png \
    - bashful.png \
    - beat-up.png \
    - beauty.png \
    - beer.png \
    - blowkiss.png \
    - bomb.png \
    - bored.png \
    - bowl.png \
    - boy.png \
    - brb.png \
    - bunny.png \
    - bye.png \
    - cake.png \
    - call-me.png \
    - camera.png \
    - can.png \
    - car.png \
    - cat.png \
    - chicken.png \
    - chilli.png \
    - cigarette.png \
    - clap.png \
    - clock.png \
    - cloudy.png \
    - clover.png \
    - clown.png \
    - coffee.png \
    - coins.png \
    - cold.png \
    - computer.png \
    - confused.png \
    - console.png \
    - cowboy.png \
    - cow.png \
    - crying.png \
    - curl-lip.png \
    - curse.png \
    - cute.png \
    - cyclops.png \
    - dance.png \
    - dazed.png \
    - desire.png \
    - devil.png \
    - disappointed.png \
    - disdain.png \
    - doctor.png \
    - dog.png \
    - doh.png \
    - dont-know.png \
    - drink.png \
    - drool.png \
    - hungry.png \
    - embarrassed.png \
    - excited.png \
    - excruciating.png \
    - eyeroll.png \
    - female-fighter.png \
    - film.png \
    - fingers-crossed.png \
    - flag.png \
    - foot-in-mouth.png \
    - ghost.png \
    - giggle.png \
    - girl.png \
    - glasses-cool.png \
    - glasses-nerdy.png \
    - goat.png \
    - go-away.png \
    - good.png \
    - hammer.png \
    - handcuffs.png \
    - handshake.png \
    - highfive.png \
    - hug-left.png \
    - hug-right.png \
    - hypnotized.png \
    - in_love.png \
    - island.png \
    - jump.png \
    - kissed.png \
    - kissing.png \
    - kiss.png \
    - knife.png \
    - lamp.png \
    - lashes.png \
    - laugh.png \
    - liquor.png \
    - loser.png \
    - love-over.png \
    - lying.png \
    - mad-tongue.png \
    - mail.png \
    - male-fighter1.png \
    - male-fighter2.png \
    - mean.png \
    - meeting.png \
    - mobile.png \
    - moneymouth.png \
    - monkey.png \
    - moon.png \
    - mrgreen.png \
    - musical-note.png \
    - music.png \
    - nervous.png \
    - neutral.png \
    - on-the-phone.png \
    - party.png \
    - peace.png \
    - phone.png \
    - pig.png \
    - pill.png \
    - pirate.png \
    - pissed-off.png \
    - pizza.png \
    - plate.png \
    - poop.png \
    - pray.png \
    - present.png \
    - pumpkin.png \
    - question.png \
    - quiet.png \
    - rainbow.png \
    - rain.png \
    - rose-dead.png \
    - rose.png \
    - rotfl.png \
    - sad.png \
    - sarcastic.png \
    - search.png \
    - secret.png \
    - shame.png \
    - sheep.png \
    - shocked.png \
    - shout.png \
    - shut-mouth.png \
    - sick.png \
    - silly.png \
    - skeleton.png \
    - skywalker.png \
    - sleeping.png \
    - sleepy.png \
    - happy.png \
    - snail.png \
    - snicker.png \
    - snowman.png \
    - soccerball.png \
    - soldier.png \
    - star.png \
    - starving.png \
    - stop.png \
    - stressed.png \
    - struggle.png \
    - sun.png \
    - hot.png \
    - talktohand.png \
    - teeth.png \
    - terror.png \
    - thinking.png \
    - thunder.png \
    - time-out.png \
    - tongue.png \
    - afraid.png \
    - turtle.png \
    - tv.png \
    - umbrella.png \
    - vampire.png \
    - victory.png \
    - waiting.png \
    - watermelon.png \
    - waving.png \
    - weep.png \
    - wilt.png \
    - wink.png \
    - worship.png \
    - yin-yang.png
    -
    -
    -pidginsmileypix_in_files = default.theme.in
    -
    -if INSTALL_PIXMAPS
    -pidginsmileypixdir = $(datadir)/pixmaps/pidgin/emotes/default
    -pidginsmileypix_DATA = \
    - $(SMILEYS) \
    - theme
    -
    -theme: default.theme.in
    - $(AM_V_GEN) sed -e 's/^_Name=/Name=/' \
    - -e 's/^_Description=/Description=/' \
    - -e 's/^_Author=/Author=/' \
    - $< > $@
    -endif
    -
    -EXTRA_DIST = $(SMILEYS) $(pidginsmileypix_in_files) theme
    --- a/pidgin/pixmaps/emotes/default/24/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,27 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
    -#
    -
    -PIDGIN_TREE_TOP := ../../../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -datadir = $(PIDGIN_INSTALL_DIR)
    --include ./Makefile.am.mingw
    -
    -.PHONY: install clean
    -
    -install: ./Makefile.am.mingw theme
    - if test '$(pidginsmileypix_DATA)'; then \
    - mkdir -p $(pidginsmileypixdir); \
    - cp $(pidginsmileypix_DATA) $(pidginsmileypixdir); \
    - fi;
    -
    -clean:
    - rm -f theme ./Makefile.am.mingw
    -
    -./Makefile.am.mingw: ./Makefile.am
    - sed -e 's/^if\ INSTALL_PIXMAPS/ifeq (\$$(INSTALL_PIXMAPS), 1)/' ./Makefile.am > $@
    - include $@
    -
    --- a/pidgin/pixmaps/emotes/small/16/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,103 +0,0 @@
    -# These are mood images that are NOT also used in the smiley theme.
    -MOODS = \
    - afraid.png \
    - bathing.png \
    - cinema.png \
    - disappointed.png \
    - embarrassed.png \
    - grumpy.png \
    - hot.png \
    - internet.png \
    - invincible.png \
    - music.png \
    - restroom.png \
    - search.png \
    - shopping.png \
    - studying.png \
    - suit.png \
    - surfing.png \
    - typing.png \
    - working.png \
    - writing.png
    -
    -SMILEYS = \
    - amorous.png \
    - angel.png \
    - angry.png \
    - beer.png \
    - bored.png \
    - boy.png \
    - camera.png \
    - chilli.png \
    - cigarette.png \
    - coffee.png \
    - confused.png \
    - console.png \
    - cold.png \
    - cross.png \
    - crying.png \
    - devil.png \
    - dont-know.png \
    - drool.png \
    - excited.png \
    - excruciating.png \
    - eyeroll.png \
    - girl.png \
    - glasses-cool.png \
    - happy.png \
    - hug-left.png \
    - hug-right.png \
    - hungry.png \
    - in_love.png \
    - kiss.png \
    - lamp.png \
    - lying.png \
    - meeting.png \
    - mobile.png \
    - mrgreen.png \
    - musical-note.png \
    - nerdy.png \
    - neutral.png \
    - party.png \
    - phone.png \
    - pirate.png \
    - pissed-off.png \
    - plate.png \
    - question.png \
    - rose.png \
    - sad.png \
    - sarcastic.png \
    - shame.png \
    - shocked.png \
    - shut-mouth.png \
    - sick.png \
    - silent.png \
    - sleeping.png \
    - sleepy.png \
    - star.png \
    - stressed.png \
    - thinking.png \
    - thunder.png \
    - tongue.png \
    - tv.png \
    - uhm-yeah.png \
    - wink.png
    -
    -
    -pidginsmileypix_in_files = small.theme.in
    -
    -if INSTALL_PIXMAPS
    -pidginsmileypixdir = $(datadir)/pixmaps/pidgin/emotes/small
    -pidginsmileypix_DATA = \
    - $(MOODS) \
    - $(SMILEYS) \
    - theme
    -
    -theme: small.theme.in
    - $(AM_V_GEN) sed -e 's/^_Name=/Name=/' \
    - -e 's/^_Description=/Description=/' \
    - -e 's/^_Author=/Author=/' \
    - $< > $@
    -endif
    -
    -EXTRA_DIST = $(MOODS) $(SMILEYS) $(pidginsmileypix_in_files) theme
    --- a/pidgin/pixmaps/emotes/small/16/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,27 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
    -#
    -
    -PIDGIN_TREE_TOP := ../../../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -datadir = $(PIDGIN_INSTALL_DIR)
    --include ./Makefile.am.mingw
    -
    -.PHONY: install clean
    -
    -install: ./Makefile.am.mingw theme
    - if test '$(pidginsmileypix_DATA)'; then \
    - mkdir -p $(pidginsmileypixdir); \
    - cp $(pidginsmileypix_DATA) $(pidginsmileypixdir); \
    - fi;
    -
    -clean:
    - rm -f theme ./Makefile.am.mingw
    -
    -./Makefile.am.mingw: ./Makefile.am
    - sed -e 's/^if\ INSTALL_PIXMAPS/ifeq (\$$(INSTALL_PIXMAPS), 1)/' ./Makefile.am > $@
    - include $@
    -
    --- a/pidgin/plugins/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,149 +0,0 @@
    -DIST_SUBDIRS = cap disco gestures gevolution musicmessaging ticker win32/winprefs win32/transparency
    -
    -if BUILD_GEVOLUTION
    -GEVOLUTION_DIR = gevolution
    -endif
    -
    -if ENABLE_DBUS
    -MUSICMESSAGING_DIR = musicmessaging
    -endif
    -
    -if ENABLE_CAP
    -CAP_DIR = cap
    -endif
    -
    -if ENABLE_GESTURES
    -GESTURE_DIR = gestures
    -endif
    -
    -SUBDIRS = \
    - $(CAP_DIR) \
    - $(GESTURE_DIR) \
    - $(GEVOLUTION_DIR) \
    - $(MUSICMESSAGING_DIR) \
    - disco \
    - ticker
    -
    -if IS_WIN32
    -SUBDIRS += \
    - win32/winprefs \
    - win32/transparency
    -endif
    -
    -plugindir = @PIDGIN_PLUGINDIR@
    -
    -contact_priority_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -extplacement_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -gtk_signals_test_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -gtkbuddynote_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -history_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -iconaway_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -imgupload_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -markerline_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -notify_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -relnot_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -screencap_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -sendbutton_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -spellchk_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -unity_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -webkit_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -xmppconsole_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if PLUGINS
    -
    -plugin_LTLIBRARIES = \
    - extplacement.la \
    - gtkbuddynote.la \
    - history.la \
    - iconaway.la \
    - imgupload.la \
    - markerline.la \
    - notify.la \
    - relnot.la \
    - screencap.la \
    - sendbutton.la \
    - spellchk.la \
    - webkit.la \
    - xmppconsole.la
    -
    -if ENABLE_UNITY
    -plugin_LTLIBRARIES += unity.la
    -endif
    -
    -noinst_LTLIBRARIES = \
    - contact_priority.la \
    - gtk_signals_test.la
    -
    -contact_priority_la_SOURCES = contact_priority.c
    -extplacement_la_SOURCES = extplacement.c
    -gtk_signals_test_la_SOURCES = gtk-signals-test.c
    -gtkbuddynote_la_SOURCES = gtkbuddynote.c
    -history_la_SOURCES = history.c
    -iconaway_la_SOURCES = iconaway.c
    -imgupload_la_SOURCES = imgupload.c
    -markerline_la_SOURCES = markerline.c
    -notify_la_SOURCES = notify.c
    -relnot_la_SOURCES = relnot.c
    -screencap_la_SOURCES = screencap.c
    -sendbutton_la_SOURCES = sendbutton.c
    -spellchk_la_SOURCES = spellchk.c
    -unity_la_SOURCES = unity.c
    -webkit_la_SOURCES = webkit.c
    -xmppconsole_la_SOURCES = xmppconsole.c
    -
    -contact_priority_la_LIBADD = @PIDGIN_LIBS@
    -extplacement_la_LIBADD = @PIDGIN_LIBS@
    -gtk_signals_test_la_LIBADD = @PIDGIN_LIBS@
    -gtkbuddynote_la_LIBADD = @PIDGIN_LIBS@
    -history_la_LIBADD = @PIDGIN_LIBS@
    -iconaway_la_LIBADD = @PIDGIN_LIBS@
    -imgupload_la_LIBADD = @PIDGIN_LIBS@ $(JSON_LIBS)
    -markerline_la_LIBADD = @PIDGIN_LIBS@ $(WEBKIT_LIBS)
    -notify_la_LIBADD = @PIDGIN_LIBS@
    -relnot_la_LIBADD = @PIDGIN_LIBS@
    -screencap_la_LIBADD = @PIDGIN_LIBS@
    -sendbutton_la_LIBADD = @PIDGIN_LIBS@
    -spellchk_la_LIBADD = @PIDGIN_LIBS@
    -unity_la_LIBADD = @PIDGIN_LIBS@ $(UNITY_LIBS)
    -webkit_la_LIBADD = @PIDGIN_LIBS@ $(WEBKIT_LIBS)
    -xmppconsole_la_LIBADD = @PIDGIN_LIBS@
    -
    -imgupload_la_CFLAGS = $(JSON_CFLAGS)
    -
    -endif # PLUGINS
    -
    -EXTRA_DIST = \
    - Makefile.mingw \
    - mailchk.c \
    - pidgininc.c \
    - raw.c \
    - win32/transparency/Makefile.mingw \
    - win32/transparency/win2ktrans.c \
    - win32/winprefs/gtkappbar.c \
    - win32/winprefs/gtkappbar.h \
    - win32/winprefs/Makefile.mingw \
    - win32/winprefs/winprefs.c
    -
    -AM_CPPFLAGS = \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(UNITY_CFLAGS) \
    - $(WEBKIT_CFLAGS) \
    - $(GSTREAMER_CFLAGS) \
    - $(PLUGIN_CFLAGS)
    -
    -#
    -# This part allows people to build their own plugins in here.
    -# Yes, it's a mess.
    -#
    -SUFFIXES = .c .so
    -.c.so:
    - $(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
    - $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module @PLUGIN_LDFLAGS@ $(PLUGIN_LIBS)
    - @rm -f tmp$@.lo tmp$@.o libtmp$@.la
    - @cp .libs/libtmp$@*.so $@
    - @rm -rf .libs/libtmp$@.*
    --- a/pidgin/plugins/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,110 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of Pidgin Plugins
    -#
    -
    -PIDGIN_TREE_TOP := ../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -DISCO_PLUGIN := ./disco
    -TICKER_PLUGIN := ./ticker
    -TRANSPARENCY_PLUGIN := ./win32/transparency
    -WINPREFS_PLUGIN := ./win32/winprefs
    -
    -.SUFFIXES:
    -.SUFFIXES: .c .dll
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/gtk-2.0 \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/include/pango-1.0 \
    - -I$(GTK_TOP)/include/atk-1.0 \
    - -I$(GTK_TOP)/include/cairo \
    - -I$(GTK_TOP)/include/gdk-pixbuf-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(GTK_TOP)/lib/gtk-2.0/include \
    - -I$(LIBSOUP_TOP)/include/libsoup-2.4 \
    - -I$(WEBKITGTK_TOP)/include/webkitgtk-1.0 \
    - -I$(PIDGIN_TREE_TOP) \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TOP) \
    - -I$(PIDGIN_TOP)/win32
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(WEBKITGTK_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L$(PIDGIN_TOP)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = -lgtk-win32-2.0 \
    - -lglib-2.0 \
    - -lgdk-win32-2.0 \
    - -lgobject-2.0 \
    - -lgmodule-2.0 \
    - -lgdk_pixbuf-2.0 \
    - -lpango-1.0 \
    - -lcairo \
    - -lintl \
    - -lws2_32 \
    - -lwebkitgtk-1.0 \
    - -lpurple \
    - -lpidgin
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all clean plugins install
    -
    -all: plugins
    - $(MAKE_at) $(MAKE) -C $(DISCO_PLUGIN) -f $(MINGW_MAKEFILE)
    - $(MAKE_at) $(MAKE) -C $(TICKER_PLUGIN) -f $(MINGW_MAKEFILE)
    - $(MAKE_at) $(MAKE) -C $(TRANSPARENCY_PLUGIN) -f $(MINGW_MAKEFILE)
    - $(MAKE_at) $(MAKE) -C $(WINPREFS_PLUGIN) -f $(MINGW_MAKEFILE)
    -
    -install: all $(PIDGIN_INSTALL_PLUGINS_DIR)
    - $(MAKE_at) $(MAKE) -C $(DISCO_PLUGIN) -f $(MINGW_MAKEFILE) install
    - $(MAKE_at) $(MAKE) -C $(TICKER_PLUGIN) -f $(MINGW_MAKEFILE) install
    - $(MAKE_at) $(MAKE) -C $(TRANSPARENCY_PLUGIN) -f $(MINGW_MAKEFILE) install
    - $(MAKE_at) $(MAKE) -C $(WINPREFS_PLUGIN) -f $(MINGW_MAKEFILE) install
    - cp *.dll $(PIDGIN_INSTALL_PLUGINS_DIR)
    -
    -%.dll: %.c $(PURPLE_CONFIG_H) $(PURPLE_VERSION_H)
    - $(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@.o -c $<
    - $(CC) -shared $@.o $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $@
    -
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -plugins: \
    - contact_priority.dll \
    - extplacement.dll \
    - gtkbuddynote.dll \
    - history.dll \
    - iconaway.dll \
    - markerline.dll \
    - notify.dll \
    - relnot.dll \
    - sendbutton.dll \
    - spellchk.dll \
    - webkit.dll \
    - xmppconsole.dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -f *.o *.dll
    - $(MAKE_at) $(MAKE) -C $(DISCO_PLUGIN) -f $(MINGW_MAKEFILE) clean
    - $(MAKE_at) $(MAKE) -C $(TICKER_PLUGIN) -f $(MINGW_MAKEFILE) clean
    - $(MAKE_at) $(MAKE) -C $(TRANSPARENCY_PLUGIN) -f $(MINGW_MAKEFILE) clean
    - $(MAKE_at) $(MAKE) -C $(WINPREFS_PLUGIN) -f $(MINGW_MAKEFILE) clean
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/pidgin/plugins/cap/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,29 +0,0 @@
    -capdir = @PIDGIN_PLUGINDIR@
    -
    -cap_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if PLUGINS
    -
    -cappixdir = $(datadir)/pixmaps/pidgin/buttons
    -
    -cap_LTLIBRARIES = cap.la
    -
    -cap_la_SOURCES = \
    - cap.h \
    - cap.c \
    - cap_statistics.h
    -
    -endif
    -
    -cap_la_LIBADD = @PIDGIN_LIBS@ $(SQLITE3_LIBS)
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(SQLITE3_CFLAGS)
    -
    -EXTRA_DIST = Makefile.mingw
    --- a/pidgin/plugins/cap/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,82 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for cap plugin.
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = cap
    -
    -# This is where sqlite3.[ch] from the sqlite "amalgamation" archive were extracted to
    -# This is available from http://www.sqlite.org/download.html
    -SQLITE_TOP ?= $(WIN32_DEV_TOP)/sqlite-3.4.1
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(SQLITE_TOP) \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/gtk-2.0 \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/include/pango-1.0 \
    - -I$(GTK_TOP)/include/atk-1.0 \
    - -I$(GTK_TOP)/include/cairo \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(GTK_TOP)/lib/gtk-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TOP) \
    - -I$(PIDGIN_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L$(PIDGIN_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = cap.c \
    - $(SQLITE_TOP)/sqlite3.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = -lgtk-win32-2.0 \
    - -lglib-2.0 \
    - -lgdk-win32-2.0 \
    - -lgobject-2.0 \
    - -lintl \
    - -lpurple \
    - -lpidgin
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: $(PIDGIN_INSTALL_PLUGINS_DIR) all
    - cp $(TARGET).dll $(PIDGIN_INSTALL_PLUGINS_DIR)
    -
    -$(OBJECTS): $(PIDGIN_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(PIDGIN_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -rf $(OBJECTS)
    - rm -rf $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/pidgin/plugins/disco/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,28 +0,0 @@
    -plugindir = @PIDGIN_PLUGINDIR@
    -
    -xmppdisco_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -EXTRA_DIST = \
    - Makefile.mingw
    -
    -if PLUGINS
    -
    -plugin_LTLIBRARIES = xmppdisco.la
    -
    -xmppdisco_la_SOURCES = \
    - gtkdisco.c \
    - gtkdisco.h \
    - xmppdisco.c \
    - xmppdisco.h
    -
    -xmppdisco_la_LIBADD = @PIDGIN_LIBS@
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS)
    --- a/pidgin/plugins/disco/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,80 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for xmppdisco plugin.
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = xmppdisco
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/gtk-2.0 \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/include/pango-1.0 \
    - -I$(GTK_TOP)/include/atk-1.0 \
    - -I$(GTK_TOP)/include/cairo \
    - -I$(GTK_TOP)/include/gdk-pixbuf-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(GTK_TOP)/lib/gtk-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TOP) \
    - -I$(PIDGIN_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L$(PIDGIN_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = xmppdisco.c \
    - gtkdisco.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = -lgtk-win32-2.0 \
    - -lglib-2.0 \
    - -lgdk-win32-2.0 \
    - -lgobject-2.0 \
    - -lpango-1.0 \
    - -lgdk_pixbuf-2.0 \
    - -lintl \
    - -lpurple \
    - -lpidgin
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: $(PIDGIN_INSTALL_PLUGINS_DIR) all
    - cp $(TARGET).dll $(PIDGIN_INSTALL_PLUGINS_DIR)
    -
    -$(OBJECTS): $(PIDGIN_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(PIDGIN_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -rf $(OBJECTS)
    - rm -rf $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/pidgin/plugins/gestures/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,26 +0,0 @@
    -plugindir = @PIDGIN_PLUGINDIR@
    -
    -gestures_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if PLUGINS
    -
    -plugin_LTLIBRARIES = gestures.la
    -
    -gestures_la_SOURCES = \
    - gestures.c \
    - gstroke.h \
    - gstroke-internal.h \
    - stroke.c \
    - stroke-draw.c
    -
    -gestures_la_LIBADD = @PIDGIN_LIBS@
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS)
    --- a/pidgin/plugins/gevolution/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,29 +0,0 @@
    -plugindir = @PIDGIN_PLUGINDIR@
    -
    -gevolution_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if PLUGINS
    -
    -plugin_LTLIBRARIES = gevolution.la
    -
    -gevolution_la_SOURCES = \
    - add_buddy_dialog.c \
    - assoc-buddy.c \
    - gevolution.c \
    - gevolution.h \
    - gevo-util.c \
    - new_person_dialog.c \
    - eds-utils.c
    -
    -gevolution_la_LIBADD = @PIDGIN_LIBS@ $(EVOLUTION_ADDRESSBOOK_LIBS) $(GPLUGIN_LIBS)
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(EVOLUTION_ADDRESSBOOK_CFLAGS) \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS)
    --- a/pidgin/plugins/musicmessaging/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,44 +0,0 @@
    -EXTRA_DIST = \
    - music.png
    -
    -musicmessagingdir = @PIDGIN_PLUGINDIR@
    -
    -musicmessaging_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if PLUGINS
    -if ENABLE_DBUS
    -
    -musicmessagingpixdir = $(datadir)/pixmaps/pidgin/buttons
    -musicmessagingpix_DATA = music.png
    -
    -musicmessaging_LTLIBRARIES = musicmessaging.la
    -
    -musicmessaging_la_SOURCES = \
    - musicmessaging.c
    -
    -musicmessaging_la_LIBADD = @PIDGIN_LIBS@ $(DBUS_LIBS)
    -
    -CLEANFILES = music-messaging-bindings.ch
    -
    -.PHONY: always
    -
    -$(top_builddir)/libpurple/dbus-types.h: always
    - $(AM_V_GEN)cd $(@D) && $(MAKE) $(AM_MAKEFLAGS) $(@F)
    -
    -music-messaging-bindings.ch: $(top_srcdir)/libpurple/dbus-analyze-functions.py $(musicmessaging_la_SOURCES)
    - $(AM_V_GEN)cat $(srcdir)/$(musicmessaging_la_SOURCES) | \
    - $(PYTHON) $(top_srcdir)/libpurple/dbus-analyze-functions.py --export-only > $@
    -
    -$(musicmessaging_la_OBJECTS) musicmessaging.so: music-messaging-bindings.ch $(top_builddir)/libpurple/dbus-types.h
    -
    -endif
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(DBUS_CFLAGS)
    --- a/pidgin/plugins/ticker/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,27 +0,0 @@
    -EXTRA_DIST = \
    - Makefile.mingw
    -
    -plugindir = @PIDGIN_PLUGINDIR@
    -
    -ticker_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -
    -if PLUGINS
    -
    -plugin_LTLIBRARIES = ticker.la
    -
    -ticker_la_SOURCES = \
    - gtkticker.c \
    - gtkticker.h \
    - ticker.c
    -
    -ticker_la_LIBADD = @PIDGIN_LIBS@
    -
    -endif
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(DEBUG_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS)
    --- a/pidgin/plugins/ticker/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,78 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for ticker plugin.
    -#
    -
    -PIDGIN_TREE_TOP := ../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = ticker
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/gtk-2.0 \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/include/pango-1.0 \
    - -I$(GTK_TOP)/include/atk-1.0 \
    - -I$(GTK_TOP)/include/cairo \
    - -I$(GTK_TOP)/include/gdk-pixbuf-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(GTK_TOP)/lib/gtk-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TOP) \
    - -I$(PIDGIN_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L$(PIDGIN_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = ticker.c \
    - gtkticker.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = -lgtk-win32-2.0 \
    - -lglib-2.0 \
    - -lgdk-win32-2.0 \
    - -lgobject-2.0 \
    - -lintl \
    - -lpurple \
    - -lpidgin
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: $(PIDGIN_INSTALL_PLUGINS_DIR) all
    - cp $(TARGET).dll $(PIDGIN_INSTALL_PLUGINS_DIR)
    -
    -$(OBJECTS): $(PIDGIN_CONFIG_H)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(PIDGIN_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -rf $(OBJECTS)
    - rm -rf $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/pidgin/plugins/win32/transparency/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -plugindir = @PIDGIN_PLUGINDIR@
    -
    -plugin_LTLIBRARIES = win2ktrans.la
    -
    -win2ktrans_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -win2ktrans_la_SOURCES = win2ktrans.c
    -win2ktrans_la_LIBADD = @PIDGIN_LIBS@
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(DEBUG_CPPFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(PLUGIN_CFLAGS)
    --- a/pidgin/plugins/win32/transparency/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,76 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32trans plugin.
    -#
    -
    -PIDGIN_TREE_TOP := ../../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = win2ktrans
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/gtk-2.0 \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/include/pango-1.0 \
    - -I$(GTK_TOP)/include/atk-1.0 \
    - -I$(GTK_TOP)/include/cairo \
    - -I$(GTK_TOP)/include/gdk-pixbuf-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(GTK_TOP)/lib/gtk-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TOP) \
    - -I$(PIDGIN_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L$(PIDGIN_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = win2ktrans.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = -lgtk-win32-2.0 \
    - -lglib-2.0 \
    - -lgdk-win32-2.0 \
    - -lgmodule-2.0 \
    - -lgobject-2.0 \
    - -lintl \
    - -lpidgin \
    - -lpurple
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: all $(PIDGIN_INSTALL_PLUGINS_DIR)
    - cp $(TARGET).dll $(PIDGIN_INSTALL_PLUGINS_DIR)
    -
    -$(TARGET).dll: $(PURPLE_DLL).a $(PIDGIN_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -rf $(OBJECTS)
    - rm -rf $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/pidgin/plugins/win32/winprefs/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,20 +0,0 @@
    -plugindir = @PIDGIN_PLUGINDIR@
    -
    -plugin_LTLIBRARIES = winprefs.la
    -
    -winprefs_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
    -winprefs_la_SOURCES = \
    - gtkappbar.c \
    - gtkappbar.h \
    - winprefs.c
    -winprefs_la_LIBADD = @PIDGIN_LIBS@
    -
    -AM_CPPFLAGS = \
    - -I$(top_srcdir)/libpurple \
    - -I$(top_builddir)/libpurple \
    - -I$(top_srcdir)/pidgin \
    - $(DEBUG_CPPFLAGS) \
    - $(GLIB_CFLAGS) \
    - $(GTK_CFLAGS) \
    - $(GPLUGIN_CFLAGS) \
    - $(PLUGIN_CFLAGS)
    --- a/pidgin/plugins/win32/winprefs/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,82 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for winprefs plugin.
    -#
    -
    -PIDGIN_TREE_TOP := ../../../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -TARGET = winprefs
    -DEFINES := $(subst -DWIN32_LEAN_AND_MEAN,,$(DEFINES))
    -
    -##
    -## INCLUDE PATHS
    -##
    -INCLUDE_PATHS += -I. \
    - -I$(GTK_TOP)/include \
    - -I$(GTK_TOP)/include/gtk-2.0 \
    - -I$(GTK_TOP)/include/glib-2.0 \
    - -I$(GTK_TOP)/include/pango-1.0 \
    - -I$(GTK_TOP)/include/atk-1.0 \
    - -I$(GTK_TOP)/include/cairo \
    - -I$(GTK_TOP)/include/gdk-pixbuf-2.0 \
    - -I$(GTK_TOP)/lib/glib-2.0/include \
    - -I$(GTK_TOP)/lib/gtk-2.0/include \
    - -I$(PURPLE_TOP) \
    - -I$(PURPLE_TOP)/win32 \
    - -I$(PIDGIN_TOP) \
    - -I$(PIDGIN_TOP)/win32 \
    - -I$(PIDGIN_TREE_TOP)
    -
    -LIB_PATHS += -L$(GTK_TOP)/lib \
    - -L$(PURPLE_TOP) \
    - -L$(PIDGIN_TOP)
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -C_SRC = winprefs.c \
    - gtkappbar.c
    -
    -OBJECTS = $(C_SRC:%.c=%.o)
    -
    -##
    -## LIBRARIES
    -##
    -LIBS = -lgtk-win32-2.0 \
    - -lglib-2.0 \
    - -lgdk-win32-2.0 \
    - -lgmodule-2.0 \
    - -lgobject-2.0 \
    - -lws2_32 \
    - -lintl \
    - -lpurple \
    - -lpidgin
    -
    -include $(PIDGIN_COMMON_RULES)
    -
    -##
    -## TARGET DEFINITIONS
    -##
    -.PHONY: all install clean
    -
    -all: $(TARGET).dll
    -
    -install: $(TARGET).dll $(PIDGIN_INSTALL_PLUGINS_DIR)
    - cp $(TARGET).dll $(PIDGIN_INSTALL_PLUGINS_DIR)
    -
    -##
    -## BUILD DLL
    -##
    -$(TARGET).dll: $(PURPLE_DLL).a $(PIDGIN_DLL).a $(OBJECTS)
    - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
    -
    -##
    -## CLEAN RULES
    -##
    -clean:
    - rm -rf $(OBJECTS)
    - rm -rf $(TARGET).dll
    -
    -include $(PIDGIN_COMMON_TARGETS)
    --- a/pidgin/themes/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,22 +0,0 @@
    -
    -themetemplatedir = $(datadir)/pidgin/theme
    -themetemplate_DATA = Template.html
    -themecontentsdir = $(themetemplatedir)/Contents
    -themecontents_DATA = Contents/Info.plist
    -themeresourcesdir = $(themecontentsdir)/Resources
    -themeresources_DATA = Contents/Resources/Content.html \
    - Contents/Resources/Status.html \
    - Contents/Resources/main.css
    -themeresourcesincomingdir = $(themeresourcesdir)/Incoming
    -themeresourcesincoming_DATA = Contents/Resources/Incoming/Content.html
    -themevariantsdir = $(themeresourcesdir)/Variants
    -themevariants_DATA = Contents/Resources/Variants/Default.css \
    - Contents/Resources/Variants/No-Timestamps.css
    -
    -EXTRA_DIST = \
    - $(themetemplate_DATA) \
    - $(themecontents_DATA) \
    - $(themeresources_DATA) \
    - $(themeresourcesincoming_DATA) \
    - $(themevariants_DATA)
    -
    --- a/po/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,55 +0,0 @@
    -# Makefile.mingw
    -#
    -# Description: Makefile to generate mo files
    -#
    -
    -PIDGIN_TREE_TOP := ..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -PACKAGE = pidgin
    -
    -.SUFFIXES:
    -.SUFFIXES: .po .gmo
    -
    -##
    -## SOURCES, OBJECTS
    -##
    -
    -CATALOGS = $(patsubst %.po,%.gmo,$(wildcard *.po))
    -
    -##
    -## RULES
    -##
    -
    -.po.gmo:
    - @echo -e " GEN\t$@"
    - @rm -f $@ && $(GMSGFMT) --statistics -o $@ $<
    -
    -##
    -## TARGETS
    -##
    -
    -.PHONY: all install clean
    -
    -all: $(CATALOGS)
    -
    -install: all
    - mkdir -p $(PURPLE_INSTALL_PO_DIR)
    - @catalogs='$(CATALOGS)'; \
    - for cat in $$catalogs; do \
    - cat=`basename $$cat`; \
    - lang=`echo $$cat | sed 's/\.gmo$$//'`; \
    - dir=$(PURPLE_INSTALL_PO_DIR)/$$lang/LC_MESSAGES; \
    - mkdir -p $$dir; \
    - if test -r $$cat; then \
    - cp $$cat $$dir/$(PACKAGE).mo; \
    - echo "installing $$cat as $$dir/$(PACKAGE).mo"; \
    - else \
    - cp $(PURPLE_PO_TOP)/$$cat $$dir/$(PACKAGE).mo; \
    - echo "installing $(PURPLE_PO_TOP)/$$cat as" \
    - "$$dir/$(PACKAGE).mo"; \
    - fi; \
    - done
    -
    -clean:
    - rm -f *.gmo
    --- a/share/ca-certs/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,23 +0,0 @@
    -CERTIFICATES = \
    - CAcert_Root.pem \
    - CAcert_Class3.pem \
    - mozilla.pem
    -
    -#EXTRA_CERTS = \
    -# filename.pem
    -
    -
    -cacertsdir = $(datadir)/purple/ca-certs
    -
    -if INSTALL_SSL_CERTIFICATES
    -cacerts_DATA = \
    - $(CERTIFICATES) \
    - $(EXTRA_CERTS)
    -else
    -cacerts_DATA = $(EXTRA_CERTS)
    -endif
    -
    -EXTRA_DIST = \
    - Makefile.mingw \
    - $(CERTIFICATES) \
    - $(EXTRA_CERTS)
    --- a/share/ca-certs/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,27 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of Pidgin ca-certs
    -#
    -
    -PIDGIN_TREE_TOP := ../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -datadir := $(PIDGIN_INSTALL_DIR)
    --include ./Makefile.am.mingw
    -cacertsdir := $(PIDGIN_INSTALL_DIR)/ca-certs
    -
    -.PHONY: install clean
    -
    -install: ./Makefile.am.mingw
    - if test '$(cacerts_DATA)'; then \
    - mkdir -p $(cacertsdir); \
    - cp $(cacerts_DATA) $(cacertsdir); \
    - fi;
    -
    -clean:
    - rm -f ./Makefile.am.mingw
    -
    -./Makefile.am.mingw: ./Makefile.am
    - sed -e 's/^if\ INSTALL_SSL_CERTIFICATES/ifeq (\$$(INSTALL_SSL_CERTIFICATES), 1)/' ./Makefile.am > $@
    -
    --- a/share/sounds/Makefile.am Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,12 +0,0 @@
    -soundsdir = $(datadir)/sounds/purple
    -sounds_DATA = \
    - alert.wav \
    - login.wav \
    - logout.wav \
    - receive.wav \
    - send.wav
    -
    -EXTRA_DIST = \
    - Makefile.mingw \
    - $(sounds_DATA)
    -
    --- a/share/sounds/Makefile.mingw Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,20 +0,0 @@
    -#
    -# Makefile.mingw
    -#
    -# Description: Makefile for win32 (mingw) version of Pidgin sounds
    -#
    -
    -PIDGIN_TREE_TOP := ../..
    -include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
    -
    -datadir := $(PIDGIN_INSTALL_DIR)
    -include ./Makefile.am
    -
    -.PHONY: install
    -
    -install:
    - if test '$(sounds_DATA)'; then \
    - mkdir -p $(soundsdir); \
    - cp $(sounds_DATA) $(soundsdir); \
    - fi;
    -
    --- a/tap-driver.sh Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,652 +0,0 @@
    -#! /bin/sh
    -# Copyright (C) 2011-2013 Free Software Foundation, Inc.
    -#
    -# This program is free software; you can redistribute it and/or modify
    -# it under the terms of the GNU General Public License as published by
    -# the Free Software Foundation; either version 2, or (at your option)
    -# any later version.
    -#
    -# This program is distributed in the hope that it will be useful,
    -# but WITHOUT ANY WARRANTY; without even the implied warranty of
    -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    -# GNU General Public License for more details.
    -#
    -# You should have received a copy of the GNU General Public License
    -# along with this program. If not, see <http://www.gnu.org/licenses/>.
    -
    -# As a special exception to the GNU General Public License, if you
    -# distribute this file as part of a program that contains a
    -# configuration script generated by Autoconf, you may include it under
    -# the same distribution terms that you use for the rest of that program.
    -
    -# This file is maintained in Automake, please report
    -# bugs to <bug-automake@gnu.org> or send patches to
    -# <automake-patches@gnu.org>.
    -
    -scriptversion=2011-12-27.17; # UTC
    -
    -# Make unconditional expansion of undefined variables an error. This
    -# helps a lot in preventing typo-related bugs.
    -set -u
    -
    -me=tap-driver.sh
    -
    -fatal ()
    -{
    - echo "$me: fatal: $*" >&2
    - exit 1
    -}
    -
    -usage_error ()
    -{
    - echo "$me: $*" >&2
    - print_usage >&2
    - exit 2
    -}
    -
    -print_usage ()
    -{
    - cat <<END
    -Usage:
    - tap-driver.sh --test-name=NAME --log-file=PATH --trs-file=PATH
    - [--expect-failure={yes|no}] [--color-tests={yes|no}]
    - [--enable-hard-errors={yes|no}] [--ignore-exit]
    - [--diagnostic-string=STRING] [--merge|--no-merge]
    - [--comments|--no-comments] [--] TEST-COMMAND
    -The \`--test-name', \`--log-file' and \`--trs-file' options are mandatory.
    -END
    -}
    -
    -# TODO: better error handling in option parsing (in particular, ensure
    -# TODO: $log_file, $trs_file and $test_name are defined).
    -test_name= # Used for reporting.
    -log_file= # Where to save the result and output of the test script.
    -trs_file= # Where to save the metadata of the test run.
    -expect_failure=0
    -color_tests=0
    -merge=0
    -ignore_exit=0
    -comments=0
    -diag_string='#'
    -while test $# -gt 0; do
    - case $1 in
    - --help) print_usage; exit $?;;
    - --version) echo "$me $scriptversion"; exit $?;;
    - --test-name) test_name=$2; shift;;
    - --log-file) log_file=$2; shift;;
    - --trs-file) trs_file=$2; shift;;
    - --color-tests) color_tests=$2; shift;;
    - --expect-failure) expect_failure=$2; shift;;
    - --enable-hard-errors) shift;; # No-op.
    - --merge) merge=1;;
    - --no-merge) merge=0;;
    - --ignore-exit) ignore_exit=1;;
    - --comments) comments=1;;
    - --no-comments) comments=0;;
    - --diagnostic-string) diag_string=$2; shift;;
    - --) shift; break;;
    - -*) usage_error "invalid option: '$1'";;
    - esac
    - shift
    -done
    -
    -test $# -gt 0 || usage_error "missing test command"
    -
    -case $expect_failure in
    - yes) expect_failure=1;;
    - *) expect_failure=0;;
    -esac
    -
    -if test $color_tests = yes; then
    - init_colors='
    - color_map["red"]="" # Red.
    - color_map["grn"]="" # Green.
    - color_map["lgn"]="" # Light green.
    - color_map["blu"]="" # Blue.
    - color_map["mgn"]="" # Magenta.
    - color_map["std"]="" # No color.
    - color_for_result["ERROR"] = "mgn"
    - color_for_result["PASS"] = "grn"
    - color_for_result["XPASS"] = "red"
    - color_for_result["FAIL"] = "red"
    - color_for_result["XFAIL"] = "lgn"
    - color_for_result["SKIP"] = "blu"'
    -else
    - init_colors=''
    -fi
    -
    -# :; is there to work around a bug in bash 3.2 (and earlier) which
    -# does not always set '$?' properly on redirection failure.
    -# See the Autoconf manual for more details.
    -:;{
    - (
    - # Ignore common signals (in this subshell only!), to avoid potential
    - # problems with Korn shells. Some Korn shells are known to propagate
    - # to themselves signals that have killed a child process they were
    - # waiting for; this is done at least for SIGINT (and usually only for
    - # it, in truth). Without the `trap' below, such a behaviour could
    - # cause a premature exit in the current subshell, e.g., in case the
    - # test command it runs gets terminated by a SIGINT. Thus, the awk
    - # script we are piping into would never seen the exit status it
    - # expects on its last input line (which is displayed below by the
    - # last `echo $?' statement), and would thus die reporting an internal
    - # error.
    - # For more information, see the Autoconf manual and the threads:
    - # <http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html>
    - # <http://mail.opensolaris.org/pipermail/ksh93-integration-discuss/2009-February/004121.html>
    - trap : 1 3 2 13 15
    - if test $merge -gt 0; then
    - exec 2>&1
    - else
    - exec 2>&3
    - fi
    - "$@"
    - echo $?
    - ) | LC_ALL=C ${AM_TAP_AWK-awk} \
    - -v me="$me" \
    - -v test_script_name="$test_name" \
    - -v log_file="$log_file" \
    - -v trs_file="$trs_file" \
    - -v expect_failure="$expect_failure" \
    - -v merge="$merge" \
    - -v ignore_exit="$ignore_exit" \
    - -v comments="$comments" \
    - -v diag_string="$diag_string" \
    -'
    -# FIXME: the usages of "cat >&3" below could be optimized when using
    -# FIXME: GNU awk, and/on on systems that supports /dev/fd/.
    -
    -# Implementation note: in what follows, `result_obj` will be an
    -# associative array that (partly) simulates a TAP result object
    -# from the `TAP::Parser` perl module.
    -
    -## ----------- ##
    -## FUNCTIONS ##
    -## ----------- ##
    -
    -function fatal(msg)
    -{
    - print me ": " msg | "cat >&2"
    - exit 1
    -}
    -
    -function abort(where)
    -{
    - fatal("internal error " where)
    -}
    -
    -# Convert a boolean to a "yes"/"no" string.
    -function yn(bool)
    -{
    - return bool ? "yes" : "no";
    -}
    -
    -function add_test_result(result)
    -{
    - if (!test_results_index)
    - test_results_index = 0
    - test_results_list[test_results_index] = result
    - test_results_index += 1
    - test_results_seen[result] = 1;
    -}
    -
    -# Whether the test script should be re-run by "make recheck".
    -function must_recheck()
    -{
    - for (k in test_results_seen)
    - if (k != "XFAIL" && k != "PASS" && k != "SKIP")
    - return 1
    - return 0
    -}
    -
    -# Whether the content of the log file associated to this test should
    -# be copied into the "global" test-suite.log.
    -function copy_in_global_log()
    -{
    - for (k in test_results_seen)
    - if (k != "PASS")
    - return 1
    - return 0
    -}
    -
    -# FIXME: this can certainly be improved ...
    -function get_global_test_result()
    -{
    - if ("ERROR" in test_results_seen)
    - return "ERROR"
    - if ("FAIL" in test_results_seen || "XPASS" in test_results_seen)
    - return "FAIL"
    - all_skipped = 1
    - for (k in test_results_seen)
    - if (k != "SKIP")
    - all_skipped = 0
    - if (all_skipped)
    - return "SKIP"
    - return "PASS";
    -}
    -
    -function stringify_result_obj(result_obj)
    -{
    - if (result_obj["is_unplanned"] || result_obj["number"] != testno)
    - return "ERROR"
    -
    - if (plan_seen == LATE_PLAN)
    - return "ERROR"
    -
    - if (result_obj["directive"] == "TODO")
    - return result_obj["is_ok"] ? "XPASS" : "XFAIL"
    -
    - if (result_obj["directive"] == "SKIP")
    - return result_obj["is_ok"] ? "SKIP" : COOKED_FAIL;
    -
    - if (length(result_obj["directive"]))
    - abort("in function stringify_result_obj()")
    -
    - return result_obj["is_ok"] ? COOKED_PASS : COOKED_FAIL
    -}
    -
    -function decorate_result(result)
    -{
    - color_name = color_for_result[result]
    - if (color_name)
    - return color_map[color_name] "" result "" color_map["std"]
    - # If we are not using colorized output, or if we do not know how
    - # to colorize the given result, we should return it unchanged.
    - return result
    -}
    -
    -function report(result, details)
    -{
    - if (result ~ /^(X?(PASS|FAIL)|SKIP|ERROR)/)
    - {
    - msg = ": " test_script_name
    - add_test_result(result)
    - }
    - else if (result == "#")
    - {
    - msg = " " test_script_name ":"
    - }
    - else
    - {
    - abort("in function report()")
    - }
    - if (length(details))
    - msg = msg " " details
    - # Output on console might be colorized.
    - print decorate_result(result) msg
    - # Log the result in the log file too, to help debugging (this is
    - # especially true when said result is a TAP error or "Bail out!").
    - print result msg | "cat >&3";
    -}
    -
    -function testsuite_error(error_message)
    -{
    - report("ERROR", "- " error_message)
    -}
    -
    -function handle_tap_result()
    -{
    - details = result_obj["number"];
    - if (length(result_obj["description"]))
    - details = details " " result_obj["description"]
    -
    - if (plan_seen == LATE_PLAN)
    - {
    - details = details " # AFTER LATE PLAN";
    - }
    - else if (result_obj["is_unplanned"])
    - {
    - details = details " # UNPLANNED";
    - }
    - else if (result_obj["number"] != testno)
    - {
    - details = sprintf("%s # OUT-OF-ORDER (expecting %d)",
    - details, testno);
    - }
    - else if (result_obj["directive"])
    - {
    - details = details " # " result_obj["directive"];
    - if (length(result_obj["explanation"]))
    - details = details " " result_obj["explanation"]
    - }
    -
    - report(stringify_result_obj(result_obj), details)
    -}
    -
    -# `skip_reason` should be empty whenever planned > 0.
    -function handle_tap_plan(planned, skip_reason)
    -{
    - planned += 0 # Avoid getting confused if, say, `planned` is "00"
    - if (length(skip_reason) && planned > 0)
    - abort("in function handle_tap_plan()")
    - if (plan_seen)
    - {
    - # Error, only one plan per stream is acceptable.
    - testsuite_error("multiple test plans")
    - return;
    - }
    - planned_tests = planned
    - # The TAP plan can come before or after *all* the TAP results; we speak
    - # respectively of an "early" or a "late" plan. If we see the plan line
    - # after at least one TAP result has been seen, assume we have a late
    - # plan; in this case, any further test result seen after the plan will
    - # be flagged as an error.
    - plan_seen = (testno >= 1 ? LATE_PLAN : EARLY_PLAN)
    - # If testno > 0, we have an error ("too many tests run") that will be
    - # automatically dealt with later, so do not worry about it here. If
    - # $plan_seen is true, we have an error due to a repeated plan, and that
    - # has already been dealt with above. Otherwise, we have a valid "plan
    - # with SKIP" specification, and should report it as a particular kind
    - # of SKIP result.
    - if (planned == 0 && testno == 0)
    - {
    - if (length(skip_reason))
    - skip_reason = "- " skip_reason;
    - report("SKIP", skip_reason);
    - }
    -}
    -
    -function extract_tap_comment(line)
    -{
    - if (index(line, diag_string) == 1)
    - {
    - # Strip leading `diag_string` from `line`.
    - line = substr(line, length(diag_string) + 1)
    - # And strip any leading and trailing whitespace left.
    - sub("^[ \t]*", "", line)
    - sub("[ \t]*$", "", line)
    - # Return what is left (if any).
    - return line;
    - }
    - return "";
    -}
    -
    -# When this function is called, we know that line is a TAP result line,
    -# so that it matches the (perl) RE "^(not )?ok\b".
    -function setup_result_obj(line)
    -{
    - # Get the result, and remove it from the line.
    - result_obj["is_ok"] = (substr(line, 1, 2) == "ok" ? 1 : 0)
    - sub("^(not )?ok[ \t]*", "", line)
    -
    - # If the result has an explicit number, get it and strip it; otherwise,
    - # automatically assing the next progresive number to it.
    - if (line ~ /^[0-9]+$/ || line ~ /^[0-9]+[^a-zA-Z0-9_]/)
    - {
    - match(line, "^[0-9]+")
    - # The final `+ 0` is to normalize numbers with leading zeros.
    - result_obj["number"] = substr(line, 1, RLENGTH) + 0
    - line = substr(line, RLENGTH + 1)
    - }
    - else
    - {
    - result_obj["number"] = testno
    - }
    -
    - if (plan_seen == LATE_PLAN)
    - # No further test results are acceptable after a "late" TAP plan
    - # has been seen.
    - result_obj["is_unplanned"] = 1
    - else if (plan_seen && testno > planned_tests)
    - result_obj["is_unplanned"] = 1
    - else
    - result_obj["is_unplanned"] = 0
    -
    - # Strip trailing and leading whitespace.
    - sub("^[ \t]*", "", line)
    - sub("[ \t]*$", "", line)
    -
    - # This will have to be corrected if we have a "TODO"/"SKIP" directive.
    - result_obj["description"] = line
    - result_obj["directive"] = ""
    - result_obj["explanation"] = ""
    -
    - if (index(line, "#") == 0)
    - return # No possible directive, nothing more to do.
    -
    - # Directives are case-insensitive.
    - rx = "[ \t]*#[ \t]*([tT][oO][dD][oO]|[sS][kK][iI][pP])[ \t]*"
    -
    - # See whether we have the directive, and if yes, where.
    - pos = match(line, rx "$")
    - if (!pos)
    - pos = match(line, rx "[^a-zA-Z0-9_]")
    -
    - # If there was no TAP directive, we have nothing more to do.
    - if (!pos)
    - return
    -
    - # Let`s now see if the TAP directive has been escaped. For example:
    - # escaped: ok \# SKIP
    - # not escaped: ok \\# SKIP
    - # escaped: ok \\\\\# SKIP
    - # not escaped: ok \ # SKIP
    - if (substr(line, pos, 1) == "#")
    - {
    - bslash_count = 0
    - for (i = pos; i > 1 && substr(line, i - 1, 1) == "\\"; i--)
    - bslash_count += 1
    - if (bslash_count % 2)
    - return # Directive was escaped.
    - }
    -
    - # Strip the directive and its explanation (if any) from the test
    - # description.
    - result_obj["description"] = substr(line, 1, pos - 1)
    - # Now remove the test description from the line, that has been dealt
    - # with already.
    - line = substr(line, pos)
    - # Strip the directive, and save its value (normalized to upper case).
    - sub("^[ \t]*#[ \t]*", "", line)
    - result_obj["directive"] = toupper(substr(line, 1, 4))
    - line = substr(line, 5)
    - # Now get the explanation for the directive (if any), with leading
    - # and trailing whitespace removed.
    - sub("^[ \t]*", "", line)
    - sub("[ \t]*$", "", line)
    - result_obj["explanation"] = line
    -}
    -
    -function get_test_exit_message(status)
    -{
    - if (status == 0)
    - return ""
    - if (status !~ /^[1-9][0-9]*$/)
    - abort("getting exit status")
    - if (status < 127)
    - exit_details = ""
    - else if (status == 127)
    - exit_details = " (command not found?)"
    - else if (status >= 128 && status <= 255)
    - exit_details = sprintf(" (terminated by signal %d?)", status - 128)
    - else if (status > 256 && status <= 384)
    - # We used to report an "abnormal termination" here, but some Korn
    - # shells, when a child process die due to signal number n, can leave
    - # in $? an exit status of 256+n instead of the more standard 128+n.
    - # Apparently, both behaviours are allowed by POSIX (2008), so be
    - # prepared to handle them both. See also Austing Group report ID
    - # 0000051 <http://www.austingroupbugs.net/view.php?id=51>
    - exit_details = sprintf(" (terminated by signal %d?)", status - 256)
    - else
    - # Never seen in practice.
    - exit_details = " (abnormal termination)"
    - return sprintf("exited with status %d%s", status, exit_details)
    -}
    -
    -function write_test_results()
    -{
    - print ":global-test-result: " get_global_test_result() > trs_file
    - print ":recheck: " yn(must_recheck()) > trs_file
    - print ":copy-in-global-log: " yn(copy_in_global_log()) > trs_file
    - for (i = 0; i < test_results_index; i += 1)
    - print ":test-result: " test_results_list[i] > trs_file
    - close(trs_file);
    -}
    -
    -BEGIN {
    -
    -## ------- ##
    -## SETUP ##
    -## ------- ##
    -
    -'"$init_colors"'
    -
    -# Properly initialized once the TAP plan is seen.
    -planned_tests = 0
    -
    -COOKED_PASS = expect_failure ? "XPASS": "PASS";
    -COOKED_FAIL = expect_failure ? "XFAIL": "FAIL";
    -
    -# Enumeration-like constants to remember which kind of plan (if any)
    -# has been seen. It is important that NO_PLAN evaluates "false" as
    -# a boolean.
    -NO_PLAN = 0
    -EARLY_PLAN = 1
    -LATE_PLAN = 2
    -
    -testno = 0 # Number of test results seen so far.
    -bailed_out = 0 # Whether a "Bail out!" directive has been seen.
    -
    -# Whether the TAP plan has been seen or not, and if yes, which kind
    -# it is ("early" is seen before any test result, "late" otherwise).
    -plan_seen = NO_PLAN
    -
    -## --------- ##
    -## PARSING ##
    -## --------- ##
    -
    -is_first_read = 1
    -
    -while (1)
    - {
    - # Involutions required so that we are able to read the exit status
    - # from the last input line.
    - st = getline
    - if (st < 0) # I/O error.
    - fatal("I/O error while reading from input stream")
    - else if (st == 0) # End-of-input
    - {
    - if (is_first_read)
    - abort("in input loop: only one input line")
    - break
    - }
    - if (is_first_read)
    - {
    - is_first_read = 0
    - nextline = $0
    - continue
    - }
    - else
    - {
    - curline = nextline
    - nextline = $0
    - $0 = curline
    - }
    - # Copy any input line verbatim into the log file.
    - print | "cat >&3"
    - # Parsing of TAP input should stop after a "Bail out!" directive.
    - if (bailed_out)
    - continue
    -
    - # TAP test result.
    - if ($0 ~ /^(not )?ok$/ || $0 ~ /^(not )?ok[^a-zA-Z0-9_]/)
    - {
    - testno += 1
    - setup_result_obj($0)
    - handle_tap_result()
    - }
    - # TAP plan (normal or "SKIP" without explanation).
    - else if ($0 ~ /^1\.\.[0-9]+[ \t]*$/)
    - {
    - # The next two lines will put the number of planned tests in $0.
    - sub("^1\\.\\.", "")
    - sub("[^0-9]*$", "")
    - handle_tap_plan($0, "")
    - continue
    - }
    - # TAP "SKIP" plan, with an explanation.
    - else if ($0 ~ /^1\.\.0+[ \t]*#/)
    - {
    - # The next lines will put the skip explanation in $0, stripping
    - # any leading and trailing whitespace. This is a little more
    - # tricky in truth, since we want to also strip a potential leading
    - # "SKIP" string from the message.
    - sub("^[^#]*#[ \t]*(SKIP[: \t][ \t]*)?", "")
    - sub("[ \t]*$", "");
    - handle_tap_plan(0, $0)
    - }
    - # "Bail out!" magic.
    - # Older versions of prove and TAP::Harness (e.g., 3.17) did not
    - # recognize a "Bail out!" directive when preceded by leading
    - # whitespace, but more modern versions (e.g., 3.23) do. So we
    - # emulate the latter, "more modern" behaviour.
    - else if ($0 ~ /^[ \t]*Bail out!/)
    - {
    - bailed_out = 1
    - # Get the bailout message (if any), with leading and trailing
    - # whitespace stripped. The message remains stored in `$0`.
    - sub("^[ \t]*Bail out![ \t]*", "");
    - sub("[ \t]*$", "");
    - # Format the error message for the
    - bailout_message = "Bail out!"
    - if (length($0))
    - bailout_message = bailout_message " " $0
    - testsuite_error(bailout_message)
    - }
    - # Maybe we have too look for dianogtic comments too.
    - else if (comments != 0)
    - {
    - comment = extract_tap_comment($0);
    - if (length(comment))
    - report("#", comment);
    - }
    - }
    -
    -## -------- ##
    -## FINISH ##
    -## -------- ##
    -
    -# A "Bail out!" directive should cause us to ignore any following TAP
    -# error, as well as a non-zero exit status from the TAP producer.
    -if (!bailed_out)
    - {
    - if (!plan_seen)
    - {
    - testsuite_error("missing test plan")
    - }
    - else if (planned_tests != testno)
    - {
    - bad_amount = testno > planned_tests ? "many" : "few"
    - testsuite_error(sprintf("too %s tests run (expected %d, got %d)",
    - bad_amount, planned_tests, testno))
    - }
    - if (!ignore_exit)
    - {
    - # Fetch exit status from the last line.
    - exit_message = get_test_exit_message(nextline)
    - if (exit_message)
    - testsuite_error(exit_message)
    - }
    - }
    -
    -write_test_results()
    -
    -exit 0
    -
    -} # End of "BEGIN" block.
    -'
    -
    -# TODO: document that we consume the file descriptor 3 :-(
    -} 3>"$log_file"
    -
    -test $? -eq 0 || fatal "I/O or internal error"
    -
    -# Local Variables:
    -# mode: shell-script
    -# sh-indentation: 2
    -# eval: (add-hook 'write-file-hooks 'time-stamp)
    -# time-stamp-start: "scriptversion="
    -# time-stamp-format: "%:y-%02m-%02d.%02H"
    -# time-stamp-time-zone: "UTC"
    -# time-stamp-end: "; # UTC"
    -# End:
    --- a/tap-test Sun Oct 08 20:42:20 2017 +0300
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -#! /bin/sh
    -
    -# run a GTest in tap mode. The test binary is passed as $1
    -
    -$1 -k --tap