summaryrefslogtreecommitdiffstats
path: root/base/base_export.h
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 15:04:32 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 15:04:32 +0000
commitb387864d3341fca140a7bb837e959834d35b0591 (patch)
tree0b985c4af6e28de64f04a29e66318449c6340425 /base/base_export.h
parentabd02159f62aa7e6a585ece6f2af01fac4ca4fa1 (diff)
downloadchromium_src-b387864d3341fca140a7bb837e959834d35b0591.zip
chromium_src-b387864d3341fca140a7bb837e959834d35b0591.tar.gz
chromium_src-b387864d3341fca140a7bb837e959834d35b0591.tar.bz2
Change the way _EXPORT macros look.
With the current setup, if you have a header file my_class.h class BASE_EXPORT MyClass { public: void MyInlineMethod() { /* do stuff, inline */ } }; then every cc file that includes my_class.h will have a public symbol for MyInlineMethod (because inline methods need to be emitted to every translation unit, and the linker sorts them out). With the components build, the linker can't decide to drop these inline methods, so every .so that uses this header file will have the same public symbol. With this proposed change, the symbol will only be visible in the target the header file belongs to, and it will be hidden in all other components. That's cleaner, and it also prevents accident hidden dependencies (say target A depends on B, and B depends on C. A accidentally uses an inline function from a class in C. With this change, that would result in a linker error, and an explicit dependency from A on C would have to be added). Also add a missing CHROMEOS_IMPLEMENTATION define which went unnoticed until now. BUG=90078 TEST=Things still build. TBR=ben, tony, viettrungluu, thestig, agl, willchan Review URL: https://chromiumcodereview.appspot.com/10386108 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137130 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/base_export.h')
-rw-r--r--base/base_export.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/base/base_export.h b/base/base_export.h
index de3ec26..239360e 100644
--- a/base/base_export.h
+++ b/base/base_export.h
@@ -16,7 +16,11 @@
#endif // defined(BASE_IMPLEMENTATION)
#else // defined(WIN32)
+#if defined(BASE_IMPLEMENTATION)
#define BASE_EXPORT __attribute__((visibility("default")))
+#else
+#define BASE_EXPORT
+#endif
#endif
#else // defined(COMPONENT_BUILD)