You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by be...@apache.org on 2013/10/11 15:20:23 UTC

git commit: THRIFT-2045: C++ compiler warning and build cleanup (again) Client: cpp Patch: Ben Craig

Updated Branches:
  refs/heads/master 49a7663c7 -> e95767564


THRIFT-2045: C++ compiler warning and build cleanup (again)
Client: cpp
Patch: Ben Craig


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/e9576756
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/e9576756
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/e9576756

Branch: refs/heads/master
Commit: e957675647d3d7caafe842aa85cbd987e91b21f9
Parents: 49a7663
Author: Ben Craig <be...@apache.org>
Authored: Fri Oct 11 08:19:16 2013 -0500
Committer: Ben Craig <be...@apache.org>
Committed: Fri Oct 11 08:19:16 2013 -0500

----------------------------------------------------------------------
 compiler/cpp/src/generate/t_cpp_generator.cc |  8 ++++++--
 compiler/cpp/src/generate/t_py_generator.cc  |  2 +-
 compiler/cpp/src/main.cc                     | 21 +++++++++++----------
 compiler/cpp/src/parse/t_field.h             |  2 +-
 compiler/cpp/src/platform.h                  | 14 ++++++++++++--
 compiler/cpp/src/thriftl.ll                  | 12 ++++++++++++
 compiler/cpp/src/thrifty.yy                  | 20 ++++++++++++++------
 compiler/cpp/src/windows/config.h            |  4 ++++
 compiler/cpp/src/windows/version.h.in        |  9 ---------
 contrib/mingw-cross-compile.sh               |  3 +--
 10 files changed, 62 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/generate/t_cpp_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc
index 1faa2c3..333fe60 100644
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/generate/t_cpp_generator.cc
@@ -3341,7 +3341,11 @@ void t_cpp_generator::generate_process_function(t_service* tservice,
       }
     }
 
-    out << " catch (const std::exception& e) {" << endl;
+    if (!tfunction->is_oneway()) {
+       out << " catch (const std::exception& e) {" << endl;
+    } else {
+       out << " catch (const std::exception&) {" << endl;
+    }
 
     indent_up();
     out <<
@@ -3471,7 +3475,7 @@ void t_cpp_generator::generate_process_function(t_service* tservice,
 
     // TODO(dreiss): Handle TExceptions?  Expose to server?
     out <<
-      indent() << "catch (const std::exception& exn) {" << endl <<
+      indent() << "catch (const std::exception&) {" << endl <<
       indent() << "  if (this->eventHandler_.get() != NULL) {" << endl <<
       indent() << "    this->eventHandler_->handlerError(ctx, " <<
         service_func_name << ");" << endl <<

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/generate/t_py_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/generate/t_py_generator.cc
index e215195..b910cf6 100644
--- a/compiler/cpp/src/generate/t_py_generator.cc
+++ b/compiler/cpp/src/generate/t_py_generator.cc
@@ -1697,7 +1697,7 @@ void t_py_generator::generate_service_remote(t_service* tservice) {
           S_IRUSR
         | S_IWUSR
         | S_IXUSR
-#ifndef MINGW
+#ifndef _WIN32
         | S_IRGRP
         | S_IXGRP
         | S_IROTH

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/main.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/main.cc b/compiler/cpp/src/main.cc
index b9f7513..4ce22b4 100755
--- a/compiler/cpp/src/main.cc
+++ b/compiler/cpp/src/main.cc
@@ -39,13 +39,14 @@
 #include <errno.h>
 #include <limits.h>
 
-#ifdef MINGW
+#ifdef _WIN32
 # include <windows.h> /* for GetFullPathName */
 #endif
 
 // Careful: must include globals first for extern definitions
 #include "globals.h"
 
+#include "platform.h"
 #include "main.h"
 #include "parse/t_program.h"
 #include "parse/t_scope.h"
@@ -161,11 +162,11 @@ int g_allow_64bit_consts = 0;
 bool gen_recurse = false;
 
 /**
- * MinGW doesn't have realpath, so use fallback implementation in that case,
+ * Win32 doesn't have realpath, so use fallback implementation in that case,
  * otherwise this just calls through to realpath
  */
 char *saferealpath(const char *path, char *resolved_path) {
-#ifdef MINGW
+#ifdef _WIN32
   char buf[MAX_PATH];
   char* basename;
   DWORD len = GetFullPathName(path, MAX_PATH, buf, &basename);
@@ -190,7 +191,7 @@ char *saferealpath(const char *path, char *resolved_path) {
 }
 
 bool check_is_directory(const char *dir_name) {
-#ifdef MINGW
+#ifdef _WIN32
   DWORD attributes = ::GetFileAttributesA(dir_name);
   if(attributes == INVALID_FILE_ATTRIBUTES) {
     fprintf(stderr, "Output directory %s is unusable: GetLastError() = %ld\n", dir_name, GetLastError());
@@ -336,7 +337,7 @@ string include_file(string filename) {
   // Absolute path? Just try that
   if (filename[0] == '/') {
     // Realpath!
-    char rp[PATH_MAX];
+    char rp[THRIFT_PATH_MAX];
     if (saferealpath(filename.c_str(), rp) == NULL) {
       pwarning(0, "Cannot open include file %s\n", filename.c_str());
       return std::string();
@@ -358,7 +359,7 @@ string include_file(string filename) {
       string sfilename = *(it) + "/" + filename;
 
       // Realpath!
-      char rp[PATH_MAX];
+      char rp[THRIFT_PATH_MAX];
       if (saferealpath(sfilename.c_str(), rp) == NULL) {
         continue;
       }
@@ -757,8 +758,8 @@ void validate_const_rec(std::string name, t_type* type, t_const_value* value) {
       }
     }
     if (!found) {
-      throw "type error: const " + name + " was declared as type " 
-        + type->get_name() + " which is an enum, but " 
+      throw "type error: const " + name + " was declared as type "
+        + type->get_name() + " which is an enum, but "
         + value->get_identifier() + " is not a valid value for that enum";
     }
   } else if (type->is_struct() || type->is_xception()) {
@@ -1066,7 +1067,7 @@ int main(int argc, char** argv) {
         }
         out_path = arg;
 
-#ifdef MINGW
+#ifdef _WIN32
         //strip out trailing \ on Windows
         int last = out_path.length()-1;
         if (out_path[last] == '\\')
@@ -1104,7 +1105,7 @@ int main(int argc, char** argv) {
   }
 
   // Real-pathify it
-  char rp[PATH_MAX];
+  char rp[THRIFT_PATH_MAX];
   if (argv[i] == NULL) {
     fprintf(stderr, "Missing file name\n");
     usage();

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/parse/t_field.h
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/parse/t_field.h b/compiler/cpp/src/parse/t_field.h
index ac10d57..7bbcc0f 100644
--- a/compiler/cpp/src/parse/t_field.h
+++ b/compiler/cpp/src/parse/t_field.h
@@ -155,7 +155,7 @@ class t_field : public t_doc {
  * not it was specified by the user or automatically chosen.
  */
 struct t_field_id {
-  int64_t value;
+  int32_t value;
   bool auto_assigned;
 };
 

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/platform.h
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/platform.h b/compiler/cpp/src/platform.h
index 04f04c7..8cbe9db 100644
--- a/compiler/cpp/src/platform.h
+++ b/compiler/cpp/src/platform.h
@@ -22,7 +22,11 @@
  * is different for the non-POSIX MinGW
  */
 
-#ifdef MINGW
+#ifdef _MSC_VER
+#include "windows/config.h"
+#endif
+
+#ifdef _WIN32
 #include <direct.h>
 #include <io.h>
 #else
@@ -30,8 +34,14 @@
 #include <sys/stat.h>
 #endif
 
-#if defined MINGW
+#ifdef _WIN32
 #define MKDIR(x) mkdir(x)
 #else
 #define MKDIR(x) mkdir(x, S_IRWXU | S_IRWXG | S_IRWXO)
 #endif
+
+#ifdef PATH_MAX
+#define THRIFT_PATH_MAX PATH_MAX
+#else
+#define THRIFT_PATH_MAX MAX_PATH
+#endif

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/thriftl.ll
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/thriftl.ll b/compiler/cpp/src/thriftl.ll
index 96d61ec..a1faa6b 100644
--- a/compiler/cpp/src/thriftl.ll
+++ b/compiler/cpp/src/thriftl.ll
@@ -33,14 +33,26 @@
  * We should revert the Makefile.am changes once Apple ships a reasonable
  * GCC.
  */
+#ifdef __GNUC__
 #pragma GCC diagnostic ignored "-Wunused-function"
 #pragma GCC diagnostic ignored "-Wunused-label"
+#endif
+
+#ifdef _MSC_VER
+//warning C4102: 'find_rule' : unreferenced label
+#pragma warning(disable:4102)
+//avoid isatty redefinition
+#define YY_NEVER_INTERACTIVE 1
+#endif
 
 #include <cassert>
 #include <string>
 #include <errno.h>
 #include <stdlib.h>
 
+#ifdef _MSC_VER
+#include "windows/config.h"
+#endif
 #include "main.h"
 #include "globals.h"
 #include "parse/t_program.h"

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/thrifty.yy
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrifty.yy
index f5ab4a6..b543552 100644
--- a/compiler/cpp/src/thrifty.yy
+++ b/compiler/cpp/src/thrifty.yy
@@ -34,11 +34,19 @@
 #include <stdint.h>
 #endif
 #include <limits.h>
+#ifdef _MSC_VER
+#include "windows/config.h"
+#endif
 #include "main.h"
 #include "globals.h"
 #include "parse/t_program.h"
 #include "parse/t_scope.h"
 
+#ifdef _MSC_VER
+//warning C4065: switch statement contains 'default' but no 'case' labels
+#pragma warning(disable:4065)
+#endif
+
 /**
  * This global variable is used for automatic numbering of field indices etc.
  * when parsing the members of a struct. Field values are automatically
@@ -584,7 +592,7 @@ EnumDef:
         pwarning(1, "64-bit value supplied for enum %s.\n", $2);
       }
       validate_simple_identifier( $2);
-      $$ = new t_enum_value($2, $4);
+      $$ = new t_enum_value($2, static_cast<int>($4));
       if ($1 != NULL) {
         $$->set_doc($1);
       }
@@ -764,7 +772,7 @@ Struct:
         delete $7;
       }
     }
-    
+
 XsdAll:
   tok_xsd_all
     {
@@ -986,17 +994,17 @@ FieldIdentifier:
            * Leave $1 as-is, and update y_field_val to be one less than $1.
            * The FieldList parsing will catch any duplicate key values.
            */
-          y_field_val = $1 - 1;
-          $$.value = $1;
+          y_field_val = static_cast<int32_t>($1 - 1);
+          $$.value = static_cast<int32_t>($1);
           $$.auto_assigned = false;
         } else {
-          pwarning(1, "Nonpositive value (%"PRIi64") not allowed as a field key.\n",
+          pwarning(1, "Nonpositive value (%d) not allowed as a field key.\n",
                    $1);
           $$.value = y_field_val--;
           $$.auto_assigned = true;
         }
       } else {
-        $$.value = $1;
+        $$.value = static_cast<int32_t>($1);
         $$.auto_assigned = false;
       }
     }

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/windows/config.h
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/windows/config.h b/compiler/cpp/src/windows/config.h
index 9d75e80..356f4e5 100644
--- a/compiler/cpp/src/windows/config.h
+++ b/compiler/cpp/src/windows/config.h
@@ -37,6 +37,10 @@
 #define PRIu64 "I64d"
 #define PRIi64 "I64d"
 
+// squelch deprecation warnings
 #pragma warning(disable:4996)
+// squelch bool conversion performance warning
+#pragma warning(disable:4800)
+
 
 #endif // _THRIFT_WINDOWS_CONFIG_H_

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/compiler/cpp/src/windows/version.h.in
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/windows/version.h.in b/compiler/cpp/src/windows/version.h.in
index 94b7c56..33708ba 100644
--- a/compiler/cpp/src/windows/version.h.in
+++ b/compiler/cpp/src/windows/version.h.in
@@ -28,15 +28,6 @@
 #error "This is a Windows header only"
 #endif
 
-#define PATH_MAX MAX_PATH
 #define THRIFT_VERSION "@PACKAGE_VERSION@"
 
-#ifndef S_ISDIR
-#define S_ISDIR(mode)  (((mode) & S_IFMT) == S_IFDIR)
-#endif
-
-#ifndef S_ISREG
-#define S_ISREG(mode)  (((mode) & S_IFMT) == S_IFREG)
-#endif
-
 #endif // _THRIFT_WINDOWS_VERSION_H_

http://git-wip-us.apache.org/repos/asf/thrift/blob/e9576756/contrib/mingw-cross-compile.sh
----------------------------------------------------------------------
diff --git a/contrib/mingw-cross-compile.sh b/contrib/mingw-cross-compile.sh
index 894ae5f..3839ce0 100755
--- a/contrib/mingw-cross-compile.sh
+++ b/contrib/mingw-cross-compile.sh
@@ -15,8 +15,7 @@ set -e
   --without-go \
   --without-d \
   --build=i686-pc-linux-gnu \
-  --host=i586-mingw32msvc \
-  CPPFLAGS='-DMINGW'
+  --host=i586-mingw32msvc
 
 make