mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00

In order to implement a WebRTC component in Chromium, WebRTC needs to export some symbols. If RTC_EXPORT relies on COMPONENT_BUILD to mark symbols as exported or imported, it will not be possible to incrementally add RTC_EXPORT because the Chromium build will break (two Chromium components that export a symbol or no component that exports it). By using `rtc_enable_symbol_export` (which makes GN define WEBRTC_ENABLE_SYMBOL_EXPORT), WebRTC will be able to incrementally mark symbols with RTC_EXPORT and flip the value of `rtc_enable_symbol_export` in the Chromium build when everything will be ready. Bug: webrtc:9419 Change-Id: I57ab63c53545c500eaaefd75c112b4674aa7cf19 Reviewed-on: https://webrtc-review.googlesource.com/c/104980 Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Reviewed-by: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25087}
43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
/*
|
|
* Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef RTC_BASE_SYSTEM_RTC_EXPORT_H_
|
|
#define RTC_BASE_SYSTEM_RTC_EXPORT_H_
|
|
|
|
// RTC_EXPORT is used to mark symbols as exported or imported when WebRTC is
|
|
// built or used as a shared library.
|
|
// When WebRTC is built as a static library the RTC_EXPORT macro expands to
|
|
// nothing.
|
|
|
|
#ifdef WEBRTC_ENABLE_SYMBOL_EXPORT
|
|
|
|
#ifdef WEBRTC_WIN
|
|
|
|
#ifdef WEBRTC_LIBRARY_IMPL
|
|
#define RTC_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define RTC_EXPORT __declspec(dllimport)
|
|
#endif
|
|
|
|
#else // WEBRTC_WIN
|
|
|
|
#if __has_attribute(visibility) && defined(WEBRTC_LIBRARY_IMPL)
|
|
#define RTC_EXPORT __attribute__((visibility("default")))
|
|
#endif
|
|
|
|
#endif // WEBRTC_WIN
|
|
|
|
#endif // WEBRTC_ENABLE_SYMBOL_EXPORT
|
|
|
|
#ifndef RTC_EXPORT
|
|
#define RTC_EXPORT
|
|
#endif
|
|
|
|
#endif // RTC_BASE_SYSTEM_RTC_EXPORT_H_
|