From 82de38c80984e08fc61e7948bc6d766baa746601 Mon Sep 17 00:00:00 2001 From: enm10k Date: Fri, 19 Jan 2024 18:29:48 +0900 Subject: [PATCH] =?UTF-8?q?include/sora/fix=5Fcuda=5Fnoinline=5Fmacro=5Fer?= =?UTF-8?q?ror.h=20=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/sora/fix_cuda_noinline_macro_error.h | 22 +++++++++++++++++++ .../sora/hwenc_nvcodec/nvcodec_decoder_cuda.h | 5 +++-- .../NvCodec/NvCodec/NvDecoder/NvDecoder.cpp | 5 +++-- .../NvCodec/NvCodec/NvDecoder/NvDecoder.h | 7 +++--- .../NvCodec/NvCodec/NvEncoder/NvEncoder.h | 5 +++-- .../NvCodec/NvCodec/NvEncoder/NvEncoderCuda.h | 5 +++-- 6 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 include/sora/fix_cuda_noinline_macro_error.h diff --git a/include/sora/fix_cuda_noinline_macro_error.h b/include/sora/fix_cuda_noinline_macro_error.h new file mode 100644 index 00000000..721747e9 --- /dev/null +++ b/include/sora/fix_cuda_noinline_macro_error.h @@ -0,0 +1,22 @@ +/* +## 背景 + +WebRTC を M121 に更新した際に以下のビルド・エラーが発生した + +``` +error: use of undeclared identifier 'noinline'; did you mean 'inline' +``` + +WebRTC に含まれる libcxx のバージョンが更新されたことが原因だと思われる + +## 対応 + +同様の問題を解消したと思われる LLVM の [PR](https://github.com/llvm/llvm-project-release-prs/pull/698) を調査したところ、 PR で追加されたファイルは存在するにも関わらず、問題が継続して発生していることがわかった +(libcxx に bits/basic_string.h が含まれておらず、 cuda_wrappers 以下のファイルがインクルードされていないようだった) + +上記 PR を参考に、ファイルを直接修正したところエラーが解消したため、このヘッダー・ファイルをエラーが発生する箇所でインクルードすることにした +オリジナルのパッチには push_macro や pop_macro が含まれているが、省いても問題が無かったため省略している + +*/ + +#undef __noinline__ \ No newline at end of file diff --git a/include/sora/hwenc_nvcodec/nvcodec_decoder_cuda.h b/include/sora/hwenc_nvcodec/nvcodec_decoder_cuda.h index fe2e255e..b2711a3c 100644 --- a/include/sora/hwenc_nvcodec/nvcodec_decoder_cuda.h +++ b/include/sora/hwenc_nvcodec/nvcodec_decoder_cuda.h @@ -3,9 +3,10 @@ #include -// https://github.com/llvm/llvm-project-release-prs/pull/698/files -#undef __noinline__ +// clang-format off +#include "sora/fix_cuda_noinline_macro_error.h" #include +// clang-format on #include "sora/cuda_context.h" diff --git a/third_party/NvCodec/NvCodec/NvDecoder/NvDecoder.cpp b/third_party/NvCodec/NvCodec/NvDecoder/NvDecoder.cpp index 59e3c3d7..668190ac 100644 --- a/third_party/NvCodec/NvCodec/NvDecoder/NvDecoder.cpp +++ b/third_party/NvCodec/NvCodec/NvDecoder/NvDecoder.cpp @@ -13,9 +13,10 @@ #include #include -// https://github.com/llvm/llvm-project-release-prs/pull/698/files -#undef __noinline__ +// clang-format off +#include "sora/fix_cuda_noinline_macro_error.h" #include +// clang-format on #include "NvDecoder/NvDecoder.h" #include "sora/dyn/cuda.h" diff --git a/third_party/NvCodec/NvCodec/NvDecoder/NvDecoder.h b/third_party/NvCodec/NvCodec/NvDecoder/NvDecoder.h index 8dfe100b..be30fe33 100644 --- a/third_party/NvCodec/NvCodec/NvDecoder/NvDecoder.h +++ b/third_party/NvCodec/NvCodec/NvDecoder/NvDecoder.h @@ -15,9 +15,10 @@ #include #include -// https://github.com/llvm/llvm-project-release-prs/pull/698/files -#undef __noinline__ -#include +// clang-format off +#include "sora/fix_cuda_noinline_macro_error.h" +#include +// clang-format on #include #include diff --git a/third_party/NvCodec/NvCodec/NvEncoder/NvEncoder.h b/third_party/NvCodec/NvCodec/NvEncoder/NvEncoder.h index 7d59627a..fc55a3ca 100644 --- a/third_party/NvCodec/NvCodec/NvEncoder/NvEncoder.h +++ b/third_party/NvCodec/NvCodec/NvEncoder/NvEncoder.h @@ -14,9 +14,10 @@ #include #include -// https://github.com/llvm/llvm-project-release-prs/pull/698/files -#undef __noinline__ +// clang-format off +#include "sora/fix_cuda_noinline_macro_error.h" #include +// clang-format on #include #include diff --git a/third_party/NvCodec/NvCodec/NvEncoder/NvEncoderCuda.h b/third_party/NvCodec/NvCodec/NvEncoder/NvEncoderCuda.h index 6e57361d..80a0ed4a 100644 --- a/third_party/NvCodec/NvCodec/NvEncoder/NvEncoderCuda.h +++ b/third_party/NvCodec/NvCodec/NvEncoder/NvEncoderCuda.h @@ -14,9 +14,10 @@ #include #include -// https://github.com/llvm/llvm-project-release-prs/pull/698/files -#undef __noinline__ +// clang-format off +#include "sora/fix_cuda_noinline_macro_error.h" #include +// clang-format on #include #include "NvEncoder.h"