-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathmeson.build
128 lines (108 loc) · 3.27 KB
/
meson.build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# SPDX-FileCopyrightText: 2023 Giovanni Dante Grazioli <[email protected]>
# SPDX-License-Identifier: BSD-3-Clause
project('r2dec', 'c', meson_version: '>=0.55.0')
cc = meson.get_compiler('c')
r2dec_incs = ['.', 'c']
r2dec_c_args = ['-fvisibility=hidden', '-flto']
r2dec_src = [
'c' / 'r2dec.c',
'c' / 'base64.c',
]
libquickjs_proj = subproject('libquickjs', default_options: ['default_library=static'])
libquickjs_dep = libquickjs_proj.get_variable('quickjs_dep')
modjs_gen = executable('modjs_gen', 'tools' / 'modjs_gen.c',
dependencies: [],
include_directories: [],
implicit_include_directories: false,
install: false,
)
qjsc = executable('qjsc', 'tools' / 'qjsc_mod.c',
dependencies: libquickjs_dep,
c_args: ['-D_GNU_SOURCE=1'],
include_directories: [],
implicit_include_directories: false,
install: false,
)
subdir('js')
if get_option('standalone')
r2dec_src += [
bytecode_h,
bytecode_mod_h,
'c' / 'r2dec-standalone.c',
]
r2dec_link_args = []
foreach flag: [
'-Wl,--exclude-libs,ALL',
]
if cc.has_link_argument(flag)
r2dec_link_args += flag
endif
endforeach
r2dec_standalone = executable('r2dec-standalone', r2dec_src,
c_args : r2dec_c_args,
dependencies: [ libquickjs_dep ],
gnu_symbol_visibility: 'hidden',
link_args: r2dec_link_args,
include_directories: include_directories(r2dec_incs),
implicit_include_directories: false,
install: false,
)
else
# build plugin for radare2
radare2 = find_program('radare2', required: false)
radare2_incdir = get_option('r2_incdir')
if radare2_incdir == '' and radare2.found()
radare2_incdir = run_command(radare2, '-H', 'R2_INCDIR', check: true).stdout().strip()
endif
radare2_libdir = get_option('r2_libdir')
if radare2_libdir == '' and radare2.found()
radare2_libdir = run_command(radare2, '-H', 'R2_LIBDIR', check: true).stdout().strip()
endif
radare2_plugdir = get_option('r2_plugdir')
if radare2_plugdir == '' and radare2.found()
radare2_plugdir = run_command(radare2, '-H', 'R2_LIBR_PLUGINS', check: true).stdout().strip()
if radare2_plugdir == ''
radare2_plugdir = get_option('libdir')
endif
endif
r2dec_src += [
bytecode_h,
bytecode_mod_h,
'c' / 'r2dec-plugin.c'
]
r2dec_deps = [ libquickjs_dep ]
libs = ['r_core', 'r_util', 'r_cons', 'r_config', 'r_io', 'r_lang']
foreach lib : libs
r2dec_deps += cc.find_library(lib, dirs: radare2_libdir)
endforeach
foreach flag: [
'-fvisibility=hidden',
'-fvisibility-inlines-hidden',
]
if cc.has_argument(flag)
r2dec_c_args += flag
endif
endforeach
r2dec_link_args = []
foreach flag: [
'-Wl,--exclude-libs,ALL',
]
if cc.has_link_argument(flag)
r2dec_link_args += flag
endif
endforeach
r2dec_incs += radare2_incdir
message('radare2 include dir: ' + radare2_incdir)
message('radare2 library dir: ' + radare2_libdir)
message('radare2 plugin dir: ' + radare2_plugdir)
shared_library('core_pdd', r2dec_src,
c_args : r2dec_c_args,
link_args: r2dec_link_args,
dependencies: r2dec_deps,
gnu_symbol_visibility: 'hidden',
include_directories: include_directories(r2dec_incs),
implicit_include_directories: false,
install: true,
install_dir: radare2_plugdir
)
endif