Skip to content

Commit f1c9f8d

Browse files
committed
Add meson build support
Mostly copied from geany/geany-plugins#1345
1 parent d7fe8c6 commit f1c9f8d

File tree

3 files changed

+146
-0
lines changed

3 files changed

+146
-0
lines changed

meson.build

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
project(
2+
'geany-lsp',
3+
'c',
4+
license : 'GPL-2.0',
5+
version : '2.1'
6+
)
7+
8+
plugin_name = 'lsp'
9+
10+
i18n = import('i18n')
11+
# define GETTEXT_PACKAGE
12+
add_project_arguments('-DGETTEXT_PACKAGE="intltest"', language:'c')
13+
i18n.gettext(meson.project_name())
14+
15+
subdir('meson_config')
16+
17+
18+
geany_dep = dependency('geany')
19+
20+
plugin_suffix = []
21+
if (host_machine.system() == 'darwin')
22+
plugin_suffix = 'so' # use "so" instead of "dylib" so Geany finds plugins correctly
23+
endif
24+
25+
plugin_inc = [include_directories('lsp/deps/json-glib', 'lsp/deps/jsonrpc-glib', 'lsp/deps', 'lsp/src')]
26+
27+
shared_module('lsp',
28+
'lsp/deps/json-glib/json-array.c',
29+
'lsp/deps/json-glib/json-builder.c',
30+
'lsp/deps/json-glib/json-debug.c',
31+
'lsp/deps/json-glib/json-gboxed.c',
32+
'lsp/deps/json-glib/json-generator.c',
33+
'lsp/deps/json-glib/json-gobject.c',
34+
'lsp/deps/json-glib/json-gvariant.c',
35+
'lsp/deps/json-glib/json-node.c',
36+
'lsp/deps/json-glib/json-object.c',
37+
'lsp/deps/json-glib/json-parser.c',
38+
'lsp/deps/json-glib/json-path.c',
39+
'lsp/deps/json-glib/json-reader.c',
40+
'lsp/deps/json-glib/json-scanner.c',
41+
'lsp/deps/json-glib/json-serializable.c',
42+
'lsp/deps/json-glib/json-utils.c',
43+
'lsp/deps/json-glib/json-value.c',
44+
45+
'lsp/deps/jsonrpc-glib/jsonrpc-client.c',
46+
'lsp/deps/jsonrpc-glib/jsonrpc-input-stream.c',
47+
'lsp/deps/jsonrpc-glib/jsonrpc-message.c',
48+
'lsp/deps/jsonrpc-glib/jsonrpc-output-stream.c',
49+
'lsp/deps/jsonrpc-glib/jsonrpc-server.c',
50+
'lsp/deps/jsonrpc-glib/jsonrpc-marshalers.c',
51+
52+
'lsp/src/lsp-autocomplete.c',
53+
'lsp/src/lsp-main.c',
54+
'lsp/src/lsp-server.c',
55+
'lsp/src/lsp-sync.c',
56+
'lsp/src/lsp-rpc.c',
57+
'lsp/src/lsp-diagnostics.c',
58+
'lsp/src/lsp-hover.c',
59+
'lsp/src/lsp-signature.c',
60+
'lsp/src/lsp-log.c',
61+
'lsp/src/lsp-goto.c',
62+
'lsp/src/lsp-progress.c',
63+
'lsp/src/lsp-symbols.c',
64+
'lsp/src/lsp-symbol-kinds.c',
65+
'lsp/src/lsp-semtokens.c',
66+
'lsp/src/lsp-goto-panel.c',
67+
'lsp/src/lsp-goto-anywhere.c',
68+
'lsp/src/lsp-format.c',
69+
'lsp/src/lsp-highlight.c',
70+
'lsp/src/lsp-rename.c',
71+
'lsp/src/lsp-command.c',
72+
'lsp/src/lsp-code-lens.c',
73+
'lsp/src/lsp-symbol.c',
74+
'lsp/src/lsp-extension.c',
75+
'lsp/src/lsp-utils.c',
76+
'lsp/src/lsp-workspace-folders.c',
77+
name_prefix: '', # "lib" seems to be the default prefix
78+
name_suffix: plugin_suffix,
79+
include_directories: plugin_inc,
80+
c_args: ['-DJSON_COMPILATION', '-DJSONRPC_GLIB_COMPILATION'],
81+
dependencies: [config_dep, geany_dep],
82+
install_dir: plugin_path,
83+
install: true
84+
)
85+
86+
87+
lsp_conf = [
88+
'lsp/data/lsp.conf',
89+
]
90+
install_data(sources: lsp_conf, install_dir: plugin_datadir)

meson_config/config.h.in

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#pragma once
2+
3+
#define VERSION "@version@"
4+
5+
#define GEANY_VERSION "@geany_version@"
6+
7+
#define PLUGIN "@plugin_name@"
8+
9+
#define DOCDIR "@prefix@/@docdir@"
10+
#define LIBDIR "@prefix@/@libdir@"
11+
#define LOCALEDIR "@prefix@/@localedir@"
12+
13+
#define GEANYPLUGINS_DATADIR "@prefix@/@plugin_datadir@"
14+
#define DBGPLUG_DATA_DIR "@prefix@/@plugin_datadir@"
15+
#define PLUGINDATADIR "@prefix@/@plugin_datadir@"
16+
17+
#define PLUGINDOCDIR "@prefix@/@plugin_docdir@"
18+
#define PLUGINHTMLDOCDIR "@prefix@/@plugin_docdir@/html"

meson_config/meson.build

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
docdir = get_option('datadir') / 'doc'
2+
project_datadir = get_option('datadir') / 'geany-plugins'
3+
project_libdir = get_option('libdir') / 'geany-plugins'
4+
project_docdir = docdir / 'geany-plugins'
5+
6+
plugin_datadir = project_datadir / plugin_name
7+
plugin_libdir = project_libdir / plugin_name
8+
plugin_docdir = project_docdir / plugin_name
9+
10+
plugin_path = get_option('libdir') / 'geany'
11+
12+
conf_data = configuration_data()
13+
14+
conf_data.set('plugin_name', plugin_name)
15+
conf_data.set('plugin_path', plugin_path)
16+
17+
conf_data.set('version', meson.project_version())
18+
conf_data.set('geany_version', '2.0.0')
19+
20+
conf_data.set('prefix', get_option('prefix'))
21+
conf_data.set('libdir', get_option('libdir'))
22+
conf_data.set('docdir', docdir)
23+
conf_data.set('localedir', get_option('localedir'))
24+
25+
conf_data.set('plugin_datadir', plugin_datadir)
26+
conf_data.set('plugin_libdir', plugin_libdir)
27+
conf_data.set('plugin_docdir', plugin_docdir)
28+
29+
configure_file(
30+
input: 'config.h.in',
31+
output: 'config.h',
32+
configuration: conf_data,
33+
)
34+
35+
config_dep = declare_dependency(
36+
include_directories: include_directories('.'),
37+
compile_args: ['-DHAVE_CONFIG_H'],
38+
)

0 commit comments

Comments
 (0)