void-packages/srcpkgs/libgnt/patches/cross-fix.diff
2021-08-10 12:21:14 -03:00

130 lines
4.2 KiB
Diff

diff --git a/meson.build b/meson.build
index 1084c82..7f824b9 100644
--- a/meson.build
+++ b/meson.build
@@ -70,67 +70,77 @@ gnt_config.set('NO_LIBXML', not libxml.found())
# 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),
+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 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'
+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
+ endforeach
+ if ncurses_available
+ ncurses = declare_dependency(
+ include_directories : ncurses_inc,
+ dependencies : ncurses_libs
+ )
endif
- endforeach
-
- if not found_ncurses_h
- ncurses_inc = []
- ncurses_libs = []
- ncurses_available = false
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',