From f1107d917985307ca1dd8d830c1bb952fc205ac6 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <icculus@icculus.org>
Date: Mon, 4 Jun 2007 11:06:48 +0000
Subject: [PATCH] Check if yasm supports a nasm-specific syntax we use (it
 doesn't in 0.5.0,  which is still common in Linux distros, and does in
 0.6.0). Disable it if we  don't, attempting to fallback to using nasm. Thanks
 to Mike Frysinger for the  patch.

   Fixes Bugzilla #393.

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402328
---
 configure.in | 62 +++++++++++++++++++++++++++++++++-------------------
 1 file changed, 40 insertions(+), 22 deletions(-)

diff --git a/configure.in b/configure.in
index b865ea7b..5d0e33ab 100644
--- a/configure.in
+++ b/configure.in
@@ -662,38 +662,56 @@ CheckNASM()
 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)
-- 
2.18.1