When devel/nasm is installed on the system, openal's configure will detect in and include optimized assembly versions of some functions. However, for some reason this produces unuseable openal library. --- excerpt from openal build log --- ... checking for dlopen in -ldl... no checking for MMX support... yes checking for nasm... /usr/local/bin/nasm checking whether /usr/local/libexec/ccache/cc accepts -fvisibility=hidden... yes ... gmake[4]: Entering directory `/usr/home/amdmi3/projects/freebsd/ports/audio/openal/work/openal-0.0.8/src/arch/i386' test -d .libs || mkdir .libs echo '# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)' >x86_cpu_caps_detect_prk.lo echo "pic_object='.libs/x86_cpu_caps_detect_prk.o'" >>x86_cpu_caps_detect_prk.lo echo "non_pic_object='x86_cpu_caps_detect_prk.o'" >>x86_cpu_caps_detect_prk.lo /usr/local/bin/nasm -f elf x86_cpu_caps_detect_prk.nasm -o .libs/x86_cpu_caps_detect_prk.o -l x86_cpu_caps_detect_prk.lo.lst x86_cpu_caps_detect_prk.nasm:65: warning: label alone on a line without a colon might be in error test -d .libs || mkdir .libs echo '# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)' >memcpy_mmx_prk.lo echo "pic_object='.libs/memcpy_mmx_prk.o'" >>memcpy_mmx_prk.lo echo "non_pic_object='memcpy_mmx_prk.o'" >>memcpy_mmx_prk.lo /usr/local/bin/nasm -f elf memcpy_mmx_prk.nasm -o .libs/memcpy_mmx_prk.o -l memcpy_mmx_prk.lo.lst memcpy_mmx_prk.nasm:62: warning: label alone on a line without a colon might be in error memcpy_mmx_prk.nasm:84: warning: label alone on a line without a colon might be in error /bin/sh /usr/local/bin/libtool --mode=link /usr/local/libexec/ccache/cc -O2 -pipe -march=prescott -fno-strict-aliasing -L/usr/local/lib -o libx86_asm_routines.la x86_cpu_caps_detect_prk.lo memcpy_mmx_prk.lo -lpthread ar cru .libs/libx86_asm_routines.a .libs/x86_cpu_caps_detect_prk.o .libs/memcpy_mmx_prk.o ranlib .libs/libx86_asm_routines.a creating libx86_asm_routines.la (cd .libs && rm -f libx86_asm_routines.la && ln -s ../libx86_asm_routines.la libx86_asm_routines.la) gmake[4]: Leaving directory `/usr/home/amdmi3/projects/freebsd/ports/audio/openal/work/openal-0.0.8/src/arch/i386' ... --- Now trying to link with the library: --- % cat test.c int main() { return 0; } % cc test.c -o /dev/null -L/usr/local/lib -lopenal /usr/local/lib/libopenal.so: undefined reference to `_alMMXmemcpy' /usr/local/lib/libopenal.so: undefined reference to `_alDetectx86CPUCaps' /usr/local/lib/libopenal.so: undefined reference to `__alMMXmemcpy' /usr/local/lib/libopenal.so: undefined reference to `__alDetectx86CPUCaps' % --- The problem goes away if I deinstall nasm and recompile openal. Fix: 1) Hack configure to not detect nasm at all. For some reason, the test for nasm is completely missing from pointyhat/tinderbox builds, and I couldn't determine cause of that from configure 2) Fix it so correct library is produced. No ideas here as well, link command line produced by libtool seems quite correct for me: cc -shared ... -Wl,--whole-archive ../src/arch/i386/.libs/libx86_asm_routines.a -Wl,--no-whole-archive ... How-To-Repeat: - Install nasm - Rebuild openal - Try to install, say, audio/freealut
Responsible Changed From-To: freebsd-ports-bugs->amdmi3 Submitter has GNATS access (via the GNATS Auto Assign Tool)
Maintainer of audio/openal, Please note that PR ports/131021 has just been submitted. If it contains a patch for an upgrade, an enhancement or a bug fix you agree on, reply to this email stating that you approve the patch and a committer will take care of it. The full text of the PR can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/131021 -- Edwin Groothuis via the GNATS Auto Assign Tool edwin@FreeBSD.org
State Changed From-To: open->feedback Awaiting maintainers feedback (via the GNATS Auto Assign Tool)
State Changed From-To: feedback->closed Committed. Thanks!
amdmi3 2009-03-16 00:54:39 UTC FreeBSD ports repository Modified files: audio/openal Makefile Log: - Don't detect nasm, as it will lead to broken openal library built PR: 131021 Submitted by: myself Approved by: maintainer timeout Revision Changes Path 1.49 +2 -0 ports/audio/openal/Makefile _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
amdmi3 2009-03-16 22:57:07 UTC FreeBSD ports repository Modified files: audio/openal Makefile Added files: audio/openal/files patch-src-arch-i386-memcpy_mmx_prk.nasm patch-src-arch-i386-x86_cpu_caps_detect_prk.nasm Log: - Improve previous fix: - add patches by [3] to fix assembly - make use of assembly OPTIONal and depend on nasm when it's enabled PR: 131021 [1], 129362 [2] Submitted by: myself [1], "J. Altman <freebsd at chthonic dot com> [2] Patch by: Edward Sutton <mirror176 at hotmail dot com> [3] Approved by: oliver, maintainer timeout Revision Changes Path 1.50 +10 -2 ports/audio/openal/Makefile 1.1 +10 -0 ports/audio/openal/files/patch-src-arch-i386-memcpy_mmx_prk.nasm (new) 1.1 +10 -0 ports/audio/openal/files/patch-src-arch-i386-x86_cpu_caps_detect_prk.nasm (new) _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"