Skip to content

Commit 81a2d39

Browse files
authored
Build as submodule (static lib) (#10)
1 parent 42d4a34 commit 81a2d39

2 files changed

Lines changed: 47 additions & 25 deletions

File tree

meson.build

Lines changed: 46 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ project('libswift', 'cpp',
77
meson_version: '>=0.55.0')
88

99
libswift_src = [
10-
'rz_libswift.cpp',
1110
'src/libswift.cpp',
1211
'src/Context.cpp',
1312
'src/Demangler.cpp',
@@ -23,54 +22,76 @@ libswift_src = [
2322
rizin = find_program('rizin', required: false)
2423
cxx_cc = meson.get_compiler('cpp')
2524

26-
rz_demangler_dep = dependency('rz_demangler')
27-
28-
rizin_plugdir = get_option('rizin_plugdir')
29-
if rizin_plugdir == ''
30-
rizin_plugdir = rz_demangler_dep.get_variable(pkgconfig: 'plugindir', cmake: 'rz_demangler_PLUGINDIR')
31-
endif
32-
33-
warning_flags = []
25+
libswift_cpp_args = []
3426
libswift_deps = []
3527
libswift_incs = ['.', 'src']
3628

37-
libswift_deps += dependency('rz_util')
38-
libswift_deps += rz_demangler_dep
39-
4029
if cxx_cc.has_argument('-Wno-maybe-uninitialized')
41-
add_project_arguments('-Wno-maybe-uninitialized', language: ['cpp'])
30+
libswift_cpp_args += '-Wno-maybe-uninitialized'
4231
elif cxx_cc.has_argument('-Wno-uninitialized')
43-
add_project_arguments('-Wno-uninitialized', language: ['cpp'])
32+
libswift_cpp_args += '-Wno-uninitialized'
4433
endif
4534

4635
if cxx_cc.has_argument('-Wunused-parameter')
47-
add_project_arguments('-Wunused-parameter', language: ['cpp'])
36+
libswift_cpp_args += '-Wunused-parameter'
4837
endif
4938

5039
if cxx_cc.has_argument('-Wimplicit-fallthrough')
51-
add_project_arguments('-Wimplicit-fallthrough', language: ['cpp'])
40+
libswift_cpp_args += '-Wimplicit-fallthrough'
5241
endif
5342

5443
if cxx_cc.has_argument('-Wc++11-extensions')
55-
add_project_arguments('-Wc++11-extensions', language: ['cpp'])
44+
libswift_cpp_args += '-Wc++11-extensions'
5645
endif
5746

5847
if cxx_cc.has_argument('-Wc++11-extensions')
59-
add_project_arguments('-Wc++11-extensions', language: ['cpp'])
48+
libswift_cpp_args += '-Wc++11-extensions'
6049
endif
6150

6251
if cxx_cc.has_argument('-fvisibility=hidden')
63-
add_project_arguments('-fvisibility=hidden', language: ['cpp'])
52+
libswift_cpp_args += '-fvisibility=hidden'
6453
endif
6554

6655
if cxx_cc.has_argument('/EHsc')
67-
add_project_arguments('/EHsc', language: ['cpp'])
56+
libswift_cpp_args += '/EHsc'
6857
endif
6958

70-
shared_library('swift', libswift_src,
71-
dependencies: libswift_deps,
72-
include_directories: include_directories(libswift_incs),
59+
if cxx_cc.has_argument('-fvisibility=hidden')
60+
libswift_cpp_args += '-fvisibility=hidden'
61+
endif
62+
63+
libswift = static_library('swift', libswift_src,
64+
cpp_args: libswift_cpp_args,
65+
dependencies: [],
7366
implicit_include_directories: false,
74-
install: true,
75-
install_dir: rizin_plugdir
67+
install: false,
68+
include_directories: include_directories(libswift_incs),
69+
)
70+
71+
libswift_dep = declare_dependency(
72+
link_with: libswift,
73+
dependencies: [],
74+
include_directories: include_directories('.'),
7675
)
76+
77+
if get_option('enable_plugin')
78+
rz_demangler_dep = dependency('rz_demangler')
79+
libswift_deps = [
80+
rz_demangler_dep,
81+
dependency('rz_util'),
82+
libswift_dep
83+
]
84+
85+
rizin_plugdir = get_option('rizin_plugdir')
86+
if rizin_plugdir == ''
87+
rizin_plugdir = rz_demangler_dep.get_variable(pkgconfig: 'plugindir', cmake: 'rz_demangler_PLUGINDIR')
88+
endif
89+
90+
shared_library('swift', 'rz_libswift.cpp',
91+
dependencies: libswift_deps,
92+
include_directories: include_directories(libswift_incs),
93+
implicit_include_directories: false,
94+
install: true,
95+
install_dir: rizin_plugdir
96+
)
97+
endif

meson_options.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
option('rizin_plugdir', type: 'string', value: '')
2+
option('enable_plugin', type: 'boolean', value: true, description: 'builds as a rizin plugin.')

0 commit comments

Comments
 (0)