diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-18 23:40:33 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-18 23:40:33 +0000 |
commit | c222df63d7c2888a876ef8d4a10889813c266a51 (patch) | |
tree | 8762851fbe2020a9b137664e5f2cca9d9007b0ab /ipc/ipc_message_macros.h | |
parent | 7c7e6e1448d2aa714a2891d3931e15a8dc9bbc07 (diff) | |
download | chromium_src-c222df63d7c2888a876ef8d4a10889813c266a51.zip chromium_src-c222df63d7c2888a876ef8d4a10889813c266a51.tar.gz chromium_src-c222df63d7c2888a876ef8d4a10889813c266a51.tar.bz2 |
Reverting in an attempt to fix Win Builder 2010 (dbg).
Revert 122689 - Make IPC_MESSAGE_EXPORT more robust.
Currently, files that want to export ipc messages currently do
#undef IPC_MESSAGE_EXPORT
#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
at the top, and files that don't want to export ipc messages just do nothing. This is problematic if a cc file does
#include "exported_messages.h"
#include "not_exported_messages.h"
because the second header file picks up the #define from the first file and declares all its messages as exported. In other translation units, where not_exported_messages.h is #included without another header above it, the messages will get default visibility – so the same class ends up with different visibilities in different translation units.
Instead, let ipc_message_macros.h #undef IPC_MESSAGE_EXPORT outside of the include guard, so that all files that don't set the define see it as defined to nothing. (Idea from jam@)
BUG=90078
TEST=No linker errors about IPC messages when doing components build on mac. (Other linker errors remain for now.)
TBR=brettw
Review URL: http://codereview.chromium.org/9425006
TBR=thakis@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9355029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122698 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ipc/ipc_message_macros.h')
-rw-r--r-- | ipc/ipc_message_macros.h | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/ipc/ipc_message_macros.h b/ipc/ipc_message_macros.h index f37c05b..783108e 100644 --- a/ipc/ipc_message_macros.h +++ b/ipc/ipc_message_macros.h @@ -1,4 +1,4 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -173,14 +173,6 @@ // ViewHostMsg_SyncMessageName::WriteReplyParams(reply_msg, out1, out2); // Send(reply_msg); -// Files that want to export their ipc messages should do -// #undef IPC_MESSAGE_EXPORT -// #define IPC_MESSAGE_EXPORT VISIBILITY_MACRO -// after including this header, but before using any of the macros below. -// (This needs to be before the include guard.) -#undef IPC_MESSAGE_EXPORT -#define IPC_MESSAGE_EXPORT - #ifndef IPC_IPC_MESSAGE_MACROS_H_ #define IPC_IPC_MESSAGE_MACROS_H_ @@ -192,6 +184,11 @@ #include "ipc/ipc_message_utils_impl.h" #endif +// Override this to force message classes to be exported. +#ifndef IPC_MESSAGE_EXPORT +#define IPC_MESSAGE_EXPORT +#endif + // Macros for defining structs. May be subsequently redefined. #define IPC_STRUCT_BEGIN(struct_name) \ IPC_STRUCT_BEGIN_WITH_PARENT(struct_name, IPC::NoParams) |