@ -38,6 +38,10 @@
% define private_prefix x264
% define private_prefix x264
% endif
% endif
% ifndef public_prefix
% define public_prefix private_prefix
% endif
% define WIN64 0
% define WIN64 0
% define UNIX64 0
% define UNIX64 0
% if ARCH_X86_64
% if ARCH_X86_64
@ -643,33 +647,43 @@ DECLARE_ARG 7, 8, 9, 10, 11, 12, 13, 14
; Applies any symbol mangling needed for C linkage, and sets up a define such that
; Applies any symbol mangling needed for C linkage, and sets up a define such that
; subsequent uses of the function name automatically refer to the mangled version.
; subsequent uses of the function name automatically refer to the mangled version.
; Appends cpuflags to the function name if cpuflags has been specified.
; Appends cpuflags to the function name if cpuflags has been specified.
; The "" empty default parameter is a workaround for nasm, which fails if SUFFIX
; is empty and we call cglobal_internal with just %1 %+ SUFFIX (without %2).
% macro cglobal 1-2+ "" ; name, [PROLOGUE args]
% macro cglobal 1-2+ "" ; name, [PROLOGUE args]
; the "" is a workaround for nasm, which fails if SUFFIX is empty
cglobal_internal 1 , % 1 %+ SUFFIX , % 2
; and we call cglobal_internal with just %1 %+ SUFFIX (without %2)
cglobal_internal % 1 %+ SUFFIX , % 2
% endmacro
% endmacro
% macro cglobal_internal 1-2+
% macro cvisible 1-2+ "" ; name, [PROLOGUE args]
% ifndef cglobaled_%1
cglobal_internal 0 , % 1 %+ SUFFIX , % 2
% xdefine %1 mangle(private_prefix %+ _ %+ %1)
% endmacro
% xdefine %1.skip_prologue %1 %+ .skip_prologue
% macro cglobal_internal 2-3+
CAT_XDEFINE cglobaled_ , % 1 , 1
% if %1
% xdefine %%FUNCTION_PREFIX private_prefix
% xdefine %%VISIBILITY hidden
% else
% xdefine %%FUNCTION_PREFIX public_prefix
% xdefine %%VISIBILITY
% endif
% ifndef cglobaled_%2
% xdefine %2 mangle(%%FUNCTION_PREFIX %+ _ %+ %2)
% xdefine %2.skip_prologue %2 %+ .skip_prologue
CAT_XDEFINE cglobaled_ , % 2 , 1
% endif
% endif
% xdefine current_function %1
% xdefine current_function %2
% ifidn __OUTPUT_FORMAT__,elf
% ifidn __OUTPUT_FORMAT__,elf
global % 1 : function hidden
global % 2 : function %% VISIBILITY
% else
% else
global % 1
global % 2
% endif
% endif
align function_align
align function_align
% 1:
% 2 :
RESET_MM_PERMUTATION ; not really needed, but makes disassembly somewhat nicer
RESET_MM_PERMUTATION ; not really needed, but makes disassembly somewhat nicer
% xdefine rstk rsp
% xdefine rstk rsp
% assign stack_offset 0
% assign stack_offset 0
% assign stack_size 0
% assign stack_size 0
% assign stack_size_padded 0
% assign stack_size_padded 0
% assign xmm_regs_used 0
% assign xmm_regs_used 0
% ifnidn %2 , ""
% ifnidn %3 , ""
PROLOGUE % 2
PROLOGUE % 3
% endif
% endif
% endmacro
% endmacro