qulogic/libgnt

b0ffb602e7e5
wms/s: Remove libpurple dependency from sample wms

As far as I could tell, wms/s.c is a sample window manager, made
to demonstrate how to use various features of libgnt. Therefore,
it's a little silly to depend on libpurple functionality for it.
This patch removes the dependency of libpurple from the sample wms
by changing it from trying to toggle the buddy list visibility upon
pressing the keyboard shortcut, to simply presenting any window
named "buddylist".
# UPDATING VERSION NUMBERS FOR RELEASES
#
# The version number is:
# <major>.<minor>.<micro><suffix>
#
# If any code has changed in libgnt:
# micro += 1
#
# If any functions have been added to libgnt:
# micro = 0
# minor += 1
#
# If backwards compatibility has been broken in libgnt:
# micro = 0
# minor = 0
# major += 1
# gnt_soversion += 1
#
# suffix should be similar to one of the following:
# For beta releases: '-beta2'
# For code under development: '-devel'
# For production releases: ''
#
# the last version for Finch 2 was 2.8.10,
# the first version for Finch 3 was 2.9.0
project('libgnt', 'c',
version : '2.9.0-devel',
meson_version : '>=0.37.0')
gnt_soversion = 1
parts = meson.project_version().split('-')
if parts.length() > 1
gnt_extra_version = parts[1]
else
gnt_extra_version = ''
endif
parts = parts[0].split('.')
gnt_major_version = parts[0]
gnt_minor_version = parts[1]
gnt_micro_version = parts[2]
gnt_config = configuration_data()
gnt_config.set('GNT_MAJOR_VERSION', gnt_major_version)
gnt_config.set('GNT_MINOR_VERSION', gnt_minor_version)
gnt_config.set('GNT_MICRO_VERSION', gnt_micro_version)
gnt_config.set_quoted('GNT_EXTRA_VERSION', gnt_extra_version)
gnt_config.set_quoted('GNT_VERSION', meson.project_version())
# FIXME Not available when independent.
PURPLE_AVAILABLE = false
compiler = meson.get_compiler('c')
pkgconfig = import('pkgconfig')
# #######################################################################
# # Check for GLib 2.40
# #######################################################################
glib = dependency('glib-2.0', version : '>= 2.40.0')
gobject = dependency('gobject-2.0')
gnome = import('gnome')
#######################################################################
# Check for LibXML2
#######################################################################
libxml = dependency('libxml-2.0', version : '>= 2.6.0')
#######################################################################
# Check for ncurses and other things used by it
#######################################################################
ncurses_available = true
ncurses_widechar = true
ncurses_header = 'ncurses.h'
# Some distros put the headers in ncursesw/, some don't. These are ordered to
# pick the last available as most-specific version.
ncursesw_header_paths = ['', 'ncursesw/']
ncurses = [
dependency('ncursesw', required : false),
dependency('panelw', required : false),
]
if ncurses[0].found() and ncurses[1].found()
foreach location : ncursesw_header_paths
f = location + 'ncurses.h'
if compiler.has_header_symbol(f, 'get_wch',
prefix : '#define _XOPEN_SOURCE_EXTENDED')
ncurses_header = f
endif
endforeach
else
ncurses_available = false
ncurses_inc = []
ncurses_libs = [
compiler.find_library('ncursesw', required : false),
compiler.find_library('panelw', required : false)
]
if ncurses_libs[0].found() and ncurses_libs[1].found()
foreach location : ncursesw_header_paths
f = location + 'ncurses.h'
if compiler.has_header_symbol(f, 'get_wch',
prefix : '#define _XOPEN_SOURCE_EXTENDED')
ncurses_available = true
ncurses_header = f
endif
endforeach
if ncurses_available
ncurses = declare_dependency(
include_directories : ncurses_inc,
dependencies : ncurses_libs
)
endif
endif
endif
if not ncurses_available
# ncursesw was not found. Look for plain old ncurses
ncurses = [
dependency('ncurses', required : false),
dependency('panel', required : false),
]
if ncurses[0].found() and ncurses_libs[1].found()
ncurses_available = true
else
ncurses_libs = [
compiler.find_library('ncurses', required : false),
compiler.find_library('panel', required : false),
]
ncurses_available = ncurses_libs[0].found() and ncurses_libs[1].found()
ncurses = declare_dependency(dependencies : ncurses_libs)
endif
ncurses_widechar = false
endif
if not ncurses_available and host_machine.system() == 'windows'
# Try pdcurses too.
ncurses_header = 'curses.h'
ncurses_libs = compiler.find_library('pdcurses', required : false)
ncurses_available = compiler.has_header(ncurses_header) and ncurses_libs.found()
ncurses = declare_dependency(dependencies : ncurses_libs)
endif
if not ncurses_available
error('ncurses could not be found!')
endif
gnt_config.set('NCURSES_HEADER', ncurses_header)
gnt_config.set10('NCURSES_WIDECHAR', ncurses_widechar)
libgnt_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_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'
]
# Check for Python headers
python_dep = dependency('python3', required : false)
gnt_config.set('USE_PYTHON', python_dep.found())
configure_file(output : 'gntconfig.h',
configuration : gnt_config)
configure_file(input : 'gntversion.h.in', output : 'gntversion.h',
configuration : gnt_config,
install : true,
install_dir : join_paths(get_option('includedir'), 'gnt'))
# This is temporary until we can hide GObject internals:
configure_file(input : 'gnt.h.in', output : 'gnt.h',
configuration : gnt_config,
install : true,
install_dir : join_paths(get_option('includedir'), 'gnt'))
gmodule = dependency('gmodule-2.0')
install_headers(libgnt_headers, subdir : 'gnt')
if host_machine.system() == 'windows'
windows = import('windows')
libgnt_winres = configure_file(
input : 'libgnt_winres.rc.in',
output : 'libgnt_winres.rc',
configuration : gnt_config)
libgnt_SOURCES += windows.compile_resources(libgnt_winres)
endif
libgnt_inc = include_directories('.')
libgnt = library('gnt',
libgnt_SOURCES,
install : true,
version : '@0@.@1@.@2@'.format(gnt_soversion,
gnt_minor_version,
gnt_micro_version),
dependencies : [ncurses, libxml, glib, gobject, gmodule, python_dep])
libgnt_dep = declare_dependency(
include_directories : libgnt_inc,
link_with : libgnt,
dependencies : [ncurses, glib])
pkgconfig.generate(
name : 'LibGNT',
description : 'Glib Ncurses Toolkit is a collection of curses-widgets.',
version : meson.project_version(),
filebase : 'gnt',
subdirs : 'gnt',
libraries : [libgnt],
requires : ['glib-2.0'],
variables : ['plugindir = ${libdir}/gnt'],
)
if get_option('introspection') and host_machine.system() != 'windows'
libgnt_gir = gnome.generate_gir(libgnt,
sources : libgnt_headers,
includes : 'GObject-2.0',
namespace : 'Gnt',
symbol_prefix : 'gnt',
identifier_prefix : 'Gnt',
nsversion : '@0@.@1@'.format(gnt_major_version, gnt_minor_version),
install : true)
endif
subdir('wms')
subdir('test')
subdir('doc')