blob: 8bb60b5557eccc3db600041f5701ed3d6b809fad [file] [log] [blame]
From 51d66c1c257f7487497f562033ac32ac75f648cb Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Mon, 8 Feb 2021 12:27:51 +0100
Subject: [PATCH] meson: import changes from 3.0.* version
* we need to use the meson option to disable introspection and docs
Upstream-Status: Backport
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
meson.build | 139 ++++++++++++++++++++++++++++------------------
meson_options.txt | 5 ++
2 files changed, 90 insertions(+), 54 deletions(-)
create mode 100644 meson_options.txt
diff --git a/meson.build b/meson.build
index 1084c82..ed040b4 100644
--- a/meson.build
+++ b/meson.build
@@ -53,9 +53,9 @@ compiler = meson.get_compiler('c')
pkgconfig = import('pkgconfig')
# #######################################################################
-# # Check for GLib 2.16
+# # Check for GLib 2.44
# #######################################################################
-glib = dependency('glib-2.0', version : '>= 2.16.0')
+glib = dependency('glib-2.0', version : '>= 2.44.0')
gobject = dependency('gobject-2.0')
gmodule = dependency('gmodule-2.0')
gnome = import('gnome')
@@ -63,74 +63,88 @@ 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())
+libxml = dependency('libxml-2.0', version : '>= 2.6.0')
#######################################################################
# Check for ncurses and other things used by it
#######################################################################
ncurses_available = true
-ncurses_inc = []
-# The order of this list is important to the condition that follows.
-ncurses_libs = [
- compiler.find_library('ncursesw', required : false),
- compiler.find_library('panelw', required : false),
- compiler.find_library('tinfow', required : false),
-]
-if not ncurses_libs[0].found() or not ncurses_libs[1].found()
- ncurses_available = false
-endif
+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/']
-if host_machine.system() == 'windows'
- # FIXME: $host ?
- ncurses_sys_prefix = '/usr/$host/sys-root/mingw'
+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_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
+ 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')
- if location != '.'
- ncurses_inc += [include_directories(location)]
- endif
- found_ncurses_h = true
+ ncurses_available = true
+ ncurses_header = f
endif
- endif
- endforeach
+ endforeach
- if not found_ncurses_h
- ncurses_inc = []
- ncurses_libs = []
- ncurses_available = false
+ if ncurses_available
+ ncurses = declare_dependency(
+ include_directories : ncurses_inc,
+ dependencies : ncurses_libs
+ )
+ endif
endif
-else
+endif
+
+if not ncurses_available
# ncursesw was not found. Look for plain old ncurses
- # The order of this list is important to the condition that follows.
- ncurses_libs = [
- compiler.find_library('ncurses', required : false),
- compiler.find_library('panel', required : false),
- compiler.find_library('tinfo', required : false),
+ ncurses = [
+ dependency('ncurses', required : false),
+ dependency('panel', required : false),
]
- ncurses_available = ncurses_libs[0].found() and ncurses_libs[1].found()
- gnt_config.set('NO_WIDECHAR', true)
+ 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
-
-ncurses = declare_dependency(
- include_directories : ncurses_inc,
- dependencies : ncurses_libs
-)
+gnt_config.set('NCURSES_HEADER', ncurses_header)
+gnt_config.set10('NCURSES_WIDECHAR', ncurses_widechar)
libgnt_SOURCES = [
'gntwidget.c',
@@ -191,7 +205,10 @@ libgnt_headers = [
]
# Check for Python headers
-python_dep = dependency('python2', required : false)
+python_dep = dependency('python3-embed', required: false)
+if not python_dep.found()
+ python_dep = dependency('python3', required : false)
+endif
gnt_config.set('USE_PYTHON', python_dep.found())
configure_file(output : 'gntconfig.h',
@@ -233,6 +250,20 @@ pkgconfig.generate(
variables : ['plugindir = ${libdir}/gnt'],
)
+if get_option('introspection')
+ libgnt_gir = gnome.generate_gir(libgnt,
+ sources : libgnt_headers + [gnt_h],
+ includes : 'GObject-2.0',
+ namespace : 'Gnt',
+ symbol_prefix : 'gnt',
+ identifier_prefix : 'Gnt',
+ nsversion : '@0@.@1@'.format(gnt_major_version, gnt_minor_version),
+ install : true,
+ extra_args : ['-DGNT_COMPILATION', '--quiet'])
+endif
+
subdir('wms')
subdir('test')
-subdir('doc')
+if get_option('doc')
+ subdir('doc')
+endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..f2414e2
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,5 @@
+option('doc', type : 'boolean', value : true, yield : true,
+ description : 'build documentation with gtk-doc')
+
+option('introspection', type : 'boolean', value : true, yield : true,
+ description : 'build introspection data')