Module: wine Branch: master Commit: ea9cf9e49d394cd661adb0207555f36105185f13 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ea9cf9e49d394cd661adb02075... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Sun Jun 14 16:03:46 2009 +0200 configure: Add a macro to define an stdcall function in assembly. --- configure | 22 ++++++++++++++++------ configure.ac | 18 +++++++++++------- include/config.h.in | 10 +++++++++- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/configure b/configure index 1536001..dcc43b6 100755 --- a/configure +++ b/configure @@ -17867,19 +17867,19 @@ case "$ac_cv_asm_func_def" in #define __ASM_FUNC(name) ".def " __ASM_NAME(name) "; .scl 2; .type 32; .endef" _ACEOF - asm_func_header=".def $asm_name_prefix\" #name \"; .scl 2; .type 32; .endef" ;; + asm_func_header=".def $asm_name_prefix\" #name suffix \"; .scl 2; .type 32; .endef" ;; ".type @function") cat >>confdefs.h <<\_ACEOF #define __ASM_FUNC(name) ".type " __ASM_NAME(name) ",@function" _ACEOF - asm_func_header=".type $asm_name_prefix\" #name \",@function" ;; + asm_func_header=".type $asm_name_prefix\" #name suffix \",@function" ;; ".type 2") cat >>confdefs.h <<\_ACEOF #define __ASM_FUNC(name) ".type " __ASM_NAME(name) ",2" _ACEOF - asm_func_header=".type $asm_name_prefix\" #name \",2" ;; + asm_func_header=".type $asm_name_prefix\" #name suffix \",2" ;; *) cat >>confdefs.h <<\_ACEOF #define __ASM_FUNC(name) "" @@ -18046,7 +18046,7 @@ fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_cfi_support" >&5 $as_echo "$ac_cv_c_cfi_support" >&6; } -asm_func_header=".globl $asm_name_prefix\" #name \"\\n\\t$asm_func_header\\n$asm_name_prefix\" #name \":\\n\\t" +asm_func_header=".globl $asm_name_prefix\" #name suffix \"\\n\\t$asm_func_header\\n$asm_name_prefix\" #name suffix \":\\n\\t" asm_func_trailer="" if test "$ac_cv_c_dot_previous" = "yes" then @@ -18065,16 +18065,26 @@ asm_func_code="$asm_func_header\" code \"$asm_func_trailer" if test "$ac_cv_c_asm_outside_funcs" = "yes" then cat >>confdefs.h <<_ACEOF -#define __ASM_GLOBAL_FUNC(name,code) asm(".text\n\t.align 4\n\t$asm_func_code"); +#define __ASM_DEFINE_FUNC(name,suffix,code) asm(".text\n\t.align 4\n\t$asm_func_code"); _ACEOF else cat >>confdefs.h <<_ACEOF -#define __ASM_GLOBAL_FUNC(name,code) void __asm_dummy_##name(void) { asm(".text\n\t.align 4\n\t$asm_func_code"); } +#define __ASM_DEFINE_FUNC(name,suffix,code) void __asm_dummy_##name(void) { asm(".text\n\t.align 4\n\t$asm_func_code"); } _ACEOF fi +cat >>confdefs.h <<\_ACEOF +#define __ASM_GLOBAL_FUNC(name,code) __ASM_DEFINE_FUNC(name,"",code) +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define __ASM_STDCALL_FUNC(name,args,code) __ASM_DEFINE_FUNC(name,__ASM_STDCALL(args),code) +_ACEOF + + LDPATH="" diff --git a/configure.ac b/configure.ac index aa3b892..5fc708e 100644 --- a/configure.ac +++ b/configure.ac @@ -1447,13 +1447,13 @@ AH_TEMPLATE(__ASM_FUNC,[Define to a macro to generate an assembly function direc case "$ac_cv_asm_func_def" in ".def") AC_DEFINE([__ASM_FUNC(name)], [".def " __ASM_NAME(name) "; .scl 2; .type 32; .endef"]) - asm_func_header=".def $asm_name_prefix\" #name \"; .scl 2; .type 32; .endef" ;; + asm_func_header=".def $asm_name_prefix\" #name suffix \"; .scl 2; .type 32; .endef" ;; ".type @function") AC_DEFINE([__ASM_FUNC(name)], [".type " __ASM_NAME(name) ",@function"]) - asm_func_header=".type $asm_name_prefix\" #name \",@function" ;; + asm_func_header=".type $asm_name_prefix\" #name suffix \",@function" ;; ".type 2") AC_DEFINE([__ASM_FUNC(name)], [".type " __ASM_NAME(name) ",2"]) - asm_func_header=".type $asm_name_prefix\" #name \",2" ;; + asm_func_header=".type $asm_name_prefix\" #name suffix \",2" ;; *) AC_DEFINE([__ASM_FUNC(name)], [""]) asm_func_header="" ;; @@ -1471,7 +1471,7 @@ AC_CACHE_CHECK([whether CFI directives are supported in assembly code], ac_cv_c_ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[asm(".text\nac_test:\t.cfi_startproc\n\t.long 0\n\t.cfi_endproc");]])], ac_cv_c_cfi_support="yes",ac_cv_c_cfi_support="no")) -asm_func_header=".globl $asm_name_prefix\" #name \"\\n\\t$asm_func_header\\n$asm_name_prefix\" #name \":\\n\\t" +asm_func_header=".globl $asm_name_prefix\" #name suffix \"\\n\\t$asm_func_header\\n$asm_name_prefix\" #name suffix \":\\n\\t" asm_func_trailer="" if test "$ac_cv_c_dot_previous" = "yes" then @@ -1485,13 +1485,17 @@ fi asm_func_code="$asm_func_header\" code \"$asm_func_trailer" -AH_TEMPLATE(__ASM_GLOBAL_FUNC,[Define to a macro to generate an assembly function]) +AH_TEMPLATE(__ASM_DEFINE_FUNC,[Define to a macro to define an assembly function]) if test "$ac_cv_c_asm_outside_funcs" = "yes" then - AC_DEFINE_UNQUOTED([__ASM_GLOBAL_FUNC(name,code)],[asm(".text\n\t.align 4\n\t$asm_func_code");]) + AC_DEFINE_UNQUOTED([__ASM_DEFINE_FUNC(name,suffix,code)],[asm(".text\n\t.align 4\n\t$asm_func_code");]) else - AC_DEFINE_UNQUOTED([__ASM_GLOBAL_FUNC(name,code)],[void __asm_dummy_##name(void) { asm(".text\n\t.align 4\n\t$asm_func_code"); }]) + AC_DEFINE_UNQUOTED([__ASM_DEFINE_FUNC(name,suffix,code)],[void __asm_dummy_##name(void) { asm(".text\n\t.align 4\n\t$asm_func_code"); }]) fi +AC_DEFINE([__ASM_GLOBAL_FUNC(name,code)],[__ASM_DEFINE_FUNC(name,"",code)], + [Define to a macro to generate an assembly function with C calling convention]) +AC_DEFINE([__ASM_STDCALL_FUNC(name,args,code)],[__ASM_DEFINE_FUNC(name,__ASM_STDCALL(args),code)], + [Define to a macro to generate an assembly function with stdcall calling convention]) dnl **** Platform-specific checks **** diff --git a/include/config.h.in b/include/config.h.in index 5b5f7c8..aab0591 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -1188,10 +1188,14 @@ /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING +/* Define to a macro to define an assembly function */ +#undef __ASM_DEFINE_FUNC + /* Define to a macro to generate an assembly function directive */ #undef __ASM_FUNC -/* Define to a macro to generate an assembly function */ +/* Define to a macro to generate an assembly function with C calling + convention */ #undef __ASM_GLOBAL_FUNC /* Define to a macro to generate an assembly name from a C symbol */ @@ -1200,6 +1204,10 @@ /* Define to a macro to generate an stdcall suffix */ #undef __ASM_STDCALL +/* Define to a macro to generate an assembly function with stdcall calling + convention */ +#undef __ASM_STDCALL_FUNC + /* Define to empty if `const' does not conform to ANSI C. */ #undef const