On Sun, Sep 07, 2025 at 06:42:17PM +0000, Ka Ho Ng wrote: > The branch main has been updated by khng: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=11ace56fa030185025936c795d5cf7c57b266835 > > commit 11ace56fa030185025936c795d5cf7c57b266835 > Author: ShengYi Hung <aokbl...@freebsd.org> > AuthorDate: 2025-09-07 18:33:01 +0000 > Commit: Ka Ho Ng <k...@freebsd.org> > CommitDate: 2025-09-07 18:33:01 +0000 > > contrib/libxo: fix API header files inclusions in C++ source files > > C++ source files need `extern "C"` to disable C++ name mangling. > > MFC after: 1 week > Reviewed by: aokblast (previous version), phil, imp (previous version) > Differential Revision: https://reviews.freebsd.org/D47930 > --- > contrib/libxo/libxo/xo.h | 8 ++++++++ > contrib/libxo/libxo/xo_encoder.h | 8 ++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/contrib/libxo/libxo/xo.h b/contrib/libxo/libxo/xo.h > index 6a61a16c7cae..7f37b469b54e 100644 > --- a/contrib/libxo/libxo/xo.h > +++ b/contrib/libxo/libxo/xo.h > @@ -27,6 +27,10 @@ > #include <stdlib.h> > #include <errno.h> > > +#ifdef __cplusplus > +extern "C" { > +#endif /* __cplusplus */ > + > #ifdef __dead2 > #define NORETURN __dead2 > #else > @@ -699,4 +703,8 @@ xo_retain_clear_all (void); > void > xo_retain_clear (const char *fmt); > > +#ifdef __cplusplus > +} > +#endif /* __cplusplus */ > + > #endif /* INCLUDE_XO_H */ > diff --git a/contrib/libxo/libxo/xo_encoder.h > b/contrib/libxo/libxo/xo_encoder.h > index 099248ae13a6..bb57194ab030 100644 > --- a/contrib/libxo/libxo/xo_encoder.h > +++ b/contrib/libxo/libxo/xo_encoder.h > @@ -20,6 +20,10 @@ > > #include <string.h> > > +#ifdef __cplusplus > +extern "C" { > +#endif /* __cplusplus */ > + > /* > * Expose libxo's memory allocation functions > */ > @@ -167,4 +171,8 @@ xo_encoder_op_name (xo_encoder_op_t op); > void > xo_failure (xo_handle_t *xop, const char *fmt, ...); > > +#ifdef __cplusplus > +} > +#endif /* __cplusplus */ > + > #endif /* XO_ENCODER_H */
Would it be better to use __BEGIN_DECLS? I am not completely sure due to contrib/, but libxo is FreeBSD-specific enough already.