summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sandbox/mac/BUILD.gn9
-rw-r--r--sandbox/mac/sandbox_mac.gypi80
-rw-r--r--sandbox/mac/xpc.cc5
-rw-r--r--sandbox/mac/xpc.h7
4 files changed, 61 insertions, 40 deletions
diff --git a/sandbox/mac/BUILD.gn b/sandbox/mac/BUILD.gn
index b0a2989..8a8533c 100644
--- a/sandbox/mac/BUILD.gn
+++ b/sandbox/mac/BUILD.gn
@@ -28,8 +28,15 @@ component("sandbox") {
deps = [
"//base",
- ":generate_stubs",
]
+
+ # When the build SDK is 10.6, generate a dynamic stub loader. When the
+ # SDK is higher, then libxpc.dylib will be loaded automatically as part
+ # of libSystem, and only forward declarations of private symbols are
+ # necessary.
+ if (mac_sdk_version == "10.6") {
+ deps += [ ":generate_stubs" ]
+ }
}
generate_stubs_script = "//tools/generate_stubs/generate_stubs.py"
diff --git a/sandbox/mac/sandbox_mac.gypi b/sandbox/mac/sandbox_mac.gypi
index 29a6534..a2a616f 100644
--- a/sandbox/mac/sandbox_mac.gypi
+++ b/sandbox/mac/sandbox_mac.gypi
@@ -41,43 +41,51 @@
'$(SDKROOT)/usr/lib/libbsm.dylib',
],
},
- 'actions': [
- {
- 'variables': {
- 'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py',
- 'generate_stubs_header_path': 'xpc_stubs_header.fragment',
- 'generate_stubs_sig_public_path': 'xpc_stubs.sig',
- 'generate_stubs_sig_private_path': 'xpc_private_stubs.sig',
- 'generate_stubs_project': 'sandbox/mac',
- 'generate_stubs_output_stem': 'xpc_stubs',
- },
- 'action_name': 'generate_stubs',
- 'inputs': [
- '<(generate_stubs_script)',
- '<(generate_stubs_header_path)',
- '<(generate_stubs_sig_public_path)',
- '<(generate_stubs_sig_private_path)',
+ 'conditions': [
+ # When the build SDK is 10.6, generate a dynamic stub loader. When the
+ # SDK is higher, then libxpc.dylib will be loaded automatically as part
+ # of libSystem, and only forward declarations of private symbols are
+ # necessary.
+ ['mac_sdk == "10.6"', {
+ 'actions': [
+ {
+ 'variables': {
+ 'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py',
+ 'generate_stubs_header_path': 'xpc_stubs_header.fragment',
+ 'generate_stubs_sig_public_path': 'xpc_stubs.sig',
+ 'generate_stubs_sig_private_path': 'xpc_private_stubs.sig',
+ 'generate_stubs_project': 'sandbox/mac',
+ 'generate_stubs_output_stem': 'xpc_stubs',
+ },
+ 'action_name': 'generate_stubs',
+ 'inputs': [
+ '<(generate_stubs_script)',
+ '<(generate_stubs_header_path)',
+ '<(generate_stubs_sig_public_path)',
+ '<(generate_stubs_sig_private_path)',
+ ],
+ 'outputs': [
+ '<(INTERMEDIATE_DIR)/<(generate_stubs_output_stem).cc',
+ '<(SHARED_INTERMEDIATE_DIR)/<(generate_stubs_project)/<(generate_stubs_output_stem).h',
+ ],
+ 'action': [
+ 'python',
+ '<(generate_stubs_script)',
+ '-i', '<(INTERMEDIATE_DIR)',
+ '-o', '<(SHARED_INTERMEDIATE_DIR)/<(generate_stubs_project)',
+ '-t', 'posix_stubs',
+ '-e', '<(generate_stubs_header_path)',
+ '-s', '<(generate_stubs_output_stem)',
+ '-p', '<(generate_stubs_project)',
+ '-x', 'SANDBOX_EXPORT',
+ '<(generate_stubs_sig_public_path)',
+ '<(generate_stubs_sig_private_path)',
+ ],
+ 'process_outputs_as_sources': 1,
+ 'message': 'Generating XPC stubs for 10.6 compatability.',
+ },
],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/<(generate_stubs_output_stem).cc',
- '<(SHARED_INTERMEDIATE_DIR)/<(generate_stubs_project)/<(generate_stubs_output_stem).h',
- ],
- 'action': [
- 'python',
- '<(generate_stubs_script)',
- '-i', '<(INTERMEDIATE_DIR)',
- '-o', '<(SHARED_INTERMEDIATE_DIR)/<(generate_stubs_project)',
- '-t', 'posix_stubs',
- '-e', '<(generate_stubs_header_path)',
- '-s', '<(generate_stubs_output_stem)',
- '-p', '<(generate_stubs_project)',
- '-x', 'SANDBOX_EXPORT',
- '<(generate_stubs_sig_public_path)',
- '<(generate_stubs_sig_private_path)',
- ],
- 'process_outputs_as_sources': 1,
- 'message': 'Generating XPC stubs for 10.6 compatability.',
- },
+ }],
],
},
{
diff --git a/sandbox/mac/xpc.cc b/sandbox/mac/xpc.cc
index 670d8ad..b8d526b 100644
--- a/sandbox/mac/xpc.cc
+++ b/sandbox/mac/xpc.cc
@@ -7,6 +7,8 @@
namespace sandbox {
bool InitializeXPC() {
+#if !defined(MAC_OS_X_VERSION_10_7) || \
+ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
std::vector<std::string> path_list;
path_list.push_back("/usr/lib/system/libxpc.dylib");
@@ -15,6 +17,9 @@ bool InitializeXPC() {
path_map[sandbox_mac::kModuleXpc_private_stubs] = path_list;
return sandbox_mac::InitializeStubs(path_map);
+#else
+ return true;
+#endif
}
} // namespace sandbox
diff --git a/sandbox/mac/xpc.h b/sandbox/mac/xpc.h
index 5ea9f71..33d3945 100644
--- a/sandbox/mac/xpc.h
+++ b/sandbox/mac/xpc.h
@@ -10,19 +10,20 @@
#ifndef SANDBOX_MAC_XPC_H_
#define SANDBOX_MAC_XPC_H_
+#include <AvailabilityMacros.h>
#include <mach/mach.h>
#include "sandbox/sandbox_export.h"
-// C++ library loader.
-#include "sandbox/mac/xpc_stubs.h"
-
// Declares XPC object types. This includes <xpc/xpc.h> if available.
#include "sandbox/mac/xpc_stubs_header.fragment"
#if !defined(MAC_OS_X_VERSION_10_7) || \
MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
+// C++ library loader.
+#include "sandbox/mac/xpc_stubs.h"
+
extern "C" {
// Signatures for XPC public functions that are loaded by xpc_stubs.h.
#include "sandbox/mac/xpc_stubs.sig"