diff --git a/extension/kernel_util/make_boxed_from_unboxed_functor.h b/extension/kernel_util/make_boxed_from_unboxed_functor.h index 409c981cbb1..5d9645f0930 100644 --- a/extension/kernel_util/make_boxed_from_unboxed_functor.h +++ b/extension/kernel_util/make_boxed_from_unboxed_functor.h @@ -173,10 +173,19 @@ static executorch::runtime::Kernel make_boxed_kernel( } // namespace extension } // namespace executorch -#define EXECUTORCH_LIBRARY(ns, op_name, func) \ - static auto res_##ns = ::executorch::runtime::register_kernel( \ - ::executorch::extension::make_boxed_kernel( \ - #ns "::" op_name, EXECUTORCH_FN(func))) +// Inspired from C10_CONCATENATE +#define ET_CONCATENATE_IMPL(s1, s2) s1##s2 +#define ET_CONCATENATE(s1, s2) ET_CONCATENATE_IMPL(s1, s2) +#define ET_UID __LINE__ + +#define EXECUTORCH_LIBRARY(ns, op_name, func) \ + _EXECUTORCH_LIBRARY_IMPL(ns, op_name, func, ET_UID) + +#define _EXECUTORCH_LIBRARY_IMPL(ns, op_name, func, uid) \ + static auto ET_CONCATENATE(res_##ns##_, uid) = \ + ::executorch::runtime::register_kernel( \ + ::executorch::extension::make_boxed_kernel( \ + #ns "::" op_name, EXECUTORCH_FN(func))) namespace torch { namespace executor {