131 lines
4.2 KiB
Diff
131 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',
|