Solaris
Contents
Build VLC on Solaris / OpenSolaris
Solaris 10, x86
To be done.
Solaris 10, SPARC
Sparc builds outside GCC, are currently unstable.
- Many bugs fixed (until now).
- all shells must point to /usr/xpg4/bin/sh instead of /bin/sh (not fully posix) (tip: CONFIG_SHELL=/usr/xpg4/bin/sh)
- bootstrapping requires to change subprocess shell (see patch below)
- filesystem.c needs to be patched for NAME_MAX
- skins2 module needs to be disabled (another NAME_MAX problem & other)
Blocking:
- Lots of if (p==NULL) msgDbg("foo %s", p) in the code segfaults in multiple places. Developers have assumed that %s is fixed as "(null)" like Glibc does. Not available on sparc.
- crashes at network/httpd.c at poll() level.
Boostrapping process required packages
Some old packages exists [1]
CSWautoconf autoconf - an extensible package of M4 macros (all) 2.65,REV=2009.11.30 CSWautomake automake - GNU Makefile generator inspired by 4.4BSD make and include (all) 1.10.3,REV=2009.12.09 CSWggettext ggettext - GNU gettext (sparc) 0.17,REV=2009.05.27 CSWgm4 gm4 - The GNU m4 implementation of the traditional Unix macro processor (sparc) 1.4.13,REV=2009.04.06 CSWiconv libiconv - GNU libiconv is a Unicode conversion library (sparc) 1.13.1,REV=2009.07.01 CSWlibtool libtool - Generic shared library support script (sparc) 1.5.26,REV=2008.12.22 CSWreadline readline - GNU readline (sparc) 5.2,REV=2009.01.23
Config & Build process required packages
CSWlua lua - a powerful light-weight programming language (sparc) 5.1.3,REV=2008.04.29 ** CSWffmpeg ffmpeg - very fast video and audio converter (includes libavcodec) - binaries (sparc) 0.4.9,REV=2008.06.03_rev=svn12629 ** CSWliba52 liba52 - free ATSC A/52 stream decoder (sparc) 0.7.4,REV=2007.03.05 ** CSWlibmad libmad - MPEG Audio Decoder (sparc) 0.15.1,REV=2005.03.26_rev=b ** CSWlibpthreadstubs libpthreadstubs - pthread stubs not provided by native libc (sparc) 0.1,REV=2008.11.16 ** CSWx264 x264 - H264/AVC video encoder (sparc) 1.0.0,REV=2009.12.13 ** CSWlibxcb libxcb - The XCB library (sparc) 1.1,REV=2008.11.16 CSWlibxcbdev libxcb_dev - The XCB library (sparc) 1.1,REV=2008.11.16 CSWlibxau libxau - X11 authorisation library (sparc) 1.0.4,REV=2008.11.17 CSWlibxaudev libxau_dev - X11 authorisation library (sparc) 1.0.4,REV=2008.11.17 CSWxproto xproto - xproto (sparc) 7.0.14,REV=2008.11.15 CSWlibxdmcp libxdmcp - X11 authorisation library (sparc) 1.0.2,REV=2008.11.16 CSWlibxdmcpdev libxdmcp_dev - X11 authorisation library (sparc) 1.0.2,REV=2008.11.16 CSWfribidi fribidi - a free implementation of the Unicode Bidirectional Algorithm (sparc) 0.19.2,REV=2009.09.25 ** CSWqt qt - A Cross-platform application framework for desktop and embedded development (sparc) 4.4.3,REV=2009.01.16
Sun Studio: We needed to build those up to date packages (installed in /opt/vlc, as seen in configuration)
VLCQt VLCflac VLClibxcb-devel VLClibxcb VLClua VLCx264 VLCxcbproto VLCxcbutil
Setting up your environment
For Sun Studio Assuming compiler in /opt/sunstudio12.1 and some customly built packages in /opt/vlc
# Required for bootstrap export ACLOCAL_ARGS="-I /opt/csw/share/aclocal/" # Required for configure export PATH=/opt/sunstudio12.1/bin::/opt/vlc/bin:/opt/csw/bin:/usr/xpg4/bin:/usr/sbin:/usr/bin:/usr/sfw/bin:/usr/ccs/bin:/usr/ucb export LD_LIBRARY_PATH=/opt/vlc/lib:/opt/sunstudio12.1/lib:/opt/csw/lib #:/opt/SUNWmlib/lib:/usr/openwin/sfw/lib export PKG_CONFIG_PATH=/opt/vlc/lib/pkgconfig:/opt/csw/lib/pkgconfig:/opt/vlc/qt/lib/pkgconfig:/usr/local/lib/pkgconfig export LUA_LIBS='-L/opt/vlc/lib -llua' LUA_CFLAGS='-I/opt/vlc/include' export MAKE=gmake export CONFIG_SHELL='/usr/xpg4/bin/sh' export CCC=/opt/sunstudio12.1/bin/CC CC=/opt/sunstudio12.1/bin/cc MAKE=gmake export XLIB_XCB_CFLAGS='-I/opt/vlc/include/xcb/' XLIB_XCB_LIBS='-L/opt/vlc/lib/' # -D_XPG4_2 required for non-sparc code compatible network structs export CFLAGS="-I/opt/sunstudio12.1/include -I/usr/include -features=extensions -D _XPG4_2 -D __SunOS -D __STDC_ISO_10646__ -D __EXTENSIONS__" export CXXFLAGS="-I/opt/sunstudio12.1/include -features=extensions -D _XPG4_2 -D __SunOS -D __STDC_ISO_10646__ -D __EXTENSIONS__"
Using GCC Assuming some customly built packages in /opt/vlc
# Required for bootstrap export ACLOCAL_ARGS="-I /opt/csw/share/aclocal/" # Required for configure export PATH=/opt/vlc/bin:/opt/csw/bin:/usr/xpg4/bin:/usr/sbin:/usr/bin:/usr/sfw/bin:/usr/ccs/bin:/usr/ucb export LD_LIBRARY_PATH=/opt/vlc/lib:/opt/csw/lib:/opt/SUNWmlib/lib:/usr/openwin/sfw/lib export PKG_CONFIG_PATH=/opt/vlc/lib/pkgconfig:/opt/csw/lib/pkgconfig:/opt/vlc/qt/lib/pkgconfig:/usr/local/lib/pkgconfig export LUA_LIBS='-L/opt/vlc/lib -llua' LUA_CFLAGS='-I/opt/vlc/include' export MAKE=gmake export CONFIG_SHELL='/usr/xpg4/bin/sh' # -D_XPG4_2 required for non-sparc code compatible network structs export CFLAGS="-D _XPG4_2 -D __SunOS -D __STDC_ISO_10646__ -D __EXTENSIONS__" export CXXFLAGS=$CFLAGS
Bootstrapping
Boostrap script needs to be able to run same subshells as parent. If bootstrap fails on genmf, then the subshell has fallen back to the default /bin/sh which isn't posix compliant. In that case, you need to patch as follow:
@@ -97,7 +97,7 @@ AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])]) EOF fi -modules/genmf `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac` +$SHELL modules/genmf `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
ACLOCAL_ARGS="-I /usr/local/share/aclocal/" export ACLOCAL_ARGS /usr/xpg4/bin/sh bootstrap
Configure
/usr/xpg4/bin/sh configure --with-a52=/opt/csw/ --with-mad=/opt/csw/ --disable-libgcrypt --disable-remoteosd --disable-skins2 --disable-glx
Sun Studio: Add --disable-qt4 if required. (Qt 4.6.0 Currently fails)