|
@@ -53,6 +53,10 @@
|
|
#include <google/protobuf/stubs/shared_ptr.h>
|
|
#include <google/protobuf/stubs/shared_ptr.h>
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#ifdef __APPLE__
|
|
|
|
+#include <mach-o/dyld.h>
|
|
|
|
+#endif
|
|
|
|
+
|
|
#include <google/protobuf/stubs/common.h>
|
|
#include <google/protobuf/stubs/common.h>
|
|
#include <google/protobuf/stubs/stringprintf.h>
|
|
#include <google/protobuf/stubs/stringprintf.h>
|
|
#include <google/protobuf/compiler/importer.h>
|
|
#include <google/protobuf/compiler/importer.h>
|
|
@@ -186,6 +190,16 @@ bool GetProtocAbsolutePath(string* path) {
|
|
#ifdef _WIN32
|
|
#ifdef _WIN32
|
|
char buffer[MAX_PATH];
|
|
char buffer[MAX_PATH];
|
|
int len = GetModuleFileName(NULL, 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
|
|
#else
|
|
char buffer[PATH_MAX];
|
|
char buffer[PATH_MAX];
|
|
int len = readlink("/proc/self/exe", buffer, PATH_MAX);
|
|
int len = readlink("/proc/self/exe", buffer, PATH_MAX);
|