meson.build

Sat, 18 May 2019 23:11:27 +0000

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 18 May 2019 23:11:27 +0000
branch
release-2.x.y
changeset 1317
c44601cabcb8
parent 1181
ab22956bebb8
child 1193
9a81bdc71f40
child 1340
29418c866c4b
child 1380
8df5a901418e
permissions
-rw-r--r--

Merged in release-2.x.y (pull request #74)

Also deprecate gnt_file_sel_set_read_fn.

Approved-by: Gary Kramlich

# 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 3.0.0

project('libgnt', 'c',
    version : '2.14.0-devel',
    meson_version : '>=0.37.0')
gnt_soversion = 0

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())

compiler = meson.get_compiler('c')
pkgconfig = import('pkgconfig')

# #######################################################################
# # Check for GLib 2.16
# #######################################################################
glib = dependency('glib-2.0', version : '>= 2.16.0')
gobject = dependency('gobject-2.0')
gmodule = dependency('gmodule-2.0')
gnome = import('gnome')

#######################################################################
# Check for LibXML2
#######################################################################
libxml = dependency('libxml-2.0', version : '>= 2.6.0', required : false)
gnt_config.set('NO_LIBXML', not libxml.found())

#######################################################################
# Check for ncurses and other things used by it
#######################################################################
ncurses_available = true
ncurses_inc = []
ncurses_libs = [
	compiler.find_library('ncursesw', required : false),
	compiler.find_library('panelw', required : false)
]
if not ncurses_libs[0].found() or not ncurses_libs[1].found()
	ncurses_available = false
endif

if host_machine.system() == 'windows'
	# FIXME: $host ?
	ncurses_sys_prefix = '/usr/$host/sys-root/mingw'
else
	ncurses_sys_prefix = '/usr'
endif

ncurses_sys_dirs = [ncurses_sys_prefix + '/include/ncursesw',
                    ncurses_sys_prefix + '/include']

if ncurses_available
	# Some distros put the headers in ncursesw/, some don't
	found_ncurses_h = false
	foreach location : ncurses_sys_dirs
		f = location + '/ncurses.h'
		if not found_ncurses_h
			if compiler.has_header_symbol(f, 'get_wch',
			    prefix : '#define _XOPEN_SOURCE_EXTENDED')
				if location != '.'
					ncurses_inc += [include_directories(location)]
				endif
				found_ncurses_h = true
			endif
		endif
	endforeach

	if not found_ncurses_h
		ncurses_inc = []
		ncurses_libs = []
		ncurses_available = false
	endif
else
	# ncursesw was not found. Look for plain old ncurses
	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()
	gnt_config.set('NO_WIDECHAR', true)
endif
if not ncurses_available
	error('ncurses could not be found!')
endif

ncurses = declare_dependency(
    include_directories : ncurses_inc,
    dependencies : ncurses_libs
)

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('python2', required : false)
gnt_config.set('USE_PYTHON', python_dep.found())

configure_file(output : 'gntconfig.h',
    configuration : gnt_config)

install_headers(libgnt_headers, subdir : 'gnt')

if host_machine.system() == 'windows'
	libgnt_SOURCES += windows.compile_resources('libgnt_winres.rc')
endif

gntmarshal = gnome.genmarshal('gntmarshal',
                              sources : 'genmarshal',
                              prefix : 'gnt_closure_marshal',
                              install_header : true,
                              install_dir : join_paths(get_option('includedir'), 'gnt'))

libgnt_inc = include_directories('.')
libgnt = library('gnt',
                 libgnt_SOURCES + gntmarshal,
                 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'],
    )

subdir('wms')
subdir('test')
subdir('doc')

mercurial