]>
Commit | Line | Data |
---|---|---|
4c0e3b4c | 1 | # TODO: MPI, ROS? |
14d7b673 JB |
2 | # Fotonic (GZAPI) |
3 | # tide (in tools) | |
ca4db9a4 JB |
4 | # |
5 | # Conditional build: | |
4c0e3b4c | 6 | %bcond_without apidocs # do not build and package API docs |
40dd16fa | 7 | %bcond_with sse # SSE/SSE2/SSE3 support |
4c0e3b4c | 8 | %bcond_without vtk # VTK support in libpcl_{io,surface} + libpcl_{apps,visualization} libs |
ca4db9a4 JB |
9 | # |
10 | Summary: Point Cloud Library - library for point cloud processing | |
11 | Summary(pl.UTF-8): Point Cloud Library - biblioteka do operacji na chmurze punktów | |
12 | Name: pcl | |
40dd16fa JB |
13 | Version: 1.7.0 |
14 | Release: 1 | |
ca4db9a4 JB |
15 | License: BSD |
16 | Group: Libraries | |
92237c8c | 17 | #Source0Download: http://pointclouds.org/downloads/ |
40dd16fa JB |
18 | Source0: https://github.com/PointCloudLibrary/pcl/archive/%{name}-%{version}.tar.gz |
19 | # Source0-md5: e2ac2d2e72825d991c6d194f9586b5d8 | |
20 | Patch0: %{name}-openni.patch | |
21 | Patch1: %{name}-vtk6.patch | |
ca4db9a4 | 22 | URL: http://pointclouds.org/ |
14d7b673 JB |
23 | BuildRequires: OpenGL-devel |
24 | BuildRequires: OpenGL-GLU-devel | |
ca4db9a4 | 25 | BuildRequires: OpenNI-devel |
14d7b673 JB |
26 | BuildRequires: QtCore-devel >= 4 |
27 | BuildRequires: QtOpenGL-devel >= 4 | |
28 | BuildRequires: boost-devel >= 1.43 | |
4c0e3b4c | 29 | BuildRequires: cmake >= 2.8 |
ca4db9a4 | 30 | BuildRequires: eigen3 >= 3 |
14d7b673 | 31 | BuildRequires: flann-devel >= 1.7.0 |
ca4db9a4 JB |
32 | BuildRequires: gcc-c++ >= 6:4.2 |
33 | BuildRequires: libgomp-devel | |
14d7b673 JB |
34 | BuildRequires: libpcap-devel |
35 | BuildRequires: libpng-devel | |
ca4db9a4 JB |
36 | BuildRequires: libstdc++-devel |
37 | BuildRequires: libusb-devel >= 1.0 | |
38 | BuildRequires: qhull-devel | |
14d7b673 | 39 | BuildRequires: qt4-build >= 4 |
ca4db9a4 JB |
40 | BuildRequires: python |
41 | BuildRequires: sed >= 4.0 | |
40dd16fa | 42 | # FIXME: only vtk-devel is really required, the rest (java,python,tcl runtimes) only because of checks in VTK cmake files |
14d7b673 JB |
43 | %{?with_vtk:BuildRequires: vtk-devel >= 6} |
44 | %{?with_vtk:BuildRequires: vtk-java >= 6} | |
45 | %{?with_vtk:BuildRequires: vtk-python >= 6} | |
46 | %{?with_vtk:BuildRequires: vtk-tcl >= 6} | |
ca4db9a4 JB |
47 | %if %{with apidocs} |
48 | BuildRequires: doxygen | |
92237c8c | 49 | BuildRequires: python-sphinxcontrib-doxylink >= 1.3 |
ca4db9a4 JB |
50 | BuildRequires: sphinx-pdg |
51 | %endif | |
52 | BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) | |
53 | ||
54 | %description | |
55 | The Point Cloud Library (PCL) is a standalone, large scale, open | |
56 | project for 3D point cloud processing. | |
57 | ||
58 | The PCL framework contains numerous state-of-the art algorithms | |
59 | including filtering, feature estimation, surface reconstruction, | |
60 | registration, model fitting and segmentation, as well as higher level | |
61 | tools for performing mapping and object recognition. Think of it as | |
62 | the Boost of 3D point cloud processing. | |
63 | ||
64 | %description -l pl.UTF-8 | |
65 | Biblioteka PCL (Point Cloud Processing) to samodzielna, wielkoskalowa, | |
66 | mająca otwarte źródła biblioteka do przetwarzania chmury punktów 3D. | |
67 | ||
68 | Szkielet PCL zawiera wiele współczesnych algorytmów, obejmujących | |
69 | filtrowanie, przybliżanie cech, rekonstrukcję powierzchni, | |
70 | rejestrację, dopasowywanie modeli oraz segmentację, a także narzędzia | |
71 | wyższego poziomu do wykonywania odwzorowań oraz rozpoznawania | |
72 | obiektów. O bibliotece można myśleć jako odpowiedniku Boosta do | |
73 | przetwarzania chmury punktów 3D. | |
74 | ||
75 | %package devel | |
76 | Summary: Header files for PCL library | |
77 | Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PCL | |
78 | Group: Development/Libraries | |
79 | Requires: %{name} = %{version}-%{release} | |
14d7b673 JB |
80 | Requires: boost-devel >= 1.44 |
81 | %{?with_vtk:Requires: vtk-devel >= 6} | |
ca4db9a4 JB |
82 | |
83 | %description devel | |
84 | Header files for PCL library. | |
85 | ||
86 | %description devel -l pl.UTF-8 | |
87 | Pliki nagłówkowe biblioteki PCL. | |
88 | ||
89 | %package apidocs | |
90 | Summary: PCL API documentation and tutorials | |
91 | Summary(pl.UTF-8): Dokumentacja API oraz wprowadzenie do biblioteki PCL | |
92 | Group: Documentation | |
93 | ||
94 | %description apidocs | |
95 | API documentation and tutorials for PCL library. | |
96 | ||
97 | %description apidocs -l pl.UTF-8 | |
98 | Dokumentacja API oraz wprowadzenie do biblioteki PCL. | |
99 | ||
100 | %prep | |
40dd16fa | 101 | %setup -q -n pcl-pcl-%{version} |
ca4db9a4 | 102 | %patch0 -p1 |
bc8fb1e0 | 103 | %patch1 -p1 |
ca4db9a4 | 104 | |
92237c8c | 105 | # don't use SSE/SSE2/SSE3 just because compiler and builder host supports it |
40dd16fa | 106 | #%{__sed} -i -e '/^PCL_CHECK_FOR_SSE/d' CMakeLists.txt |
ca4db9a4 JB |
107 | |
108 | %build | |
109 | mkdir build | |
110 | cd build | |
bc8fb1e0 JB |
111 | # LIB_INSTALL_DIR specified by PLD cmake macro is incompatible with what PCL expects |
112 | %cmake .. \ | |
40dd16fa JB |
113 | -DLIB_INSTALL_DIR=%{_lib} \ |
114 | %{!?with_sse:-DPCL_ENABLE_SSE=OFF} | |
e0ef7a16 JB |
115 | |
116 | # NOTE: -j1 because of OOM on th-x86_64 | |
117 | %{__make} -j1 | |
ca4db9a4 | 118 | |
92237c8c | 119 | # why it's not called on build? |
ca4db9a4 JB |
120 | %if %{with apidocs} |
121 | cd doc/doxygen | |
122 | doxygen doxyfile | |
123 | cd ../tutorials | |
124 | sphinx-build -b html -a -d doctrees ../../../doc/tutorials/content html | |
125 | %endif | |
126 | ||
127 | %install | |
128 | rm -rf $RPM_BUILD_ROOT | |
129 | ||
130 | %{__make} -C build install \ | |
131 | DESTDIR=$RPM_BUILD_ROOT | |
132 | ||
133 | %clean | |
134 | rm -rf $RPM_BUILD_ROOT | |
135 | ||
136 | %post -p /sbin/ldconfig | |
137 | %postun -p /sbin/ldconfig | |
138 | ||
139 | %files | |
140 | %defattr(644,root,root,755) | |
141 | %doc AUTHORS.txt LICENSE.txt | |
40dd16fa JB |
142 | %attr(755,root,root) %{_bindir}/pcl_compute_hull |
143 | %attr(755,root,root) %{_bindir}/pcl_concatenate_points_pcd | |
92237c8c | 144 | %attr(755,root,root) %{_bindir}/pcl_convert_pcd_ascii_binary |
40dd16fa JB |
145 | %attr(755,root,root) %{_bindir}/pcl_demean_cloud |
146 | %attr(755,root,root) %{_bindir}/pcl_fast_bilateral_filter | |
147 | %attr(755,root,root) %{_bindir}/pcl_hdl_grabber | |
148 | %attr(755,root,root) %{_bindir}/pcl_linemod_detection | |
149 | %attr(755,root,root) %{_bindir}/pcl_lum | |
150 | %attr(755,root,root) %{_bindir}/pcl_match_linemod_template | |
151 | %attr(755,root,root) %{_bindir}/pcl_ndt2d | |
152 | %attr(755,root,root) %{_bindir}/pcl_ndt3d | |
153 | %attr(755,root,root) %{_bindir}/pcl_oni2pcd | |
154 | %attr(755,root,root) %{_bindir}/pcl_openni_grabber_depth_example | |
92237c8c | 155 | %attr(755,root,root) %{_bindir}/pcl_openni_grabber_example |
40dd16fa JB |
156 | %attr(755,root,root) %{_bindir}/pcl_openni_pcd_recorder |
157 | %attr(755,root,root) %{_bindir}/pcl_outofcore_print | |
158 | %attr(755,root,root) %{_bindir}/pcl_outofcore_process | |
159 | %attr(755,root,root) %{_bindir}/pcl_outofcore_viewer | |
160 | %attr(755,root,root) %{_bindir}/pcl_pcd_change_viewpoint | |
92237c8c | 161 | %attr(755,root,root) %{_bindir}/pcl_pcd_convert_NaN_nan |
40dd16fa | 162 | %attr(755,root,root) %{_bindir}/pcl_pclzf2pcd |
92237c8c JB |
163 | %attr(755,root,root) %{_bindir}/pcl_ply2obj |
164 | %attr(755,root,root) %{_bindir}/pcl_ply2ply | |
165 | %attr(755,root,root) %{_bindir}/pcl_ply2raw | |
166 | %attr(755,root,root) %{_bindir}/pcl_plyheader | |
40dd16fa JB |
167 | %attr(755,root,root) %{_bindir}/pcl_radius_filter |
168 | %attr(755,root,root) %{_bindir}/pcl_sac_segmentation_plane | |
169 | %attr(755,root,root) %{_bindir}/pcl_train_linemod_template | |
170 | %attr(755,root,root) %{_bindir}/pcl_uniform_sampling | |
171 | %attr(755,root,root) %{_bindir}/pcl_xyz2pcd | |
4c0e3b4c | 172 | %if %{with vtk} |
4c0e3b4c JB |
173 | %attr(755,root,root) %{_bindir}/pcl_add_gaussian_noise |
174 | %attr(755,root,root) %{_bindir}/pcl_boundary_estimation | |
175 | %attr(755,root,root) %{_bindir}/pcl_cluster_extraction | |
176 | %attr(755,root,root) %{_bindir}/pcl_compute_cloud_error | |
177 | %attr(755,root,root) %{_bindir}/pcl_crop_to_hull | |
178 | %attr(755,root,root) %{_bindir}/pcl_elch | |
179 | %attr(755,root,root) %{_bindir}/pcl_extract_feature | |
4c0e3b4c JB |
180 | %attr(755,root,root) %{_bindir}/pcl_fpfh_estimation |
181 | %attr(755,root,root) %{_bindir}/pcl_gp3_surface | |
40dd16fa JB |
182 | %attr(755,root,root) %{_bindir}/pcl_ground_based_rgbd_people_detector |
183 | %attr(755,root,root) %{_bindir}/pcl_hdl_viewer_simple | |
4c0e3b4c JB |
184 | %attr(755,root,root) %{_bindir}/pcl_icp |
185 | %attr(755,root,root) %{_bindir}/pcl_icp2d | |
40dd16fa JB |
186 | %attr(755,root,root) %{_bindir}/pcl_image_grabber_saver |
187 | %attr(755,root,root) %{_bindir}/pcl_image_grabber_viewer | |
4c0e3b4c JB |
188 | %attr(755,root,root) %{_bindir}/pcl_marching_cubes_reconstruction |
189 | %attr(755,root,root) %{_bindir}/pcl_mesh2pcd | |
190 | %attr(755,root,root) %{_bindir}/pcl_mesh_sampling | |
191 | %attr(755,root,root) %{_bindir}/pcl_mls_smoothing | |
4c0e3b4c | 192 | %attr(755,root,root) %{_bindir}/pcl_normal_estimation |
40dd16fa JB |
193 | %attr(755,root,root) %{_bindir}/pcl_obj2vtk |
194 | %attr(755,root,root) %{_bindir}/pcl_obj_rec_ransac_accepted_hypotheses | |
195 | %attr(755,root,root) %{_bindir}/pcl_obj_rec_ransac_hash_table | |
196 | %attr(755,root,root) %{_bindir}/pcl_obj_rec_ransac_model_opps | |
197 | %attr(755,root,root) %{_bindir}/pcl_obj_rec_ransac_orr_octree | |
198 | %attr(755,root,root) %{_bindir}/pcl_obj_rec_ransac_orr_octree_zprojection | |
199 | %attr(755,root,root) %{_bindir}/pcl_obj_rec_ransac_result | |
200 | %attr(755,root,root) %{_bindir}/pcl_obj_rec_ransac_scene_opps | |
4c0e3b4c | 201 | %attr(755,root,root) %{_bindir}/pcl_octree_viewer |
40dd16fa JB |
202 | %attr(755,root,root) %{_bindir}/pcl_oni_viewer |
203 | %attr(755,root,root) %{_bindir}/pcl_openni_image | |
4c0e3b4c | 204 | %attr(755,root,root) %{_bindir}/pcl_openni_save_image |
40dd16fa JB |
205 | %attr(755,root,root) %{_bindir}/pcl_openni_viewer |
206 | %attr(755,root,root) %{_bindir}/pcl_organized_pcd_to_png | |
4c0e3b4c JB |
207 | %attr(755,root,root) %{_bindir}/pcl_outlier_removal |
208 | %attr(755,root,root) %{_bindir}/pcl_passthrough_filter | |
209 | %attr(755,root,root) %{_bindir}/pcl_pcd2ply | |
210 | %attr(755,root,root) %{_bindir}/pcl_pcd2vtk | |
40dd16fa JB |
211 | %attr(755,root,root) %{_bindir}/pcl_pcd_grabber_viewer |
212 | %attr(755,root,root) %{_bindir}/pcl_pcd_image_viewer | |
4c0e3b4c JB |
213 | %attr(755,root,root) %{_bindir}/pcl_plane_projection |
214 | %attr(755,root,root) %{_bindir}/pcl_ply2pcd | |
40dd16fa JB |
215 | %attr(755,root,root) %{_bindir}/pcl_ply2vtk |
216 | %attr(755,root,root) %{_bindir}/pcl_png2pcd | |
4c0e3b4c | 217 | %attr(755,root,root) %{_bindir}/pcl_poisson_reconstruction |
4c0e3b4c JB |
218 | %attr(755,root,root) %{_bindir}/pcl_registration_visualizer |
219 | %attr(755,root,root) %{_bindir}/pcl_spin_estimation | |
40dd16fa JB |
220 | %attr(755,root,root) %{_bindir}/pcl_tiff2pcd |
221 | %attr(755,root,root) %{_bindir}/pcl_timed_trigger_test | |
4c0e3b4c JB |
222 | %attr(755,root,root) %{_bindir}/pcl_transform_from_viewpoint |
223 | %attr(755,root,root) %{_bindir}/pcl_transform_point_cloud | |
224 | %attr(755,root,root) %{_bindir}/pcl_vfh_estimation | |
40dd16fa | 225 | %attr(755,root,root) %{_bindir}/pcl_viewer |
4c0e3b4c JB |
226 | %attr(755,root,root) %{_bindir}/pcl_virtual_scanner |
227 | %attr(755,root,root) %{_bindir}/pcl_voxel_grid | |
40dd16fa JB |
228 | %attr(755,root,root) %{_bindir}/pcl_voxel_grid_occlusion_estimation |
229 | %attr(755,root,root) %{_bindir}/pcl_vtk2obj | |
230 | %attr(755,root,root) %{_bindir}/pcl_vtk2pcd | |
231 | %attr(755,root,root) %{_bindir}/pcl_vtk2ply | |
4c0e3b4c | 232 | %endif |
ca4db9a4 | 233 | %attr(755,root,root) %{_libdir}/libpcl_common.so.*.*.* |
40dd16fa | 234 | %attr(755,root,root) %ghost %{_libdir}/libpcl_common.so.1.7 |
ca4db9a4 | 235 | %attr(755,root,root) %{_libdir}/libpcl_features.so.*.*.* |
40dd16fa | 236 | %attr(755,root,root) %ghost %{_libdir}/libpcl_features.so.1.7 |
ca4db9a4 | 237 | %attr(755,root,root) %{_libdir}/libpcl_filters.so.*.*.* |
40dd16fa | 238 | %attr(755,root,root) %ghost %{_libdir}/libpcl_filters.so.1.7 |
ca4db9a4 | 239 | %attr(755,root,root) %{_libdir}/libpcl_io.so.*.*.* |
40dd16fa | 240 | %attr(755,root,root) %ghost %{_libdir}/libpcl_io.so.1.7 |
92237c8c | 241 | %attr(755,root,root) %{_libdir}/libpcl_io_ply.so.*.*.* |
40dd16fa | 242 | %attr(755,root,root) %ghost %{_libdir}/libpcl_io_ply.so.1.7 |
ca4db9a4 | 243 | %attr(755,root,root) %{_libdir}/libpcl_kdtree.so.*.*.* |
40dd16fa | 244 | %attr(755,root,root) %ghost %{_libdir}/libpcl_kdtree.so.1.7 |
ca4db9a4 | 245 | %attr(755,root,root) %{_libdir}/libpcl_keypoints.so.*.*.* |
40dd16fa | 246 | %attr(755,root,root) %ghost %{_libdir}/libpcl_keypoints.so.1.7 |
ca4db9a4 | 247 | %attr(755,root,root) %{_libdir}/libpcl_octree.so.*.*.* |
40dd16fa JB |
248 | %attr(755,root,root) %ghost %{_libdir}/libpcl_octree.so.1.7 |
249 | %attr(755,root,root) %{_libdir}/libpcl_outofcore.so.*.*.* | |
250 | %attr(755,root,root) %ghost %{_libdir}/libpcl_outofcore.so.1.7 | |
251 | %attr(755,root,root) %{_libdir}/libpcl_recognition.so.*.*.* | |
252 | %attr(755,root,root) %ghost %{_libdir}/libpcl_recognition.so.1.7 | |
ca4db9a4 | 253 | %attr(755,root,root) %{_libdir}/libpcl_registration.so.*.*.* |
40dd16fa | 254 | %attr(755,root,root) %ghost %{_libdir}/libpcl_registration.so.1.7 |
ca4db9a4 | 255 | %attr(755,root,root) %{_libdir}/libpcl_sample_consensus.so.*.*.* |
40dd16fa | 256 | %attr(755,root,root) %ghost %{_libdir}/libpcl_sample_consensus.so.1.7 |
ca4db9a4 | 257 | %attr(755,root,root) %{_libdir}/libpcl_search.so.*.*.* |
40dd16fa | 258 | %attr(755,root,root) %ghost %{_libdir}/libpcl_search.so.1.7 |
ca4db9a4 | 259 | %attr(755,root,root) %{_libdir}/libpcl_segmentation.so.*.*.* |
40dd16fa | 260 | %attr(755,root,root) %ghost %{_libdir}/libpcl_segmentation.so.1.7 |
ca4db9a4 | 261 | %attr(755,root,root) %{_libdir}/libpcl_surface.so.*.*.* |
40dd16fa | 262 | %attr(755,root,root) %ghost %{_libdir}/libpcl_surface.so.1.7 |
92237c8c | 263 | %attr(755,root,root) %{_libdir}/libpcl_tracking.so.*.*.* |
40dd16fa | 264 | %attr(755,root,root) %ghost %{_libdir}/libpcl_tracking.so.1.7 |
4c0e3b4c | 265 | %if %{with vtk} |
40dd16fa JB |
266 | %attr(755,root,root) %{_libdir}/libpcl_people.so.*.*.* |
267 | %attr(755,root,root) %ghost %{_libdir}/libpcl_people.so.1.7 | |
4c0e3b4c | 268 | %attr(755,root,root) %{_libdir}/libpcl_visualization.so.*.*.* |
40dd16fa | 269 | %attr(755,root,root) %ghost %{_libdir}/libpcl_visualization.so.1.7 |
4c0e3b4c | 270 | %endif |
ca4db9a4 JB |
271 | |
272 | %files devel | |
273 | %defattr(644,root,root,755) | |
274 | %attr(755,root,root) %{_libdir}/libpcl_common.so | |
275 | %attr(755,root,root) %{_libdir}/libpcl_features.so | |
276 | %attr(755,root,root) %{_libdir}/libpcl_filters.so | |
277 | %attr(755,root,root) %{_libdir}/libpcl_io.so | |
92237c8c | 278 | %attr(755,root,root) %{_libdir}/libpcl_io_ply.so |
ca4db9a4 JB |
279 | %attr(755,root,root) %{_libdir}/libpcl_kdtree.so |
280 | %attr(755,root,root) %{_libdir}/libpcl_keypoints.so | |
281 | %attr(755,root,root) %{_libdir}/libpcl_octree.so | |
40dd16fa JB |
282 | %attr(755,root,root) %{_libdir}/libpcl_outofcore.so |
283 | %attr(755,root,root) %{_libdir}/libpcl_recognition.so | |
ca4db9a4 JB |
284 | %attr(755,root,root) %{_libdir}/libpcl_registration.so |
285 | %attr(755,root,root) %{_libdir}/libpcl_sample_consensus.so | |
286 | %attr(755,root,root) %{_libdir}/libpcl_search.so | |
287 | %attr(755,root,root) %{_libdir}/libpcl_segmentation.so | |
288 | %attr(755,root,root) %{_libdir}/libpcl_surface.so | |
92237c8c | 289 | %attr(755,root,root) %{_libdir}/libpcl_tracking.so |
4c0e3b4c | 290 | %if %{with vtk} |
40dd16fa | 291 | %attr(755,root,root) %{_libdir}/libpcl_people.so |
4c0e3b4c JB |
292 | %attr(755,root,root) %{_libdir}/libpcl_visualization.so |
293 | %endif | |
40dd16fa JB |
294 | %{_includedir}/pcl-1.7 |
295 | %{_pkgconfigdir}/pcl_common-1.7.pc | |
296 | %{_pkgconfigdir}/pcl_features-1.7.pc | |
297 | %{_pkgconfigdir}/pcl_filters-1.7.pc | |
298 | %{_pkgconfigdir}/pcl_io-1.7.pc | |
299 | %{_pkgconfigdir}/pcl_kdtree-1.7.pc | |
300 | %{_pkgconfigdir}/pcl_keypoints-1.7.pc | |
301 | %{_pkgconfigdir}/pcl_octree-1.7.pc | |
302 | %{_pkgconfigdir}/pcl_outofcore-1.7.pc | |
303 | %{_pkgconfigdir}/pcl_recognition-1.7.pc | |
304 | %{_pkgconfigdir}/pcl_registration-1.7.pc | |
305 | %{_pkgconfigdir}/pcl_sample_consensus-1.7.pc | |
306 | %{_pkgconfigdir}/pcl_search-1.7.pc | |
307 | %{_pkgconfigdir}/pcl_segmentation-1.7.pc | |
308 | %{_pkgconfigdir}/pcl_surface-1.7.pc | |
309 | %{_pkgconfigdir}/pcl_tracking-1.7.pc | |
4c0e3b4c | 310 | %if %{with vtk} |
40dd16fa JB |
311 | %{_pkgconfigdir}/pcl_people-1.7.pc |
312 | %{_pkgconfigdir}/pcl_visualization-1.7.pc | |
4c0e3b4c | 313 | %endif |
40dd16fa JB |
314 | %dir %{_datadir}/pcl-1.7 |
315 | %{_datadir}/pcl-1.7/PCLConfig*.cmake | |
ca4db9a4 JB |
316 | |
317 | %if %{with apidocs} | |
318 | %files apidocs | |
319 | %defattr(644,root,root,755) | |
40dd16fa JB |
320 | %dir %{_docdir}/pcl-1.7 |
321 | %{_docdir}/pcl-1.7/html | |
322 | %{_docdir}/pcl-1.7/tutorials | |
ca4db9a4 | 323 | %endif |