libsigc++ -- The Typesafe Callback Framework for C++

General information:

   libsigc++ implements a typesafe callback system for standard C++. It
   allows you to define signals and to connect those signals to any
   callback function, either global or a member function, regardless of
   whether it is static or virtual.

   libsigc++ is used by gtkmm to wrap the GTK+ signal system. It does not
   depend on GTK+ or gtkmm.

   Further information is available on the libsigc++ project home page:
   https://libsigcplusplus.github.io/libsigcplusplus/

License information:

   Distribution of library and components is under the LGPL as listed in the
   file COPYING. Examples and tests are Public Domain.

Contact information:
   Maillist: mailto: libsigc-list@gnome.org
   Homepage: https://libsigcplusplus.github.io/libsigcplusplus/
   Online reference documentation: https://developer.gnome.org/libsigc++/unstable/
   Download: http://ftp.gnome.org/pub/GNOME/sources/libsigc++/
             https://download.gnome.org/sources/libsigc++/
   Git: https://github.com/libsigcplusplus/libsigcplusplus
   Bug reports: https://github.com/libsigcplusplus/libsigcplusplus/issues

Compatibility:

   Compatible compilers must support C++11, such as the decltype() specifier.

   All releases are tested with the gcc (g++) compiler.

# Building

Whenever possible, you should use the official binary packages approved by the
supplier of your operating system, such as your Linux distribution.

## Building on Windows

See MSVC_NMake/README.txt.

## Building from a release tarball

It's easiest to build with Meson, if the tarball was made with Meson,
and to build with Autotools, if the tarball was made with Autotools.
Then you don't have to use maintainer-mode.

How do you know how the tarball was made? If it was made with Meson,
it contains files in untracked/build_scripts/, untracked/docs/ and possibly
other subdirectories of untracked/.

### Building from a tarball with Meson

Don't call the builddir 'build'. There is a directory called 'build' with
files used by Autotools.

If the tarball was made with Autotools, you must enable maintainer-mode:
  $ meson --prefix=/some_directory --libdir=lib -Dmaintainer-mode=true your_builddir .
If the tarball was made with Meson:
  $ meson --prefix=/some_directory --libdir=lib your_builddir .

Then
  $ cd your_builddir
  $ ninja
  $ ninja install
You can run the tests like so:
  $ ninja test

### Building from a tarball with Autotools

If the tarball was made with Autotools:
  $ ./configure --prefix=/some_directory
If the tarball was made with Meson, you must enable maintainer-mode:
  $ ./autogen.sh --prefix=/some_directory

Then
  $ make
  $ make install
You can build the examples and tests, and run the tests, like so:
  $ make check

## Building from git

Building from git can be difficult so you should prefer building from
a release tarball unless you need to work on the libsigc++ code itself.

jhbuild can be a good help
  https://gitlab.gnome.org/GNOME/jhbuild
  https://wiki.gnome.org/Projects/Jhbuild

### Building from git with Meson

Maintainer-mode is enabled by default when you build from a git clone.

Don't call the builddir 'build'. There is a directory called 'build' with
files used by Autotools.

  $ meson --prefix=/some_directory --libdir=lib your_builddir .
  $ cd your_builddir
  $ ninja
  $ ninja install
You can run the tests like so:
  $ ninja test
You can create a tarball like so:
  $ ninja dist

### Building from git with Autotools

  $ ./autogen.sh --prefix=/some_directory
  $ make
  $ make install
You can build the examples and tests, and run the tests, like so:
  $ make check
You can create a tarball like so:
  $ make distcheck
or
  $ make dist
