https://bugs.winehq.org/show_bug.cgi?id=39165
Bug ID: 39165 Summary: dlls/xaudio2_7 fails to compile (unconditional dependency on OpenAL) Product: Wine Version: 1.7.50 Hardware: x86-64 OS: Linux Status: NEW Keywords: regression Severity: blocker Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: dmitry@baikal.ru CC: aeikum@codeweavers.com Regression SHA1: 1c643f39e2814dca59e284092aa3fb47f6280791 Distribution: ---
This is a regression, introduced by
commit 1c643f39e2814dca59e284092aa3fb47f6280791 Author: Andrew Eikum aeikum@codeweavers.com Date: Tue Aug 25 14:28:37 2015 -0500
xaudio2: Implement device activation.
This adds a build-time dependency on openal, and a run-time dependency on openal-soft's ALC_SOFT_loopback extension.
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #1 from Dmitry Timoshkov dmitry@baikal.ru --- It's worth to mention that I have openal/openal-devel installed (both 64-bit and 32-bit).
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #2 from Sebastian Lackner sebastian@fds-team.de --- Are you sure that this is a problem in practice?
--- snip --- --- a/configure.ac +++ b/configure.ac @@ -1738,8 +1738,9 @@ then AC_DEFINE_UNQUOTED(HAVE_OPENAL,1,[Define to 1 if OpenAL is available])],,) fi WINE_NOTICE_WITH(openal,[test "x$ac_cv_lib_openal" != xyes], - [libopenal ${notice_platform}development files not found (or too old), OpenAL won't be supported.]) + [libopenal ${notice_platform}development files not found (or too old), OpenAL and XAudio2 won't be supported]) test "x$ac_cv_lib_openal" = xyes || enable_openal32=${enable_openal32:-no} +test "x$ac_cv_lib_openal" = xyes || enable_xaudio2_7=${enable_xaudio2_7:-no}
dnl **** Check for libkstat **** if test "$ac_cv_header_kstat_h" = "yes" --- snip ---
With these changes xaudio2_7 should be disabled when OpenAL is not present.
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #3 from Dmitry Timoshkov dmitry@baikal.ru --- (In reply to Sebastian Lackner from comment #2)
With these changes xaudio2_7 should be disabled when OpenAL is not present.
I guess that since I have libopenal/libopenal-devel installed the configure check passes.
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #4 from Dmitry Timoshkov dmitry@baikal.ru --- Here is the compilation failure: xaudio_dll.c: In function al_get_loopback_format: xaudio_dll.c:1462:20: error: ALC_UNSIGNED_BYTE_SOFT undeclared (first use in this function) xaudio_dll.c:1462:20: note: each undeclared identifier is reported only once for each function it appears in xaudio_dll.c:1464:20: error: ALC_SHORT_SOFT undeclared (first use in this function) xaudio_dll.c:1466:20: error: ALC_INT_SOFT undeclared (first use in this function) xaudio_dll.c:1472:20: error: ALC_FLOAT_SOFT undeclared (first use in this function) xaudio_dll.c: In function IXAudio2Impl_CreateMasteringVoice: xaudio_dll.c:1592:16: error: ALC_FORMAT_CHANNELS_SOFT undeclared (first use in this function) xaudio_dll.c:1595:20: error: ALC_MONO_SOFT undeclared (first use in this function) xaudio_dll.c:1598:20: error: ALC_STEREO_SOFT undeclared (first use in this function) xaudio_dll.c:1601:20: error: ALC_QUAD_SOFT undeclared (first use in this function) xaudio_dll.c:1604:20: error: ALC_5POINT1_SOFT undeclared (first use in this function) xaudio_dll.c:1607:20: error: ALC_6POINT1_SOFT undeclared (first use in this function) xaudio_dll.c:1610:20: error: ALC_7POINT1_SOFT undeclared (first use in this function) xaudio_dll.c:1619:16: error: ALC_FORMAT_TYPE_SOFT undeclared (first use in this function) make: *** [xaudio_dll.o] Error 1
and the config.log snippets:
configure:6747: checking OpenAL/al.h usability configure:6747: gcc -m32 -c -g -O2 conftest.c >&5 conftest.c:55:23: fatal error: OpenAL/al.h: No such file or directory ... configure:6747: checking OpenAL/al.h presence configure:6747: gcc -m32 -E conftest.c conftest.c:22:23: fatal error: OpenAL/al.h: No such file or directory ... configure:13544: checking for -lopenal configure:13569: gcc -m32 -o conftest -g -O2 conftest.c -lopenal >&5 configure:13569: $? = 0 configure:13588: result: libopenal.so.1 ... | #define SONAME_LIBOPENAL "libopenal.so.1" | #define HAVE_OPENAL 1
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #5 from Dmitry Timoshkov dmitry@baikal.ru --- And some more detals:
$> ls /usr/include/AL alc.h alext.h al.h efx-creative.h efx.h
$> grep -r AL_UNSIGNED_BYTE /usr/include/AL
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #6 from Dmitry Timoshkov dmitry@baikal.ru --- (In reply to Dmitry Timoshkov from comment #5)
$> grep -r AL_UNSIGNED_BYTE /usr/include/AL
should read as $> grep -r ALC_UNSIGNED_BYTE /usr/include/AL
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #7 from Andrew Eikum aeikum@codeweavers.com --- That's interesting, what distro is this? I wonder what OpenAL they're using. Most Linux distros I looked at use openal-soft, which is where those definitions come from. In any case, they should be guarded by ifdefs. I suspect I broke the OSX build for the same reason.
I will work on fixing this, thanks for reporting.
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #8 from Andrew Eikum aeikum@codeweavers.com --- In fact, we need openal-soft to work, so I should just disable xaudio2_7 entirely if openal-soft isn't present.
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #9 from Andrew Eikum aeikum@codeweavers.com --- Created attachment 52199 --> https://bugs.winehq.org/attachment.cgi?id=52199 Fix xaudio build
Dmitry, I think this will fix it by disabling xaudio2_7 if openal-soft is not found. Please test (don't forget to clean the tree, run autoconf, etc).
I'm not an autoconf expert, so review is welcome.
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #10 from Dmitry Timoshkov dmitry@baikal.ru --- (In reply to Andrew Eikum from comment #9)
Created attachment 52199 [details] Fix xaudio build
Dmitry, I think this will fix it by disabling xaudio2_7 if openal-soft is not found. Please test (don't forget to clean the tree, run autoconf, etc).
I'm not an autoconf expert, so review is welcome.
Seems to work, thanks.
Is it possible to use standard openal API instead of openal-soft, or even implement xaudio on top of direct sound API? How many distributions provide openal-soft in addition to (or instead of) plain openal?
https://bugs.winehq.org/show_bug.cgi?id=39165
--- Comment #11 from Andrew Eikum aeikum@codeweavers.com --- (In reply to Dmitry Timoshkov from comment #10)
(In reply to Andrew Eikum from comment #9)
Created attachment 52199 [details] Fix xaudio build
Dmitry, I think this will fix it by disabling xaudio2_7 if openal-soft is not found. Please test (don't forget to clean the tree, run autoconf, etc).
I'm not an autoconf expert, so review is welcome.
Seems to work, thanks.
Thanks for testing. I'll submit upstream.
Is it possible to use standard openal API instead of openal-soft,
No, unfortunately. Only openal-soft provides a software renderer. Every other openal implementation outputs only to hardware devices. I don't want to implement another mixer in Wine, and due to XAudio2 providing "effect chains," we may need access to the mixed samples before they are sent to hardware.
or even implement xaudio on top of direct sound API?
We could do this, though it isn't how Windows works. dsound's mixer and especially resampler aren't very fast or well featured, and frankly I would rather move dsound to use openal than try to reimplement those mixer features in Wine.
How many distributions provide openal-soft in addition to (or instead of) plain openal?
Arch Linux provides only openal-soft: https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=p...
Ubuntu provides only openal-soft: http://packages.ubuntu.com/trusty/libopenal1
Debian provides only openal-soft: https://packages.debian.org/jessie/libopenal-dev
Modern Fedora provides only openal-soft: http://koji.fedoraproject.org/koji/packageinfo?packageID=8993
Gentoo provides only openal-soft: https://packages.gentoo.org/package/media-libs/openal
What's left? What distro are you using?
https://bugs.winehq.org/show_bug.cgi?id=39165
Dmitry Timoshkov dmitry@baikal.ru changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |7f72a5f4ed0f09c58bac2364c74 | |d2ce7b4c3b967 Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #12 from Dmitry Timoshkov dmitry@baikal.ru --- Fixed by 7f72a5f4ed0f09c58bac2364c74d2ce7b4c3b967, thanks Andrew.
https://bugs.winehq.org/show_bug.cgi?id=39165
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #13 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.51.