Skip to content

Commit 2fcb267

Browse files
committed
Add Meson build
1 parent eb6d382 commit 2fcb267

1 file changed

Lines changed: 113 additions & 0 deletions

File tree

meson.build

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
project('reflex', 'cpp',
2+
version: '6.3.0',
3+
license: 'BSD-3-Clause',
4+
meson_version: '>= 1.1',
5+
default_options: ['cpp_std=c++11'])
6+
7+
pkg = import('pkgconfig')
8+
9+
reflex_inc = include_directories('include')
10+
11+
reflex_headers = files(
12+
'include/reflex/abslexer.h',
13+
'include/reflex/absmatcher.h',
14+
'include/reflex/bits.h',
15+
'include/reflex/boostmatcher.h',
16+
'include/reflex/convert.h',
17+
'include/reflex/debug.h',
18+
'include/reflex/error.h',
19+
'include/reflex/flexlexer.h',
20+
'include/reflex/fuzzymatcher.h',
21+
'include/reflex/input.h',
22+
'include/reflex/linematcher.h',
23+
'include/reflex/matcher.h',
24+
'include/reflex/pattern.h',
25+
'include/reflex/pcre2matcher.h',
26+
'include/reflex/posix.h',
27+
'include/reflex/ranges.h',
28+
'include/reflex/setop.h',
29+
'include/reflex/simd.h',
30+
'include/reflex/stdmatcher.h',
31+
'include/reflex/timer.h',
32+
'include/reflex/traits.h',
33+
'include/reflex/unicode.h',
34+
'include/reflex/utf8.h')
35+
36+
reflex_sources = files(
37+
'lib/convert.cpp',
38+
'lib/debug.cpp',
39+
'lib/error.cpp',
40+
'lib/input.cpp',
41+
'lib/matcher.cpp',
42+
'lib/matcher_avx2.cpp',
43+
'lib/matcher_avx512bw.cpp',
44+
'lib/pattern.cpp',
45+
'lib/posix.cpp',
46+
'lib/simd.cpp',
47+
'lib/simd_avx2.cpp',
48+
'lib/simd_avx512bw.cpp',
49+
'lib/unicode.cpp',
50+
'lib/utf8.cpp',
51+
'unicode/block_scripts.cpp',
52+
'unicode/language_scripts.cpp',
53+
'unicode/letter_scripts.cpp',
54+
'unicode/letter_case.cpp',
55+
'unicode/composer.cpp')
56+
57+
reflex_min_sources = files(
58+
'lib/debug.cpp',
59+
'lib/error.cpp',
60+
'lib/input.cpp',
61+
'lib/matcher.cpp',
62+
'lib/matcher_avx2.cpp',
63+
'lib/matcher_avx512bw.cpp',
64+
'lib/pattern.cpp',
65+
'lib/simd.cpp',
66+
'lib/simd_avx2.cpp',
67+
'lib/simd_avx512bw.cpp',
68+
'lib/utf8.cpp')
69+
70+
# The Meson build starts with RE/flex's portable code path. Add SIMD feature
71+
# detection later if the portable matcher is too slow for Meson-built packages.
72+
reflex_lib = library('reflex',
73+
reflex_sources,
74+
include_directories: reflex_inc,
75+
install: true)
76+
77+
reflexmin_lib = library('reflexmin',
78+
reflex_min_sources,
79+
include_directories: reflex_inc,
80+
install: true)
81+
82+
reflex_exe = executable('reflex',
83+
'src/reflex.cpp',
84+
include_directories: reflex_inc,
85+
link_with: reflex_lib,
86+
install: true)
87+
88+
install_headers(reflex_headers, subdir: 'reflex')
89+
90+
reflex_dep = declare_dependency(
91+
include_directories: reflex_inc,
92+
link_with: reflex_lib)
93+
94+
reflexmin_dep = declare_dependency(
95+
include_directories: reflex_inc,
96+
link_with: reflexmin_lib)
97+
98+
pkg.generate(reflex_lib,
99+
filebase: 'reflex',
100+
name: 'RE/flex',
101+
description: 'high-performance C++ regex library and lexical analyzer generator',
102+
subdirs: '.')
103+
104+
pkg.generate(reflexmin_lib,
105+
filebase: 'reflexmin',
106+
name: 'RE/flex',
107+
description: 'high-performance C++ regex library and lexical analyzer generator',
108+
subdirs: '.')
109+
110+
# Register a handler for any requested 'reflex' dependency
111+
meson.override_dependency('reflex', reflex_dep)
112+
# Register a handler for any requested 'reflexmin' dependency
113+
meson.override_dependency('reflexmin', reflexmin_dep)

0 commit comments

Comments
 (0)