From 66576b33e0a30e6a74ed4bec2e7176e3f9720a3e Mon Sep 17 00:00:00 2001 From: Larry Gritz Date: Sat, 27 Apr 2024 11:40:41 -0700 Subject: [PATCH] build: Disable clang18 warnings about deprecated unicode conversion (#4246) clang/llvm 18 (and probably other compilers soon) has made noisy warnings about the C++17-deprecated unicode conversions. Actually replacing them enirely with something else is rather hairy, we will tackle that later. In the mean time, this patch seems to be the minimal change to disable the warnings that should be totally easy to backport. These seem to be the only changes necessary to make a clean build with clang 18. Signed-off-by: Larry Gritz --- INSTALL.md | 2 +- src/include/OpenImageIO/detail/fmt.h | 4 ++++ src/libutil/strutil.cpp | 14 +++++++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 80ef613a44..307039606c 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -18,7 +18,7 @@ NEW or CHANGED MINIMUM dependencies since the last major release are **bold**. * The default build mode is C++14. This can be controlled by via the CMake configuration flag: `-DCMAKE_CXX_STANDARD=17`, etc. * ADVISORY: We expect that OIIO 2.6 in 2024 will require C++17 or higher. - * Compilers: gcc 6.1 - 13.1, clang 3.4 - 17, MSVS 2017 - 2019, + * Compilers: gcc 6.1 - 13.1, clang 3.4 - 18, MSVS 2017 - 2019, Intel icc 17+, Intel OneAPI C++ compiler 2022+. * **CMake >= 3.15** (tested through 3.28) * **OpenEXR/Imath >= 2.4** (recommended: 3.1 or higher; tested through 3.2 diff --git a/src/include/OpenImageIO/detail/fmt.h b/src/include/OpenImageIO/detail/fmt.h index 4d9456ebdb..74e6fae78c 100644 --- a/src/include/OpenImageIO/detail/fmt.h +++ b/src/include/OpenImageIO/detail/fmt.h @@ -48,6 +48,7 @@ # define FMT_USE_FLOAT128 0 #endif +// Suppress certain warnings generated in the fmt headers themselves OIIO_PRAGMA_WARNING_PUSH #if OIIO_GNUC_VERSION >= 70000 # pragma GCC diagnostic ignored "-Wmaybe-uninitialized" @@ -58,6 +59,9 @@ OIIO_PRAGMA_WARNING_PUSH #if OIIO_INTEL_LLVM_COMPILER # pragma GCC diagnostic ignored "-Wtautological-constant-compare" #endif +#if OIIO_CLANG_VERSION >= 180000 +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif #include #include diff --git a/src/libutil/strutil.cpp b/src/libutil/strutil.cpp index dc3edf9df1..1f8d594214 100644 --- a/src/libutil/strutil.cpp +++ b/src/libutil/strutil.cpp @@ -3,15 +3,24 @@ // https://github.com/AcademySoftwareFoundation/OpenImageIO -#include +#include + +// Special dance to disable warnings in the included files related to +// the deprecation of unicode conversion functions. +OIIO_PRAGMA_WARNING_PUSH +OIIO_CLANG_PRAGMA(clang diagnostic ignored "-Wdeprecated-declarations") #include +#include +OIIO_PRAGMA_WARNING_POP + +#include +#include #include #include #include #include #include #include -#include #include #include #include @@ -25,7 +34,6 @@ #include #include -#include #include #include #include