blob: f937dc72b0facce42ac00fe7b6371922f7dc9784 [file] [log] [blame]
William A. Kennington IIIe0990382019-10-18 02:10:25 -07001fmt_dep = dependency('fmt', required: false)
William A. Kennington IIIe0990382019-10-18 02:10:25 -07002if not fmt_dep.found()
William A. Kennington IIIb5d1c582021-04-16 13:41:39 -07003 fmt_opts = import('cmake').subproject_options()
4 fmt_opts.add_cmake_defines({
5 'CMAKE_POSITION_INDEPENDENT_CODE': 'ON',
6 'MASTER_PROJECT': 'OFF',
7 })
William A. Kennington IIIe0990382019-10-18 02:10:25 -07008 fmt_proj = import('cmake').subproject(
9 'fmt',
William A. Kennington IIIb5d1c582021-04-16 13:41:39 -070010 options: fmt_opts,
William A. Kennington IIIe0990382019-10-18 02:10:25 -070011 required: false)
12 assert(fmt_proj.found(), 'fmtlib is required')
13 fmt_dep = fmt_proj.dependency('fmt')
14endif
15
William A. Kennington IIIe0990382019-10-18 02:10:25 -070016stdplus_deps = [
17 fmt_dep,
William A. Kennington IIIe0990382019-10-18 02:10:25 -070018]
19
William A. Kennington III45754242021-04-28 12:48:31 -070020stdplus_srcs = [
William A. Kennington III7613a5e2022-07-13 16:25:00 -070021 'exception.cpp',
22 'signal.cpp',
William A. Kennington III45754242021-04-28 12:48:31 -070023]
24
William A. Kennington III7613a5e2022-07-13 16:25:00 -070025if has_fd
William A. Kennington III45754242021-04-28 12:48:31 -070026 stdplus_srcs += [
William A. Kennington III7613a5e2022-07-13 16:25:00 -070027 'fd/create.cpp',
28 'fd/dupable.cpp',
William A. Kennington III4f5711c2022-08-12 17:01:53 -070029 'fd/fmt.cpp',
William A. Kennington III7613a5e2022-07-13 16:25:00 -070030 'fd/impl.cpp',
William A. Kennington III9a512c92022-08-12 15:15:55 -070031 'fd/line.cpp',
William A. Kennington III7613a5e2022-07-13 16:25:00 -070032 'fd/managed.cpp',
33 'fd/mmap.cpp',
34 'fd/ops.cpp',
William A. Kennington IIIeac9d472020-08-03 13:57:14 -070035 ]
William A. Kennington IIIeac9d472020-08-03 13:57:14 -070036endif
37
William A. Kennington III97e39472019-04-03 13:22:32 -070038stdplus_lib = library(
William A. Kennington III15982f62019-01-31 14:43:41 -080039 'stdplus',
William A. Kennington III45754242021-04-28 12:48:31 -070040 stdplus_srcs,
William A. Kennington III97e39472019-04-03 13:22:32 -070041 include_directories: stdplus_headers,
William A. Kennington III15982f62019-01-31 14:43:41 -080042 implicit_include_directories: false,
William A. Kennington IIIe0990382019-10-18 02:10:25 -070043 dependencies: stdplus_deps,
William A. Kennington III1937ef62019-03-28 03:24:57 -070044 version: meson.project_version(),
William A. Kennington III15982f62019-01-31 14:43:41 -080045 install: true)
46
William A. Kennington III3acf92b2021-04-16 13:33:50 -070047stdplus_dep = declare_dependency(
William A. Kennington IIIe0990382019-10-18 02:10:25 -070048 dependencies: stdplus_deps,
William A. Kennington III97e39472019-04-03 13:22:32 -070049 include_directories: stdplus_headers,
50 link_with: stdplus_lib)
51
William A. Kennington IIIb01c5572020-06-03 19:40:49 -070052stdplus_reqs = []
53foreach dep : stdplus_deps
54 if dep.type_name() == 'pkgconfig'
William A. Kennington III285fbcb2021-01-24 18:16:20 -080055 stdplus_reqs += dep
William A. Kennington IIIb01c5572020-06-03 19:40:49 -070056 endif
57endforeach
58
William A. Kennington III15982f62019-01-31 14:43:41 -080059import('pkgconfig').generate(
William A. Kennington III285fbcb2021-01-24 18:16:20 -080060 stdplus_lib,
William A. Kennington III15982f62019-01-31 14:43:41 -080061 description: 'C++ helper utilities',
62 version: meson.project_version(),
William A. Kennington IIIb01c5572020-06-03 19:40:49 -070063 requires: stdplus_reqs)
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070064
65if has_dl
William A. Kennington III696fb6b2022-08-24 15:28:43 -070066 stdplus_dl_deps = [
67 stdplus_dep,
68 dl_dep,
69 ]
70
71 stdplus_dl_pre = declare_dependency(
72 include_directories: stdplus_dl_headers,
73 dependencies: stdplus_dl_deps)
74
75 stdplus_dl_lib = library(
76 'stdplus-dl',
77 'dl.cpp',
78 dependencies: stdplus_dl_pre,
79 implicit_include_directories: false,
80 version: meson.project_version(),
81 install: true)
82
83 stdplus_dl_dep = declare_dependency(
84 dependencies: stdplus_dl_pre,
85 link_with: stdplus_dl_lib)
86
87 stdplus_dl_reqs = []
88 foreach dep : stdplus_dl_deps
89 if dep.type_name() == 'pkgconfig'
90 stdplus_dl_reqs += dep
91 endif
92 endforeach
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070093
94 import('pkgconfig').generate(
William A. Kennington III696fb6b2022-08-24 15:28:43 -070095 stdplus_dl_lib,
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070096 description: 'C++ helper utilities',
97 version: meson.project_version(),
William A. Kennington III696fb6b2022-08-24 15:28:43 -070098 requires: stdplus_dl_reqs)
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070099endif
100
101if has_fd
102 stdplus_fd_dep = stdplus_dep
103
104 import('pkgconfig').generate(
105 stdplus_lib,
106 name: 'stdplus-fd',
107 description: 'C++ helper utilities',
108 version: meson.project_version(),
109 requires: stdplus_reqs)
110endif
111
112if has_io_uring
William A. Kennington IIIee53ad32022-07-14 16:14:31 -0700113 stdplus_io_uring_deps = [
114 stdplus_dep,
115 stdplus_fd_dep,
116 io_uring_dep,
117 ]
118
119 stdplus_io_uring_pre = declare_dependency(
120 include_directories: stdplus_io_uring_headers,
121 dependencies: stdplus_io_uring_deps)
122
123 stdplus_io_uring_lib = library(
124 'stdplus-io_uring',
125 'io_uring.cpp',
126 dependencies: stdplus_io_uring_pre,
127 implicit_include_directories: false,
128 version: meson.project_version(),
129 install: true)
130
131 stdplus_io_uring_dep = declare_dependency(
132 dependencies: stdplus_io_uring_pre,
133 link_with: stdplus_io_uring_lib)
134
135 stdplus_io_uring_reqs = []
136 foreach dep : stdplus_io_uring_deps
137 if dep.type_name() == 'pkgconfig'
138 stdplus_io_uring_reqs += dep
139 endif
140 endforeach
William A. Kennington IIId7acddd2022-07-13 16:41:11 -0700141
142 import('pkgconfig').generate(
William A. Kennington IIIee53ad32022-07-14 16:14:31 -0700143 stdplus_io_uring_lib,
William A. Kennington IIId7acddd2022-07-13 16:41:11 -0700144 description: 'C++ helper utilities',
145 version: meson.project_version(),
William A. Kennington IIIee53ad32022-07-14 16:14:31 -0700146 requires: stdplus_io_uring_reqs)
William A. Kennington IIId7acddd2022-07-13 16:41:11 -0700147endif
William A. Kennington III953de362022-07-13 17:32:55 -0700148
149if has_gtest
150 stdplus_gtest_deps = [
151 fmt_dep,
152 gtest_dep,
153 ]
154
155 stdplus_gtest_pre = declare_dependency(
156 include_directories: stdplus_gtest_headers,
157 dependencies: stdplus_gtest_deps)
158
159 stdplus_gtest_lib = library(
160 'stdplus-gtest',
161 'gtest/tmp.cpp',
162 dependencies: stdplus_gtest_pre,
163 implicit_include_directories: false,
164 version: meson.project_version(),
165 install: true)
166
167 stdplus_gtest_dep = declare_dependency(
168 dependencies: stdplus_gtest_pre,
169 link_with: stdplus_gtest_lib)
170
171 stdplus_gtest_reqs = []
172 foreach dep : stdplus_gtest_deps
173 if dep.type_name() == 'pkgconfig'
174 stdplus_gtest_reqs += dep
175 endif
176 endforeach
177
178 import('pkgconfig').generate(
179 stdplus_gtest_lib,
180 description: 'C++ helper utilities',
181 version: meson.project_version(),
182 requires: stdplus_gtest_reqs)
William A. Kennington III2030ea52022-07-19 17:06:39 -0700183
184 install_data(
185 'run_with_tmp',
186 install_mode: 'rwxr-xr-x',
187 install_dir: get_option('bindir'))
188
189 meson.override_find_program('run_with_tmp', files('run_with_tmp'))
William A. Kennington III953de362022-07-13 17:32:55 -0700190endif
William A. Kennington III2030ea52022-07-19 17:06:39 -0700191
192run_with_tmp = find_program('run_with_tmp', native: true)