Commit c3c236a4 authored by Marco Trevisan's avatar Marco Trevisan 🎺

meson: add support for building with the cool stuff

parent f0054714
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#mesondefine ENABLE_NLS
/* Package name */
#mesondefine GETTEXT_PACKAGE
/* Define if building against cairo-xlib-xrender */
#mesondefine HAVE_CAIRO_XLIB_XRENDER
/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#mesondefine HAVE_CFLOCALECOPYCURRENT
/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
#mesondefine HAVE_CFPREFERENCESCOPYAPPVALUE
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#mesondefine HAVE_DCGETTEXT
/* Define to 1 if you have the <dlfcn.h> header file. */
#mesondefine HAVE_DLFCN_H
/* Define if the GNU gettext() function is already present or preinstalled. */
#mesondefine HAVE_GETTEXT
/* Define if you have the iconv() function and it works. */
#mesondefine HAVE_ICONV
/* Define to 1 if you have the <inttypes.h> header file. */
#mesondefine HAVE_INTTYPES_H
/* Define to 1 if you have the <memory.h> header file. */
#mesondefine HAVE_MEMORY_H
/* Define if you have libstartup-notification */
#mesondefine HAVE_LIBSTARTUP_NOTIFICATION_1_0
#ifdef HAVE_LIBSTARTUP_NOTIFICATION_1_0
#define HAVE_STARTUP_NOTIFICATION 1
#endif
/* Define to 1 if you have the <stdint.h> header file. */
#mesondefine HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#mesondefine HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#mesondefine HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#mesondefine HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#mesondefine HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#mesondefine HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#mesondefine HAVE_UNISTD_H
/* Define if you have the XRes library */
#mesondefine HAVE_XRES
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#mesondefine LT_OBJDIR
/* Define if debugging is disabled */
#mesondefine NDEBUG
/* Name of package */
#mesondefine PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#mesondefine PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#mesondefine PACKAGE_NAME
/* Define to the full name and version of this package. */
#mesondefine PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#mesondefine PACKAGE_TARNAME
/* Define to the home page for this package. */
#mesondefine PACKAGE_URL
/* Define to the version of this package. */
#mesondefine PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#mesondefine STDC_HEADERS
/* Version number of package */
#mesondefine VERSION
gnome.gtkdoc(meson.project_name(),
namespace: PACKAGE_NAME,
main_sgml: meson.project_name() + '-docs.sgml',
src_dir: join_paths(meson.source_root(), meson.project_name()),
dependencies: declare_dependency(
include_directories: default_includes,
dependencies: LIBWNCK_DEPS,
compile_args: libwnck_cflags,
link_with: libwnck_lib
),
gobject_typesfile: meson.project_name() + '.types',
scan_args: [
'--rebuild-types',
'--ignore-headers=' + ' '.join(['wnck-enum-types.h', 'version.h']),
'--deprecated-guards="WNCK_DISABLE_DEPRECATED"'
],
mkdb_args: [
'--sgml-mode', '--output-format=xml'
],
install: true,
module_version: MODULE_VERSION,
)
{
global:
wnck_*;
local:
*;
};
gnome = import('gnome')
libwnck_includepath = join_paths(includedir, PACKAGE_NAME)
libwnck_includedir = join_paths(libwnck_includepath, meson.project_name())
version_data = configuration_data()
version_array = meson.project_version().split('.')
version_data.set('WNCK_MAJOR_VERSION', version_array[0])
version_data.set('WNCK_MINOR_VERSION', version_array[1])
version_data.set('WNCK_MICRO_VERSION', version_array[2])
headers = [
'libwnck.h',
'pager.h',
'application.h',
'class-group.h',
'screen.h',
'selector.h',
'tasklist.h',
'util.h',
'window.h',
'window-action-menu.h',
'workspace.h',
]
headers += configure_file(
input: 'version.h.in',
output: 'version.h',
configuration: version_data)
sources = [
'application.c',
'class-group.c',
'pager.c',
'screen.c',
'selector.c',
'tasklist.c',
'util.c',
'window-action-menu.c',
'window.c',
'wnck-image-menu-item-private.h',
'wnck-image-menu-item.c',
'workspace.c',
'xutils.c',
]
a11y_sources = [
'pager-accessible.c',
'pager-accessible.h',
'pager-accessible-factory.c',
'pager-accessible-factory.h',
'workspace-accessible.c',
'workspace-accessible.h',
'workspace-accessible-factory.c',
'workspace-accessible-factory.h',
]
enum_types = []
enum_types += gnome.mkenums(
'wnck-enum-types.h',
sources: headers,
fhead: '''#if !defined (__LIBWNCK_H_INSIDE__) && !defined (WNCK_COMPILATION)
#error "Only <libwnck/libwnck.h> can be included directly."
#endif
#ifndef __WNCK_ENUM_TYPES_H__
#define __WNCK_ENUM_TYPES_H__
G_BEGIN_DECLS''',
ftail: '''G_END_DECLS
#endif /* __WNCK_ENUM_TYPES_H__ */''',
eprod: '''#define WNCK_TYPE_@ENUMSHORT@ @enum_name@_get_type()
GType @enum_name@_get_type (void);''',
install_header: true,
install_dir: libwnck_includedir
)
enum_types += gnome.mkenums(
'wnck-enum-types.c',
sources: headers,
fhead: '#include <libwnck/libwnck.h>',
fprod: '/* enumerations from "@filename@" */',
vhead: 'static const G@Type@Value _@enum_name@_values[] = {',
vprod: '{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },',
vtail: '''{ 0, NULL, NULL }
};
GType
@enum_name@_get_type (void)
{
static GType type = 0;
if (!type)
type = g_@type@_register_static ("@EnumName@", _@enum_name@_values);
return type;
}'''
)
resources = gnome.compile_resources(
'@0@-resources'.format(meson.project_name()),
'wnck.gresource.xml',
source_dir: '.',
c_name: meson.project_name()
)
libwnck_cflags = [
'-DG_LOG_DOMAIN="Wnck"',
'-DWNCK_I_KNOW_THIS_IS_UNSTABLE',
'-DWNCK_LOCALEDIR="@0@"'.format(localedir),
'-DWNCK_COMPILATION',
'-DSN_API_NOT_YET_FROZEN=1'
]
mapfile = MODULE_NAME + '.map'
libwnck_ldflags = [
'-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile),
]
if get_option('enable-deprecation-flags')
foreach domain: ['G', 'ATK', 'GDK', 'GDK_PIXBUF', 'GTK', 'WNCK']
libwnck_cflags += '-D@0@_DISABLE_DEPRECATED'.format(domain)
endforeach
endif
libwnck_lib = shared_library(LIBNAME,
include_directories: default_includes,
sources: sources + a11y_sources + enum_types + resources,
dependencies: LIBWNCK_DEPS,
version: '@0@.@1@.@2@'.format(LIBWNCK_SOVERSION, LIBWNCK_CURRENT, LIBWNCK_REVISION),
soversion: LIBWNCK_SOVERSION,
install: true,
c_args: libwnck_cflags,
link_args: libwnck_ldflags,
)
introspection = get_option('introspection')
if not introspection.disabled()
find_program('g-ir-scanner', required: introspection.enabled())
gnome.generate_gir(libwnck_lib,
sources : headers + sources + enum_types,
namespace : 'Wnck',
nsversion : MODULE_VERSION,
export_packages : PACKAGE_NAME,
includes : ['GObject-2.0', 'GdkPixbuf-2.0', 'Gtk-3.0'],
extra_args: ['--c-include=@0@/@0@.h'.format(meson.project_name()),
'--cflags-begin'] + libwnck_cflags + ['--cflags-end'],
install : true
)
endif
install_headers(headers, subdir: libwnck_includedir)
progs = [
'wnckprop',
]
if not get_option('enable-deprecation-flags')
progs += 'wnck-urgency-monitor'
endif
test_progs = [
'test-wnck',
'test-tasklist',
'test-selector',
'test-pager',
'test-urgent',
'test-shutdown',
]
foreach prog: progs + test_progs
executable(prog, [prog + '.c'] + enum_types,
include_directories: default_includes,
dependencies: LIBWNCK_DEPS,
c_args: libwnck_cflags,
link_with: libwnck_lib,
install: progs.contains(prog) and get_option('install-tools'),
install_dir: bindir)
endforeach
project('libwnck',
'c',
version: '3.31.1',
meson_version: '>= 0.48.1')
LIBWNCK_SOVERSION = 0
# libtool versioning for libwnck
# increment if the interface has additions, changes, removals.
LIBWNCK_CURRENT = 3
# increment any time the source changes; set to
# 0 if you increment CURRENT
LIBWNCK_REVISION = 0
# increment if any interfaces have been added; set to 0
# if any interfaces have been changed or removed. removal has
# precedence over adding, so set to 0 if both happened.
LIBWNCK_AGE = 3
MODULE_NAME = meson.project_name() + '-@0@'.format(LIBWNCK_CURRENT)
MODULE_VERSION = '@0@.@1@'.format(LIBWNCK_CURRENT, LIBWNCK_REVISION)
PACKAGE_NAME = MODULE_NAME + '.@0@'.format(LIBWNCK_REVISION)
LIBNAME = MODULE_NAME.split('lib')[1]
prefix = get_option('prefix')
bindir = join_paths(prefix, get_option('bindir'))
libdir = join_paths(prefix, get_option('libdir'))
includedir = join_paths(prefix, get_option('includedir'))
localedir = join_paths(prefix, get_option('localedir'))
cc = meson.get_compiler('c')
default_includes = include_directories('.')
#####
# CFLAGS
# The same as the AX_COMPILER_FLAGS Autotools macro.
warning_cflags = [
'-fno-strict-aliasing',
'-Wall',
'-Wextra',
'-Wundef',
'-Wnested-externs',
'-Wwrite-strings',
'-Wpointer-arith',
'-Wmissing-declarations',
'-Wmissing-prototypes',
'-Wstrict-prototypes',
'-Wredundant-decls',
'-Wno-unused-parameter',
'-Wno-missing-field-initializers',
'-Wdeclaration-after-statement',
'-Wformat=2',
'-Wold-style-definition',
'-Wcast-align',
'-Wformat-nonliteral',
'-Wformat-security',
'-Wsign-compare',
'-Wstrict-aliasing',
'-Wshadow',
'-Winline',
'-Wpacked',
'-Wmissing-format-attribute',
'-Wmissing-noreturn',
'-Winit-self',
'-Wredundant-decls',
'-Wmissing-include-dirs',
'-Wunused-but-set-variable',
'-Warray-bounds',
'-Wimplicit-function-declaration',
'-Wreturn-type',
'-Wswitch-enum',
'-Wswitch-default',
'-Wduplicated-cond',
'-Wduplicated-branches',
'-Wlogical-op',
'-Wrestrict',
'-Wnull-dereference',
'-Wjump-misses-init',
'-Wdouble-promotion'
]
supported_warning_cflags = cc.get_supported_arguments(warning_cflags)
add_global_arguments(supported_warning_cflags, language : 'c')
##### end CFLAGS
conf = configuration_data()
check_headers = [
['HAVE_DLFCN_H', 'dlfcn.h'],
['HAVE_INTTYPES_H', 'inttypes.h'],
['HAVE_MEMORY_H', 'memory.h'],
['HAVE_STDINT_H', 'stdint.h'],
['HAVE_STDLIB_H', 'stdlib.h'],
['HAVE_STRINGS_H', 'strings.h'],
['HAVE_STRING_H', 'string.h'],
['HAVE_SYS_STAT_H', 'sys/stat.h'],
['HAVE_SYS_TYPES_H', 'sys/types.h'],
['HAVE_UNISTD_H', 'unistd.h'],
]
foreach h: check_headers
if cc.has_header(h.get(1))
conf.set(h.get(0), 1)
endif
endforeach
check_functions = [
['HAVE_DCGETTEXT', 'dcgettext', '#include<libintl.h>'],
]
foreach f: check_functions
if cc.has_function(f.get(1), prefix : f.get(2))
conf.set(f.get(0), 1)
endif
endforeach
LIBWNCK_DEPS = [cc.find_library('m', required: true)]
STARTUP_NOTIFICATION_PACKAGE = 'libstartup-notification-1.0'
X11_PACKAGE = 'x11'
XRES_PACKAGE = 'xres'
pkg_deps = [
['cairo-xlib-xrender', [], false],
['glib-2.0', '>= 2.32', true],
['gobject-2.0', '>= 2.13.0', true],
['gtk+-3.0', '>= 3.22.0', true],
[STARTUP_NOTIFICATION_PACKAGE, '>= 0.4', get_option('startup-notification').enabled()],
[X11_PACKAGE, [], true],
[XRES_PACKAGE, [], false],
]
foreach p: pkg_deps
pkg = p.get(0)
required = p.get(2)
dep = dependency(pkg, version: p.get(1), required: required)
LIBWNCK_DEPS += dep
if not required and dep.found()
conf.set('HAVE_' + pkg.to_upper().underscorify(), 1)
endif
endforeach
conf.set_quoted('PACKAGE_NAME', meson.project_name())
conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
conf.set_quoted('VERSION', meson.project_version())
conf.set_quoted('PACKAGE_VERSION', meson.project_version())
conf.set_quoted('GETTEXT_PACKAGE', PACKAGE_NAME)
configure_file(input: 'config.h.meson',
output : 'config.h',
configuration : conf)
pc_conf = configuration_data()
pc_conf.set('prefix', get_option('prefix'))
pc_conf.set('exec_prefix', '${prefix}')
pc_conf.set('libdir', '${exec_prefix}/' + get_option('libdir'))
pc_conf.set('includedir', '${prefix}/' + get_option('includedir'))
pc_conf.set('STARTUP_NOTIFICATION_PACKAGE', STARTUP_NOTIFICATION_PACKAGE)
pc_conf.set('X11_PACKAGE', X11_PACKAGE)
pc_conf.set('XRES_PACKAGE', XRES_PACKAGE)
pc_conf.set('VERSION', meson.project_version())
foreach pc: [PACKAGE_NAME, PACKAGE_NAME + '-uninstalled']
install_path = []
if not pc.contains('-uninstalled')
install_path = join_paths(libdir, 'pkgconfig')
endif
configure_file(input: pc + '.pc.in',
output: pc + '.pc',
configuration: pc_conf,
install_dir: install_path)
endforeach
subdir('libwnck')
subdir('po')
if get_option('enable-gtk-doc')
subdir('doc')
endif
option('enable-deprecation-flags',
type: 'boolean',
value: false,
description: 'Use *_DISABLE_DEPRECATED flags')
option('install-tools',
type: 'boolean',
value: true,
description: 'Install wnck-based tools')
option('startup-notification',
type: 'feature',
value: 'auto',
description: 'Use Startup notification')
option('introspection',
type: 'feature',
value: 'enabled',
description: 'Enable GObject introspection')
option('enable-gtk-doc',
type: 'boolean',
value: false,
description: 'Enable generating the API reference (depends on GTK-Doc)')
i18n = import('i18n')
i18n.gettext(PACKAGE_NAME, preset: 'glib')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment