[OS X/MacPorts] OpenGL build/link confusion when X11 and GLX are present
As mentioned in an earlier trac ticket, I'm working on a MacPorts port of VLC 2.2.0 rc2, to upgrade the current 2.1.5 port. That 2.1.5 port builds and works fine with a few changes to the code, but VLC 2.2.0 fails to initialise OpenGL as I already mentioned.
I think I found the reason: the presence of X11 and GLX in the MacPorts tree, which is a given. The configure output shows that the X11 headers are found despite giving all configure options to deactivate an X11 build (--without-x, --disable-xcb --disable-glx etc). Now I noticed additional artefacts shown below, when comparing plugin dependencies between the most recent nightly build and my MacPorts build. I think those point to an error in the configure/build system. I'm unfamiliar with the way autoconf and automake work so I'd really appreciate some guidance in tracing and resolving this error.
%> otool -L Downloads/vlc-2.2.0-rc2-20150204/VLC.app/Contents/MacOS/plugins/libvout_macosx_plugin.dylib
/Users/bertin/Desktop/Downloads/vlc-2.2.0-rc2-20150204/VLC.app/Contents/MacOS/plugins/libvout_macosx_plugin.dylib:
@loader_path/../lib/libvlccore.8.dylib (compatibility version 9.0.0, current version 9.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 19.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.18.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1187.37.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 45.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 945.16.0)
%> otool -L /Users/bertin/Desktop/Downloads/vlc-2.2.0-rc2-20150204/VLC.app/Contents/MacOS/plugins/libcaopengllayer_plugin.dylib
/Users/bertin/Desktop/Downloads/vlc-2.2.0-rc2-20150204/VLC.app/Contents/MacOS/plugins/libcaopengllayer_plugin.dylib:
@loader_path/../lib/libvlccore.8.dylib (compatibility version 9.0.0, current version 9.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 19.0.0)
/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0, current version 1.8.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.18.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1187.37.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 945.16.0)
9 10:44 ldd /Users/bertin/Desktop/Downloads/vlc-2.2.0-rc2-20150204/VLC.app/Contents/MacOS/plugins/libcaopengllayer_plugin.dylib
%> otool -L /opt/local/lib/vlc/plugins/video_output/libvout_macosx_plugin.dylib
/opt/local/lib/vlc/plugins/video_output/libvout_macosx_plugin.dylib:
/opt/local/lib/libvlccore.8.dylib (compatibility version 9.0.0, current version 9.0.0)
/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.3.0)
/opt/local/lib/libidn.11.dylib (compatibility version 18.0.0, current version 18.12.0)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
/opt/local/lib/libdbus-1.3.dylib (compatibility version 12.0.0, current version 12.9.0)
/opt/local/lib/libGL.1.dylib (compatibility version 1.2.0, current version 1.2.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 20.0.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1265.21.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0)
/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 600.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.16.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
%> otool -L /opt/local/lib/vlc/plugins/video_output/libcaopengllayer_plugin.dylib
/opt/local/lib/vlc/plugins/video_output/libcaopengllayer_plugin.dylib:
/opt/local/lib/libvlccore.8.dylib (compatibility version 9.0.0, current version 9.0.0)
/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.3.0)
/opt/local/lib/libidn.11.dylib (compatibility version 18.0.0, current version 18.12.0)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
/opt/local/lib/libdbus-1.3.dylib (compatibility version 12.0.0, current version 12.9.0)
/opt/local/lib/libGL.1.dylib (compatibility version 1.2.0, current version 1.2.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 20.0.0)
/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0, current version 1.8.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1265.21.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.16.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
In other words, those plugins link both the /opt/local/lib/libGL.dylib GLX library, and the OpenGL framework. I fail to understand why this doesn't lead to linker or loader warnings about multiply defined symbols though.
In addition, the MacPorts build ends up with
%> otool -L /opt/local/lib/vlc/plugins/video_output/libgl_plugin.dylib
/opt/local/lib/vlc/plugins/video_output/libgl_plugin.dylib:
/opt/local/lib/libvlccore.8.dylib (compatibility version 9.0.0, current version 9.0.0)
/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.3.0)
/opt/local/lib/libidn.11.dylib (compatibility version 18.0.0, current version 18.12.0)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
/opt/local/lib/libdbus-1.3.dylib (compatibility version 12.0.0, current version 12.9.0)
/opt/local/lib/libGL.1.dylib (compatibility version 1.2.0, current version 1.2.0)
which is probably the GLX counterpart to the libcaopengllayer plugin, and which is missing from the downloaded nightly build.