1 project('geany', 'c', 'cpp',
2 meson_version: '>= 0.56',
4 default_options : ['c_std=c11', 'cpp_std=c++17'])
6 gnome = import('gnome')
7 pymod = import('python')
9 cc = meson.get_compiler('c')
10 cxx = meson.get_compiler('cpp')
11 prefix = get_option('prefix')
15 ['gmodule-2.0', '2.32'],
22 deps += [dependency(dep[0], version: '>= ' + dep[1])]
23 deps_for_pc += ' ' + dep[0] + ' >= ' + dep[1]
30 if cc.has_header('gnu/libc-version.h')
36 cdata = configuration_data()
64 ['alloca', '#include <alloca.h>'],
65 ['asprintf', '#include <stdio.h>'],
66 ['chsize', '#include <io.h>'],
67 ['fnmatch', '#include <fnmatch.h>'],
68 ['ftruncate', '#include <unistd.h>'],
69 ['isblank', '#include <ctype.h>'],
70 ['mbrtowc', '#include <wchar.h>'],
71 ['memcpy', '#include <string.h>'],
72 ['mkstemp', '#include <stdlib.h>'],
73 ['realpath', '#include <limits.h>\n#include <stdlib.h>'],
74 ['regcomp', '#include <regex.h>'],
75 ['socket', '#include <sys/socket.h>'],
76 # man page says strings.h but we include only string.h and it works
77 ['strcasecmp', '#include <string.h>'],
78 ['strncasecmp', '#include <string.h>'],
79 ['stricmp', '#include <string.h>'],
80 ['strnicmp', '#include <string.h>'],
81 ['strerror', '#include <string.h>'],
82 ['strstr', '#include <string.h>'],
83 ['tempnam', '#include <stdio.h>'],
84 ['truncate', '#include <unistd.h>'],
85 ['wcrtomb', '#include <wchar.h>'],
86 ['wcscoll', '#include <wchar.h>'],
87 ['g_strv_equal', '#include <glib.h>']
90 foreach h : check_headers
91 define = 'HAVE_' + h.underscorify().to_upper()
97 foreach f : check_functions
98 define = 'HAVE_' + f.get(0).underscorify().to_upper()
99 ccprefix = '\n'.join([gnu_source ? '#define _GNU_SOURCE' : '', f.get(1)])
100 if cc.has_function(f.get(0), prefix: ccprefix, dependencies: deps)
106 # non-functions checks for u-ctags. Not that we really need those as we don't
107 # use u-ctags's main, but the corresponding macros have to be defined to
108 # something, so simply perform the actual checks.
109 #AC_CHECK_DECLS([__environ],,,[[#include <unistd.h>]])
110 #AC_CHECK_DECLS([_NSGetEnviron],,,[[#include <crt_externs.h>]])
111 # In meson we cannot as easily test for declarations so defining as 0 is easiest
112 cdata.set('HAVE_DECL___ENVIRON', 0)
113 cdata.set('HAVE_DECL__NSGETENVIRON', 0)
115 cdata.set_quoted('PACKAGE', 'geany')
116 cdata.set_quoted('PACKAGE_BUGREPORT', 'https://github.com/geany/geany/issues')
117 cdata.set_quoted('PACKAGE_NAME','Geany')
118 cdata.set_quoted('PACKAGE_STRING', 'Geany ' + meson.project_version())
119 cdata.set_quoted('PACKAGE_VERSION', meson.project_version())
120 cdata.set('GETTEXT_PACKAGE', 'PACKAGE')
121 cdata.set_quoted('VERSION', meson.project_version())
122 cdata.set('ENABLE_NLS', 1)
123 if (host_machine.system() != 'windows' and get_option('vte'))
124 cdata.set('HAVE_VTE', 1)
126 cdata.set('HAVE_PLUGINS', get_option('plugins'))
127 cdata.set('HAVE_SOCKET', get_option('socket'))
128 if (host_machine.system() == 'windows')
129 cdata.set('GEANY_DATA_DIR', join_paths(prefix, 'data'))
130 cdata.set('GEANY_DOC_DIR', join_paths(prefix))
132 cdata.set('GEANY_DATA_DIR', join_paths(prefix, get_option('datadir'), 'geany'))
133 cdata.set('GEANY_DOC_DIR', join_paths(prefix, get_option('datadir'), 'doc', 'geany'))
135 cdata.set('top_srcdir', meson.source_root())
136 cdata.set('top_builddir', meson.build_root())
138 # for geany.pc (adapted from GTK+)
140 pcconf.set('DEPENDENCIES', deps_for_pc)
141 pcconf.set('prefix', get_option('prefix'))
142 pcconf.set('libdir', join_paths('${exec_prefix}', get_option('libdir')))
143 pcconf.set('includedir', join_paths('${prefix}', get_option('includedir')))
144 pcconf.set('datarootdir', join_paths('${prefix}', get_option('datadir')))
145 # actually constant, just match autconf
146 pcconf.set('exec_prefix', '${prefix}')
147 pcconf.set('datadir', '${datarootdir}')
148 pcconf.set('localedir', join_paths('${datarootdir}', 'locale'))
151 sh = find_program('sh')
152 cp = find_program('cp')
153 ln = find_program('ln')
154 doxygen = find_program('doxygen', required: get_option('api-docs'))
155 python = pymod.find_installation('python3', modules: doxygen.found() and get_option('gtkdoc') ? ['lxml'] : [])
156 # These two are truly optional
157 rst2html = find_program('rst2html', required: get_option('html-docs'))
158 rst2pdf = find_program('rst2pdf', required: get_option('pdf-docs'))
159 git = find_program('git', required: false)
162 ret = run_command(git, 'rev-parse', '--short', '--revs-only', 'HEAD', check: false)
163 if ret.returncode() == 0
164 revision = ret.stdout().strip()
167 cdata.set_quoted('REVISION', revision)
169 python_command = get_option('python-command')
170 if python_command == '' or python_command == 'auto'
171 if host_machine.system() == 'windows'
172 python_command = 'py'
174 python_command = 'python'
177 cdata.set('PYTHON_COMMAND', python_command)
181 configuration : cdata
185 input: 'geany.pc.in',
187 install_dir: join_paths(prefix, get_option('libdir'), 'pkgconfig'),
189 configuration: pcconf
192 # CFLAGS for basic stuff that only depends on libc
193 basic_cflags = [ '-DHAVE_CONFIG_H=1', '-O2' ]
195 basic_cflags += '-D_GNU_SOURCE'
198 # CFLAGS common between Geany and bundled plugins
199 def_cflags = basic_cflags + [
201 # we're using lots of deprecated stuff with gtk3 (often because there is no proper alternative!)
202 '-Wno-deprecated-declarations',
203 '-DGDK_DISABLE_DEPRECATION_WARNINGS',
204 '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_32',
205 '-DGEANY_PREFIX="@0@"'.format(get_option('prefix')),
206 '-DGEANY_DOCDIR="@0@"'.format(join_paths(prefix, get_option('datadir'), 'doc'))
208 foreach d : [ 'includedir', 'libdir', 'libexecdir', 'datadir', 'localedir' ]
209 def_cflags += '-DGEANY_@0@="@1@"'.format(d.underscorify().to_upper(), join_paths(prefix, get_option(d)))
212 # CFLAGS for everything else, i.e. most of Geany
213 geany_cflags = def_cflags
214 have_gcc4_visibility = cc.has_argument('-fvisibility=hidden')
215 geany_cflags += '-DGEANY_PRIVATE'
216 if host_machine.system() == 'windows'
217 geany_cflags += '-DGEANY_EXPORT_SYMBOL=__declspec(dllexport)'
218 elif have_gcc4_visibility
219 geany_cflags += '-fvisibility=hidden'
220 geany_cflags += '-DGEANY_EXPORT_SYMBOL=__attribute__((visibility("default")))'
222 geany_cflags += '-DGEANY_API_SYMBOL=GEANY_EXPORT_SYMBOL'
223 sci_cflags = geany_cflags
224 sci_cflags += [ '-std=c++17', '-Wno-non-virtual-dtor', '-DNDEBUG', '-DSCI_LEXER', '-DNO_CXX11_REGEX' ]
226 iregex = include_directories('ctags/gnu_regex')
227 ifnmatch = include_directories('ctags/fnmatch')
228 ictags = include_directories('ctags/main', 'ctags/parsers', 'ctags/dsl', 'ctags/libreadtags')
229 itagmanager = include_directories('src/tagmanager')
230 iscintilla = include_directories('scintilla/include', 'scintilla/lexilla/include')
231 igeany = include_directories('src')
234 'scintilla/include/Scintilla.h',
235 'scintilla/include/Scintilla.iface',
236 'scintilla/include/ScintillaWidget.h',
237 'scintilla/include/Sci_Position.h',
238 'scintilla/lexilla/include/SciLexer.h',
239 subdir: 'geany/scintilla'
242 lexilla = static_library('lexilla',
243 'scintilla/lexilla/include/Lexilla.h',
244 'scintilla/lexilla/include/SciLexer.h',
245 'scintilla/lexilla/lexers/LexAbaqus.cxx',
246 'scintilla/lexilla/lexers/LexAda.cxx',
247 'scintilla/lexilla/lexers/LexAsciidoc.cxx',
248 'scintilla/lexilla/lexers/LexAsm.cxx',
249 'scintilla/lexilla/lexers/LexAU3.cxx',
250 'scintilla/lexilla/lexers/LexBash.cxx',
251 'scintilla/lexilla/lexers/LexBasic.cxx',
252 'scintilla/lexilla/lexers/LexBatch.cxx',
253 'scintilla/lexilla/lexers/LexCaml.cxx',
254 'scintilla/lexilla/lexers/LexCIL.cxx',
255 'scintilla/lexilla/lexers/LexCmake.cxx',
256 'scintilla/lexilla/lexers/LexCOBOL.cxx',
257 'scintilla/lexilla/lexers/LexCoffeeScript.cxx',
258 'scintilla/lexilla/lexers/LexCPP.cxx',
259 'scintilla/lexilla/lexers/LexCSS.cxx',
260 'scintilla/lexilla/lexers/LexD.cxx',
261 'scintilla/lexilla/lexers/LexDiff.cxx',
262 'scintilla/lexilla/lexers/LexErlang.cxx',
263 'scintilla/lexilla/lexers/LexForth.cxx',
264 'scintilla/lexilla/lexers/LexGDScript.cxx',
265 'scintilla/lexilla/lexers/LexFortran.cxx',
266 'scintilla/lexilla/lexers/LexHaskell.cxx',
267 'scintilla/lexilla/lexers/LexHTML.cxx',
268 'scintilla/lexilla/lexers/LexJulia.cxx',
269 'scintilla/lexilla/lexers/LexLaTeX.cxx',
270 'scintilla/lexilla/lexers/LexLisp.cxx',
271 'scintilla/lexilla/lexers/LexLua.cxx',
272 'scintilla/lexilla/lexers/LexMake.cxx',
273 'scintilla/lexilla/lexers/LexMarkdown.cxx',
274 'scintilla/lexilla/lexers/LexMatlab.cxx',
275 'scintilla/lexilla/lexers/LexNsis.cxx',
276 'scintilla/lexilla/lexers/LexNull.cxx',
277 'scintilla/lexilla/lexers/LexPascal.cxx',
278 'scintilla/lexilla/lexers/LexPerl.cxx',
279 'scintilla/lexilla/lexers/LexPO.cxx',
280 'scintilla/lexilla/lexers/LexPowerShell.cxx',
281 'scintilla/lexilla/lexers/LexProps.cxx',
282 'scintilla/lexilla/lexers/LexPython.cxx',
283 'scintilla/lexilla/lexers/LexR.cxx',
284 'scintilla/lexilla/lexers/LexRaku.cxx',
285 'scintilla/lexilla/lexers/LexRuby.cxx',
286 'scintilla/lexilla/lexers/LexRust.cxx',
287 'scintilla/lexilla/lexers/LexSmalltalk.cxx',
288 'scintilla/lexilla/lexers/LexSQL.cxx',
289 'scintilla/lexilla/lexers/LexTCL.cxx',
290 'scintilla/lexilla/lexers/LexTxt2tags.cxx',
291 'scintilla/lexilla/lexers/LexVerilog.cxx',
292 'scintilla/lexilla/lexers/LexVHDL.cxx',
293 'scintilla/lexilla/lexers/LexYAML.cxx',
294 'scintilla/lexilla/lexlib/Accessor.cxx',
295 'scintilla/lexilla/lexlib/Accessor.h',
296 'scintilla/lexilla/lexlib/CatalogueModules.h',
297 'scintilla/lexilla/lexlib/CharacterCategory.cxx',
298 'scintilla/lexilla/lexlib/CharacterCategory.h',
299 'scintilla/lexilla/lexlib/CharacterSet.cxx',
300 'scintilla/lexilla/lexlib/CharacterSet.h',
301 'scintilla/lexilla/lexlib/DefaultLexer.cxx',
302 'scintilla/lexilla/lexlib/DefaultLexer.h',
303 'scintilla/lexilla/lexlib/LexAccessor.cxx',
304 'scintilla/lexilla/lexlib/LexAccessor.h',
305 'scintilla/lexilla/lexlib/LexerBase.cxx',
306 'scintilla/lexilla/lexlib/LexerBase.h',
307 'scintilla/lexilla/lexlib/LexerModule.cxx',
308 'scintilla/lexilla/lexlib/LexerModule.h',
309 'scintilla/lexilla/lexlib/LexerNoExceptions.cxx',
310 'scintilla/lexilla/lexlib/LexerNoExceptions.h',
311 'scintilla/lexilla/lexlib/LexerSimple.cxx',
312 'scintilla/lexilla/lexlib/LexerSimple.h',
313 'scintilla/lexilla/lexlib/OptionSet.h',
314 'scintilla/lexilla/lexlib/PropSetSimple.cxx',
315 'scintilla/lexilla/lexlib/PropSetSimple.h',
316 'scintilla/lexilla/lexlib/SparseState.h',
317 'scintilla/lexilla/lexlib/StringCopy.h',
318 'scintilla/lexilla/lexlib/StyleContext.cxx',
319 'scintilla/lexilla/lexlib/StyleContext.h',
320 'scintilla/lexilla/lexlib/SubStyles.h',
321 'scintilla/lexilla/lexlib/WordList.cxx',
322 'scintilla/lexilla/lexlib/WordList.h',
323 'scintilla/lexilla/src/Lexilla.cxx',
324 cpp_args: sci_cflags,
326 include_directories: [
328 include_directories('scintilla/lexilla/lexlib', 'scintilla/lexilla/include')
331 dep_lexilla = declare_dependency(
333 include_directories: include_directories('scintilla/lexilla/include')
336 scintilla = static_library('scintilla',
337 'scintilla/gtk/Converter.h',
338 'scintilla/gtk/PlatGTK.cxx',
339 'scintilla/gtk/ScintillaGTKAccessible.cxx',
340 'scintilla/gtk/ScintillaGTKAccessible.h',
341 'scintilla/gtk/ScintillaGTK.cxx',
342 'scintilla/gtk/ScintillaGTK.h',
343 'scintilla/gtk/scintilla-marshal.c',
344 'scintilla/gtk/scintilla-marshal.h',
345 'scintilla/gtk/Wrappers.h',
346 'scintilla/include/ILexer.h',
347 'scintilla/include/ILoader.h',
348 'scintilla/include/ScintillaCall.h',
349 'scintilla/include/Scintilla.h',
350 'scintilla/include/ScintillaMessages.h',
351 'scintilla/include/ScintillaStructures.h',
352 'scintilla/include/ScintillaTypes.h',
353 'scintilla/include/ScintillaWidget.h',
354 'scintilla/include/Sci_Position.h',
355 'scintilla/src/AutoComplete.cxx',
356 'scintilla/src/AutoComplete.h',
357 'scintilla/src/CallTip.cxx',
358 'scintilla/src/CallTip.h',
359 'scintilla/src/CaseConvert.cxx',
360 'scintilla/src/CaseConvert.h',
361 'scintilla/src/CaseFolder.cxx',
362 'scintilla/src/CaseFolder.h',
363 'scintilla/src/CellBuffer.cxx',
364 'scintilla/src/CellBuffer.h',
365 'scintilla/src/ChangeHistory.cxx',
366 'scintilla/src/ChangeHistory.h',
367 'scintilla/src/CharacterCategoryMap.cxx',
368 'scintilla/src/CharacterCategoryMap.h',
369 'scintilla/src/CharacterType.cxx',
370 'scintilla/src/CharacterType.h',
371 'scintilla/src/CharClassify.cxx',
372 'scintilla/src/CharClassify.h',
373 'scintilla/src/ContractionState.cxx',
374 'scintilla/src/ContractionState.h',
375 'scintilla/src/DBCS.cxx',
376 'scintilla/src/DBCS.h',
377 'scintilla/src/Debugging.h',
378 'scintilla/src/Decoration.cxx',
379 'scintilla/src/Decoration.h',
380 'scintilla/src/Document.cxx',
381 'scintilla/src/Document.h',
382 'scintilla/src/EditModel.cxx',
383 'scintilla/src/EditModel.h',
384 'scintilla/src/Editor.cxx',
385 'scintilla/src/Editor.h',
386 'scintilla/src/EditView.cxx',
387 'scintilla/src/EditView.h',
388 'scintilla/src/ElapsedPeriod.h',
389 'scintilla/src/FontQuality.h',
390 'scintilla/src/Geometry.cxx',
391 'scintilla/src/Geometry.h',
392 'scintilla/src/Indicator.cxx',
393 'scintilla/src/Indicator.h',
394 'scintilla/src/KeyMap.cxx',
395 'scintilla/src/KeyMap.h',
396 'scintilla/src/LineMarker.cxx',
397 'scintilla/src/LineMarker.h',
398 'scintilla/src/MarginView.cxx',
399 'scintilla/src/MarginView.h',
400 'scintilla/src/Partitioning.h',
401 'scintilla/src/PerLine.cxx',
402 'scintilla/src/PerLine.h',
403 'scintilla/src/Platform.h',
404 'scintilla/src/PositionCache.cxx',
405 'scintilla/src/PositionCache.h',
406 'scintilla/src/Position.h',
407 'scintilla/src/RESearch.cxx',
408 'scintilla/src/RESearch.h',
409 'scintilla/src/RunStyles.cxx',
410 'scintilla/src/RunStyles.h',
411 'scintilla/src/ScintillaBase.cxx',
412 'scintilla/src/ScintillaBase.h',
413 'scintilla/src/Selection.cxx',
414 'scintilla/src/Selection.h',
415 'scintilla/src/SparseVector.h',
416 'scintilla/src/SplitVector.h',
417 'scintilla/src/Style.cxx',
418 'scintilla/src/Style.h',
419 'scintilla/src/UniConversion.cxx',
420 'scintilla/src/UniConversion.h',
421 'scintilla/src/UniqueString.cxx',
422 'scintilla/src/UniqueString.h',
423 'scintilla/src/ViewStyle.cxx',
424 'scintilla/src/ViewStyle.h',
425 'scintilla/src/XPM.cxx',
426 'scintilla/src/XPM.h',
427 cpp_args: sci_cflags,
428 dependencies: deps + [ dep_lexilla ],
429 include_directories: [
431 include_directories('scintilla/include', 'scintilla/src')
434 dep_scintilla = declare_dependency(
435 link_with: scintilla,
436 include_directories: include_directories('scintilla/include')
439 if cdata.get('HAVE_FNMATCH', 0) == 1
440 dep_fnmatch = dependency('', required: false)
442 # use fnmatch bundled with ctags
443 fnmatch = static_library('fnmatch',
444 'ctags/fnmatch/fnmatch.c',
445 'ctags/fnmatch/fnmatch.h',
446 include_directories: [ifnmatch],
449 dep_fnmatch = declare_dependency(link_with: [fnmatch], include_directories: [ifnmatch])
452 if cdata.get('HAVE_REGCOMP', 0) == 1
453 dep_regex = dependency('', required: false)
455 # use regcomp bundled with ctags
456 regex = static_library('regex',
457 'ctags/gnu_regex/regex.c',
458 'ctags/gnu_regex/regex.h',
459 dependencies: [dep_fnmatch],
460 c_args: basic_cflags + [ '-D__USE_GNU' ]
462 dep_regex = declare_dependency(link_with: [regex], include_directories: [iregex])
465 ctags = static_library('ctags',
468 'ctags/dsl/optscript.c',
469 'ctags/dsl/optscript.h',
470 'ctags/libreadtags/readtags.c',
471 'ctags/libreadtags/readtags.h',
473 'ctags/main/args_p.h',
474 'ctags/main/colprint.c',
475 'ctags/main/colprint_p.h',
476 'ctags/main/CommonPrelude.c',
477 'ctags/main/ctags.h',
478 'ctags/main/debug.c',
479 'ctags/main/debug.h',
480 'ctags/main/dependency.c',
481 'ctags/main/dependency.h',
482 'ctags/main/dependency_p.h',
483 'ctags/main/e_msoft.h',
484 'ctags/main/entry.c',
485 'ctags/main/entry.h',
486 'ctags/main/entry_p.h',
487 'ctags/main/entry_private.c',
488 'ctags/main/error.c',
489 'ctags/main/error_p.h',
490 'ctags/main/field.c',
491 'ctags/main/field.h',
492 'ctags/main/field_p.h',
493 'ctags/main/flags.c',
494 'ctags/main/flags_p.h',
496 'ctags/main/fmt_p.h',
497 'ctags/main/gcc-attr.h',
498 'ctags/main/general.h',
499 'ctags/main/gvars.h',
500 'ctags/main/htable.c',
501 'ctags/main/htable.h',
502 'ctags/main/inline.h',
503 'ctags/main/interactive_p.h',
504 'ctags/main/interval_tree_generic.h',
505 'ctags/main/keyword.c',
506 'ctags/main/keyword.h',
507 'ctags/main/keyword_p.h',
510 'ctags/main/kind_p.h',
511 'ctags/main/lregex.c',
512 'ctags/main/lregex-default.c',
513 'ctags/main/lregex.h',
514 'ctags/main/lregex_p.h',
515 'ctags/main/lxpath.c',
516 'ctags/main/lxpath.h',
517 'ctags/main/lxpath_p.h',
519 'ctags/main/main_p.h',
522 'ctags/main/mbcs_p.h',
525 'ctags/main/nestlevel.c',
526 'ctags/main/nestlevel.h',
527 'ctags/main/numarray.c',
528 'ctags/main/numarray.h',
529 'ctags/main/objpool.c',
530 'ctags/main/objpool.h',
531 'ctags/main/options.c',
532 'ctags/main/options.h',
533 'ctags/main/options_p.h',
534 'ctags/main/param.c',
535 'ctags/main/param.h',
536 'ctags/main/param_p.h',
537 'ctags/main/parse.c',
538 'ctags/main/parse.h',
539 'ctags/main/parse_p.h',
540 'ctags/main/parsers_p.h',
541 'ctags/main/portable-dirent_p.h',
542 'ctags/main/portable-scandir.c',
543 'ctags/main/promise.c',
544 'ctags/main/promise.h',
545 'ctags/main/promise_p.h',
547 'ctags/main/ptag_p.h',
548 'ctags/main/ptrarray.c',
549 'ctags/main/ptrarray.h',
550 'ctags/main/rbtree.c',
551 'ctags/main/rbtree.h',
552 'ctags/main/rbtree_augmented.h',
555 'ctags/main/read_p.h',
556 'ctags/main/repoinfo.c',
557 'ctags/main/repoinfo.h',
558 'ctags/main/routines.c',
559 'ctags/main/routines.h',
560 'ctags/main/routines_p.h',
561 'ctags/main/script.c',
562 'ctags/main/script_p.h',
563 'ctags/main/seccomp.c',
564 'ctags/main/selectors.c',
565 'ctags/main/selectors.h',
567 'ctags/main/sort_p.h',
568 'ctags/main/stats.c',
569 'ctags/main/stats_p.h',
570 'ctags/main/strlist.c',
571 'ctags/main/strlist.h',
572 'ctags/main/subparser.h',
573 'ctags/main/subparser_p.h',
574 'ctags/main/tokeninfo.c',
575 'ctags/main/tokeninfo.h',
576 'ctags/main/trace.c',
577 'ctags/main/trace.h',
578 'ctags/main/trashbox.c',
579 'ctags/main/trashbox.h',
580 'ctags/main/trashbox_p.h',
581 'ctags/main/types.h',
582 'ctags/main/unwindi.c',
583 'ctags/main/unwindi.h',
584 'ctags/main/utf8_str.c',
585 'ctags/main/utf8_str.h',
586 'ctags/main/vstring.c',
587 'ctags/main/vstring.h',
588 'ctags/main/writer.c',
589 'ctags/main/writer-ctags.c',
590 'ctags/main/writer-etags.c',
591 'ctags/main/writer-json.c',
592 'ctags/main/writer_p.h',
593 'ctags/main/writer-xref.c',
596 'ctags/main/xtag_p.h',
597 'ctags/parsers/abaqus.c',
598 'ctags/parsers/abc.c',
599 'ctags/parsers/ada.c',
600 'ctags/parsers/asciidoc.c',
601 'ctags/parsers/asm.c',
602 'ctags/parsers/autoit.c',
603 'ctags/parsers/basic.c',
604 'ctags/parsers/bibtex.c',
605 'ctags/parsers/bibtex.h',
606 'ctags/parsers/clojure.c',
607 'ctags/parsers/cobol.c',
608 'ctags/parsers/cpreprocessor.c',
609 'ctags/parsers/cpreprocessor.h',
610 'ctags/parsers/css.c',
611 'ctags/parsers/cxx/cxx.c',
612 'ctags/parsers/cxx/cxx_debug.c',
613 'ctags/parsers/cxx/cxx_debug.h',
614 'ctags/parsers/cxx/cxx_debug_type.c',
615 'ctags/parsers/cxx/cxx_keyword.c',
616 'ctags/parsers/cxx/cxx_keyword.h',
617 'ctags/parsers/cxx/cxx_parser_block.c',
618 'ctags/parsers/cxx/cxx_parser.c',
619 'ctags/parsers/cxx/cxx_parser_function.c',
620 'ctags/parsers/cxx/cxx_parser.h',
621 'ctags/parsers/cxx/cxx_parser_internal.h',
622 'ctags/parsers/cxx/cxx_parser_lambda.c',
623 'ctags/parsers/cxx/cxx_parser_module.c',
624 'ctags/parsers/cxx/cxx_parser_namespace.c',
625 'ctags/parsers/cxx/cxx_parser_template.c',
626 'ctags/parsers/cxx/cxx_parser_tokenizer.c',
627 'ctags/parsers/cxx/cxx_parser_typedef.c',
628 'ctags/parsers/cxx/cxx_parser_using.c',
629 'ctags/parsers/cxx/cxx_parser_variable.c',
630 'ctags/parsers/cxx/cxx_qtmoc.c',
631 'ctags/parsers/cxx/cxx_scope.c',
632 'ctags/parsers/cxx/cxx_scope.h',
633 'ctags/parsers/cxx/cxx_side_chain.c',
634 'ctags/parsers/cxx/cxx_side_chain.h',
635 'ctags/parsers/cxx/cxx_subparser.c',
636 'ctags/parsers/cxx/cxx_subparser.h',
637 'ctags/parsers/cxx/cxx_subparser_internal.h',
638 'ctags/parsers/cxx/cxx_tag.c',
639 'ctags/parsers/cxx/cxx_tag.h',
640 'ctags/parsers/cxx/cxx_token.c',
641 'ctags/parsers/cxx/cxx_token_chain.c',
642 'ctags/parsers/cxx/cxx_token_chain.h',
643 'ctags/parsers/cxx/cxx_token.h',
644 'ctags/parsers/diff.c',
645 'ctags/parsers/dosbatch.c',
646 'ctags/parsers/erlang.c',
647 'ctags/parsers/flex.c',
648 'ctags/parsers/fortran.c',
649 'ctags/parsers/gdscript.c',
650 'ctags/parsers/geany_c.c',
651 'ctags/parsers/geany_docbook.c',
652 'ctags/parsers/geany_lcpp.c',
653 'ctags/parsers/geany_lcpp.h',
654 'ctags/parsers/matlab.c',
655 'ctags/parsers/go.c',
656 'ctags/parsers/haskell.c',
657 'ctags/parsers/haxe.c',
658 'ctags/parsers/html.c',
659 'ctags/parsers/iniconf.c',
660 'ctags/parsers/iniconf.h',
661 'ctags/parsers/jscript.c',
662 'ctags/parsers/jscript.h',
663 'ctags/parsers/json.c',
664 'ctags/parsers/julia.c',
665 'ctags/parsers/ldscript.c',
666 'ctags/parsers/lisp.c',
667 'ctags/parsers/lua.c',
668 'ctags/parsers/make.c',
669 'ctags/parsers/make.h',
670 'ctags/parsers/markdown.c',
671 'ctags/parsers/markdown.h',
672 'ctags/parsers/nsis.c',
673 'ctags/parsers/objc.c',
674 'ctags/parsers/ocaml.c',
675 'ctags/parsers/pascal.c',
676 'ctags/parsers/perl.c',
677 'ctags/parsers/perl.h',
678 'ctags/parsers/php.c',
679 'ctags/parsers/powershell.c',
680 'ctags/parsers/python.c',
683 'ctags/parsers/raku.c',
684 'ctags/parsers/rst.c',
685 'ctags/parsers/ruby.c',
686 'ctags/parsers/ruby.h',
687 'ctags/parsers/rust.c',
688 'ctags/parsers/sh.c',
689 'ctags/parsers/sh.h',
690 'ctags/parsers/sql.c',
691 'ctags/parsers/tcl.c',
692 'ctags/parsers/tcl.h',
693 'ctags/parsers/tcloo.c',
694 'ctags/parsers/tex.c',
695 'ctags/parsers/tex.h',
696 'ctags/parsers/txt2tags.c',
697 'ctags/parsers/typescript.c',
698 'ctags/parsers/verilog.c',
699 'ctags/parsers/vhdl.c',
700 c_args: geany_cflags + [ '-DG_LOG_DOMAIN="CTags"',
701 '-DEXTERNAL_PARSER_LIST_FILE="src/tagmanager/tm_parsers.h"' ],
702 dependencies: deps + [dep_fnmatch, dep_regex],
703 include_directories: [ictags]
705 dep_ctags = declare_dependency(link_with: [ctags], include_directories: [ictags])
708 'src/tagmanager/tm_source_file.h',
709 'src/tagmanager/tm_tag.h',
710 'src/tagmanager/tm_workspace.h',
711 'src/tagmanager/tm_parser.h',
712 subdir: 'geany/tagmanager'
715 tagmanager = static_library('tagmanager',
716 'src/tagmanager/tm_ctags.h',
717 'src/tagmanager/tm_ctags.c',
718 'src/tagmanager/tm_parser.h',
719 'src/tagmanager/tm_parser.c',
720 'src/tagmanager/tm_parsers.h',
721 'src/tagmanager/tm_source_file.h',
722 'src/tagmanager/tm_source_file.c',
723 'src/tagmanager/tm_tag.h',
724 'src/tagmanager/tm_tag.c',
725 'src/tagmanager/tm_workspace.h',
726 'src/tagmanager/tm_workspace.c',
727 c_args: geany_cflags + [ '-DG_LOG_DOMAIN="Tagmanager"' ],
728 dependencies: [dep_ctags, glib]
730 dep_tagmanager = declare_dependency(
731 link_with: tagmanager,
732 include_directories: [itagmanager]
735 # Generate signallist.i
736 gen_src = custom_target('gen-signallist',
737 input : [ 'data/geany.glade' ],
738 output : [ 'signallist.i' ],
739 command : [find_program('scripts/gen-signallist.sh'), '@INPUT@', '@OUTPUT@' ]
745 if (host_machine.system() == 'windows')
746 windows = import('windows')
747 win_resc = windows.compile_resources('geany_private.rc')
748 win_src += [ 'src/win32.c', 'src/win32.h' ]
749 foreach lib : ['ole32', 'wsock32', 'comdlg32']
750 win_deps += cc.find_library(lib)
756 if host_machine.system() == 'darwin'
757 dep_mac_integration = dependency('gtk-mac-integration', version: '>= 3.0.1',
758 required: get_option('mac-integration'))
759 if dep_mac_integration.found()
760 osx_src += ['src/osx.c', 'src/osx.h']
761 osx_deps += [dep_mac_integration]
765 vte_src = ['src/vte.c', 'src/vte.h']
766 if host_machine.system() == 'windows'
767 # No VTE support on Windows
772 'plugins/geanyfunctions.h',
773 'plugins/geanyplugin.h',
783 'src/highlighting.h',
789 'src/pluginextension.h',
806 libgeany = shared_library('geany',
824 'src/geanyentryaction.c',
825 'src/geanyentryaction.h',
826 'src/geanymenubuttonaction.c',
827 'src/geanymenubuttonaction.h',
830 'src/geanywraplabel.c',
831 'src/geanywraplabel.h',
833 'src/highlighting.c',
834 'src/highlighting.h',
835 'src/highlightingmappings.h',
851 'src/pluginextension.c',
852 'src/pluginextension.h',
893 c_args: geany_cflags + [ '-DG_LOG_DOMAIN="Geany"' ],
894 include_directories: [iscintilla],
895 dependencies: [dep_tagmanager, dep_ctags, dep_scintilla] + deps + win_deps + osx_deps,
898 dep_libgeany = declare_dependency(
900 include_directories: [iscintilla, itagmanager, igeany]
907 c_args: geany_cflags + [ '-DG_LOG_DOMAIN="Geany"' ],
909 build_rpath: meson.build_root(),
910 install_rpath: '$ORIGIN/../' + get_option('libdir'),
912 win_subsystem: 'windows',
915 i18n = import('i18n')
917 desktop_file = 'geany.desktop'
918 desktop_output_file = i18n.merge_file(
920 input: desktop_file + '.in',
921 output: desktop_file,
924 install_dir: join_paths(get_option('datadir'), 'applications')
934 install_data('COPYING', rename: 'GPL-2')
936 'scintilla/License.txt',
937 'scintilla/lexilla/License.txt',
939 'ScintillaLicense.txt',
942 install_dir: cdata.get('GEANY_DOC_DIR')
953 install_data(misc, install_dir: cdata.get('GEANY_DOC_DIR'))
954 if host_machine.system() == 'windows'
964 install_data(misc, install_dir: prefix, rename: misc_rename)