Skip to content

Commit 2a95295

Browse files
jbloggzcopybara-github
authored andcommitted
Handle conflicting macros for FreeBSD (#13303)
The `unittest_proto3_bad_macros.proto` test is failing on FreeBSD due to the GID_MAX/UID_MAX macros. This is because `port_def.inc` is missing these entries (as well as TRUE/FALSE) for FreeBSD. This PR adds those missing macros. See compile errors below: ``` [ 87%] Building CXX object CMakeFiles/tests.dir/src/google/protobuf/unittest_preserve_unknown_enum2.pb.cc.o [ 87%] Building CXX object CMakeFiles/tests.dir/src/google/protobuf/unittest_proto3.pb.cc.o [ 87%] Building CXX object CMakeFiles/tests.dir/src/google/protobuf/unittest_proto3_arena.pb.cc.o [ 87%] Building CXX object CMakeFiles/tests.dir/src/google/protobuf/unittest_proto3_arena_lite.pb.cc.o [ 88%] Building CXX object CMakeFiles/tests.dir/src/google/protobuf/unittest_proto3_bad_macros.pb.cc.o In file included from /usr/home/jpb/protobuf/src/google/protobuf/unittest_proto3_bad_macros.pb.cc:4: /usr/home/jpb/protobuf/src/google/protobuf/unittest_proto3_bad_macros.pb.h:71:15: error: expected unqualified-id constexpr GID GID_MAX = static_cast<GID>(0); ^ /usr/include/sys/limits.h:85:18: note: expanded from macro 'GID_MAX' #define GID_MAX UINT_MAX /* max value for a gid_t */ ^ /usr/include/sys/limits.h:59:18: note: expanded from macro 'UINT_MAX' #define UINT_MAX __UINT_MAX /* max value for an unsigned int */ ^ /usr/include/x86/_limits.h:58:20: note: expanded from macro '__UINT_MAX' #define __UINT_MAX 0xffffffff /* max value for an unsigned int */ ^ In file included from /usr/home/jpb/protobuf/src/google/protobuf/unittest_proto3_bad_macros.pb.cc:4: /usr/home/jpb/protobuf/src/google/protobuf/unittest_proto3_bad_macros.pb.h:102:15: error: expected unqualified-id constexpr UID UID_MAX = static_cast<UID>(0); ^ /usr/include/sys/limits.h:86:18: note: expanded from macro 'UID_MAX' #define UID_MAX UINT_MAX /* max value for a uid_t */ ^ /usr/include/sys/limits.h:59:18: note: expanded from macro 'UINT_MAX' #define UINT_MAX __UINT_MAX /* max value for an unsigned int */ ^ /usr/include/x86/_limits.h:58:20: note: expanded from macro '__UINT_MAX' #define __UINT_MAX 0xffffffff /* max value for an unsigned int */ ^ 2 errors generated. gmake[2]: *** [CMakeFiles/tests.dir/build.make:2038: CMakeFiles/tests.dir/src/google/protobuf/unittest_proto3_bad_macros.pb.cc.o] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:1178: CMakeFiles/tests.dir/all] Error 2 gmake: *** [Makefile:146: all] Error 2 ``` Closes #13303 COPYBARA_INTEGRATE_REVIEW=#13303 from jbloggz:freebsd_macro_fix 12d6baf PiperOrigin-RevId: 547820047
1 parent 8a3508a commit 2a95295

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/google/protobuf/port_def.inc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,6 +1020,19 @@ static_assert(PROTOBUF_ABSL_MIN(20230125, 3),
10201020
#undef TYPE_BOOL
10211021
#endif // __APPLE__
10221022

1023+
#ifdef __FreeBSD__
1024+
// Inconvenient macro names from /usr/include/sys/param.h.
1025+
#pragma push_macro("TRUE")
1026+
#undef TRUE
1027+
#pragma push_macro("FALSE")
1028+
#undef FALSE
1029+
// Inconvenient macro names from /usr/include/sys/limits.h.
1030+
#pragma push_macro("UID_MAX")
1031+
#undef UID_MAX
1032+
#pragma push_macro("GID_MAX")
1033+
#undef GID_MAX
1034+
#endif // __FreeBSD__
1035+
10231036
#if defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER)
10241037
// Don't let Objective-C Macros interfere with proto identifiers with the same
10251038
// name.

src/google/protobuf/port_undef.inc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,13 @@
184184
#pragma pop_macro("TYPE_BOOL")
185185
#endif // __APPLE__
186186

187+
#ifdef __FreeBSD__
188+
#pragma pop_macro("TRUE")
189+
#pragma pop_macro("FALSE")
190+
#pragma pop_macro("UID_MAX")
191+
#pragma pop_macro("GID_MAX")
192+
#endif // __FreeBSD__
193+
187194
#if defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER)
188195
#pragma pop_macro("DEBUG")
189196
#endif // defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER)

0 commit comments

Comments
 (0)