configure.in
changeset 2112 024af473e643
parent 2104 a76e8b9f3d2e
child 2125 fab12febc0f9
--- a/configure.in	Sun Jun 03 08:39:23 2007 +0000
+++ b/configure.in	Mon Jun 04 11:08:25 2007 +0000
@@ -641,38 +641,56 @@
 AC_HELP_STRING([--enable-nasm], [use nasm assembly blitters on x86 [[default=yes]]]),
                   , enable_nasm=yes)
     if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_nasm = xyes; then
+        CompileNASM()
+        {
+            # Usage: CompileNASM <filename>
+            AC_MSG_CHECKING(to see if $NASM supports $1)
+            if $NASM $NASMFLAGS $1 -o $1.o >&AS_MESSAGE_LOG_FD 2>&1; then
+                CompileNASM_ret="yes"
+            else
+                CompileNASM_ret="no"
+            fi
+            rm -f $1 $1.o
+            AC_MSG_RESULT($CompileNASM_ret)
+            test "$CompileNASM_ret" = "yes"
+        }
+
+        if test x"$NASMFLAGS" = x; then
+            case $ARCH in
+              win32)
+                  NASMFLAGS="-f win32"
+                  ;;
+              openbsd)
+                  NASMFLAGS="-f aoutb"
+                  ;;
+              macosx)
+                  NASMFLAGS="-f macho"
+                  ;;
+              *)
+                  NASMFLAGS="-f elf"
+                  ;;
+            esac
+        fi
+
         AC_PATH_PROG(NASM, yasm)
+        echo "%ifidn __OUTPUT_FORMAT__,elf" > unquoted-sections
+        echo "section .note.GNU-stack noalloc noexec nowrite progbits" >> unquoted-sections
+        echo "%endif" >> unquoted-sections
+        CompileNASM unquoted-sections || NASM=""
+
         if test "x$NASM" = x -o "x$NASM" = x'"$NASM"'; then
+            $as_unset ac_cv_path_NASM
             AC_PATH_PROG(NASM, nasm)
         fi
         if test "x$NASM" != x -a "x$NASM" != x'"$NASM"'; then
             AC_DEFINE(SDL_HERMES_BLITTERS)
             SOURCES="$SOURCES $srcdir/src/hermes/*.asm"
-            if test x"$NASMFLAGS" = x; then
-                case $ARCH in
-                  win32)
-                      NASMFLAGS="-f win32"
-                      ;;
-                  openbsd)
-                      NASMFLAGS="-f aoutb"
-                      ;;
-                  macosx)
-                      NASMFLAGS="-f macho"
-                      ;;
-                  *)
-                      NASMFLAGS="-f elf"
-                      ;;
-                esac
-            fi
             NASMFLAGS="$NASMFLAGS -i $srcdir/src/hermes/"
 
             dnl See if hidden visibility is supported
-            echo "GLOBAL _bar:function hidden" > nasm_vis.asm
-            echo "_bar:" >>nasm_vis.asm
-            if $NASM $NASMFLAGS nasm_vis.asm -o nasm_vis.o >&AS_MESSAGE_LOG_FD 2>&1; then
-                NASMFLAGS="$NASMFLAGS -DHIDDEN_VISIBILITY"
-            fi
-            rm -f nasm_vis.asm nasm_vis.o
+            echo "GLOBAL _bar:function hidden" > symbol-visibility
+            echo "_bar:" >> symbol-visibility
+            CompileNASM symbol-visibility && NASMFLAGS="$NASMFLAGS -DHIDDEN_VISIBILITY"
 
             AC_SUBST(NASM)
             AC_SUBST(NASMFLAGS)