Browse Source

add old compiler flags

Julius Pfrommer 10 years ago
parent
commit
f9bfd6f5f3
2 changed files with 33 additions and 31 deletions
  1. 2 2
      CMakeLists.txt
  2. 31 29
      tools/generate_datatypes.py

+ 2 - 2
CMakeLists.txt

@@ -16,9 +16,9 @@ endif()
 
 # compiler flags
 if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
-add_definitions(-std=c99 -pipe -Wall -Wextra -Werror -Wformat
+add_definitions(-std=c99 -pedantic -pipe -Wall -Wextra -Werror -Wformat
                 -Wno-unused-parameter -Wno-unused-function -Wno-unused-label -Wpointer-arith -Wreturn-type -Wsign-compare -Wmultichar
-                -Wshadow -Wcast-qual -Wmissing-prototypes -Wstrict-prototypes # -Wconversion
+                -Wshadow -Wcast-align -Wcast-qual -Wmissing-prototypes -Wstrict-prototypes # -Wconversion
                 -Winit-self -Wuninitialized -Wno-deprecated -Wformat-security -ffunction-sections -fdata-sections)
     if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
         add_definitions(-Wformat-nonliteral)

+ 31 - 29
tools/generate_datatypes.py

@@ -208,36 +208,38 @@ class StructType(object):
                  ", .zeroCopyable = " + ("sizeof(" + self.name + ") == " + str(self.mem_size()) if self.zero_copy() \
                                          else "UA_FALSE") + \
                  ", .typeIndex = " + outname.upper() + "_" + self.name[3:].upper() + \
-                 ", .membersSize = " + str(len(self.members)) + "," + \
-                 "\n\t.members={"
-        for index, member in enumerate(self.members.values()):
-            layout += "\n\t{" + \
-                      ".memberTypeIndex = " + ("UA_TYPES_" + member.memberType.name[3:].upper() if args.namespace_id == 0 or member.memberType.name in existing_types else \
-                                               outname.upper() + "_" + member.memberType.name[3:].upper()) + ", " + \
-                      ".namespaceZero = "+ \
-                      ("UA_TRUE, " if args.namespace_id == 0 or member.memberType.name in existing_types else "UA_FALSE, ") + \
-                      ".padding = "
-
-            before_endpos = "0"
-            thispos = "offsetof(%s, %s)" % (self.name, member.name)
-            if index > 0:
-                before = self.members.values()[index-1]
-                before_endpos = "(offsetof(%s, %s)" % (self.name, before.name)
-                if before.isArray:
-                    before_endpos += " + sizeof(void*))"
-                else:
-                    before_endpos += " + sizeof(%s))" % before.memberType.name
+                 ", .membersSize = " + str(len(self.members)) + ","
+        if len(self.members) > 0:
+            layout += "\n\t.members={"
+            for index, member in enumerate(self.members.values()):
+                layout += "\n\t{" + \
+                          ".memberTypeIndex = " + ("UA_TYPES_" + member.memberType.name[3:].upper() if args.namespace_id == 0 or member.memberType.name in existing_types else \
+                                                   outname.upper() + "_" + member.memberType.name[3:].upper()) + ", " + \
+                          ".namespaceZero = "+ \
+                          ("UA_TRUE, " if args.namespace_id == 0 or member.memberType.name in existing_types else "UA_FALSE, ") + \
+                          ".padding = "
+
+                before_endpos = "0"
+                thispos = "offsetof(%s, %s)" % (self.name, member.name)
+                if index > 0:
+                    before = self.members.values()[index-1]
+                    before_endpos = "(offsetof(%s, %s)" % (self.name, before.name)
+                    if before.isArray:
+                        before_endpos += " + sizeof(void*))"
+                    else:
+                        before_endpos += " + sizeof(%s))" % before.memberType.name
             
-            if member.isArray:
-                # the first two bytes are padding for the length index, the last three for the pointer
-                length_pos = "offsetof(%s, %sSize)" % (self.name, member.name)
-                if index != 0:
-                    layout += "((%s - %s) << 3) + " % (length_pos, before_endpos)
-                layout += "(%s - sizeof(UA_Int32) - %s)" % (thispos, length_pos)
-            else:
-                layout += "%s - %s" % (thispos, before_endpos)
-            layout += ", .isArray = " + ("UA_TRUE" if member.isArray else "UA_FALSE") + " }, "
-        return layout + "}}"
+                if member.isArray:
+                    # the first two bytes are padding for the length index, the last three for the pointer
+                    length_pos = "offsetof(%s, %sSize)" % (self.name, member.name)
+                    if index != 0:
+                        layout += "((%s - %s) << 3) + " % (length_pos, before_endpos)
+                    layout += "(%s - sizeof(UA_Int32) - %s)" % (thispos, length_pos)
+                else:
+                    layout += "%s - %s" % (thispos, before_endpos)
+                layout += ", .isArray = " + ("UA_TRUE" if member.isArray else "UA_FALSE") + " }, "
+            layout += "}"
+        return layout + "}"
 
     def functions_c(self, typeTableName):
         return '''#define %s_new() UA_new(%s)