1project('purple-plugin-pack', 'c',
2  version : '2.8.0')
3
4#######################################################################
5# Our header
6#######################################################################
7add_project_arguments('-DHAVE_CONFIG_H', language : 'c')
8conf = configuration_data()
9
10conf.set_quoted('PP_VERSION', meson.project_version())
11
12# I'm lazy and figured config.h is the best place for this ;)
13conf.set_quoted('PP_WEBSITE', 'https://bitbucket.org/pidgin/purple-plugin-pack')
14
15#######################################################################
16# Good ol' gettext
17#######################################################################
18
19GETTEXT_PACKAGE = 'plugin_pack'
20conf.set_quoted('GETTEXT_PACKAGE', GETTEXT_PACKAGE)
21
22#######################################################################
23# Look for the C compiler
24#######################################################################
25compiler = meson.get_compiler('c')
26
27# this is used as the suffix below (for purple-3, pidgin-3, etc)
28# and also as the -3 param to plugin_pack.py
29if get_option('purple-version') == '2'
30  PURPLE_VER = ''
31  IS_PURPLE_TWO = true
32else
33  PURPLE_VER = '-' + get_option('purple-version')
34  IS_PURPLE_TWO = false
35endif
36
37#######################################################################
38# Check for purple
39#######################################################################
40PURPLE = dependency('purple@0@'.format(PURPLE_VER))
41
42PURPLE_LIBDIR = PURPLE.get_pkgconfig_variable('plugindir')
43PURPLE_DATADIR = PURPLE.get_pkgconfig_variable('datadir')
44
45PP_LOCALEDIR = join_paths(get_option('prefix'), get_option('localedir'))
46conf.set_quoted('PP_LOCALEDIR', PP_LOCALEDIR)
47
48#######################################################################
49# Check for pidgin
50#######################################################################
51PIDGIN = dependency('pidgin@0@'.format(PURPLE_VER), required : false)
52conf.set('HAVE_PIDGIN', PIDGIN.found())
53
54if PIDGIN.found()
55	PIDGIN_LIBDIR = PIDGIN.get_pkgconfig_variable('plugindir')
56	PIDGIN_DATADIR = PIDGIN.get_pkgconfig_variable('datadir')
57	PIDGIN_PIXMAPSDIR = join_paths(PIDGIN_DATADIR, 'pixmaps/pidgin')
58else
59	PIDGIN_LIBDIR = ''
60	PIDGIN_DATADIR = ''
61	PIDGIN_PIXMAPSDIR = ''
62endif
63
64#######################################################################
65# Check for finch
66#######################################################################
67FINCH = dependency('finch', required : false)
68conf.set('HAVE_FINCH', FINCH.found())
69
70if FINCH.found()
71	FINCH_LIBDIR = FINCH.get_pkgconfig_variable('libdir')
72	FINCH_DATADIR = FINCH.get_pkgconfig_variable('datadir')
73else
74	FINCH_LIBDIR = ''
75	FINCH_DATADIR = ''
76endif
77
78#######################################################################
79# check for gtk
80#######################################################################
81GLIB = dependency('glib-2.0', version : '>= 2.32.0', required : true)
82GTK = dependency('gtk+-2.0', version : '>= 2.10.0', required : false)
83
84#######################################################################
85# check for gnt
86#######################################################################
87GNT = dependency('gnt', required : false)
88
89#######################################################################
90# check for pango
91#######################################################################
92PANGO = dependency('pango', required : false)
93
94#######################################################################
95# check for cairo
96#######################################################################
97CAIRO = dependency('cairo', required : false)
98
99#######################################################################
100# Check for libjson-glib
101#######################################################################
102JSON_GLIB = dependency('json-glib-1.0', required : false)
103
104#######################################################################
105# Check for ZLib
106#######################################################################
107ZLIB = dependency('zlib', required : false)
108
109#######################################################################
110# Check for switchspell
111#######################################################################
112GTKSPELL = dependency('gtkspell-2.0', version : '>= 2.0.2', required : false)
113
114BUILD_SWITCH_SPELL = false
115
116if GTKSPELL.found()
117  # FIXME: This is a hack that should not exist.
118  if run_command('pkg-config', '--static', '--libs', 'gtkspell-2.0').stdout().contains('enchant')
119    ENCHANT = dependency('enchant-2', required : false)
120    ASPELL = []
121    BUILD_SWITCH_SPELL = ENCHANT.found()
122
123    conf.set('HAVE_ENCHANT', ENCHANT.found())
124  else
125    ASPELL = dependency('aspell', required : false)
126    ENCHANT = []
127    BUILD_SWITCH_SPELL = ASPELL.found()
128  endif
129endif
130
131#######################################################################
132# Check for some basic headers
133#######################################################################
134if compiler.has_header('regex.h')
135  conf.set('HAS_REGEX_H', true)
136else
137  error('regex.h cannot be found')
138endif
139
140#######################################################################
141# Disable installation of translation files
142#######################################################################
143INSTALL_I18N = get_option('nls')
144subdir('po')
145conf.set('ENABLE_NLS', INSTALL_I18N)
146
147#######################################################################
148# Add all plugin directories:
149#######################################################################
150TYPES = get_option('types').split(',')
151if TYPES.contains('all')
152  TYPES = ['default', 'abusive', 'incomplete']
153else
154  foreach type : TYPES
155    if not ['default', 'abusive', 'incomplete'].contains(type)
156      error('"@0@" is not a supported plugin type'.format(type))
157    endif
158  endforeach
159endif
160
161PP_PURPLE_BUILD = []
162PP_PIDGIN_BUILD = []
163PP_FINCH_BUILD = []
164
165subdir('album')
166subdir('autoreply')
167subdir('bash')
168subdir('blistops')
169subdir('capsnot')
170subdir('colorize')
171subdir('convbadger')
172subdir('dewysiwygification')
173subdir('dice')
174subdir('difftopic')
175subdir('eight_ball')
176subdir('enhancedhist')
177subdir('flip')
178subdir('gRIM')
179subdir('google')
180subdir('groupmsg')
181subdir('highlight')
182subdir('icon-override')
183subdir('ignore')
184subdir('irc-more')
185subdir('irchelper')
186subdir('irssi')
187subdir('lastseen')
188subdir('listhandler')
189subdir('listlog')
190subdir('mystatusbox')
191subdir('nicksaid')
192subdir('ning')
193subdir('okcupid')
194subdir('oldlogger')
195subdir('omegle')
196subdir('plonkers')
197subdir('schedule')
198subdir('sepandtab')
199subdir('showoffline')
200subdir('simfix')
201subdir('slashexec')
202subdir('snpp')
203subdir('splitter')
204subdir('sslinfo')
205subdir('switchspell')
206subdir('timelog')
207subdir('translate')
208subdir('xmppprio')
209
210#######################################################################
211# Install the metainfo file
212#######################################################################
213install_data('purple-plugin-pack.metainfo.xml',
214	install_dir : get_option('datadir') / 'metainfo')
215
216#######################################################################
217# Output!!
218#######################################################################
219configure_file(
220  output : 'pp_config.h',
221  configuration : conf)
222
223rpm_conf = configuration_data()
224rpm_conf.set('PACKAGE', meson.project_name())
225rpm_conf.set('VERSION', meson.project_version())
226configure_file(
227  input : 'plugin_pack.spec.in',
228  output : 'plugin_pack.spec',
229  configuration : rpm_conf)
230
231message('')
232message('@0@ @1@ Configuration complete'.format(meson.project_name(), meson.project_version()))
233message('')
234
235message('Build purple plugins.............: ' + PURPLE.found().to_string())
236if PURPLE.found()
237  message('Installing purple plugins to.....: ' + PURPLE_LIBDIR)
238  message('Installing purple plugin data to.: ' + PURPLE_DATADIR)
239  message('Purple plugins to be built.......: ' + ' '.join(PP_PURPLE_BUILD))
240endif
241message('')
242
243message('Build pidgin plugins.............: ' + PIDGIN.found().to_string())
244if PIDGIN.found()
245  message('Installing pidgin plugins to.....: ' + PIDGIN_LIBDIR)
246  message('Installing pidgin plugin data to.: ' + PIDGIN_DATADIR)
247  message('Pidgin plugins to be built.......: ' + ' '.join(PP_PIDGIN_BUILD))
248endif
249message('')
250
251message('Build finch plugins..............: ' + FINCH.found().to_string())
252if FINCH.found()
253  message('Installing finch plugins to......: ' + FINCH_LIBDIR)
254  message('Installing finch plugin data to..: ' + FINCH_DATADIR)
255  message('Finch plugins to be built........: ' + ' '.join(PP_FINCH_BUILD))
256endif
257message('')
258
259