1 # asm-underscore.m4 serial 2 2 dnl Copyright (C) 2010-2012 Free Software Foundation, Inc. 3 dnl This file is free software; the Free Software Foundation 4 dnl gives unlimited permission to copy and/or distribute it, 5 dnl with or without modifications, as long as this notice is preserved. 6 7 dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp. 8 9 # gl_ASM_SYMBOL_PREFIX 10 # Tests for the prefix of C symbols at the assembly language level and the 11 # linker level. This prefix is either an underscore or empty. Defines the 12 # C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to 13 # a stringified variant of this prefix. 14 15 AC_DEFUN([gl_ASM_SYMBOL_PREFIX], 16 [ 17 dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because 18 dnl 1. It works only for GCC. 19 dnl 2. It is incorrectly defined on some platforms, in some GCC versions. 20 AC_REQUIRE([gl_C_ASM]) 21 AC_CACHE_CHECK( 22 [whether C symbols are prefixed with underscore at the linker level], 23 [gl_cv_prog_as_underscore], 24 [cat > conftest.c <<EOF 25 #ifdef __cplusplus 26 extern "C" int foo (void); 27 #endif 28 int foo(void) { return 0; } 29 EOF 30 # Look for the assembly language name in the .s file. 31 AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 32 if grep _foo conftest.$gl_asmext >/dev/null ; then 33 gl_cv_prog_as_underscore=yes 34 else 35 gl_cv_prog_as_underscore=no 36 fi 37 rm -f conftest* 38 ]) 39 if test $gl_cv_prog_as_underscore = yes; then 40 USER_LABEL_PREFIX=_ 41 else 42 USER_LABEL_PREFIX= 43 fi 44 AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX], 45 [Define to the prefix of C symbols at the assembler and linker level, 46 either an underscore or empty.]) 47 ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"' 48 AC_SUBST([ASM_SYMBOL_PREFIX]) 49 ]) 50 51 # gl_C_ASM 52 # Determines how to produce an assembly language file from C source code. 53 # Sets the variables: 54 # gl_asmext - the extension of assembly language output, 55 # gl_c_asm_opt - the C compiler option that produces assembly language output. 56 57 AC_DEFUN([gl_C_ASM], 58 [ 59 AC_EGREP_CPP([MicrosoftCompiler], 60 [ 61 #ifdef _MSC_VER 62 MicrosoftCompiler 63 #endif 64 ], 65 [gl_asmext='asm' 66 gl_c_asm_opt='-c -Fa' 67 ], 68 [gl_asmext='s' 69 gl_c_asm_opt='-S' 70 ]) 71 ]) 72