blob: e82be8d7f9d7bd1624f41505ef1e3de9e6fcb5b8 [file] [log] [blame]
; 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_