1 enable_consoleui = false
2 if get_option('consoleui')
3 libgnt_dep = dependency('gnt3', version : '>= 3.0.0', required : false)
5 if enable_introspection
6 libgnt_gir = ['Gnt-3.0']
9 libgnt_proj = subproject('libgnt',
11 'doc=' + get_option('doc').to_string(),
12 'introspection=' + enable_introspection.to_string(),
15 libgnt_dep = libgnt_proj.get_variable('libgnt_dep')
17 if enable_introspection
18 libgnt_gir = libgnt_proj.get_variable('libgnt_gir')
22 #######################################################################
23 # Check for ncurses and other things used by it
24 # FIXME: This should be temporary until libgnt wraps the functionality.
25 #######################################################################
26 ncurses_available = true
27 ncurses_header = 'ncurses.h'
28 # Some distros put the headers in ncursesw/, some don't. These are ordered to
29 # pick the last available as most-specific version.
30 ncursesw_header_paths = ['', 'ncursesw/']
32 ncurses = dependency('ncursesw', required : false)
34 foreach location : ncursesw_header_paths
35 f = location + 'ncurses.h'
36 if compiler.has_header_symbol(f, 'get_wch',
37 prefix : '#define _XOPEN_SOURCE_EXTENDED')
42 ncurses_available = false
44 ncurses_libs = compiler.find_library('ncursesw', required : false)
45 if ncurses_libs.found()
46 foreach location : ncursesw_header_paths
47 f = location + 'ncurses.h'
48 if compiler.has_header_symbol(f, 'get_wch',
49 prefix : '#define _XOPEN_SOURCE_EXTENDED')
50 ncurses_available = true
56 ncurses = declare_dependency(
57 include_directories : ncurses_inc,
58 dependencies : ncurses_libs
64 if not ncurses_available
65 # ncursesw was not found. Look for plain old ncurses
66 ncurses = dependency('ncurses', required : false)
68 ncurses_available = true
70 ncurses_libs = compiler.find_library('ncurses', required : false)
71 ncurses_available = ncurses_libs.found()
72 ncurses = declare_dependency(dependencies : ncurses_libs)
76 if not ncurses_available and host_machine.system() == 'windows'
78 ncurses_header = 'curses.h'
79 ncurses_libs = compiler.find_library('pdcurses', required : false)
80 ncurses_available = compiler.has_header(ncurses_header) and ncurses_libs.found()
81 ncurses = declare_dependency(dependencies : ncurses_libs)
84 if not ncurses_available
85 error('ncurses could not be found!')
88 if libgnt_dep.found() and ncurses_available
89 ncurses_header = '-DNCURSES_HEADER="@0@"'.format(ncurses_header)
90 enable_consoleui = true
94 Finch will not be built. You need to install libgnt (or its requirements) and its development headers.
153 winmm = compiler.find_library('winmm')
155 finch_winres = configure_file(
156 input : 'finch_winres.rc.in',
157 output : 'finch_winres.rc',
158 configuration : version_conf)
159 finch_SOURCES += windows.compile_resources(finch_winres)
160 libfinch_winres = configure_file(
161 input : 'libfinch_winres.rc.in',
162 output : 'libfinch_winres.rc',
163 configuration : version_conf)
164 libfinch_SOURCES += windows.compile_resources(libfinch_winres)
170 install_headers(libfinch_headers, subdir : 'finch-3')
172 libfinch_inc = include_directories('.')
173 libfinch = shared_library('finch3',
175 c_args : ['-DSTANDALONE', '-DGNTSEAL_ENABLE', ncurses_header],
176 include_directories : [toplevel_inc],
177 version : PURPLE_LIB_VERSION,
178 dependencies : [libpurple_dep, libgnt_dep, ncurses, glib, winmm],
180 libfinch_dep = declare_dependency(
181 include_directories : [toplevel_inc, libfinch_inc],
182 link_with : libfinch,
183 dependencies : [libpurple_dep, libgnt_dep, glib])
185 finch = executable('finch3',
187 c_args : ['-DSTANDALONE', '-DGNTSEAL_ENABLE'],
188 dependencies : [libpurple_dep, libgnt_dep, libfinch_dep],
193 description : 'Finch is an instant messenger application that uses libpurple for protocol support and ncurses (libgnt) for the UI.',
194 version : meson.project_version(),
195 filebase : 'finch-3',
197 libraries : [libfinch],
198 requires : ['gnt', 'purple-3'],
199 variables : ['plugindir=${libdir}/finch-@0@'.format(purple_major_version)])
201 if enable_introspection
202 introspection_sources = libfinch_headers
204 gnome.generate_gir(libfinch,
205 sources : introspection_sources,
206 includes : [libgnt_gir[0], libpurple_gir[0], gplugin_gir],
208 symbol_prefix : 'finch',
209 identifier_prefix : 'Finch',
210 export_packages : 'finch',
211 nsversion : '@0@.@1@'.format(purple_major_version,
212 purple_minor_version),
213 include_directories : [
214 gplugin_include_directories,
217 extra_args : ['--quiet'])
221 endif # enable_consoleui