libpurple/meson.build

Mon, 19 Jun 2017 21:54:28 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Mon, 19 Jun 2017 21:54:28 -0400
branch
meson
changeset 38513
24e16b0137d0
parent 38512
a8ee459a518c
child 38516
dd0ddcb829b9
permissions
-rw-r--r--

Merge with default.

For meson build, delete marshallers and update name of resource file.

purple_coresources = [
	'account.c',
	'accounts.c',
	'accountopt.c',
	'blistnode.c',
	'buddy.c',
	'buddylist.c',
	'buddyicon.c',
	'chat.c',
	'ciphers/aescipher.c',
	'ciphers/descipher.c',
	'ciphers/des3cipher.c',
	'ciphers/md4hash.c',
	'ciphers/pbkdf2cipher.c',
	'ciphers/rc4cipher.c',
	'cipher.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_coreheaders = [
	'account.h',
	'accounts.h',
	'accountopt.h',
	'blistnode.h',
	'buddy.h',
	'buddylist.h',
	'buddyicon.h',
	'chat.h',
	'cipher.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'
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'
	]

	libpurplerc = configure_file(
	    input : 'win32/libpurplerc.rc.in',
	    output : 'libpurplerc.rc',
	    configuration : version_conf)
	purple_coresources += windows.compile_resources(libpurplerc)
endif

purple_mediaheaders = [
	'media/backend-iface.h',
	'media/candidate.h',
	'media/codec.h',
	'media/enum-types.h'
]

purple_cipherheaders = [
	'ciphers/aescipher.h',
	'ciphers/descipher.h',
	'ciphers/des3cipher.h',
	'ciphers/md4hash.h',
	'ciphers/pbkdf2cipher.h',
	'ciphers/rc4cipher.h',
]

purple_enumheaders = [
	'account.h',
	'buddyicon.h',
	'cipher.h',
	'connection.h',
	'conversation.h',
	'conversationtypes.h',
	'debug.h',
	'eventloop.h',
	'notify.h',
	'plugins.h',
	'protocol.h',
	'protocols.h',
	'roomlist.h',
	'status.h',
	'sound.h',
	'xfer.h',
	'xmlnode.h'
]


enums = gnome.mkenums('enums',
    sources : purple_enumheaders,
    h_template : 'enums.h.in',
    c_template : 'enums.c.in',
    install_header : true,
    install_dir : get_option('includedir') + '/libpurple')
enums_c = enums[0]
enums_h = enums[1]

purple_h = configure_file(input : 'purple.h.in',
                          output : 'purple.h',
                          configuration : conf,
                          install : true,
                          install_dir : get_option('includedir') + '/libpurple')
version_h = configure_file(input : 'version.h.in',
                           output : 'version.h',
                           configuration : version_conf,
                           install : true,
                           install_dir : get_option('includedir') + '/libpurple')

purple_builtsources = [
	enums_c,
]

purple_builtheaders = [
	purple_h,
	version_h,
	enums_h,
]

if ENABLE_DBUS

# 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_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'
]

purple_build_coreheaders = purple_coreheaders + purple_cipherheaders + purple_mediaheaders
purple_build_coreheaders += purple_builtheaders


# We should probably make this better
dbus_signals = purple_coresources + ['protocols/irc/irc.c', 'protocols/jabber/jabber.c']

dbus_analyze_functions = files('dbus-analyze-functions.py')[0]
dbus_analyze_signals = files('dbus-analyze-signals.py')[0]
dbus_analyze_types = files('dbus-analyze-types.py')[0]

dbus_types_c = custom_target('dbus_types_c',
                             input : purple_build_coreheaders,
                             output : 'dbus-types.ch',
                             command : [python, dbus_analyze_types, '-o', '@OUTPUT@',
                                        '--pattern=PURPLE_DBUS_DEFINE_TYPE(%s)', '@INPUT@'])

dbus_types_h = custom_target('dbus_types_h',
                             input : purple_build_coreheaders,
                             output : 'dbus-types.h',
                             command : [python, dbus_analyze_types, '-o', '@OUTPUT@',
                                        '--pattern=PURPLE_DBUS_DECLARE_TYPE(%s)', '@INPUT@'],
                             install : true,
                             install_dir : join_paths(get_option('includedir'), 'libpurple'))

dbus_bindings_c = custom_target('dbus_bindings_c',
                                input : dbus_exported,
                                output : 'dbus-bindings.ch',
                                command : [python, dbus_analyze_functions, '-o', '@OUTPUT@',
                                           '@INPUT@'])

dbus_signals_c = custom_target('dbus_signals_c',
                               input : dbus_signals,
                               output : 'dbus-signals.ch',
                               command : [python, dbus_analyze_signals, '-o', '@OUTPUT@',
                                          '@INPUT@'])

dbus_builtheaders = [dbus_types_h]
dbus_builtsources = [dbus_types_c, dbus_bindings_c, dbus_signals_c]

# libpurple-client

purple_client_bindings_h1 = custom_target('purple_client_bindings_h1',
    input : purple_build_coreheaders,
    output : 'purple-client-bindings1.h',
    command : [
        python, dbus_analyze_types,
        '--keyword=enum', '--verbatim', '-o', '@OUTPUT@', '@INPUT@'
    ]
)

purple_client_bindings_h2 = custom_target('purple_client_bindings_h2',
    input : dbus_exported,
    output : 'purple-client-bindings2.h',
    command : [
        python, dbus_analyze_functions,
        '--client', '--headers', '-o', '@OUTPUT@', '@INPUT@'
    ]
)

purple_client_bindings_h = custom_target('purple_client_bindings_h',
    input : [purple_client_bindings_h1, purple_client_bindings_h2],
    output : 'purple-client-bindings.h',
    capture : true,
    command : ['cat', '@INPUT@'])

purple_client_bindings_c = custom_target('purple_client_bindings_c',
    input : dbus_exported,
    output : 'purple-client-bindings.ch',
    command : [
        python, dbus_analyze_functions,
        '--client', '-o', '@OUTPUT@', '@INPUT@'
    ]
)

libpurple_client = library('purple-client',
    'purple-client.c', purple_client_bindings_c, purple_client_bindings_h,
    soversion : purple_lt_current,
    version : PURPLE_LT_VERSION_INFO,
    dependencies : [dbus, dbus_glib],
    install : true)

# scripts

install_data(['purple-remote', 'purple-send', 'purple-send-async', 'purple-url-handler'],
    install_dir : get_option('bindir'))

else

dbus_sources = []
dbus_headers = []
dbus_builtsources = []
dbus_builtheaders = []

endif

libpurple_inc = include_directories('.')
libpurple = library('purple',
                    purple_coresources + purple_builtsources +
                    dbus_sources + dbus_builtsources +
                    purple_builtheaders + dbus_builtheaders,
                    include_directories : [toplevel_inc, libpurple_inc],
                    install : true,
                    soversion : purple_lt_current,
                    version : PURPLE_LT_VERSION_INFO,
                    dependencies : # static_link_libs
                        [dbus, dbus_glib, dnsapi, ws2_32, glib, gio, gplugin, libxml,
                         farstream, gstreamer, gstreamer_video,
                         gstreamer_app, idn, json, gnutls,
                         nss, zlib, math])
libpurple_dep = declare_dependency(
    sources : purple_builtheaders,  # Ensure built before any dependencies.
    include_directories : [toplevel_inc, libpurple_inc],
    link_with : libpurple,
    dependencies : [gstreamer, gplugin, glib, gio])

if ENABLE_DBUS

# purple-client-example

purple_client_example = executable('purple-client-example',
    'purple-client-example.c', purple_client_bindings_h,
    link_with : [libpurple_client, libpurple],
    dependencies : [dbus, dbus_glib, glib],
    install : true)

endif

install_headers(purple_coreheaders + dbus_headers,
                subdir : 'libpurple')

install_headers(purple_cipherheaders,
                subdir : 'libpurple/ciphers')

install_headers(purple_mediaheaders,
                subdir : 'libpurple/media')

configure_file(input : 'data/purple-3.pc.in',
               output : 'purple-3.pc',
               configuration : pkg_conf,
               install : true,
               install_dir : get_option('libdir') + '/pkgconfig')

if INSTALL_I18N
	DESKTOP_FILE = 'purple-url-handler.desktop'
	desktop_file_in = configure_file(
	    input : 'data/' + DESKTOP_FILE + '.in.in',
	    output : DESKTOP_FILE + '.in',
	    configuration : conf)
	desktop_file = custom_target(DESKTOP_FILE,
	    input : desktop_file_in,
	    output : DESKTOP_FILE,
	    command : [intltool_merge, '--desktop-style', '-u',
	               '-c', '@BUILD_DIR@/po/.intltool-merge-cache',
	               meson.source_root() + '/po', '@INPUT@', '@OUTPUT@'],
	    install : true,
	    install_dir : get_option('datadir') + '/applications')
endif  # INSTALL_I18N

if enable_introspection
	introspection_sources = (purple_coreheaders + purple_builtheaders +
	                         dbus_headers + purple_cipherheaders +
	                         purple_mediaheaders)

	Purple_gir_includes = ['GObject-2.0']
	if PLUGINS
		Purple_gir_includes += ['GPlugin-0.0']
	endif
	if ENABLE_DBUS
		Purple_gir_includes += ['DBus-1.0', 'DBusGLib-1.0']
	endif

	libpurple_gir = gnome.generate_gir(libpurple,
	    sources : introspection_sources,
	    includes : Purple_gir_includes,
	    namespace : 'Purple',
	    symbol_prefix : 'purple_',
	    identifier_prefix : 'Purple',
	    nsversion : '@0@.@1@'.format(purple_major_version,
	                                 purple_minor_version),
	    install : true)
endif

subdir('tests')
subdir('example')
subdir('plugins')
subdir('protocols')

mercurial