From 8f80fecc445cb733615ad0186358d4e3789ab377 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Tue, 29 Jul 2014 10:29:38 -0700 Subject: [PATCH] Made FlatBuffers compile correctly with -pedantic Change-Id: I88b5993219e10e2dfb60ff98d6594d19871988fc Tested: on Linux --- CMakeLists.txt | 9 ++++++--- include/flatbuffers/flatbuffers.h | 8 ++++---- include/flatbuffers/idl.h | 5 ++++- samples/monster_generated.h | 4 ++-- src/idl_parser.cpp | 3 +++ 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index be7bddd..de525e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,14 +52,17 @@ set(CMAKE_BUILD_TYPE Debug) # source_group(Tests FILES ${FlatBuffers_Tests_SRCS}) if(APPLE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++ -Wall") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++") elseif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wall") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") endif() +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror") + if(FLATBUFFERS_CODE_COVERAGE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fprofile-arcs -ftest-coverage") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage") + set(CMAKE_EXE_LINKER_FLAGS + "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage") endif() include_directories(include) diff --git a/include/flatbuffers/flatbuffers.h b/include/flatbuffers/flatbuffers.h index 690db2b..b8a05a9 100644 --- a/include/flatbuffers/flatbuffers.h +++ b/include/flatbuffers/flatbuffers.h @@ -863,14 +863,14 @@ inline int LookupEnum(const char **names, const char *name) { struct __declspec(align(alignment)) #define STRUCT_END(name, size) \ __pragma(pack()); \ - static_assert(sizeof(name) == size, "compiler breaks packing rules"); + static_assert(sizeof(name) == size, "compiler breaks packing rules") #elif defined(__GNUC__) || defined(__clang__) #define MANUALLY_ALIGNED_STRUCT(alignment) \ - _Pragma("pack(1)"); \ + _Pragma("pack(1)") \ struct __attribute__((aligned(alignment))) #define STRUCT_END(name, size) \ - _Pragma("pack()"); \ - static_assert(sizeof(name) == size, "compiler breaks packing rules"); + _Pragma("pack()") \ + static_assert(sizeof(name) == size, "compiler breaks packing rules") #else #error Unknown compiler, please define structure alignment macros #endif diff --git a/include/flatbuffers/idl.h b/include/flatbuffers/idl.h index 63f49fc..ac07d8c 100644 --- a/include/flatbuffers/idl.h +++ b/include/flatbuffers/idl.h @@ -67,7 +67,10 @@ switch (type) { FLATBUFFERS_GEN_TYPES_SCALAR(TD) \ FLATBUFFERS_GEN_TYPES_POINTER(TD) -// Create an enum for all the types above +// Create an enum for all the types above. +#ifdef __GNUC__ +__extension__ // Stop GCC complaining about trailing comma with -Wpendantic. +#endif enum BaseType { #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE) BASE_TYPE_ ## ENUM, FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD) diff --git a/samples/monster_generated.h b/samples/monster_generated.h index ebf7e62..ed4e583 100755 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -11,7 +11,7 @@ namespace Sample { enum { Color_Red = 0, Color_Green = 1, - Color_Blue = 2, + Color_Blue = 2 }; inline const char **EnumNamesColor() { @@ -23,7 +23,7 @@ inline const char *EnumNameColor(int e) { return EnumNamesColor()[e]; } enum { Any_NONE = 0, - Any_Monster = 1, + Any_Monster = 1 }; inline const char **EnumNamesAny() { diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index e0b767f..1d9018e 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -82,6 +82,9 @@ template<> inline Offset atot>(const char *s) { TD(Union, 264, "union") \ TD(NameSpace, 265, "namespace") \ TD(RootType, 266, "root_type") +#ifdef __GNUC__ +__extension__ // Stop GCC complaining about trailing comma with -Wpendantic. +#endif enum { #define FLATBUFFERS_TOKEN(NAME, VALUE, STRING) kToken ## NAME = VALUE, FLATBUFFERS_GEN_TOKENS(FLATBUFFERS_TOKEN) -- 2.7.4