Missing includes
Trying a build of kleidicv 0.4.0 on openSUSE Tumbleweed aarch64, I get the following errors related to missing includes:
[ 44s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_resize_linear.cpp: In function ‘void PrintTo(const ResizeTestParams<T>&, std::ostream*)’:
[ 44s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_resize_linear.cpp:346:21: error: ‘setw’ is not a member of ‘std’
[ 44s] 346 | *os << std::setw(3) << typename PrintTypeGetter<T>::type{row[x]};
[ 44s] | ^~~~
[ 44s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_resize_linear.cpp:14:1: note: ‘std::setw’ is defined in header ‘<iomanip>’; this is probably fixable by adding ‘#include <iomanip>’
[ 44s] 13 | #include "framework/utils.h"
[ 44s] +++ |+#include <iomanip>
[ 44s] 14 | #include "kleidicv/kleidicv.h"
[ 44s] make[2]: *** [test/api/CMakeFiles/kleidicv-api-test.dir/build.make:292: test/api/CMakeFiles/kleidicv-api-test.dir/test_resize_linear.cpp.o] Error 1
[ 41s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/framework/utils.cpp: In function ‘void test::dump(const TwoDimensional<ElementType>*)’:
[ 41s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/framework/utils.cpp:36:27: error: ‘setw’ is not a member of ‘std’
[ 41s] 36 | std::cout << std::setw(2 * sizeof(ElementType)) << std::setfill('0')
[ 41s] | ^~~~
[ 41s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/framework/utils.cpp:12:1: note: ‘std::setw’ is defined in header ‘<iomanip>’; this is probably fixable by adding ‘#include <iomanip>’
[ 41s] 11 | #include <cstdlib>
[ 41s] +++ |+#include <iomanip>
[ 41s] 12 | #include <ios>
[ 41s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/framework/utils.cpp:36:65: error: ‘setfill’ is not a member of ‘std’
[ 41s] 36 | std::cout << std::setw(2 * sizeof(ElementType)) << std::setfill('0')
[ 41s] | ^~~~~~~
[ 41s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/framework/utils.cpp:36:65: note: ‘std::setfill’ is defined in header ‘<iomanip>’; this is probably fixable by adding ‘#include <iomanip>’
[ 41s] make[2]: *** [test/framework/CMakeFiles/kleidicv-framework-test.dir/build.make:166: test/framework/CMakeFiles/kleidicv-framework-test.dir/utils.cpp.o] Error 1
[ 63s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_rotate.cpp: In member function ‘void Rotate::test(size_t, size_t, size_t) const’:
[ 63s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_rotate.cpp:51:10: error: ‘generate’ is not a member of ‘std’; did you mean ‘negate’?
[ 63s] 51 | std::generate(source.begin(), source.end(), generator);
[ 63s] | ^~~~~~~~
[ 63s] | negate
[ 63s] make[2]: *** [test/api/CMakeFiles/kleidicv-api-test.dir/build.make:348: test/api/CMakeFiles/kleidicv-api-test.dir/test_rotate.cpp.o] Error 1
[ 90s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_warp_perspective.cpp: In function ‘const ScalarType* get_array2d_element_or_border(const test::Array2D<ScalarType>&, ptrdiff_t, ptrdiff_t, kleidicv_border_type_t, const ScalarType*)’:
[ 90s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_warp_perspective.cpp:62:14: error: ‘clamp’ is not a member of ‘std’
[ 90s] 62 | x = std::clamp<ptrdiff_t>(x, 0, static_cast<ptrdiff_t>(src.width()) - 1);
[ 90s] | ^~~~~
[ 90s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_warp_perspective.cpp:62:29: error: expected primary-expression before ‘>’ token
[ 90s] 62 | x = std::clamp<ptrdiff_t>(x, 0, static_cast<ptrdiff_t>(src.width()) - 1);
[ 90s] | ^
[ 90s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_warp_perspective.cpp:63:14: error: ‘clamp’ is not a member of ‘std’
[ 90s] 63 | y = std::clamp<ptrdiff_t>(y, 0, static_cast<ptrdiff_t>(src.height()) - 1);
[ 90s] | ^~~~~
[ 90s] /home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/test/api/test_warp_perspective.cpp:63:29: error: expected primary-expression before ‘>’ token
[ 90s] 63 | y = std::clamp<ptrdiff_t>(y, 0, static_cast<ptrdiff_t>(src.height()) - 1);
[ 90s] | ^
[ 90s] make[2]: *** [test/api/CMakeFiles/kleidicv-api-test.dir/build.make:614: test/api/CMakeFiles/kleidicv-api-test.dir/test_warp_perspective.cpp.o] Error 1
[ 90s] make[2]: Leaving directory '/home/abuild/rpmbuild/BUILD/kleidicv-0.4.0-build/kleidicv-0.4.0/build'
[ 90s] make[2]: *** Waiting for unfinished jobs....
The following patch should fix them:
--- kleidicv-0.4.0/test/api/test_resize_linear.cpp.orig 2025-05-22 15:23:43.454501000 +0200
+++ kleidicv-0.4.0/test/api/test_resize_linear.cpp 2025-05-22 15:24:05.312018500 +0200
@@ -7,6 +7,7 @@
#include <cfloat>
#include <cstdint>
+#include <iomanip>
#include <random>
#include <type_traits>
--- kleidicv-0.4.0/test/framework/utils.cpp.orig 2025-05-22 15:32:19.098583900 +0200
+++ kleidicv-0.4.0/test/framework/utils.cpp 2025-05-22 15:35:13.122749700 +0200
@@ -9,6 +9,7 @@
#include <algorithm>
#include <cstddef>
#include <cstdlib>
+#include <iomanip>
#include <ios>
#include <iostream>
#include <limits>
--- kleidicv-0.4.0/test/api/test_remap.cpp.orig 2025-05-22 15:38:08.783278200 +0200
+++ kleidicv-0.4.0/test/api/test_remap.cpp 2025-05-22 15:38:29.306568200 +0200
@@ -4,6 +4,7 @@
#include <gtest/gtest.h>
+#include <algorithm>
#include <climits>
#include <cmath>
#include <cstdint>
--- kleidicv-0.4.0/test/api/test_rotate.cpp.orig 2025-05-22 16:29:49.590561300 +0200
+++ kleidicv-0.4.0/test/api/test_rotate.cpp 2025-05-22 16:30:10.406132800 +0200
@@ -4,6 +4,8 @@
#include <gtest/gtest.h>
+#include <algorithm>
+
#include "framework/array.h"
#include "framework/generator.h"
#include "kleidicv/kleidicv.h"
--- kleidicv-0.4.0/test/api/test_warp_perspective.cpp.orig 2025-05-22 16:40:44.488920700 +0200
+++ kleidicv-0.4.0/test/api/test_warp_perspective.cpp 2025-05-22 16:41:01.846403500 +0200
@@ -4,6 +4,7 @@
#include <gtest/gtest.h>
+#include <algorithm>
#include <climits>
#include <cmath>
#include <limits>