Fixed bug #157
authorSam Lantinga <slouken@libsdl.org>
Wed, 21 Jun 2006 07:57:34 +0000
changeset 1871 9ff9a58fa1e3
parent 1870 39a4f91b164a
child 1872 d76c3909b244
Fixed bug #157 [patch tweaked to handle older nasm, which doesn't support :function syntax] ------- Comment #5 From Mike Frysinger 2006-05-22 01:24 [reply] ------- Created an attachment (id=132) [edit] libsdl-hidden-nasm.patch here's the patch i posted here: http://www.libsdl.org/pipermail/sdl/2006-March/073618.html this will hide the symbols dynamically if the build nasm/yasm supports the hidden stuff ... in other words, this patch should be safe with both older and new versions of nasm/yasm
configure.in
src/hermes/common.asm
src/hermes/mmx_main.asm
src/hermes/mmxp2_32.asm
src/hermes/x86_main.asm
src/hermes/x86p_16.asm
src/hermes/x86p_32.asm
--- a/configure.in	Wed Jun 21 07:35:02 2006 +0000
+++ b/configure.in	Wed Jun 21 07:57:34 2006 +0000
@@ -596,11 +596,14 @@
 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
-        AC_PATH_PROG(NASM, nasm)
-        if test x$NASM != x -a x$NASM != x'"$NASM"'; then
+        AC_PATH_PROG(NASM, yasm)
+        if test "x$NASM" = x -o "x$NASM" = x'"$NASM"'; then
+            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
+            if test x"$NASMFLAGS" = x; then
                 case $ARCH in
                   win32)
                       NASMFLAGS="-f win32"
@@ -613,6 +616,15 @@
                       ;;
                 esac
             fi
+            NASMFLAGS="$NASMFLAGS -i $srcdir/src/hermes/"
+
+            dnl See if hidden visibility is supported
+            echo 'GLOBAL _bar:function hidden' > nasm_vis.asm
+            if $NASM $NASMFLAGS nasm_vis.asm -o nasm_vis.o >&AS_MESSAGE_LOG_FD ; then
+                NASMFLAGS="$NASMFLAGS -DHIDDEN_VISIBILITY"
+            fi
+            rm -f nasm_vis.asm nasm_vis.o
+
             AC_SUBST(NASM)
             AC_SUBST(NASMFLAGS)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hermes/common.asm	Wed Jun 21 07:57:34 2006 +0000
@@ -0,0 +1,9 @@
+; Some common macros for hermes nasm code
+
+%macro SDL_FUNC 1
+%ifdef HIDDEN_VISIBILITY
+GLOBAL %1:function hidden
+%else
+GLOBAL %1
+%endif
+%endmacro
--- a/src/hermes/mmx_main.asm	Wed Jun 21 07:35:02 2006 +0000
+++ b/src/hermes/mmx_main.asm	Wed Jun 21 07:57:34 2006 +0000
@@ -9,8 +9,10 @@
 
 BITS 32
 
-GLOBAL _ConvertMMX
-GLOBAL _mmxreturn
+%include "common.asm"
+
+SDL_FUNC _ConvertMMX
+SDL_FUNC _mmxreturn
 
 SECTION .text
 		
--- a/src/hermes/mmxp2_32.asm	Wed Jun 21 07:35:02 2006 +0000
+++ b/src/hermes/mmxp2_32.asm	Wed Jun 21 07:57:34 2006 +0000
@@ -20,12 +20,13 @@
 
 BITS 32
 
+%include "common.asm"
 	
-GLOBAL _ConvertMMXpII32_24RGB888
-GLOBAL _ConvertMMXpII32_16RGB565
-GLOBAL _ConvertMMXpII32_16BGR565
-GLOBAL _ConvertMMXpII32_16RGB555
-GLOBAL _ConvertMMXpII32_16BGR555
+SDL_FUNC _ConvertMMXpII32_24RGB888
+SDL_FUNC _ConvertMMXpII32_16RGB565
+SDL_FUNC _ConvertMMXpII32_16BGR565
+SDL_FUNC _ConvertMMXpII32_16RGB555
+SDL_FUNC _ConvertMMXpII32_16BGR555
 
 EXTERN _mmxreturn
  
--- a/src/hermes/x86_main.asm	Wed Jun 21 07:35:02 2006 +0000
+++ b/src/hermes/x86_main.asm	Wed Jun 21 07:57:34 2006 +0000
@@ -11,10 +11,12 @@
 
 BITS 32
 
-GLOBAL _ConvertX86
-GLOBAL _x86return
+%include "common.asm"
+
+SDL_FUNC _ConvertX86
+SDL_FUNC _x86return
 	
-GLOBAL _Hermes_X86_CPU
+SDL_FUNC _Hermes_X86_CPU
 
 SECTION .text
 		
--- a/src/hermes/x86p_16.asm	Wed Jun 21 07:35:02 2006 +0000
+++ b/src/hermes/x86p_16.asm	Wed Jun 21 07:57:34 2006 +0000
@@ -10,19 +10,14 @@
 ; Used with permission.
 ; 
 
-	
 BITS 32
 
-GLOBAL _ConvertX86p16_32RGB888
-GLOBAL _ConvertX86p16_32BGR888
-GLOBAL _ConvertX86p16_32RGBA888
-GLOBAL _ConvertX86p16_32BGRA888
-GLOBAL _ConvertX86p16_24RGB888
-GLOBAL _ConvertX86p16_24BGR888
-GLOBAL _ConvertX86p16_16BGR565
-GLOBAL _ConvertX86p16_16RGB555
-GLOBAL _ConvertX86p16_16BGR555
-GLOBAL _ConvertX86p16_8RGB332
+%include "common.asm"
+
+SDL_FUNC _ConvertX86p16_16BGR565
+SDL_FUNC _ConvertX86p16_16RGB555
+SDL_FUNC _ConvertX86p16_16BGR555
+SDL_FUNC _ConvertX86p16_8RGB332
 
 EXTERN _ConvertX86
 EXTERN _x86return
--- a/src/hermes/x86p_32.asm	Wed Jun 21 07:35:02 2006 +0000
+++ b/src/hermes/x86p_32.asm	Wed Jun 21 07:57:34 2006 +0000
@@ -9,19 +9,20 @@
 ; Most routines are (c) Glenn Fiedler (ptc@gaffer.org), used with permission
 ; 
 
-	
 BITS 32
 
-GLOBAL _ConvertX86p32_32BGR888
-GLOBAL _ConvertX86p32_32RGBA888
-GLOBAL _ConvertX86p32_32BGRA888
-GLOBAL _ConvertX86p32_24RGB888	
-GLOBAL _ConvertX86p32_24BGR888
-GLOBAL _ConvertX86p32_16RGB565
-GLOBAL _ConvertX86p32_16BGR565
-GLOBAL _ConvertX86p32_16RGB555
-GLOBAL _ConvertX86p32_16BGR555
-GLOBAL _ConvertX86p32_8RGB332
+%include "common.asm"
+
+SDL_FUNC _ConvertX86p32_32BGR888
+SDL_FUNC _ConvertX86p32_32RGBA888
+SDL_FUNC _ConvertX86p32_32BGRA888
+SDL_FUNC _ConvertX86p32_24RGB888	
+SDL_FUNC _ConvertX86p32_24BGR888
+SDL_FUNC _ConvertX86p32_16RGB565
+SDL_FUNC _ConvertX86p32_16BGR565
+SDL_FUNC _ConvertX86p32_16RGB555
+SDL_FUNC _ConvertX86p32_16BGR555
+SDL_FUNC _ConvertX86p32_8RGB332
 
 EXTERN _x86return