| ; Copyright 2013 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. | |
| ; | |
| ; A set of helper macros for controlling symbol visibility. | |
| ; | |
| %ifndef MEDIA_BASE_SIMD_MEDIA_EXPORT_ASM_ | |
| %define MEDIA_BASE_SIMD_MEDIA_EXPORT_ASM_ | |
| ; Necessary for the mangle() macro. | |
| %include "third_party/x86inc/x86inc.asm" | |
| ; | |
| ; PRIVATE | |
| ; A flag representing the specified symbol is a private symbol. This define adds | |
| ; a hidden flag on Linux and a private_extern flag on Mac. (We can use this | |
| ; private_extern flag only on the latest yasm.) | |
| ; | |
| %ifdef MACHO | |
| %define PRIVATE :private_extern | |
| %elifdef ELF | |
| %define PRIVATE :hidden | |
| %else | |
| %define PRIVATE | |
| %endif | |
| ; | |
| ; EXPORT %1 | |
| ; Designates a symbol as PRIVATE if EXPORT_SYMBOLS is not set. | |
| ; | |
| %macro EXPORT 1 | |
| %ifdef EXPORT_SYMBOLS | |
| global mangle(%1) | |
| ; Windows needs an additional export declaration. | |
| %ifidn __OUTPUT_FORMAT__,win32 | |
| export mangle(%1) | |
| %elifidn __OUTPUT_FORMAT__,win64 | |
| export mangle(%1) | |
| %endif | |
| %else | |
| global mangle(%1) PRIVATE | |
| %endif | |
| %endmacro | |
| %endif ; MEDIA_BASE_SIMD_MEDIA_EXPORT_ASM_ |