1; Copyright 2013 The Chromium Authors. All rights reserved.
2; Use of this source code is governed by a BSD-style license that can be
3; found in the LICENSE file.
4;
5; A set of helper macros for controlling symbol visibility.
6;
7
8%ifndef MEDIA_BASE_SIMD_MEDIA_EXPORT_ASM_
9%define MEDIA_BASE_SIMD_MEDIA_EXPORT_ASM_
10
11; Necessary for the mangle() macro.
12%include "third_party/x86inc/x86inc.asm"
13
14;
15; PRIVATE
16; A flag representing the specified symbol is a private symbol. This define adds
17; a hidden flag on Linux and a private_extern flag on Mac. (We can use this
18; private_extern flag only on the latest yasm.)
19;
20%ifdef MACHO
21%define PRIVATE :private_extern
22%elifdef ELF
23%define PRIVATE :hidden
24%else
25%define PRIVATE
26%endif
27
28;
29; EXPORT %1
30; Designates a symbol as PRIVATE if EXPORT_SYMBOLS is not set.
31;
32%macro EXPORT 1
33%ifdef EXPORT_SYMBOLS
34global mangle(%1)
35
36; Windows needs an additional export declaration.
37%ifidn __OUTPUT_FORMAT__,win32
38export mangle(%1)
39%elifidn __OUTPUT_FORMAT__,win64
40export mangle(%1)
41%endif
42
43%else
44global mangle(%1) PRIVATE
45%endif
46%endmacro
47
48%endif  ; MEDIA_BASE_SIMD_MEDIA_EXPORT_ASM_
49