aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/compiler/command_line_interface.cc
diff options
context:
space:
mode:
authorGravatar Dan Barry <dan@bakineggs.com>2015-06-02 17:00:40 -0700
committerGravatar Dan Barry <dan@bakineggs.com>2015-06-02 17:11:35 -0700
commit0af3ed5189182985573dbea30e173aca0f9a1685 (patch)
tree70c2dd0b0217df1542c41c7f285f078bed36aeba /src/google/protobuf/compiler/command_line_interface.cc
parent4644f99d1af4250dec95339be6a13e149787ab33 (diff)
Add protoc path detection for Mac OS
Diffstat (limited to 'src/google/protobuf/compiler/command_line_interface.cc')
-rw-r--r--src/google/protobuf/compiler/command_line_interface.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/google/protobuf/compiler/command_line_interface.cc b/src/google/protobuf/compiler/command_line_interface.cc
index 667b2b63..c57cfd3d 100644
--- a/src/google/protobuf/compiler/command_line_interface.cc
+++ b/src/google/protobuf/compiler/command_line_interface.cc
@@ -53,6 +53,10 @@
#include <google/protobuf/stubs/shared_ptr.h>
#endif
+#ifdef __APPLE__
+#include <mach-o/dyld.h>
+#endif
+
#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/stringprintf.h>
#include <google/protobuf/compiler/importer.h>
@@ -186,6 +190,16 @@ bool GetProtocAbsolutePath(string* path) {
#ifdef _WIN32
char buffer[MAX_PATH];
int len = GetModuleFileName(NULL, buffer, MAX_PATH);
+#elif __APPLE__
+ char buffer[PATH_MAX];
+ int len = 0;
+
+ char dirtybuffer[PATH_MAX];
+ uint32_t size = sizeof(dirtybuffer);
+ if (_NSGetExecutablePath(dirtybuffer, &size) == 0) {
+ realpath(dirtybuffer, buffer);
+ len = strlen(buffer);
+ }
#else
char buffer[PATH_MAX];
int len = readlink("/proc/self/exe", buffer, PATH_MAX);