From 51d66c1c257f7487497f562033ac32ac75f648cb Mon Sep 17 00:00:00 2001 From: Martin Jansa 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 --- 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')