diff options
author | Eric Hameleers <alien@slackware.com> | 2018-01-02 21:19:27 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2018-01-02 21:19:27 +0000 |
commit | eae425b00f7474c8089c84604b3d4a5d3c1e4f32 (patch) | |
tree | f4f3c9fa7d01182e369a46e173bd55aa5e8ec9f7 /vlc2 | |
parent | f24b1a359ae5563a2da7c176dcee4d997f112882 (diff) | |
download | asb-eae425b00f7474c8089c84604b3d4a5d3c1e4f32.tar.gz asb-eae425b00f7474c8089c84604b3d4a5d3c1e4f32.tar.xz |
vlc: fix hardware decoding in ffmpeg3 variant.
Diffstat (limited to 'vlc2')
-rwxr-xr-x | vlc2/build/vlc2.SlackBuild | 4351 |
1 files changed, 4351 insertions, 0 deletions
diff --git a/vlc2/build/vlc2.SlackBuild b/vlc2/build/vlc2.SlackBuild new file mode 100755 index 00000000..918d8494 --- /dev/null +++ b/vlc2/build/vlc2.SlackBuild @@ -0,0 +1,4351 @@ +#!/bin/bash +# $Id$ +# Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Eric Hameleers, Eindhoven, Netherlands +# +# Permission to use, copy, modify, and distribute this software for +# any purpose with or without fee is hereby granted, provided that +# the above copyright notice and this permission notice appear in all +# copies. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# ----------------------------------------------------------------------------- +# +# Slackware SlackBuild script +# =========================== +# By: Eric Hameleers <alien@slackware.com> +# For: vlc +# Descr: multimedia player for various audio and video formats +# URL: http://www.videolan.org/vlc/ +# Buildneeds: apache-ant +# Needs: libdvdcss for playing encrypted DVDs +# Changelog: +# 0.8.6a-1: 15/Mar/2007 by Eric Hameleers <alien@slackware.com> +# * Initial build. +# 0.8.6b-1: 25/apr/2007 by Eric Hameleers <alien@slackware.com> +# * Update. +# 0.8.6c-1: 04/sep/2007 by Eric Hameleers <alien@slackware.com> +# * Update. Allow vlc to be built without patented code (lame/amr). +# 0.8.6d-1: 12/dec/2007 by Eric Hameleers <alien@slackware.com> +# * Update with a vulnerability bugfix. All external libraries +# were updated to their most recent release. +# This pkg adds support for firewire cameras, DV and DVB cards. +# AMR audio codec is not supported in this build (I could not +# create a vlc binary successfully). +# Again, the resulting binary package requires no additional +# non-Slackware packages, except for libdvdcss in case you want +# to watch an encrypted DVD. +# 0.8.6d-2: 29/jan/2008 by Eric Hameleers <alien@slackware.com> +# * Disable building AMR. The 0.8.6d official release does +# not have support for AMR audio codec re-added yet. +# Also, add the AAC en/decoder to the PATENTED software. +# Build with dll loader support only on 32bit platform. +# 0.8.6e-1: 02/mar/2008 by Eric Hameleers <alien@slackware.com> +# * New release fixes security issues. +# 0.8.6e-2: 23/mar/2008 by Eric Hameleers <alien@slackware.com> +# * Update libebml; new ffmpeg,live555 snapshots +# 0.8.6f-1: 03/apr/2008 by Eric Hameleers <alien@slackware.com> +# * New release (bugfixes). Also updated the snapshot for ffmpeg +# 0.8.6f-2: 03/apr/2008 by Eric Hameleers <alien@slackware.com> +# * Updated the snapshot for ffmpeg +# 0.8.6g-1: 31/may/2008 by Eric Hameleers <alien@slackware.com> +# * New release. Updated the snapshot for ffmpeg and live555, +# updated libtheora. +# 0.8.6h-1: 10/jun/2008 by Eric Hameleers <alien@slackware.com> +# * New release. Repaired the broken matroska support (thanks to +# Thomas Morper who submitted a fix for the SlackBuild. +# 0.8.6h-2: 15/jun/2008 by Eric Hameleers <alien@slackware.com> +# * Fixed the broken DTS audio codec support (did not play +# 6 channel sound here) +# 0.8.6h-3: 17/jun/2008 by Eric Hameleers <alien@slackware.com> +# * Added Universal Plug'n'Play (upnp) client support. +# Updated the live555 tarball to 20080605. +# Updated the x264 snapshot- this now requires the yasm assembler +# to be installed in order to compile successfully. If you don't +# have/want that, set the variable REQUIRE_YASM to a value of "NO" +# (see further down) so that the script will fall back to an older +# x264 snapshot that does not require yasm to compile. Updated +# libcdio to 0.80. Re-introduce AMR audio encoding to the package. +# 0.8.6i-1: 09/jul/2008 by Eric Hameleers <alien@slackware.com> +# * New release. Also updated to the new lame-3.98. +# 0.9.1-1: 31/aug/2008 by Eric Hameleers <alien@slackware.com> +# * The first in a new series of 0.9.x - these are source-only +# releases for now, meaning that the developers are not yet +# convinced 0.9.x is ready to replace 0.8.x. +# Note that the vlc 0.9 releases fail to compile a static vlc. +# According to the developers whis will not be fixed. Still, this +# vlc package is without external dependencies as always ;-) +# Updated lame to v3.89, speex to 1.2rc1 and libmpeg2 to 1.5.1. +# Updated snapshots for ffmpeg to r14080; live555 to 2008.07.25; +# started using libdvdread/libdvdnav releases from mplayerhq.hu. +# For dirac video I now use the far better schroedinger instead +# of the reference 'dirac' implementation. +# I added documentation for all the libraries which I include. +# Notes for package (re)builders: +# The SlackBuild will by default use a static version of the Qt4 +# library. If you already have Qt4 installed, you may choose to +# build vlc against that dynamic library; in that case run: +# # STATIC_QT4=NO ./vlc.SlackBuild +# to build your vlc package. +# If you already have ffmpeg installed and want to use that, run +# # STATIC_FFMPEG=NO ./vlc.SlackBuild +# to build your vlc package. +# Of course, if you have both QT4 and ffmpeg already available, +# you can combine the above two commands to: +# # STATIC_QT4=NO STATIC_FFMPEG=NO ./vlc.SlackBuild +# Lastly, it is worth noting that building any recent X264 +# library fails with Slackware 12.1 (and earlier)'s nasm. +# Either install yasm, or let the script automatically fall back +# to an older version of the X264 like this: +# # REQUIRE_YASM=NO ./vlc.SlackBuild +# 0.9.2-1: 10/sep/2008 by Eric Hameleers <alien@slackware.com> +# * Updated to 0.9.2 +# 0.9.3-1: 30/sep/2008 by Eric Hameleers <alien@slackware.com> +# * Updated to 0.9.3 +# Fixed video playback thanks to phobos3576 of the slacky.eu +# forum for finding the fix and Andrea Tornese for reporting it. +# 0.9.4-1: 07/oct/2008 by Eric Hameleers <alien@slackware.com> +# * Updated to 0.9.4. Added libass to render 'formatted' +# subtitles. Updated live555 to 2008.09.02. Updated the ffmpeg +# snapshot to 20081007. Now default to using dynamically linked +# QT4 (requires that you install a QT4 package yourself +# prior to compiling VLC!) +# 0.9.5-1: 26/oct/2008 by Eric Hameleers <alien@slackware.com> +# * Updated to 0.9.5. New snapshots for ffmpeg x264 added. QT4 +# compiled statically again because VLC is sensitive to the +# version it builds against. +# 0.9.5-2: 29/oct/2008 by Eric Hameleers <alien@slackware.com> +# * Re-enable embedded video display. Thanks to Thomas Morper who +# verified that this works reliably with vlc-0.9.5 and qt-4.4.3 ! +# 0.9.5-3: 05/nov/2008 by Eric Hameleers <alien@slackware.com> +# * Updated libtheora to 1.0 and libcdio to 0.81 +# 0.9.6-1: 08/nov/2008 by Eric Hameleers <alien@slackware.com> +# * New release. Updated ffmpeg/x264 snapshots. +# 0.9.8-1: 02/dec/2008 by Eric Hameleers <alien@slackware.com> +# * New release. Updated ffmpeg/x264/live555 versions. Added midi +# playback support through fluidsynth +# 0.9.8a-1: 04/dec/2008 by Eric Hameleers <alien@slackware.com> +# * VLC bugfix release... also took the opportunity to fix *my* +# broken build of the dca and fluidsynth modules. +# 0.9.8a-2: 04/dec/2008 by Eric Hameleers <alien@slackware.com> +# * Updated ffmpeg/x264 snapshots, and re-adding firewire support +# 0.9.8a-3: 28/dec/2008 by Eric Hameleers <alien@slackware.com> +# * Updated ffmpeg/x264 snapshots, made it build on x86_64 with the +# help of Attila Craciun. +# 20090307-1: 07/mar/2009 by Eric Hameleers <alien@slackware.com> +# * Updated ffmpeg/x264/live55 snapshots, fix default font for +# x86_64, fix DTS audio decoding on x86_64 +# 0.9.9.rc2-1:18/mar/2009 by Eric Hameleers <alien@slackware.com> +# * Building the first release candidate. +# 0.9.9.rc2-2:27/mar/2009 by Eric Hameleers <alien@slackware.com> +# * Fix AAC decoding by removing "--with-drm" +# 0.9.9-1: 27/mar/2009 by Eric Hameleers <alien@slackware.com> +# * Try to fix ffmeg video decoding as well as upgrade to 0.9.9; +# apply several fixes taken from 1.0.0-git to fix x264 encoding. +# 1.0.0.pre2-1: 04/may/2009 by Eric Hameleers <alien@slackware.com> +# * This is 1.0.0-pre2. I like it much more than the +# 'stable' 0.9.x. Furthermore, DVD playback was broken in +# my 0.9.9 package, so I needed to release an update. +# 1.0.0.rc1-1: 11/may/2009 by Eric Hameleers <alien@slackware.com> +# * The first release candidate for 1.0.0 +# 1.0.0.rc2-1: 26/may/2009 by Eric Hameleers <alien@slackware.com> +# * The second release candidate for 1.0.0 +# 1.0.0.rc3-1: 09/jun/2009 by Eric Hameleers <alien@slackware.com> +# * The third release candidate for 1.0.0 +# 1.0.0.rc4-1: 18/jun/2009 by Eric Hameleers <alien@slackware.com> +# * The fourth release candidate for 1.0.0. +# Also updated live plugin to 2009.06.02 +# 1.0.0-1: 06/jul/2009 by Eric Hameleers <alien@slackware.com> +# * VLC 1.0.0 has been released! +# 1.0.1-1: 28/jul/2009 by Eric Hameleers <alien@slackware.com> +# * An update that fixes a realrtsp vulnerability. Also updated +# x264/live555 snapshots and added support for lua playlist, +# metafetcher and interface plugins. By default, this script +# no longer links Qt4 statically and instead links against an +# already installed Qt libray. +# 1.0.1-2: 30/jul/2009 by Eric Hameleers <alien@slackware.com> +# * Fix the swscale plugin +# 1.0.2-1: 19/sep/2009 by Eric Hameleers <alien@slackware.com> +# * Update. +# 1.0.3-1: 31/oct/2009 by Eric Hameleers <alien@slackware.com> +# * Update. New version of the theora encoder. +# Other upgrades: libkate, schroedinger. +# Downgraded libraw1394 to 1.2.0 which is the last 1.x version +# found on sourceforge, now that the original linux1394.org site +# has disappeared (using new download URL too). +# 1.0.3-2: 02/nov/2009 by Eric Hameleers <alien@slackware.com> +# * Try to fix broken firewire support (libraw1394). Allow root to +# run vlc. +# 1.0.3-3: 13/nov/2009 by Eric Hameleers <alien@slackware.com> +# * Fix the broken fullscreen in KDE-4.3.3; added a newer snapshot +# for live555 and x264. +# 1.0.3-4: 08/dec/2009 by Eric Hameleers <alien@slackware.com> +# * Upgrade internal ffmpeg to latest SVN, and update the x86_64 +# assembler patch for ffmpeg to enable mmx/sse support which +# (according to Thomas Morper who supplied the updated patch) +# fixes choppy HD video playback. Disabled vdpau support because +# that will not compile unless you have NVIDIA binary drivers +# installed. +# Also updated live555/x264 to their latest snapshots. +# Switched to the GPL'ed opencore AMR codec (spin-off from +# Google Android project). +# 1.0.3-5: 10/dec/2009 by Eric Hameleers <alien@slackware.com> +# * Make the dc1394 plugin work by patching VLC to use the new API. +# 1.0.4-1: 11/dec/2009 by Eric Hameleers <alien@slackware.com> +# * New release. The ffmpeg/x264 snapshots were updated. +# 20091228-1: 28/dec/2009 by Eric Hameleers <alien@slackware.com> +# * Test of git snapshot (1.1.git) +# 1.1.0.pre3-1: 01/may/2010 by Eric Hameleers <alien@slackware.com> +# * Update to git snapshot 1.1.0.pre3. Also updated ffmpeg, live555 +# and x264 snapshots. Fixed the ffmpeg checkout so that we can +# control what version of swscale gets used. Fixed the checkout +# of vlc so that we can get a snapshot from any date, +# not just HEAD. Updated fluidsynth plugin to 1.1.1. Updated +# libdvbpci plugin to 0.1.7. +# Updated to schroedinger 1.0.9 which is finally on par with +# the dirac codec's speed and quality. Added projectM +# visualisation plugin and re-enabled ggi plugin. +# Added support for VAAPI, i.e. GPU-accelerated playback of H264. +# Fixed the qt4 build so that it is really isolated from any +# pre-existing qt4 installation on your computer. Used an +# internal xulrunner sdk to build the mozilla-plugin. +# Copy all patches used by this script into the package's +# documentation directory. +# If you want to control what version of VLC to checkout of GIT, +# you should use the VERSION variable (older script used SRCVER). +# 1.1.0.pre4-1: 22/may/2010 by Eric Hameleers <alien@slackware.com> +# * Update to git snapshot 1.1.0.pre4. Also updated ffmpeg and x264 +# snapshots. Changed from libv4l to v4l-utils. +# 20100523-1: 23/may/2010 by Eric Hameleers <alien@slackware.com> +# * Update VLC snapshot to one that supports the new Google VP8. +# Also apply webm patches to the ffmpeg snapshot. VLC can now +# playback .webm files (but not encode yet as far as I know). +# 1.1.0.rc-1: 24/may/2010 by Eric Hameleers <alien@slackware.com> +# * Update to the release candidate for 1.1.0. Fix VAAPI support +# (now depends on external packages to supply the actual harware +# drivers: libva (intel, als needed for nvidia & ati), and one of +# vdpau-video (nvidia) or xvba-video (ati). +# 1.1.0.rc-2: 25/may/2010 by Eric Hameleers <alien@slackware.com> +# * Upgrade to final release candidate (yes, sounds weird) and fix +# a bug in displaying DVD menus +# 1.1.0.rc2-1:03/jun/2010 by Eric Hameleers <alien@slackware.com> +# * Upgrade to 1.1.0 second release candidate. +# Upgraded EBML/Matroska libraries to 0.8.0/0.9.0 (new release +# after a long time). +# 20100609-1: 09/jun/2010 by Eric Hameleers <alien@slackware.com> +# * Update VLC snapshot to try and get rid of segfaults in the +# VAAPI routines. Also updated ffmpeg (now fully supports VP8 +# codec, so no additional patching required anymore) and x264 +# libraries, and live555. +# 1.1.0.rc3-1:11/jun/2010 by Eric Hameleers <alien@slackware.com> +# * Upgrade to 1.1.0 third release candidate. +# Unfortunately, I still see segfaults in VLC when VAAPI hardware +# decoding support is activating by installing libva package... +# 1.1.0.rc3-2:13/jun/2010 by Eric Hameleers <alien@slackware.com> +# * Add a patch to fix the VAAPI segfaults. My debugger backtrace +# allowed fenrir to spot and repair the bug. +# 1.1.0.rc4-1:16/jun/2010 by Eric Hameleers <alien@slackware.com> +# * Update to RC4 for the upcoming 1.1.0 release. +# 1.1.0-1: 21/jun/2010 by Eric Hameleers <alien@slackware.com> +# * Official release of vlc 1.1.0. +# ffmpeg was updated to 0.6 (another official release, yay); +# x264 and libvpx were updated to a recent snapshot; +# libebml, libmatroska, libcdio and orc were upgraded to their +# newest versions. +# 20100714-1: 14/jul/2010 by Eric Hameleers <alien@slackware.com> +# * Test build of what will be 1.1.1, with updated x264 and live555. +# 1.1.1-1: 20/jul/2010 by Eric Hameleers <alien@slackware.com> +# * Official release of vlc 1.1.1. +# 1.1.3-1: 22/aug/2010 by Eric Hameleers <alien@slackware.com> +# * Update to 1.1.3. +# 1.1.5-1: 12/nov/2010 by Eric Hameleers <alien@slackware.com> +# * New release. +# Enabled ncurses support. +# Updated ffmpeg/libva/live555/schroedinger/x264 libraries. +# Updated the xulrunner SDK used to compile the browser plugin. +# 1.1.5-2: 29/nov/2010 by Eric Hameleers <alien@slackware.com> +# * Try to fix the segfault of goom visualization plugin on 32bit. +# Fix projectM audio visualization for non-US locales. +# 1.1.5-3: 29/dec/2010 by Eric Hameleers <alien@slackware.com> +# * Updated x264, libkate, libtiger, libass and libvpx, and used +# the latest xulrunner for building the mozilla plugin. +# 20101230-1: 30/dec/2010 by Eric Hameleers <alien@slackware.com> +# * With updated dependencies, it is time to test 1.2.0.git. +# Starting with 1.2.0, the mozilla plugin has been separated +# from the vlc sources and re-designed for stability. Its new +# package name is "npapi-vlc". Upgrade an old vlc-mozplugin with +# this new package! +# 20110827-1: 28/aug/2011 by Eric Hameleers <alien@slackware.com> +# * With updated dependencies again. I Had to disable the stream +# switcher because even with a patch it would give compilation +# errors (vlc's configure does not enable it by default anyway). +# 20110910-1: 10/sep/2011 by Eric Hameleers <alien@slackware.com> +# * Updated snapshots for vlcgit and x264. +# 20111006-1: 06/oct/2011 by Eric Hameleers <alien@slackware.com> +# * Added (unencrypted) bluray playback support. +# Updated the ffmpeg, lbvpx, live555, v4l and x264 support +# libraries. +# 20111016-1: 16/oct/2011 by Eric Hameleers <alien@slackware.com> +# * Updated internal bluray, dvdnav/dvdread, ebml/matroska, +# live555, orc, x264 libraries. +# Also updated to 20111016 snapshots of vlc and npapi-vlc. +# 20111114-1: 14/nov/2011 by Eric Hameleers <alien@slackware.com> +# * Time to check out the status of 1.2.pre1 (already ten days of +# development since that tag but still) and I took the liberty +# to refresh a lot of the dependencies too: +# I updated internal ass, bluray, dvbpsi, ffmpeg, fluidsynth, +# kate, lame, live555, twolame, v4l-utils, x264 libraries. +# Added internal fribidi library to satisfy the new libass +# requirement. +# 20111202-1: 02/dec/2011 by Eric Hameleers <alien@slackware.com> +# * Updated internal ffmpeg, libupnp, libmpc (switched to +# recommended SVN tarball), x264 libraries. +# Added librtmp and libgsm libraries to ffmpeg. +# Froze the version of live555 to match the vlc patches. +# 20111223-1: 23/dec/2011 by Eric Hameleers <alien@slackware.com> +# * Updated snapshot as well as internal ffmpeg, x264. +# Patched LUA compiler to only use 32-bit LUAC file format. +# Updated libbluray (now called 'first useable version' by the +# developers), added builtin dvdcss support (if USE_PATENTS is +# set to "YES") +# 2.0.0-1 17/feb/2012 by Eric Hameleers <alien@slackware.com> +# * New release! Version 2.0 was originally named 1.2 but the +# developers deciced that there were so many changes after 1.1.x +# that a version bump to 2.0 would reflect this better. +# The set of internal libraries was again updated to their most +# recent versions. If you miss any library that I should add, +# let me know! +# 2.0.1-1 17/mar/2012 by Eric Hameleers <alien@slackware.com> +# * Update to 2.0.1 while keeping the internal dependencies +# unchanged. +# 2.0.2-1 27/jun/2012 by Eric Hameleers <alien@slackware.com> +# * New release. Further updates to internal bluray, ffmpeg, lame, +# and x264 libraries. +# 2.0.3-1 25/jul/2012 by Eric Hameleers <alien@slackware.com> +# * New release. +# 2.0.4-1 18/oct/2012 by Eric Hameleers <alien@slackware.com> +# * New release. Updates to internal Shout, aacenc, amrwbenc, amr, +# lua, upnp, v4l, x264 libraries. +# Stop using internal xulrunner SDK to build the browser plugin, +# Slackware's own seamonkey can do this now. +# 2.0.4-2 29/oct/2012 by Eric Hameleers <alien@slackware.com> +# * Fix uPnP support by downgrading libupnp. Added opus encoder +# support. Updated bluray, ffmpeg, vpx, x264 libraries. +# 2.0.5-1 12/dec/2012 by Eric Hameleers <alien@slackware.com> +# * Update. Rolled back the internal ffmpeg to snapshot r44967 +# (git 82db8ee) (pre-planar) until the bugs caused by FFmpeg's +# planar audio changes are fixed. +# 2.0.5-2 02/feb/2013 by Eric Hameleers <alien@slackware.com> +# * Apply patch for VideoLAN-SA-1302 (critical vulnerability in +# the ASF demuxer). +# 2.0.6-1 08/apr/2013 by Eric Hameleers <alien@slackware.com> +# * New release. Updates to the internal ffmpeg fribidi live555 +# libvpx and x264 libraries. +# 2.0.6-2 12/apr/2013 by Eric Hameleers <alien@slackware.com> +# * Fix the broken uPnP service discovery module which caused +# audio stuttering in some videos. +# 2.0.7-1 28/may/2013 by Eric Hameleers <alien@slackware.com> +# * New release. Build fixes for ARM, new snapshots for libdvdread +# and libdvdnav (now maintained by VideoLAN) and a new attempt at +# static linking of DVDCSS. +# 2.0.8-1 10/aug/2013 by Eric Hameleers <alien@slackware.com> +# * New release. +# 20130818-1 19/aug/2013 by Eric Hameleers <alien@slackware.com> +# * Pre-release. Removed the internal v4l-utils since Slackware's +# own is good enough. Many upgrades to internal libraries: +# ffmpeg, fluidsynth, libass, libcdio, libdc1394, libdvbpsi, +# libebml, libmatroska, libva, opus, orc, schroedinger, +# vcdimager, vo-amrwbenc, x264. +# 2.1.0-1 26/sep/2013 by Eric Hameleers <alien@slackware.com> +# * New release: 2.1.0! +# 2.1.1-1 16/nov/2013 by Eric Hameleers <alien@slackware.com> +# * Bugfix release. Internal updates for ass, ffmpeg, matroska, +# x264; added taglib to replace the old Slackware library. +# 2.1.2-1 10/dec/2013 by Eric Hameleers <alien@slackware.com> +# * New release. Enable 10-bit decoder in x624. +# Updates to bluray, dvdnav, dvdread, ffmpeg, fribidi, live555, +# opus, speex, x264. +# 2.1.2-2 11/dec/2013 by Eric Hameleers <alien@slackware.com> +# * Add VDPAU driver. +# 2.1.2-3 13/dec/2013 by Eric Hameleers <alien@slackware.com> +# * Fixed the unexpectedly introduced external dependency on +# shared libvdpau libraries - vlc will now work again +# even if you do not have libvdpau installed. +# Also, fixed the (long) broken rtmp support. +# 2.1.2-4 20/jan/2014 by Eric Hameleers <alien@slackware.com> +# * Fixed stuttering video in digital video streams by reverting +# to an older libdvbpsi source. Updated the ffmpeg snapshot. +# 2.1.3-1 04/feb/2014 by Eric Hameleers <alien@slackware.com> +# * New release with updates to internal live555 library and npapi +# browser plugin. +# I tried a more recent ffmpeg but that breaks mpeg4 playback +# with vdpau gpu hardware decoding. +# 2.1.4-1 26/feb/2014 by Eric Hameleers <alien@slackware.com> +# * New release. No updates to internal libraries. +# 2.1.5-1 02/aug/2014 by Eric Hameleers <alien@slackware.com> +# * New release. Updates to internal libraries: ass, ffmpeg, +# dvdnav, dvdread, live555, x264. +# 2.2.0-1 27/feb/2015 by Eric Hameleers <alien@slackware.com> +# * First release of 2.2. +# New libraries: asdcplib, speexdsp, x262, x265. +# Updates for ffmpeg, libass, libbluray, libdvbpsi, libdvdcss, +# libdvdnav, libdvdread, libebml, libmatroska, libupnp, libvdpau, +# live, orc, speex, vo-aacenc, x264. +# 2.2.0-2 01/mar/2015 by Eric Hameleers <alien@slackware.com> +# * Fix hardware video decoding for hybrid cards (thanks manciuleas) +# 2.2.1-1 14/apr/2015 by Eric Hameleers <alien@slackware.com> +# * New release. +# 2.2.1-2 04/may/2015 by Eric Hameleers <alien@slackware.com> +# * Rebuilt for -current where libkate would not compile. +# 2.2.1-3 25/jun/2015 by Eric Hameleers <alien@slackware.com> +# * Updates for ffmpeg, libbluray, libva, libvdpau to try and fix +# performance & tearing issues on gpu-accelerated video playback. +# 2.2.1-4 26/aug/2015 by Eric Hameleers <alien@slackware.com> +# * Rebuilt for Slackware-current with updates to the internal +# libbluray, ffmpeg, libva, live555 and vdpau libraries. +# 2.2.2-1 10/feb/2016 by Eric Hameleers <alien@slackware.com> +# * New release. +# 2.2.2-2 22/feb/2016 by Eric Hameleers <alien@slackware.com> +# * Rebuilt slackware-current version without Qt5 dependency. +# 2.2.4-1 07/jul/2016 by Eric Hameleers <alien@slackware.com> +# * Update. New versions of internal support libraries: x262, +# opus, libva and libmpcdec. +# 2.2.5.1-1 24/may/2017 by Eric Hameleers <alien@slackware.com> +# * Update. +# 2.2.6-1 25/may/2017 by Eric Hameleers <alien@slackware.com> +# * Update. +# 2.2.6-2 26/oct/2017 by Eric Hameleers <alien@slackware.com> +# * Rebuilt for -current to fix broken TLS support. +# 2.2.8-1 29/nov/2017 by Eric Hameleers <alien@slackware.com> +# * Update. New versions of internal support libraries: +# bluray, dvbpsi, ebml, ffmpeg, lame, matroska, opus, ssh2, +# vaapi, x262, x264, x265. +# Removed: orc/schroedinger (no longer developed). +# Removed: libggi (obsoleted, unsupported). +# Removed: aacenc, faad2/faac libraries (not used anymore). +# 2.2.8-2 06/dec/2017 by Eric Hameleers <alien@slackware.com> +# * Add a switch "USE_FFMPEG3" which defaults to "NO" and add +# back the code that adds the older ffmpeg2 engine to the vlc +# package instead of using the new ffmpeg3 snapshot. +# Use the following command to compile a package using the +# ffmpeg3 libraries internally: +# USE_FFMPEG3=YES ./vlc.SlackBuild +# Note: using the ffmpeg3 branch seems to cause segfaults +# in combination with hardware-assisted decoding. +# 2.2.8-3 02/jan/2018 by Eric Hameleers <alien@slackware.com> +# * Fix hardware decoding in ffmpeg3 variant. +# +# Run 'sh vlc.SlackBuild' to build a Slackware package. +# The package (.txz) plus descriptive .txt file are created in /tmp . +# Install using 'installpkg'. +# +# ----------------------------------------------------------------------------- + +# +# NOTE: this SlackBuild is a monster - it tries to wrap all dependencies to +# vlc into the resulting package by building these deps as static libraries +# and then in the final stage linking vlc against all the static libraries. +# The resulting package has all the vlc functionality and does not depend on +# any software that is not present in a standard full install of Slackware. +# This makes my package quite different from all the other vlc builds that are +# floating around on the Internet. +# /Eric Hameleers/ +# + +# ----------------------------------------------------------------------------- +# Set initial variables: + +PRGNAM=vlc +PRGNAM2=npapi-vlc +BUILD=${BUILD:-3} +NPBUILD=${NPBUILD:-1} +TAG=${TAG:-"alien"} + +PKGTYPE=${PKGTYPE:-"txz"} +SLACKVER=${SLACKVER:-$(cat /etc/slackware-version| cut -d' ' -f2)} + +# VERSION value may be modified later! +# * If VERSION is set to "HEAD" or to any value starting with "20", +# (i.e. a "yyyymmdd" date format like "20100319") then you get +# a git snapshot of the 'master' branch; +# * A format of "branchname#" or "branchname#yymmdd" means you will get a +# checkout from branch "branchname", optionally from the specified date. +# * Else we look for the tarball for $VERSION in vlc's official releases. +# +# Hint: checkout at a certain date takes a snapshot at 00:00, not 23:59) +# +# Acceptible formats: +#VERSION=${VERSION:-"2.0.8"} +#VERSION=${VERSION:-"20130181"} +#VERSION=${VERSION:-"HEAD"} +#VERSION=${VERSION:-"master#20130818"} +#VERSION=${VERSION:-"@1.1.0-bugfix#20120217"} +#VERSION=${VERSION:-"master@git://git.videolan.org/vlc/vlc-2.1.git#20130818"} + +# At some point, the 1.2 development branched off the master tree: +#DEFGITURI=${GITURI:-"git://git.videolan.org/vlc.git"} +DEFGITURI=${GITURI:-"git://git.videolan.org/vlc/vlc-2.2.git"} + +VERSION=${VERSION:-"2.2.8"} + +DOCS="ABOUT-NLS AUTHORS COPYING HACKING INSTALL NEWS README THANKS" + +NUMJOBS=${NUMJOBS:--j7} # Number of parallel jobs for the compiler + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +case "$ARCH" in + i?86) SLKCFLAGS="-O2 -march=${ARCH} -mtune=i686" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; + x86_64) SLKCFLAGS="-O2 -fPIC" + SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64" + ;; + armv7hl) SLKCFLAGS="-O2 -fPIC -march=armv7-a -mfpu=vfpv3-d16" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; + armv6hl) SLKCFLAGS="-O2 -march=armv6 -mfpu=vfp -mfloat-abi=hard" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; + armv5hl) SLKCFLAGS="-O2 -mthumb -march=armv5te -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=softfp" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; + *) SLKCFLAGS="-O2" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; +esac + +case "$ARCH" in + arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; + *) TARGET=$ARCH-slackware-linux ;; +esac + +# ----------------------------------------------------------------------------- + +# -- PATENT ALERT! -- +# FFmpeg can be built with AAC encoding but this has patent & license issues. +# You can build these patended algorithms into ffmpeg, and if you are an +# ordinary end user, no one will bother you for using them. +# For the binaries based on this SlackBuild that I distribute, it is a +# different story. I am not allowed to distribute binary packages that +# incorporate patented code. So here you go. My Slackware package was built +# with "USE_PATENTS=NO" i.e. without using the AAC encoding libraries. +#USE_PATENTS="NO" +USE_PATENTS=${USE_PATENTS:-"YES"} +USE_PATENTS=$(echo $USE_PATENTS | tr 'a-z' 'A-Z') + +# If you set REQUIRE_YASM to "NO" then the script won't refuse to build +# VLC in case you don't have yasm installed (it is needed to +# build x264 newer than the 20080301 snapshot). In this case, the script will +# automatically 'downgrade' x264 to the 20080301-2245 snapshot. +REQUIRE_YASM=${REQUIRE_YASM:-"YES"} +REQUIRE_YASM=$(echo $REQUIRE_YASM | tr 'a-z' 'A-Z') + +# VLC uses Qt4 for its GUI. +# Slackware 13.0 already has Qt4 installed, this will speed up +# the compilation a lot, and create a smaller vlc package. +# In that case, define STATIC_QT4="NO" to use the system version of Qt4. +# If you want an all-in package (including static version of Qt4), then +# define STATIC_QT4="YES": +STATIC_QT4=${STATIC_QT4:-"NO"} +STATIC_QT4=$(echo $STATIC_QT4 | tr 'a-z' 'A-Z') + +# VLC uses ffmpeg's avcodec for a lot of the AV processing. +# If you already have ffmpeg installed, it will speed up the compilation, +# and create a smaller vlc package, if you define STATIC_FFMPEG="NO": +# Note: I _strongly_ suggest you compile ffmpeg statically! +STATIC_FFMPEG=${STATIC_FFMPEG:-"YES"} +STATIC_FFMPEG=$(echo $STATIC_FFMPEG | tr 'a-z' 'A-Z') + +# When compiling ffmpeg statically, use the ffmpeg2 branch by default. +# Set this to "YES" to use a ffmpeg3 snapshot instead: +USE_FFMPEG3=${USE_FFMPEG3:-"NO"} + +# You can disable building the Mozilla plugin by defining MOZPLUGIN="NO": +MOZPLUGIN=${MOZPLUGIN:-"YES"} +MOZPLUGIN=$(echo $MOZPLUGIN | tr 'a-z' 'A-Z') + +# Let VLC link dynamically to libva* and libvdpau if those are present: +if pkg-config --exists libva 2>/dev/null ; then + STATIC_LIBVA=${STATIC_LIBVA:-"NO"} +else + STATIC_LIBVA=${STATIC_LIBVA:-"YES"} +fi + +# Explicitly enable pulseaudio or it will not be picked up by ffmpeg: +if pkg-config --exists libpulse 2>/dev/null ; then + USE_PULSE="--enable-libpulse" +else + USE_PULSE="" +fi + +# ----------------------------------------------------------------------------- +# We're done with the initials. Let's move on: +# ----------------------------------------------------------------------------- + +# Dependent package versions +if [ "${USE_FFMPEG3}" = "YES" -o "${USE_FFMPEG3}" = "yes" ]; then + FFMPEG=eaff5fc # ffmpeg3 git snapshot 06 dec 2017 +else + FFMPEG=cdb0225 # ffmpeg2 git snapshot 16 feb 2016 +fi +A52=0.7.4 +AACENC=0.1.2 +AMRWBENC=0.1.3 +AMR=0.1.3 +ASDCPLIB=1.12.58 +ASS=0.13.6 +AVC1394=0.5.4 +BLURAY=1.0.1 +CDDB=1.3.2 +CDIO=0.90 +DAAP=0.4.0 +DC1394=2.2.1 +DCA=0.0.5 +DV=1.0.0 +DVBPSI=1.3.1 +DVDNAV=5.0.3 +DVDREAD=5.0.3 +DVDCSS=1.4.0 +EBML=1.3.5 +FAAC=1.28 +FLUID=1.1.6 +FRIBIDI=0.19.7 +GII=1.0.2 +GLEW=2.1.0 +GOOM=2k4-0 +GSM=1.0.16 +KATE=0.4.1 +LAME=3.100 +LIBVA=2.0.0 +LIVE=2016.02.22 +LUA=5.1.5 +MATROSKA=1.4.8 +MPCDEC=r481 +MPEG2DEC=0.5.1 +NPAPI=20171129 +OPUS=1.2.1 +PROJECTM=2.0.1 +QT4=4.8.7 +RAW1394=2.0.5 +SHOUT=2.4.1 +SPEEX=1.2.0 +SPEEXDSP=1.2rc3 +SSH2=1.4.3 +TAGLIB=1.11 +THEORA=1.1.1 +TIGER=0.3.4 +TWOLAME=0.3.13 +UPNP=1.6.19 +VCD=0.7.24 +VDPAU=1.1.1 +VPX=1.6.1 +X262=20171128 +X264=20171128-2245 +X265=2.5 + +# Determine what X we're running (the modular X returns the prefix +# in the next command, while older versions stay silent): +XPREF=$(pkg-config --variable=prefix x11) || true +[ "$XPREF" == "" ] && XPREF='/usr/X11R6' + +# Where do we look for sources? +SRCDIR=$(cd $(dirname $0); pwd) + +# Place to build (TMP) package (PKG) and output (OUTPUT) the program: +TMP=${TMP:-"/tmp/build"} +PKG=$TMP/package-$PRGNAM +PKG2=$TMP/package-$PRGNAM2 +OUTPUT=${OUTPUT:-"/tmp"} + +# This is where we are going to temporarily install the dependencies: +VLCDEPSDIR="$TMP/tmp-$PRGNAM/vlcdeps" + +# Building bluray plugin requires Apache Ant: +if ! which ant 1>/dev/null 2>/dev/null ; then + echo "+++ ANT not present - the build will abort on compiling bluray support! +++" + echo "+++ Press Ctrl-C within 10 seconds, install 'apache-ant' and login again. +++" + sleep 10 +fi + +# Building the mozilla plugin requires the Sun Java SDK: +if [ "$MOZPLUGIN" == "YES" ]; then + if ! which javac 1>/dev/null 2>/dev/null ; then + echo "+++ NOT building mozilla plugin - Needs Sun JDK from /extra! +++" + MOZPLUGIN="NO" + fi +fi + +# --------------------------------------------------------------------------- +# Source tarballs and source URLs. +# Sources which are not patented should have SRCPAT[n]="NO" +# Sources which are patented should have SRCPAT[n]="YES" which prevents then +# from being downloaded and used if we build a patent-free package. +# --------------------------------------------------------------------------- + +# VLC source +if [ "$VERSION" == "HEAD" ]; then + # We check out git's HEAD: + BRANCH="master" + GITURI=${DEFGITURI} + SRCVER=$(date +%Y%m%d) + SRCURL[0]="" +elif [ "$(echo $VERSION | cut -c1-2)" == "20" ]; then + # We check out git at a specific date: + BRANCH="master" + GITURI=${DEFGITURI} + SRCVER=$VERSION + SRCURL[0]="" +elif [ "$(echo $VERSION| cut -d# -f2)" != "$VERSION" ]; then + # VERSION has a hashmark it it (branchname@gituri#datestamp) + BRANCH="$(echo $VERSION| cut -d# -f1 |cut -d@ -f1)" + GITURI="$(echo $VERSION| cut -d# -f1 |cut -d@ -f2-)" + SRCVER="$(echo $VERSION| cut -d# -f2)" + if [ "x$GITURI" = "x$BRANCH" -o "x$GITURI" = "x" ]; then + GITURI=${DEFGITURI} + fi + if [ "x$BRANCH" = "x" ]; then BRANCH="master" ; fi + if [ "x$SRCVER" = "x" ]; then SRCVER=$(date +%Y%m%d) ; fi + SRCURL[0]="" +else + BRANCH="" + GITURI="" + SRCVER=$VERSION + SRCURL[0]="http://download.videolan.org/pub/videolan/${PRGNAM}/${SRCVER}/${PRGNAM}-${SRCVER}.tar.xz" +fi +SOURCE[0]="$SRCDIR/${PRGNAM}-${SRCVER}.tar.xz" +SRCPAT[0]="NO" +USE[0]="YES" + +# ffmpeg libraries +SOURCE[1]="$SRCDIR/ffmpeg-${FFMPEG}.tar.xz" +#SRCURL[1]="http://git.videolan.org/?p=ffmpeg.git;a=snapshot;h=${FFMPEG};sf=tgz" +SRCURL[1]="" +SRCPAT[1]="NO" +USE[1]="YES" + +# AMR de/encoder libraries used in ffmpeg to encode 3GPP audio +SOURCE[2]="$SRCDIR/opencore-amr-${AMR}.tar.gz" +SRCURL[2]="http://downloads.sourceforge.net/opencore-amr/opencore-amr-${AMR}.tar.gz" +SRCPAT[2]="NO" +USE[2]="YES" + +# Lame is used for the audio in FLV videos; will statically link with ffmpeg +SOURCE[3]="$SRCDIR/lame-$LAME.tar.gz" +SRCURL[3]="http://downloads.sourceforge.net/lame/lame-$LAME.tar.gz" +SRCPAT[3]="NO" +USE[3]="YES" + +# Libtiger - A rendering library for Kate streams using Pango and Cairo +SOURCE[4]="$SRCDIR/libtiger-${TIGER}.tar.gz" +SRCURL[4]="http://libtiger.googlecode.com/files/libtiger-${TIGER}.tar.gz" +SRCPAT[4]="NO" +USE[4]="YES" + +# Lua - embedded interpreter for lua playlist, metafetcher and interface plugins +SOURCE[5]="$SRCDIR/lua-${LUA}.tar.gz" +SRCURL[5]="http://www.lua.org/ftp/lua-${LUA}.tar.gz" +SRCPAT[5]="NO" +USE[5]="YES" + +# Kate - a karaoke/text stream overlay codec +SOURCE[6]="$SRCDIR/libkate-${KATE}.tar.gz" +SRCURL[6]="http://libkate.googlecode.com/files/libkate-${KATE}.tar.gz" +SRCPAT[6]="NO" +USE[6]="YES" + +# DV video, used by most digital (firewire) camcorders: +SOURCE[7]="$SRCDIR/libdv-${DV}.tar.gz" +SRCURL[7]="http://downloads.sourceforge.net/libdv/libdv-${DV}.tar.gz" +SRCPAT[7]="NO" +USE[7]="YES" + +# Qt4 is used for the GUI - VLC will link statically against it +SOURCE[8]="$SRCDIR/qt-x11-opensource-src-$QT4.tar.gz" +SRCURL[8]="http://download.qt-project.org/archive/qt/$(echo $QT4 |cut -d. -f1,2)/${QT4}/qt-everywhere-opensource-src-${QT4}.tar.gz" +SRCPAT[8]="NO" +USE[8]="NO" + +# HEVC (X.265) codec: +SOURCE[9]="$SRCDIR/x265-${X265}.tar.gz" +SRCURL[9]="http://github.com/videolan/x265/archive/${X265}.tar.gz" +SRCPAT[9]="NO" +USE[9]="YES" + +# MPEG-2 Part 2 (X.262) codec: +SOURCE[10]="$SRCDIR/x262-${X262}.tar.gz" +SRCURL[10]="" +SRCPAT[10]="NO" +USE[10]="YES" + +# Matroska support: +SOURCE[11]="$SRCDIR/libebml-$EBML.tar.xz" +SRCURL[11]="http://dl.matroska.org/downloads/libebml/libebml-$EBML.tar.xz" +SRCPAT[11]="NO" +USE[11]="YES" + +SOURCE[12]="$SRCDIR/libmatroska-$MATROSKA.tar.xz" +SRCURL[12]="http://dl.matroska.org/downloads/libmatroska/libmatroska-$MATROSKA.tar.xz" +SRCPAT[12]="NO" +USE[12]="YES" + +# libmpeg2 +SOURCE[13]="$SRCDIR/libmpeg2-$MPEG2DEC.tar.gz" +SRCURL[13]="http://libmpeg2.sourceforge.net/files/libmpeg2-$MPEG2DEC.tar.gz" +SRCPAT[13]="NO" +USE[13]="YES" + +# DVD support: +SOURCE[14]="$SRCDIR/libdvdnav-$DVDNAV.tar.bz2" +SRCURL[14]="http://download.videolan.org/pub/videolan/libdvdnav/${DVDNAV}/libdvdnav-${DVDNAV}.tar.bz2" +#SRCURL[14]="" +SRCPAT[14]="NO" +USE[14]="YES" + +SOURCE[15]="$SRCDIR/libdvdread-${DVDREAD}.tar.bz2" +SRCURL[15]="http://download.videolan.org/pub/videolan/libdvdread/${DVDREAD}/libdvdread-${DVDREAD}.tar.bz2" +#SRCURL[15]="" +SRCPAT[15]="NO" +USE[15]="YES" + +# CD media read/access support (including iso/cue/nrg formats): +SOURCE[16]="$SRCDIR/libcdio-${CDIO}.tar.gz" +SRCURL[16]="http://ftp.gnu.org/gnu/libcdio/libcdio-$CDIO.tar.gz" +SRCPAT[16]="NO" +USE[16]="YES" + +# Since www.vcdimager.org is down, we use a GNU videolan mirror: +SOURCE[17]="$SRCDIR/vcdimager-${VCD}.tar.gz" +SRCURL[17]="http://ftp.gnu.org/gnu/vcdimager/vcdimager-$VCD.tar.gz" +SRCPAT[17]="NO" +USE[17]="YES" + +# MP2 audio (de)coding support: +SOURCE[18]="$SRCDIR/twolame-${TWOLAME}.tar.gz" +SRCURL[18]="http://downloads.sourceforge.net/twolame/twolame-$TWOLAME.tar.gz" +SRCPAT[18]="NO" +USE[18]="YES" + +# Musepack (MPC) audio demuxing support: +SOURCE[19]="$SRCDIR/libmpcdec-${MPCDEC}.tar.gz" +SRCURL[19]="http://download.videolan.org/pub/contrib/musepack_src_${MPCDEC}.tar.gz" +SRCPAT[19]="NO" +USE[19]="YES" + +# GLEW needs to be compiled statically to prevent a clash in newer Slackware± +SOURCE[20]="$SRCDIR/glew-${GLEW}.tgz" +SRCURL[20]="http://downloads.sourceforge.net/glew/${GLEW}/glew-${GLEW}.tgz" +SRCPAT[20]="NO" +USE[20]="YES" + +# SFTP access through libssh2: +SOURCE[21]="$SRCDIR/libssh2-${SSH2}.tar.gz" +SRCURL[21]="http://www.libssh2.org/download/libssh2-${SSH2}.tar.gz" +SRCPAT[21]="NO" +USE[21]="YES" + +# CDDB lookups: +SOURCE[22]="$SRCDIR/libcddb-${CDDB}.tar.bz2" +SRCURL[22]="http://downloads.sourceforge.net/libcddb/libcddb-${CDDB}.tar.bz2" +SRCPAT[22]="NO" +USE[22]="YES" + +# Act as a source client to Icecast/Shoutcast: +SOURCE[23]="$SRCDIR/libshout-${SHOUT}.tar.gz" +SRCURL[23]="http://downloads.us.xiph.org/releases/libshout/libshout-${SHOUT}.tar.gz" +SRCPAT[23]="NO" +USE[23]="YES" + +# SPEEX is used by libshout and vlc: +SOURCE[24]="$SRCDIR/speex-${SPEEX}.tar.gz" +SRCURL[24]="http://downloads.us.xiph.org/releases/speex/speex-${SPEEX}.tar.gz" +#SRCURL[24]="http://git.xiph.org/?p=speex.git;a=snapshot;h=${SPEEX};sf=tgz" +SRCPAT[24]="NO" +USE[24]="YES" + +# Goom, a visualisation library for audio player +SOURCE[25]="$SRCDIR/goom-${GOOM}-src.tar.gz" +SRCURL[25]="http://downloads.sourceforge.net/goom/goom-${GOOM}-src.tar.gz" +SRCPAT[25]="NO" +USE[25]="YES" + +# Taglib for audio files: +SOURCE[26]="$SRCDIR/taglib-${TAGLIB}.tar.gz" +SRCURL[26]="http://taglib.github.io/releases/taglib-${TAGLIB}.tar.gz" +SRCPAT[26]="NO" +USE[26]="YES" + +# X264 encoder - for H264/AVC video streams +SOURCE[27]="$SRCDIR/x264-snapshot-${X264}-stable.tar.bz2" +SRCURL[27]="https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${X264}-stable.tar.bz2" +SRCPAT[27]="NO" +USE[27]="YES" + +# The A52 decoder - aka AC3 +SOURCE[28]="$SRCDIR/a52dec-$A52.tar.gz" +SRCURL[28]="http://liba52.sourceforge.net/files/a52dec-$A52.tar.gz" +SRCPAT[28]="NO" +USE[28]="YES" + +# Live555 support: +SOURCE[29]="$SRCDIR/live.${LIVE}.tar.gz" +SRCURL[29]="https://download.videolan.org/contrib/live555//live.${LIVE}.tar.gz" +SRCPAT[29]="NO" +USE[29]="YES" + +# Library needed to control IEEE 1394 (firewire-) based cameras +SOURCE[30]="$SRCDIR/libraw1394-${RAW1394}.tar.gz" +SRCURL[30]="http://downloads.sourceforge.net/libraw1394/libraw1394-${RAW1394}.tar.gz" +SRCPAT[30]="NO" +USE[30]="YES" + +SOURCE[31]="$SRCDIR/libdc1394-${DC1394}.tar.gz" +SRCURL[31]="http://downloads.sourceforge.net/libdc1394/libdc1394-${DC1394}.tar.gz" +SRCPAT[31]="NO" +USE[31]="YES" + +SOURCE[32]="$SRCDIR/libavc1394-${AVC1394}.tar.gz" +SRCURL[32]="http://downloads.sourceforge.net/libavc1394/libavc1394-${AVC1394}.tar.gz" +SRCPAT[32]="NO" +USE[32]="YES" + +# Library designed for decoding and generation of MPEG TS and DVB PSI tables. +SOURCE[33]="$SRCDIR/libdvbpsi-${DVBPSI}.tar.bz2" +SRCURL[33]="http://download.videolan.org/pub/libdvbpsi/${DVBPSI}/libdvbpsi-${DVBPSI}.tar.bz2" +SRCPAT[33]="NO" +USE[33]="YES" + +# a free DTS Coherent Acoustics decoder +SOURCE[34]="$SRCDIR/libdca-${DCA}.tar.bz2" +SRCURL[34]="http://download.videolan.org/pub/videolan/libdca/${DCA}/libdca-${DCA}.tar.bz2" +SRCPAT[34]="NO" +USE[34]="YES" + +# VAAPI for video hardware acceleration: +SOURCE[35]="$SRCDIR/libva-${LIBVA}.tar.bz2" +SRCURL[35]="https://github.com/01org/libva/releases/download/${LIBVA}/libva-${LIBVA}.tar.bz2" +SRCPAT[35]="NO" +USE[35]="YES" + +# Universal Plug'n'Play +SOURCE[36]="$SRCDIR/libupnp-${UPNP}.tar.bz2" +SRCURL[36]="http://downloads.sourceforge.net/pupnp/libupnp-${UPNP}.tar.bz2" +SRCPAT[36]="NO" +USE[36]="YES" + +# DAAP support (iTunes) +SOURCE[37]="$SRCDIR/libopendaap-${DAAP}.tar.bz2" +# This one seems not the right daap lib...: +#SRCURL[37]="http://downloads.sourceforge.net/daap/libopenndaap-${DAAP}.tar.bz2" +SRCURL[37]="http://crazney.net/programs/itunes/files/libopendaap-${DAAP}.tar.bz2" +SRCPAT[37]="NO" +USE[37]="YES" + +# Libass - portable library for SSA/ASS subtitles rendering +SOURCE[38]="$SRCDIR/libass-$ASS.tar.xz" +#SRCURL[38]="http://libass.googlecode.com/files/libass-$ASS.tar.xz" +SRCURL[38]="https://github.com/libass/libass/releases/download/$ASS/libass-$ASS.tar.xz" +SRCPAT[38]="NO" +USE[38]="YES" + +# FluidSynth - midi playback +SOURCE[39]="$SRCDIR/fluidsynth-${FLUID}.tar.bz2" +SRCURL[39]="http://downloads.sourceforge.net/fluidsynth/fluidsynth-${FLUID}.tar.bz2" +SRCPAT[39]="NO" +USE[39]="YES" + +# opus codec: +SOURCE[40]="$SRCDIR/opus-${OPUS}.tar.gz" +SRCURL[40]="http://downloads.xiph.org/releases/opus/opus-${OPUS}.tar.gz" +SRCPAT[40]="NO" +USE[40]="YES" + +# projectM: visualisation plugin +SOURCE[41]="$SRCDIR/projectM-${PROJECTM}-Source.tar.gz" +SRCURL[41]="http://sourceforge.net/projects/projectm/files/${PROJECTM}/projectM-${PROJECTM}-Source.tar.gz/download" +SRCPAT[41]="NO" +USE[41]="YES" + +# Theora encoder/decoder libraries +SOURCE[42]="$SRCDIR/libtheora-${THEORA}.tar.gz" +SRCURL[42]="http://downloads.xiph.org/releases/theora/libtheora-${THEORA}.tar.gz" +SRCPAT[42]="NO" +USE[42]="YES" + +# GSM support: +SOURCE[43]="$SRCDIR/gsm-$GSM.tar.gz" +#SRCURL[43]="http://osxwinebuilder.googlecode.com/files/gsm-$GSM.tar.gz" +SRCURL[43]="http://www.quut.com/gsm/gsm-$GSM.tar.gz" +SRCPAT[43]="NO" +USE[43]="YES" + +# Google's VP8 codec: +SOURCE[44]="$SRCDIR/libvpx-${VPX}.tar.bz2" +SRCURL[44]="http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-${VPX}.tar.bz2" +#SRCURL[44]="" +SRCPAT[44]="NO" +USE[44]="YES" + +# AMR-WB encoder libraries used to encode 3GPP audio +SOURCE[45]="$SRCDIR/vo-amrwbenc-${AMRWBENC}.tar.gz" +SRCURL[45]="http://downloads.sourceforge.net/opencore-amr/vo-amrwbenc-${AMRWBENC}.tar.gz" +SRCPAT[45]="NO" +USE[45]="YES" + +# VisualOn AAC encoding library, for AAC (MP4 audio) encoding +SOURCE[46]="$SRCDIR/vo-aacenc-$AACENC.tar.gz" +SRCURL[46]="http://downloads.sourceforge.net/opencore-amr/vo-aacenc-$AACENC.tar.gz" +SRCPAT[46]="YES" +USE[46]="YES" + +# FAAC library, will be statically linked with ffmpeg +SOURCE[47]="$SRCDIR/faac-$FAAC.tar.gz" +SRCURL[47]="http://downloads.sourceforge.net/faac/faac-$FAAC.tar.gz" +SRCPAT[47]="YES" +USE[47]="YES" + +# speex dsp implementation: +SOURCE[48]="$SRCDIR/speexdsp-${SPEEXDSP}.tar.gz" +SRCURL[48]="http://downloads.us.xiph.org/releases/speex/speexdsp-${SPEEXDSP}.tar.gz" +SRCPAT[48]="NO" +USE[48]="YES" + +# The browser plugin source has been separated from VLC: +SOURCE[49]="$SRCDIR/npapi-vlc-${NPAPI}.tar.gz" +#SRCURL[49]="https://code.videolan.org/videolan/npapi-vlc/repository/archive.tar.gz?ref=${NPAPI}" +SRCURL[49]="" +SRCPAT[49]="NO" +USE[49]="YES" + +# Bluray support library (for unencrypted content): +SOURCE[50]="$SRCDIR/libbluray-${BLURAY}.tar.bz2" +SRCURL[50]="https://download.videolan.org/pub/videolan/libbluray//${BLURAY}/libbluray-${BLURAY}.tar.bz2" +SRCPAT[50]="NO" +USE[50]="YES" + +# Unicode BiDirectional algorithm library, requirement for libass. +SOURCE[51]="$SRCDIR/fribidi-${FRIBIDI}.tar.bz2" +SRCURL[51]="http://fribidi.org/download/fribidi-${FRIBIDI}.tar.bz2" +SRCPAT[51]="NO" +USE[51]="YES" + +# VDPAU for video hardware acceleration: +SOURCE[52]="$SRCDIR/libvdpau-${VDPAU}.tar.gz" +SRCURL[52]="http://people.freedesktop.org/~aplattner/vdpau/libvdpau-${VDPAU}.tar.gz" +SRCPAT[52]="NO" +USE[52]="YES" + +# Library for AS-DCP files: +SOURCE[53]="$SRCDIR/asdcplib-${ASDCPLIB}.tar.gz" +SRCURL[53]="http://download.cinecert.com/asdcplib/asdcplib-${ASDCPLIB}.tar.gz" +SRCPAT[53]="NO" +USE[53]="YES" + +# CSS decoding- VLC can do without if you install an external libdvdcss package. +SOURCE[54]="$SRCDIR/libdvdcss-${DVDCSS}.tar.bz2" +SRCURL[54]="http://download.videolan.org/pub/libdvdcss/${DVDCSS}/libdvdcss-${DVDCSS}.tar.bz2" +SRCPAT[54]="YES" +USE[54]="YES" + +# Use the src_checkout() function if no downloadable tarball exists. +# This function checks out sources from SVN/CVS and creates a tarball of them. +src_checkout() { + # Param #1 : index in the SOURCE[] array. + # Param #2 : full path to where SOURCE[$1] tarball should be created. + # Determine the tarball extension: + PEXT=$(echo "${2}" | sed -r -e 's/.*[^.].(tar.xz|tar.gz|tar.bz2|tgz).*/\1/') + case "$PEXT" in + "tar.xz") TARCOMP="J" ;; + "tar.gz") TARCOMP="z" ;; + "tgz") TARCOMP="z" ;; + "tar.bz2") TARCOMP="j" ;; + *) echo "Archive can only have extension 'tar.xz', '.tar.gz' '.tar.bz2' or '.tgz'" ; exit 1 ;; + esac + case ${1} in + 0) # vlc-$SRCVER + mkdir vlc_temp_checkout_$$ \ + && cd vlc_temp_checkout_$$ + + if [ "$VERSION" = "HEAD" -o "$VERSION" = "HEAD@" -o "$VERSION" = "master@" ]; then + # Checkout without downloading version history (fast!): + echo "Checking out HEAD from '$GITURI':" + git clone --depth=1 ${GITURI} vlc-${SRCVER} + else + # Checkout code from a certain branch and/or date; this will take a + # long time because we have to clone the complete git-repository first: + echo "Checking out $BRANCH at date $SRCVER from '$GITURI':" + git clone ${GITURI} vlc-${SRCVER} \ + && cd vlc-${SRCVER} \ + && git checkout $BRANCH \ + && git checkout $(git rev-list -n 1 --before="`date -d $SRCVER`" $BRANCH) \ + && cd .. + fi + chown -R root:root . \ + && tar -${TARCOMP}cf ${2} vlc-${SRCVER} + # 20110824: vlc from git won't compile unless there is .git directory + # && tar --exclude .git -${TARCOMP}cf ${2} vlc-${SRCVER} + cd .. + rm -rf vlc_temp_checkout_$$ + # If VERSION was "HEAD" we still want a date to appear in the pkgname: + VERSION=${SRCVER} + ;; + 1) # We clone the git of ffmpeg at a certain hash: + mkdir ffmpeg-${FFMPEG} \ + && cd ffmpeg-${FFMPEG} \ + && git clone git://git.videolan.org/ffmpeg.git . \ + && git checkout $FFMPEG \ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .git -${TARCOMP}cf ${2} ffmpeg-${FFMPEG} + rm -rf ffmpeg-${FFMPEG} + ;; + 10) # We clone the git of x262 at a certain date: + mkdir x262-${X262} \ + && cd x262-${X262} \ + && git clone git://git.videolan.org/x262.git . \ + && git checkout $(git rev-list -n 1 --before="`date -d $X262`" master) \ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .git -${TARCOMP}cf ${2} x262-${X262} + rm -rf x262-${X262} + ;; + 14) # libdvdnav-$DVDNAV + # We clone the git of libdvdnav at a certain date: + mkdir libdvdnav-${DVDNAV} \ + && cd libdvdnav-${DVDNAV} \ + && git clone git://git.videolan.org/libdvdnav/ . \ + && git checkout $(git rev-list -n 1 --before="`date -d $DVDNAV`" master) \ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .git -${TARCOMP}cf ${2} libdvdnav-${DVDNAV} + rm -rf libdvdnav-${DVDREAD} + ;; + 15) # libdvdread-$DVDREAD + # We clone the git of libdvdread at a certain date: + mkdir libdvdread-${DVDREAD} \ + && cd libdvdread-${DVDREAD} \ + && git clone git://git.videolan.org/libdvdread/ . \ + && git checkout $(git rev-list -n 1 --before="`date -d $DVDREAD`" master)\ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .git -${TARCOMP}cf ${2} libdvdread-${DVDREAD} + rm -rf libdvdread-${DVDREAD} + ;; + 19) # libmpcdec-$MPCDEC + local SVNURL=http://svn.musepack.net/libmpc/trunk/ + if [ "$(echo ${MPCDEC}|cut -c1)" == 'r' ]; then # revision instead of date + REV=$(echo ${MPCDEC} | cut -c2-) + else + REV="{${MPCDEC}}" + fi + mkdir libmpcdec-${MPCDEC} \ + && cd libmpcdec-${MPCDEC} \ + && svn checkout --revision $REV $SVNURL . \ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .svn -${TARCOMP}cf ${2} libmpcdec-${MPCDEC} + rm -rf libmpcdec-${MPCDEC} + unset SVNURL + ;; + 44) # We clone the git of libvpx at a certain date: + mkdir libvpx-${VPX} \ + && cd libvpx-${VPX} \ + && git clone git://review.webmproject.org/libvpx.git . \ + && git checkout $(git rev-list -n 1 --before="`date -d $VPX`" master) \ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .git -${TARCOMP}cf ${2} libvpx-${VPX} + rm -rf libvpx-${VPX} + ;; + 48) # We clone the git of speexdsp at a certain date: + mkdir speexdsp-${SPEEXDSP} \ + && cd speexdsp-${SPEEXDSP} \ + && git clone https://git.xiph.org/speexdsp.git . \ + && git checkout $(git rev-list -n 1 --before="`date -d $SPEEXDSP`" master) \ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .git -${TARCOMP}cf ${2} speexdsp-${SPEEXDSP} + rm -rf speexdsp-${SPEEXDSP} + ;; + 49) # We clone the git of npapi-vlc at a certain date: + mkdir npapi-vlc-${NPAPI} \ + && cd npapi-vlc-${NPAPI} \ + && git clone https://code.videolan.org/videolan/npapi-vlc.git . \ + && git submodule update --init \ + && git checkout $(git rev-list -n 1 --before="`date -d $NPAPI`" master) \ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .git -${TARCOMP}cf ${2} npapi-vlc-${NPAPI} + rm -rf npapi-vlc-${NPAPI} + ;; + 50) # We clone the git of libbluray at a certain date: + mkdir libbluray-${BLURAY} \ + && cd libbluray-${BLURAY} \ + && git clone git://git.videolan.org/libbluray.git . \ + && git checkout $(git rev-list -n 1 --before="`date -d $BLURAY`" master) \ + && chown -R root:root . \ + && cd .. \ + && tar --exclude .git -${TARCOMP}cf ${2} libbluray-${BLURAY} + rm -rf libbluray-${BLURAY} + ;; + *) # Do nothing + ;; + esac +} + +if [ "${USE_PATENTS}" == "YES" ]; then + echo "" + echo "**" + echo "** This build uses patented code (AAC encoder)" + echo "** Run the command 'USE_PATENTS=NO $0 $*' to avoid patent issues." + echo "**" + echo "" + sleep 1 +fi + +## +## --- with a little luck, you won't have to edit below this point --- ## +## + +# Exit the script on errors: +set -e +trap 'echo "$0 FAILED at line $LINENO!" | tee $OUTPUT/error-${PRGNAM}.log' ERR +# Catch unitialized variables: +set -u +P1=${1:-1} + +# Create working directories: +mkdir -p $TMP/tmp-$PRGNAM # location to build the source +mkdir -p $PKG # place for the package to be built +rm -rf $PKG/* # We always erase old package's contents: +mkdir -p $OUTPUT # place for the package to be saved + +if [ "$P1" != "--oldbuild" -a "$P1" != "--download" ]; then + # If the "--oldbuild" parameter is present, we keep + # the old build files and continue; + # By default we remove the remnants of previous build and continue: + echo -e "**\n** Cleaning up old build ...\n**" + rm -rf $TMP/tmp-$PRGNAM/* + rm -f $OUTPUT/*${PRGNAM}*.log # Delete old logfiles +fi + +# We may not need to download and unpack the Qt4 sources: +if [ "$STATIC_QT4" != "NO" ]; then + echo "**" + echo "** Building with a static QT4..." + echo "**" + USE[9]="YES" +fi + +# We may not need to download and unpack the ffmpeg sources: +if [ "$STATIC_FFMPEG" != "YES" ]; then + echo "**" + echo "** Not building static FFMPEG plus dependencies..." + echo "**" + USE[1]="NO" # ffmpeg + USE[2]="NO" # opencore-amr + USE[3]="NO" # lame + USE[42]="NO" # theora + USE[43]="NO" # gsm + USE[44]="NO" # vpx + USE[45]="NO" # vo-amrwb + USE[46]="NO" # vo-aacenc + USE[47]="NO" # faac +fi + +# Source file availability: +for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do + # Do we actually use this source? + [ "${USE[$i]}" = "YES" ] || continue + # Only download patented code if we are allowing it: + if [ "${USE_PATENTS}" == "YES" -o "${SRCPAT[$i]}" != "YES" ]; then + if ! [ -f ${SOURCE[$i]} ]; then + echo "Source '$(basename ${SOURCE[$i]})' not available yet..." + # Check if the $SRCDIR is writable at all - if not, download to $OUTPUT + [ -w "$SRCDIR" ] || SOURCE[$i]="$OUTPUT/$(basename ${SOURCE[$i]})" + if ! [ "x${SRCURL[$i]}" == "x" ]; then + echo "Will download file to $(dirname $SOURCE[$i])" + if ! $(wget --no-check-certificate -nv -T 20 -O "${SOURCE[$i]}" "${SRCURL[$i]}"); then + echo "Downloading '$(basename ${SOURCE[$i]})' failed.. aborting the build." + mv -f "${SOURCE[$i]}" "${SOURCE[$i]}".FAIL + exit 1 + fi + else + # Try if we have a SVN/CVS download routine for ${SOURCE[$i]} + echo "Will checkout sources to $(dirname $SOURCE[$i])" + src_checkout $i "${SOURCE[$i]}" 2>&1 |tee $OUTPUT/checkout-$(basename ${SOURCE[$i]}).log + fi + if [ ! -f "${SOURCE[$i]}" -o ! -s "${SOURCE[$i]}" ]; then + echo "File '$(basename ${SOURCE[$i]})' not available.. aborting the build." + exit 1 + fi + fi + fi +done + +if [ "$P1" == "--download" ]; then + echo "Download complete." + exit 0 +fi + +# Package building: +echo "++" +echo "|| $PRGNAM-$VERSION" +echo "++" + +cd $TMP/tmp-$PRGNAM +if [ "$P1" != "--oldbuild" ]; then + echo "Extracting the source archive(s) for $PRGNAM..." + for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do + # Do we actually use this source? + [ "${USE[$i]}" = "YES" ] || continue + # Only extract and use patented code if we are allowing it: + if [ "${USE_PATENTS}" == "YES" -o "${SRCPAT[$i]}" != "YES" ]; then + if $(file ${SOURCE[$i]} | grep -iq ": zip"); then + unzip ${SOURCE[$i]} + else + tar -xvf ${SOURCE[$i]} + fi + fi + done + chown -R root:root * + chmod -R u+w,go+r-w,a+X-s * +fi + +# Building the source code: +echo Building ... + +# We will be installing static libs into the following directory: +mkdir -p $VLCDEPSDIR/usr/{bin,doc,include,lib${LIBDIRSUFFIX},man} + +# ----------------------------------------------------------------------------- +# Helper function to expose private libs: +# ----------------------------------------------------------------------------- +pkg_static () +{ +PCFILE="$1" + +TEMPOUTL=$(mktemp -t alien.XXXXXX) +TEMPOUTR=$(mktemp -t alien.XXXXXX) + +mv "${PCFILE}" "${PCFILE}.orig" +touch "${PCFILE}" +cat "${PCFILE}.orig" | while read LINE; do + lpub="${LINE#Libs:}" + lpriv="${LINE#Libs.private:}" + rpub="${LINE#Requires:}" + rpriv="${LINE#Requires.private:}" + if test "$lpub" != "$LINE"; then + echo "$lpub" >> $TEMPOUTL + elif test "$lpriv" != "$LINE"; then + echo "$lpriv" >> $TEMPOUTL + elif test "$rpub" != "$LINE"; then + echo "$rpub" >> $TEMPOUTR + elif test "$rpriv" != "$LINE"; then + echo "$rpriv" >> $TEMPOUTR + else + echo "$LINE" >> ${PCFILE} + fi +done +echo "Libs: $(echo $(cat $TEMPOUTL))" >> ${PCFILE} +echo "Requires: $(echo $(cat $TEMPOUTR))" >> ${PCFILE} + +rm -f $TEMPOUTL $TEMPOUTR +} + + +# ----------------------------------------------------------------------------- +# Compile theora libraries +# The ffmpeg will use these +# ----------------------------------------------------------------------------- +make_theora() +{ +echo -e "**\n** theora ...\n**" +cd $TMP/tmp-$PRGNAM/libtheora-${THEORA} + +# Don't build documentation and other crap: +sed -i -e "s/doc tests / /" Makefile* + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-examples \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_theora.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_theora.log +# Install theora into a temp location so ffmpeg can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_theora.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libtheora/ +cp AUTHORS CHANGES COPYING LICENSE README \ + $VLCDEPSDIR/doc/libtheora/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile lame libraries +# The ffmpeg will use these +# ----------------------------------------------------------------------------- +make_lame() +{ +echo -e "**\n** lame ...\n**" +cd $TMP/tmp-$PRGNAM/lame-${LAME} + +## Fix compiler error introduced by gcc-4.9 on 32-bit: +#if [ "$(gcc --version|grep '^gcc'|cut -d' ' -f3|cut -d. -f1,2)" = "4.9" ]; then +# case $(uname -m) in +# i?86) sed -i -e '/xmmintrin\.h/d' configure ;; +# esac +#fi +# +## Fix compilation on x86 (xmmintrin.h error: inlining failed) +#cat $SRCDIR/patches/lame_x86-xmmintrin.patch | patch -p1 --verbose \ +# 2>&1 | tee $OUTPUT/patch-${PRGNAM}_lame.log + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-mp3rtp \ + --enable-nasm \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_lame.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_lame.log +# Install lame into a temp location so ffmpeg can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_lame.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/lame/ +cp API COPYING ChangeLog* DEFINES HACKING LICENSE README* STYLEGUIDE TODO \ + $VLCDEPSDIR/doc/lame/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile faac library +# The ffmpeg will use these +# ----------------------------------------------------------------------------- +make_faac() +{ +echo -e "**\n** faac ...\n**" +cd $TMP/tmp-$PRGNAM/faac-$FAAC + +# Newer gcc/glibc will bail out otherwise: +cat $SRCDIR/patches/faac_gcc44.diff | patch -p1 --verbose \ + 2>&1 | tee $OUTPUT/patch-${PRGNAM}_faac.log + +#sh bootstrap +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS -std=gnu++98" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --with-mp4v2 \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_faac.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_faac.log +# Install faac into a temp location so ffmpeg can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_faac.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/faac/ +cp AUTHORS COPYING ChangeLog NEWS README TODO \ + $VLCDEPSDIR/doc/faac/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile aacenc library +# The ffmpeg will use these +# ----------------------------------------------------------------------------- +make_aacenc() +{ +echo -e "**\n** aacenc ...\n**" +cd $TMP/tmp-$PRGNAM/vo-aacenc-${AACENC} + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_aacenc.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_aacenc.log +# Install aacenc into a temp location so ffmpeg can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_aacenc.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/aacenc +cp -a AUTHORS COPYING* ChangeLog NEWS NOTICE README \ + $VLCDEPSDIR/doc/aacenc || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile amr wideband/narrowband library +# The ffmpeg will use these +# ----------------------------------------------------------------------------- +make_amr() +{ +echo -e "**\n** amr ...\n**" +cd $TMP/tmp-$PRGNAM/opencore-amr-${AMR} +LDFLAGS="$SLKLDFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --mandir=$VLCDEPSDIR/usr/man \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_amr.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_amr.log +make install PREFIX=$VLCDEPSDIR/usr LIBDIR=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_amr.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/amr +cp -a AUTHORS COPYING ChangeLog LICENSE NEWS README \ + $VLCDEPSDIR/doc/amr || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile VisualOn amr wideband encoder library +# The ffmpeg will use these +# ----------------------------------------------------------------------------- +make_amrwbenc() +{ +echo -e "**\n** amrwbenc ...\n**" +cd $TMP/tmp-$PRGNAM/vo-amrwbenc-${AMRWBENC} +LDFLAGS="$SLKLDFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --mandir=$VLCDEPSDIR/usr/man \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_amrwbenc.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_amrwbenc.log +make install $VLCDEPSDIR/PREFIX=/usr LIBDIR=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_amrwbenc.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/amrwbenc +cp -a AUTHORS COPYING ChangeLog LICENSE NEWS README \ + $VLCDEPSDIR/doc/amrwbenc || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile gsm +# ----------------------------------------------------------------------------- +make_gsm() +{ +echo -e "**\n** gsm ...\n**" +GSMMAJ=$(echo $GSM | cut -d. -f1,2) +GSMPL=$(echo $GSM | cut -d. -f3) +mv $TMP/tmp-$PRGNAM/gsm-${GSMMAJ}-pl${GSMPL} $TMP/tmp-$PRGNAM/gsm-${GSM} +cd $TMP/tmp-$PRGNAM/gsm-${GSM} +# Without this, x86_64 builds will fail: +sed -i -e "/^CCFLAGS/s,-O2 ,$SLKCFLAGS ," \ + -e "s,^# LDFLAGS.*,LDFLAGS = $SLKLDFLAGS," Makefile +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_gsm.log +# Install gsm into a temp location so ffmpeg can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_gsm.log +mkdir -p $VLCDEPSDIR/usr/{bin,include/gsm,lib${LIBDIRSUFFIX}} +cp bin/* $VLCDEPSDIR/usr/bin/ +cp inc/gsm.h $VLCDEPSDIR/usr/include/gsm/ +ln -sf gsm/gsm.h $VLCDEPSDIR/usr/include/gsm.h +cp lib/* $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/ +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/gsm +cp -a COPYRIGHT ChangeLog* INSTALL MACHINES MANIFEST README \ + $VLCDEPSDIR/doc/gsm || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile ffmpeg 2.x with support for AMR, LAME, XVID, RTMP, ... +# Later, we will statically link VLC to the generated libavcodec libraries +# ----------------------------------------------------------------------------- +make_ffmpeg2() +{ +echo -e "**\n** ffmpeg2 ...\n**" +OLDDIR=$(pwd) +cd $TMP/tmp-$PRGNAM +# Take care of snaphot directory: +if [ -d ffmpeg-export-* ]; then + rm -rf ffmpeg-${FFMPEG} + mv ffmpeg-export-* ffmpeg-${FFMPEG} +fi + +# Only use patented code if we are allowing it: +if [ "${USE_PATENTS}" == "YES" ]; then + USE_PATENTED="--enable-libfaac \ + --enable-libvo-aacenc \ + --enable-nonfree" +else + USE_PATENTED=" " +fi + +cd $TMP/tmp-$PRGNAM/ffmpeg-${FFMPEG} + +# Apply patches: +touch $OUTPUT/patch-${PRGNAM}_ffmpeg.log +# Adjust for the newer libvpx: +cat $SRCDIR/patches/ffmpeg_vpx_removed_ids.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log +# Prevent a segfault: +cat $SRCDIR/patches/ffmpeg_xwd_segfault.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log + +if [ "$ARCH" = "x86_64" ]; then + ARCHOPTS="--arch=x86_64 --enable-pic" +elif [ "$ARCH" = "armv7hl" ]; then + ARCHOPTS="--arch=arm --enable-pic --disable-runtime-cpudetect --cpu=cortex-a8 --enable-neon" +else + ARCHOPTS="" +fi + +# Stamp the version into the source: +[ -f version.sh ] && sed -i -e "s/UNKNOWN/$FFMPEG/" version.sh + +TMPDIR="$TMP" \ +CFLAGS="$SLKCFLAGS --std=gnu99" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +PKG_CONFIG_PATH="${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --shlibdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + ${USE_PATENTED} \ + ${USE_PULSE} \ + --disable-avdevice \ + --disable-avfilter \ + --disable-avresample \ + --disable-bsfs \ + --disable-decoder=dca \ + --disable-devices \ + --disable-filters \ + --disable-debug \ + --disable-doc \ + --disable-iconv \ + --disable-programs \ + --disable-shared \ + --disable-swresample \ + --enable-gpl \ + --enable-version3 \ + --enable-libgsm \ + --enable-libmp3lame \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-libtheora \ + --enable-libvorbis \ + --enable-libvo-amrwbenc \ + --enable-libvpx \ + --enable-pthreads \ + --enable-hardcoded-tables \ + --enable-static \ + --enable-memalign-hack \ + --enable-bzlib \ + --enable-zlib \ + $ARCHOPTS \ + --extra-cflags="-I${VLCDEPSDIR}/usr/include" \ + --extra-ldflags="-L${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX} -ldl" \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_ffmpeg.log + +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_ffmpeg.log +[ $? -ne 0 ] && return 1 + +# Install ffmpeg into a temp location so vlc can pickup the libraries +make install-libs install-headers \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_ffmpeg.log + +# If we compiled vaapi support: +if [ ! -f $VLCDEPSDIR/usr/include/vaapi.h ]; then + cp libavcodec/vaapi.h $VLCDEPSDIR/usr/include/ +fi + +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/ffmpeg/ +cp COPYING* CREDITS Changelog MAINTAINERS README \ + $VLCDEPSDIR/doc/ffmpeg/ || true + +cd $OLDDIR + +} + + +# ----------------------------------------------------------------------------- +# Compile ffmpeg 3.x with support for AMR, LAME, XVID, RTMP, ... +# Later, we will statically link VLC to the generated libavcodec libraries +# ----------------------------------------------------------------------------- +make_ffmpeg() +{ +echo -e "**\n** ffmpeg ...\n**" +OLDDIR=$(pwd) +cd $TMP/tmp-$PRGNAM +# Take care of snaphot directory: +if [ -d ffmpeg-export-* ]; then + rm -rf ffmpeg-${FFMPEG} + mv ffmpeg-export-* ffmpeg-${FFMPEG} +fi + +# Only use patented code if we are allowing it: +if [ "${USE_PATENTS}" == "YES" ]; then + USE_PATENTED="--enable-encoder=aac \ + --enable-nonfree" +else + USE_PATENTED="--disable-encoder=aac" +fi + +cd $TMP/tmp-$PRGNAM/ffmpeg-${FFMPEG} + +# Apply patches: +touch $OUTPUT/patch-${PRGNAM}_ffmpeg.log +## Adjust for the newer libvpx: +#cat $SRCDIR/patches/ffmpeg_vpx_removed_ids.patch | patch -p1 --verbose \ +# 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log +## Prevent a segfault: +#cat $SRCDIR/patches/ffmpeg_xwd_segfault.patch | patch -p1 --verbose \ +# 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log + +if [ "$ARCH" = "x86_64" ]; then + ARCHOPTS="--arch=x86_64 --enable-pic" +elif [ "$ARCH" = "armv7hl" ]; then + ARCHOPTS="--arch=arm --enable-pic --disable-runtime-cpudetect --cpu=cortex-a8 --enable-neon" +else + ARCHOPTS="" +fi + +## Prevent static linking issues: +#sed -i -e "s/pkg_config --libs/pkg_config --static --libs/" \ +# configure + +# Stamp the version into the source: +[ -f version.sh ] && sed -i -e "s/UNKNOWN/$FFMPEG/" version.sh + +TMPDIR="$TMP" \ +CFLAGS="$SLKCFLAGS --std=gnu99" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +PKG_CONFIG_PATH="${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --shlibdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + ${USE_PATENTED} \ + ${USE_PULSE} \ + --disable-avdevice \ + --disable-avfilter \ + --disable-avisynth \ + --disable-avresample \ + --disable-bsfs \ + --disable-encoder=vorbis \ + --disable-decoder=opus \ + --disable-devices \ + --disable-filters \ + --disable-debug \ + --disable-doc \ + --disable-iconv \ + --disable-nvenc \ + --disable-programs \ + --disable-protocol=concat \ + --disable-shared \ + --disable-swresample \ + --enable-gpl \ + --enable-version3 \ + --enable-libgsm \ + --enable-libmp3lame \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-libtheora \ + --enable-libvorbis \ + --enable-libvo-amrwbenc \ + --enable-libvpx \ + --enable-pthreads \ + --enable-static \ + --enable-bzlib \ + --enable-zlib \ + $ARCHOPTS \ + --target-os=linux \ + --extra-cflags="-I${VLCDEPSDIR}/usr/include" \ + --extra-ldflags="-L${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX} -ldl" \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_ffmpeg.log + + # Do not add '-fPIC -DPIC' to extra-cflags or "can't find + # a register in class 'GENERAL_REGS' while reloading 'asm'" occurs + # --enable-libogg \ Newer ffmpeg no longer need this. + # --enable-libxvid \ generates vlc linker errors, so we use ffmpeg's + # native xvid encoder implementation instead + #--enable-libvorbis \ # Use ffmpeg's native support + #--disable-vhook \ + #--logfile=$OUTPUT/ffmpeg.conf.log \ + # Remove this in 0.6.1 to avoid "error: libavcodec/cbrt_tables.h: No such file or directory" + # (compile issue has been fixed in ffmpeg-git but I'll stick to 0.6.1 for now): + # --enable-hardcoded-tables \ + # Since vlc-1.1 this is no longer needed... neither is rtmpdump, becausee + # ffmpeg has an internal implementation: + #--disable-protocols \ + #--disable-devices \ + #--disable-network \ + #--enable-librtmp \ + # Let VLC do the hardware decoding: + #--enable-vaapi \ + #--enable-vdpau \ + +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_ffmpeg.log +[ $? -ne 0 ] && return 1 + +# Install ffmpeg into a temp location so vlc can pickup the libraries +make install-libs install-headers \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_ffmpeg.log + +# If we compiled vaapi support: +if [ ! -f $VLCDEPSDIR/usr/include/vaapi.h ]; then + cp libavcodec/vaapi.h $VLCDEPSDIR/usr/include/ +fi + +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/ffmpeg/ +cp COPYING* CREDITS Changelog MAINTAINERS README \ + $VLCDEPSDIR/doc/ffmpeg/ || true + +cd $OLDDIR +} + +# ----------------------------------------------------------------------------- +# Next, compile Qt4 +# We will link VLC statically to the generated libraries +# ----------------------------------------------------------------------------- +make_qt4() +{ +echo -e "**\n** Qt4 ...\n**" + +# If we build a static Qt4 gui, unset the QT-related environment variables, +# so that a pre-existing Qt4 will not be picked up and create errors later: +unset QTDIR +unset QT4DIR +unset QT5DIR +NEWPATH="$VLCDEPSDIR/usr/bin" +for elem in $(echo $PATH | cut -d: --output-delimiter=' ' -f1-) ; do + if ! $(echo "$elem"| grep -q /qt) ; then + NEWPATH="$NEWPATH:$elem" + fi +done +export PATH="$NEWPATH" + +cd $TMP/tmp-$PRGNAM/$(ls --indicator-style=none | grep qt-*-src-${QT4}) + +export CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" +export CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" +export OPENSOURCE_CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" +export LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" +export PKG_CONFIG_PATH="${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig" +./configure \ + -confirm-license \ + -opensource \ + -prefix $VLCDEPSDIR \ + -libdir $VLCDEPSDIR/lib${LIBDIRSUFFIX} \ + -release \ + -static \ + -fast \ + -no-declarative \ + -no-declarative-debug \ + -no-exceptions \ + -no-multimedia \ + -no-opengl \ + -no-stl \ + -no-sql-sqlite \ + -no-phonon \ + -no-qt3support \ + -no-qdbus \ + -no-openssl \ + -no-script \ + -no-scripttools \ + -no-webkit \ + -no-gif \ + -no-libmng \ + -no-libtiff \ + -qt-libpng \ + -qt-libjpeg \ + -qt-zlib \ + -sse \ + -nomake examples \ + -nomake demos \ + -nomake docs \ + -no-separate-debug-info \ + -no-pch \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_qt4.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_qt4.log || exit 1 +# With the above prefix we can install without INSTALL_ROOT; we need this +# so the Qt4 binaries will be picked up by vlc's configure script: +#make install INSTALL_ROOT=$VLCDEPSDIR \ +make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_qt4.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/qt4/ +cp *GPL_EXCEPTION* FAQ* INSTALL KNOWN* LICENSE* README* \ + $VLCDEPSDIR/doc/qt4/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# ADDITIONAL CODECS AND INPUT LIBRARIES FOR VLC +# ----------------------------------------------------------------------------- + + +# ----------------------------------------------------------------------------- +# Compile a52 libraries +# ----------------------------------------------------------------------------- +make_a52() +{ +echo -e "**\n** a52 ...\n**" +cd $TMP/tmp-$PRGNAM/a52dec-${A52} +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_a52.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_a52.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/a52dec/ +cp AUTHORS COPYING ChangeLog HISTORY INSTALL NEWS README TODO \ + $VLCDEPSDIR/doc/a52dec/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile live555 +# ----------------------------------------------------------------------------- +make_live555() +{ +echo -e "**\n** live555 ...\n**" +cd $TMP/tmp-$PRGNAM/live + +# Force the use of our CFLAGS +sed -i -e "s|-O2|${SLKCFLAGS}|g" config.linux + +# Be compatible with glibc >= 2.26: +sed -i -e 's/#include <xlocale.h>.*/#include <locale.h>/' \ + liveMedia/include/Locale.hh + +# Live555 is not useable with vlc unless linked statically. +# We need this patch for the tarballs around end september 2009: +if ! $(grep -q Bstatic config.linux) ; then + sed -i -e 's/\(LIBRARY_LINK =\).*/\1 $(LD) -o/g' \ + -e 's/\(LIBRARY_LINK_OPTS =\).*/\1 $(LINK_OPTS) -r -Bstatic/g' \ + config.linux +fi +./genMakefiles linux 2>&1 | tee $OUTPUT/configure-${PRGNAM}_live.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_live.log +# Move the live555 stuff into place for vlc to pick it up: +mkdir -p $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $VLCDEPSDIR/usr/include +cp \ + groupsock/libgroupsock.a \ + liveMedia/libliveMedia.a \ + UsageEnvironment/libUsageEnvironment.a \ + BasicUsageEnvironment/libBasicUsageEnvironment.a \ + $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/ +cp \ + groupsock/include/*.hh \ + groupsock/include/*.h \ + liveMedia/include/*.hh \ + UsageEnvironment/include/*.hh \ + BasicUsageEnvironment/include/*.hh \ + $VLCDEPSDIR/usr/include/ +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/live555/ +cp COPYING README \ + $VLCDEPSDIR/doc/live555/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile ebml +# ----------------------------------------------------------------------------- +make_ebml() +{ +echo -e "**\n** ebml ...\n**" +OLDDIR=$(pwd) +cd $TMP/tmp-$PRGNAM/libebml-$EBML +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS -fexceptions" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_ebml.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_ebml.log +# Install into a temp directory where vlc & matroska can pick it up: +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_ebml.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libebml/ +cp ChangeLog LICENSE.LGPL \ + $VLCDEPSDIR/doc/libebml/ || true +cd $OLDDIR +} + +# ----------------------------------------------------------------------------- +# Compile matroska +# ----------------------------------------------------------------------------- +make_matroska() +{ +echo -e "**\n** matroska ...\n**" +OLDDIR=$(pwd) +cd $TMP/tmp-$PRGNAM/libmatroska-$MATROSKA +export CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" +export CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" +export LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" +export PKG_CONFIG_PATH="${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig" +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_matroska.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_matroska.log +# Install into a temp directory where vlc can pick it up: +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_matroska.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libmatroska/ +cp ChangeLog LICENSE.LGPL \ + $VLCDEPSDIR/doc/libmatroska/ || true +cd $OLDDIR +} + + +# ----------------------------------------------------------------------------- +# Compile libmpeg2 +# ----------------------------------------------------------------------------- +make_libmpeg2() +{ +echo -e "**\n** libmpeg2 ...\n**" +cd $TMP/tmp-$PRGNAM/libmpeg2-$MPEG2DEC +if [ ! -r configure ]; then + sh bootstrap +fi +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_libmpeg2.log + #--without-x \ + #--disable-sdl \ +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_libmpeg2.log +# Install libmpeg2 into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_mbpeg2.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libmpeg2/ +cp AUTHORS COPYING ChangeLog NEWS README TODO \ + $VLCDEPSDIR/doc/libmpeg2/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile libmpcdec +# ----------------------------------------------------------------------------- +make_mpcdec() +{ +echo -e "**\n** libmpcdec ...\n**" +cd $TMP/tmp-$PRGNAM/musepack_src_$MPCDEC + +# Prevent a dependency on libreplaygain and libcuefile: +sed -i \ + -e 's,^add_subdirectory(mpcgain),,g' \ + -e 's,^add_subdirectory(mpcchap),,g' \ + CMakeLists.txt + +# We want to use our own CFLAGS please: +sed -i \ + -e 's/set(CMAKE_C_FLAGS "\(.*\)")$/add_definitions(\1)/' \ + CMakeLists.txt + +mkdir build +cd build + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS -std=gnu++98" \ + LDFLAGS="$SLKLDFLAGS" \ + cmake .. \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + -DSHARED=OFF \ + 2>&1 | tee $OUTPUT/cmake-${PRGNAM}_mpcdec.log + make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_mpcdec.log + # Install mpcdec into a temp location so vlc can pickup the library + # (with the move to 'cmake', the install target does not work any longer): + mkdir -p $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} + install -m0644 libmpcdec/libmpcdec_static.a \ + $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libmpcdec.a +cd - +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libmpcdec/ +cp libmpcdec/{AUTHORS,COPYING,ChangeLog,README} \ + $VLCDEPSDIR/doc/libmpcdec/ || true +} + +# ----------------------------------------------------------------------------- +# Compile libdvdnav +# ----------------------------------------------------------------------------- +make_dvdnav() +{ +echo -e "**\n** libdvdnav ...\n**" +cd $TMP/tmp-$PRGNAM/libdvdnav-$DVDNAV + +autoreconf -vif + +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +PATH="$VLCDEPSDIR/usr/bin:$PATH" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-examples \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dvdnav.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_dvdnav.log +# Install libdvdnav into a temp location so vlc can pickup the library +make install m4datadir=$VLCDEPSDIR/usr/share/aclocal \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dvdnav.log +## Make a symlink which vlc-20080730 needs: +#( cd $VLCDEPSDIR/usr/include +# ln -s dvdread libdvdread +#) +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libdvdnav/ +cp AUTHORS COPYING ChangeLog NEWS README TODO \ + $VLCDEPSDIR/doc/libdvdnav/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile libdvdcss +# ----------------------------------------------------------------------------- +make_dvdcss() +{ +echo -e "**\n** libdvdcss ...\n**" +cd $TMP/tmp-$PRGNAM/libdvdcss-$DVDCSS +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --disable-doc \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dvdcss.log + # Shared library needed so that libdvdread can query the library + #--disable-shared \ +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_dvdcss.log +# Install libdvdcss into a temp location so libdvdread can pickup the library +echo -e "\n**\n**\n" +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dvdcss.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libdvdcss/ +cp AUTHORS COPYING ChangeLog NEWS README \ + $VLCDEPSDIR/doc/libdvdcss/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile libdvdread +# ----------------------------------------------------------------------------- +make_dvdread() +{ +echo -e "**\n** libdvdread ...\n**" +cd $TMP/tmp-$PRGNAM/libdvdread-$DVDREAD + + +if [ "${USE_PATENTS}" == "YES" ]; then + # If we allow patented software, we also link libdvdcss statically into + # libdvdread. Otherwise, you can just install libdvdcss additionally + # and the dvdread library will find and load dvdcss support at runtime. + #CSS_LIBS="$VLCDEPSDIR/usr/lib$LIBDIRSUFFIX/libdvdcss.a -static" \ + DO_CSS="--with-libdvdcss" +else + #CSS_LIBS="" + DO_CSS="" +fi + +# Remove offending line which does not get expanded by autoreconf: +sed -i -e '/CC_CHECK_CFLAGS_APPEND/d' configure.ac +# Fool it into not building apidocs and throwing errors as a result +# (sub-optimal code guys... why remove "--disable-apidocs"): +sed -i -e 's/\[doxygen\]/[doxygen_fubar]/' configure.ac + +if [ -x autogen.sh ]; then + ./autogen.sh noconfig \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dvdread.log +else + autoreconf -vif \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dvdread.log +fi + +#CSS_LIBS="${CSS_LIBS}" \ +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + ${DO_CSS} \ + --build=$TARGET \ + 2>&1 | tee -a $OUTPUT/configure-${PRGNAM}_dvdread.log +# Prevent documentation from being generated: +touch ChangeLog stamp-doxygen +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_dvdread.log +# Install libdvdread into a temp location so libdvdnav can pickup the library +echo -e "\n**\n**\n" +make install m4datadir=$VLCDEPSDIR/usr/share/aclocal \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dvdread.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libdvdread/ +cp AUTHORS COPYING ChangeLog NEWS README TODO \ + $VLCDEPSDIR/doc/libdvdread/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile libcddb +# ----------------------------------------------------------------------------- +make_cddb() +{ +echo -e "**\n** libcddb ...\n**" +cd $TMP/tmp-$PRGNAM/libcddb-$CDDB +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_cddb.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_cddb.log +# Install libcddb into a temp location so cdio and vlc can pickup the library +echo -e "\n**\n**\n" +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_cddb.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libcddb/ +cp ABOUT-NLS AUTHORS COPYING ChangeLog NEWS README THANKS TODO \ + $VLCDEPSDIR/doc/libcddb/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile libcdio +# ----------------------------------------------------------------------------- +make_cdio() +{ +echo -e "**\n** libcdio ...\n**" +DO_VCD=${1:-" "} +cd $TMP/tmp-$PRGNAM/libcdio-$CDIO +## Patch that allows vlc to detect required libs for cdio: +#cat $SRCDIR/patches/libcdio-0.80_Makefile.patch | patch -p0 --verbose \ +# 2>1 | tee -a $OUTPUT/patch-${PRGNAM}.log +## Because of patching a .am file, need to reconf: +#autoreconf -vif +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --enable-joliet \ + --enable-rock \ + --disable-cddb \ + $DO_VCD \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_cdio.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_cdio.log +# Install libcdio into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_cdio.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libcdio/ +cp ABOUT-NLS AUTHORS COPYING ChangeLog NEWS README* THANKS TODO \ + $VLCDEPSDIR/doc/libcdio/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile libvcd +# ----------------------------------------------------------------------------- +make_vcd() +{ +echo -e "**\n** libvcd ...\n**" +cd $TMP/tmp-$PRGNAM/vcdimager-$VCD +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_vcd.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_vcd.log +# Install libvcd into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_vcd.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/vcdimager/ +cp AUTHORS BUGS COPYING ChangeLog* FAQ HACKING NEWS README THANKS TODO \ + $VLCDEPSDIR/doc/vcdimager/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile twolame +# ----------------------------------------------------------------------------- +make_twolame() +{ +echo -e "**\n** twolame ...\n**" +cd $TMP/tmp-$PRGNAM/twolame-$TWOLAME +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_twolame.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_twolame.log +# Install twolame into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_twolame.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/twolame/ +cp AUTHORS COPYING ChangeLog README TODO \ + $VLCDEPSDIR/doc/twolame/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile libdaap +# ----------------------------------------------------------------------------- +make_daap() +{ +echo -e "**\n** libdaap ...\n**" +cd $TMP/tmp-$PRGNAM/libopendaap-$DAAP +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-debug \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_daap.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_daap.log +# Install libdaap into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_daap.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libopendaap/ +cp AUTHORS COPYING ChangeLog NEWS README \ + $VLCDEPSDIR/doc/libopendaap/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile libupnp +# ----------------------------------------------------------------------------- +make_upnp() +{ +echo -e "**\n** libupnp ...\n**" +cd $TMP/tmp-$PRGNAM/libupnp-$UPNP + +touch $OUTPUT/patch-${PRGNAM}_upnp.log +# Fix the compilation and avoid undefined symbols afterwards: +cat $SRCDIR/patches/libupnp_miniserver.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_upnp.log +# Fix some libupnp bugs: +cat $SRCDIR/patches/libupnp_fix_infinite_loop.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_upnp.log + +CFLAGS="$SLKCFLAGS -DUPNP_STATIC_LIB" \ +CXXFLAGS="$SLKCFLAGS -DUPNP_STATIC_LIB" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-ipv6 \ + --enable-static \ + --disable-shared \ + --disable-samples \ + --disable-debug \ + --disable-blocking_tcp_connections \ + --without-documentation \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_upnp.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_upnp.log +# Install libupnp into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +# The 'make install' will install into $VLCDEPSDIR : +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_upnp.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libupnp/ +cp AUTHORS COPYING ChangeLog LICENSE NEWS README THANKS TODO \ + $VLCDEPSDIR/doc/libupnp/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile speex codec +# ----------------------------------------------------------------------------- +make_speex() +{ +echo -e "**\n** speex ...\n**" +cd $TMP/tmp-$PRGNAM/speex-$SPEEX + +## We are using a git tarball now, we need to accommodate a bit: +#cat $SRCDIR/patches/speex_automake.patch | patch -p1 --verbose \ +# 2>&1 | tee $OUTPUT/patch-${PRGNAM}_speex.log +#cat $SRCDIR/patches/speex_no-ogg.patch | patch -p1 --verbose \ +# 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_speex.log +# +#autoreconf -vif + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-binaries \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_speex.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_speex.log +# Install speex into a temp location so libshout and vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_speex.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/speex/ +cp AUTHORS COPYING ChangeLog NEWS README* TODO \ + $VLCDEPSDIR/doc/speex/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile speex dsp +# ----------------------------------------------------------------------------- +make_speexdsp() +{ +echo -e "**\n** speexdsp ...\n**" +cd $TMP/tmp-$PRGNAM/speexdsp-$SPEEXDSP + +touch $OUTPUT/configure-${PRGNAM}_speexdsp.log + +mkdir -p m4 +autoreconf -vif \ + 2>&1 | tee -a $OUTPUT/configure-${PRGNAM}_speexdsp.log + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --enable-resample-full-sinc-table \ + --disable-examples \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee -a $OUTPUT/configure-${PRGNAM}_speexdsp.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_speexdsp.log +# Install speexdsp into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_speexdsp.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/speexdsp/ +cp AUTHORS* COPYING ChangeLog NEWS README* TODO \ + $VLCDEPSDIR/doc/speexdsp/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile libshout +# ----------------------------------------------------------------------------- +make_shout() +{ +echo -e "**\n** libshout ...\n**" +cd $TMP/tmp-$PRGNAM/libshout-$SHOUT +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CPPFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-speex \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_shout.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_shout.log +# Install libshout into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_shout.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libshout/ +cp COPYING NEWS README \ + $VLCDEPSDIR/doc/libshout/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile goom +# ----------------------------------------------------------------------------- +make_goom() +{ +echo -e "**\n** goom ...\n**" +# First, fix a blatant bug in the archive: +find $TMP/tmp-$PRGNAM/goom${GOOM} -type d -exec chmod 755 {} \; +cd $TMP/tmp-$PRGNAM/goom${GOOM} + +# I think MMX is crashing the goom plugin on 32-bit: +cat $SRCDIR/patches/goom-2k4-0.nommx.patch | patch -p1 --verbose \ + 2>&1 | tee $OUTPUT/patch-${PRGNAM}_goom.log + +# Do not install the xmms plugin to the root filesystem: +cat $SRCDIR/patches/goom2k4-xmmslibdir.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_goom.log + +# Do not build the xmms plugin in the first place (GTK related errors): +cat $SRCDIR/patches/goom-2k4-0.noxmms.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_goom.log + +# Eliminate a double include: +sed -i \ + -e "/^goom2_library_include_HEADERS =/s/goom_tools.h //g" \ + -e "/^goom2_library_include_HEADERS =/s/$/ goom_tools.h/" \ + src/Makefile.am + +# Squash the automake errors: +autoreconf -vif -I m4 + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_goom.log + +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_goom.log +# Install libgoom into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_goom.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/goom/ +cp AUTHORS COPYING ChangeLog KNOWNBUGS NEWS README \ + $VLCDEPSDIR/doc/goom/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile glew +# ----------------------------------------------------------------------------- +make_glew() +{ +echo -e "**\n** glew ...\n**" +cd $TMP/tmp-$PRGNAM/glew-${GLEW} + +CFLAGS="$SLKCFLAGS -DGLEW_STATIC" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ + make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_glew.log +# Install libGLEW into a temp location so vlc can pickup the library +make GLEW_DEST=$VLCDEPSDIR/usr install \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_glew.log +# We must get rid of these: +rm $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libGLEW.so* +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/glew/ +cp LICENSE* README* doc/* \ + $VLCDEPSDIR/doc/glew/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile projectM +# ----------------------------------------------------------------------------- +make_projectm() +{ +echo -e "**\n** projectm ...\n**" +cd $TMP/tmp-$PRGNAM/projectM-${PROJECTM}-Source + +touch $OUTPUT/patch-${PRGNAM}_projectm.log +# Fix linking - get rid of unresolved symbols at runtime: +cat $SRCDIR/patches/projectM_static.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_projectm.log +# Fix building with gcc 6 and higher: +cat $SRCDIR/patches/projectM-${PROJECTM}_gcc.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_projectm.log + +# We need to redefine the presets etc path: +sed -i -e "s#share/projectM#share/vlc/projectM#" $(grep -lr 'share/projectM' .) + +mkdir build +cd build + # I would need this to statically link to my libGLEW.a however it causes symbol errors: + # libprojectM.a(projectM.cpp.o): relocation R_X86_64_32S against `_ZTV8projectM' can not be used when making a shared object; recompile with -fPIC + #CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ + #CPPFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ + #LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ + #PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + LDFLAGS="$SLKLDFLAGS" \ + cmake \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -DUSE_FTGL:BOOL=OFF \ + -DUSE_NATIVE_GLEW:BOOL=OFF \ + -DINCLUDE-PROJECTM-LIBVISUAL:BOOL=OFF \ + -DINCLUDE-PROJECTM-PULSEAUDIO:BOOL=OFF \ + -DINCLUDE-PROJECTM-QT:BOOL=OFF \ + -DDISABLE_NATIVE_PRESETS:BOOL=ON \ + -DBUILD_PROJECTM_STATIC:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + .. \ + 2>&1 | tee $OUTPUT/cmake-${PRGNAM}_projectm.log + make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_projectm.log + # Install projectm into a temp location so vlc can pickup the library + make install DESTDIR=$VLCDEPSDIR \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_projectm.log + ## These are being forgotten... + cp Renderer/libRenderer.a MilkdropPresetFactory/libMilkdropPresetFactory.a \ + $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/ +cd .. +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/projectm/ +cp COPYING ChangeLog $VLCDEPSDIR/doc/projectm/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile x262 +# ----------------------------------------------------------------------------- +make_x262() +{ +echo -e "**\n** x262 ...\n**" + +case "$ARCH" in + x86_64|arm*) + ARCHOPTS="--enable-pic" ;; + *) + ARCHOPTS="" ;; +esac + +cd $TMP/tmp-$PRGNAM/x262-$X262 + +# The sources are not yet too mature (copied from x264): +sed -i -e "s/x264/x262/g" configure +sed -i -e "s/x264_config/x262_config/g" *.h Makefile *.c + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-cli \ + --disable-avs \ + --disable-lavf \ + --disable-ffms \ + $ARCHOPTS \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_x262.log + +# Compensate more for lack of maturity: +sed -i -e "s/x264.pc/x262.pc/g" Makefile +sed -i -e "s/x264.h/x262.h/g" Makefile + +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_x262.log + +# Compensate even a bit more for lack of maturity: +cp x264.h x262.h + +# Install x262 into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_x262.log + +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/x262/ +cp AUTHORS COPYING \ + $VLCDEPSDIR/doc/x264/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile x264 +# ----------------------------------------------------------------------------- +make_x264() +{ +echo -e "**\n** x264 ...\n**" + +case "$ARCH" in + x86_64|arm*) + ARCHOPTS="--enable-pic" ;; + *) + ARCHOPTS="" ;; +esac + +cd $TMP/tmp-$PRGNAM/x264-snapshot-${X264}-stable +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-cli \ + --disable-avs \ + --disable-lavf \ + --disable-ffms \ + --disable-opencl \ + $ARCHOPTS \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_x264.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_x264.log +# Install x264 into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_x264.log + +echo -e "**\n** x264 ...\n**" +echo -e "\n** 10-bit\n**" >> $OUTPUT/configure-${PRGNAM}_x264.log +echo -e "\n** 10-bit\n**" >> $OUTPUT/make-${PRGNAM}_x264.log + +# Now add a x62410b (10-bit decoder) to the depsdir: +make clean +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-cli \ + --disable-avs \ + --disable-lavf \ + --disable-ffms \ + --disable-opencl \ + --bit-depth=10 \ + $ARCHOPTS \ + 2>&1 | tee -a $OUTPUT/configure-${PRGNAM}_x264.log +sed -i -e 's/libx264/libx26410b/g' Makefile config.mak +sed -i -e 's/x264/x26410b/g' x264.pc +mv x264.pc x26410b.pc +sed -i -e 's/x264.pc/x26410b.pc/g' Makefile +make ${NUMJOBS} 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_x264.log +# Install x26410b into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_x264.log + +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/x264/ +cp AUTHORS COPYING \ + $VLCDEPSDIR/doc/x264/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile dv +# ----------------------------------------------------------------------------- +make_dv() +{ +echo -e "**\n** dv ...\n**" +cd $TMP/tmp-$PRGNAM/libdv-${DV} +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --disable-gtk \ + --disable-xv \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dv.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_dv.log +# Install dv into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dv.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libdv/ +cp AUTHORS COPYING COPYRIGHT ChangeLog NEWS README* TODO \ + $VLCDEPSDIR/doc/libdv/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile libdvbpsi library +# ----------------------------------------------------------------------------- +make_dvbpsi() +{ +echo -e "**\n** dvbpsi ...\n**" +cd $TMP/tmp-$PRGNAM/libdvbpsi-${DVBPSI} +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-debug \ + --enable-release \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dvbpsi.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_dvbpsi.log +# Install dvbpsi into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dvbpsi.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libdvbpsi/ +cp AUTHORS COPYING ChangeLog NEWS README \ + $VLCDEPSDIR/doc/libdvbpsi/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile libdca library +# ----------------------------------------------------------------------------- +make_dca() +{ +echo -e "**\n** dca ...\n**" +cd $TMP/tmp-$PRGNAM/libdca-${DCA} +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-debug \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dca.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_dca.log +# Install dca into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dca.log +# Fix a broken symlink: +( cd $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} + if [ -L libdts.a ] ; then + rm -f libdts.a ; ln -s libdca.a libdts.a + fi +) +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libdca/ +cp AUTHORS COPYING ChangeLog NEWS README TODO \ + $VLCDEPSDIR/doc/libdca/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile avc1394 raw1394 and dc1394 libraries +# VLC will use these +# ----------------------------------------------------------------------------- +make_1394() +{ +echo -e "**\n** 1394 ...\n**" +OLDDIR=$(pwd) +cd $TMP/tmp-$PRGNAM/libraw1394-${RAW1394} + +# Or else vlc compilation fails with "error: redefinition of typedef 'byte_t'" +patch -p0 --verbose < $SRCDIR/patches/libraw1394_typedef.patch \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_raw1394.log + +[ ! -x configure ] && ./autogen.sh + +# Seems I need this ugly prefix or else I have to dig into the problem of vlc +# incorrectly interpreting *.la contents... +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --mandir=$VLCDEPSDIR/usr/man \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_raw1394.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_raw1394.log +# Install libraw1394 into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_raw1394.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libraw1394/ +cp AUTHORS COPYING.LIB ChangeLog NEWS README \ + $VLCDEPSDIR/doc/libraw1394/ || true + +echo -e "**\n**" + +cd $TMP/tmp-$PRGNAM/libavc1394-${AVC1394} + +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CPPFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +LIBRAW1394_CFLAGS="-I$VLCDEPSDIR/usr/include" \ +LIBRAW1394_LIBS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} -lraw1394" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_avc1394.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_avc1394.log +# Install libavc1394 into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_avc1394.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libavc1394/ +cp AUTHORS COPYING ChangeLog NEWS README TODO \ + $VLCDEPSDIR/doc/libavc1394/ || true + +echo -e "**\n**" + +cd $TMP/tmp-$PRGNAM/libdc1394-${DC1394} + +## Skip building the examples - those cause errors: +#cat $SRCDIR/patches/libdc1394-noexamples.patch | patch -p1 --verbose \ +# 2>&1 | tee $OUTPUT/patch-${PRGNAM}_dc1394.log + +# Make sure that the static libdc1394 is found in the vlcdeps: +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CPPFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} -lraw1394 $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-examples \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dc1394.log + # Building the examples fails on kernel >= 2.6.38 because that deprecated + # the v4l1 interface. You'll get the error "dc1394_vloopback.c:49:28: + # fatal error: linux/videodev.h: No such file or directory" +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_dc1394.log +# Install libdc1394 into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dc1394.log +# Fix the pkgconfig file to get rid of unresolved symbols at runtime: +sed -i -e "/^Libs:/s/$/ -lavc1394 -lraw1394/" $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig/libdc1394-2.pc +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libdc1394/ +cp AUTHORS COPYING ChangeLog NEWS README \ + $VLCDEPSDIR/doc/libdc1394/ || true + +cd $OLDDIR +} + + +# ----------------------------------------------------------------------------- +# Compile fribidi +# ----------------------------------------------------------------------------- +make_fribidi() +{ +echo -e "**\n** fribidi ...\n**" +cd $TMP/tmp-$PRGNAM/fribidi-$FRIBIDI +if [ "$ARCH" = "x86_64" -o "$ARCH" = "armv7hl" ]; then + ARCHOPTS="--with-pic" +else + ARCHOPTS="" +fi + +# Allow for internal use of the library: +cat $SRCDIR/patches/fribidi.patch | patch -p1 --verbose \ + 2>&1 | tee $OUTPUT/patch-${PRGNAM}_fribidi.log + +# Fix error on Slackware 14.1, no issue on Slackware 14.2... +# configure.ac:49: error: possibly undefined macro: AC_CONFIG_MACRO_DIRS +sed -i -e "s/AC_CONFIG_MACRO_DIRS/AC_CONFIG_MACRO_DIR/" configure.ac + +# And since we patched the configure.ac and Makefile.am we have to bootstrap: +rm -f configure +./bootstrap + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + $ARCHOPTS \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_fribidi.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_fribidi.log +# Install fribidi into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_fribidi.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/fribidi/ +cp AUTHORS COPYING ChangeLog NEWS README THANKS TODO \ + $VLCDEPSDIR/doc/fribidi/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile libass +# ----------------------------------------------------------------------------- +make_ass() +{ +echo -e "**\n** ass ...\n**" +cd $TMP/tmp-$PRGNAM/libass-$ASS + +## Make it find libiconv if present: +#cat $SRCDIR/patches/libass_fix_iconv.patch | patch -p1 --verbose \ +# 2>&1 | tee $OUTPUT/patch-${PRGNAM}_ass.log + +# And since we patched the configure: +autoreconf -vif + +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_ass.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_ass.log +# Install libass into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_ass.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libass/ +cp COPYING Changelog $VLCDEPSDIR/doc/libass/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile taglib +# ----------------------------------------------------------------------------- +make_taglib() +{ +echo -e "**\n** taglib ...\n**" +cd $TMP/tmp-$PRGNAM/taglib-${TAGLIB} + +CXX=gcc \ +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +cmake . \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + -DBUILD_SHARED_LIBS=OFF \ + -DWITH_ASF:BOOL=ON \ + -DWITH_MP4:BOOL=ON \ + 2>&1 | tee $OUTPUT/cmake-${PRGNAM}_taglib.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_taglib.log +# Install taglib into a temp location so vlc can pickup the library +make install DESTDIR=$VLCDEPSDIR \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_taglib.log + +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/taglib/ +cp AUTHORS COPYING* README TODO $VLCDEPSDIR/doc/taglib/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile fluidsynth +# ----------------------------------------------------------------------------- +make_fluid() +{ +echo -e "**\n** fluidsynth ...\n**" +cd $TMP/tmp-$PRGNAM/fluidsynth-$FLUID +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --enable-double \ + --disable-jack-support \ + --without-readline \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_fluid.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_fluid.log +# Install fluid into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_fluid.log +# Fix a missing link dependency (resolves 'unknown symbols' runtime): +sed -i -e "/^Libs:/s/$/ -lasound -pthread -lgthread-2.0 -lrt -lglib-2.0/" $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig/fluidsynth.pc +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/fluidsynth/ +cp AUTHORS COPYING ChangeLog NEWS README THANKS TODO \ + $VLCDEPSDIR/doc/fluidsynth/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile kate +# ----------------------------------------------------------------------------- +make_kate() +{ +echo -e "**\n** kate ...\n**" +cd $TMP/tmp-$PRGNAM/libkate-${KATE} + +## Compatibility patch for libpng14: +#cat $SRCDIR/patches/libkate_png14.patch | patch -p0 --verbose \ +# 2>&1 | tee $OUTPUT/patch-${PRGNAM}_kate.log + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +LEXLIB="/usr/lib${LIBDIRSUFFIX}/libfl.a" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-valgrind \ + --disable-doc \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_kate.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_kate.log +# Install kate into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_kate.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libkate/ +cp AUTHORS COPYING README THANKS \ + $VLCDEPSDIR/doc/libkate/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile libtiger +# ----------------------------------------------------------------------------- +make_tiger() +{ +echo -e "**\n** tiger ...\n**" +cd $TMP/tmp-$PRGNAM/libtiger-${TIGER} + +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-doc \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_tiger.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_tiger.log +# Install tiger into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_tiger.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libtiger/ +cp AUTHORS COPYING README THANKS \ + $VLCDEPSDIR/doc/libtiger/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile lua +# ----------------------------------------------------------------------------- +make_lua() +{ +echo -e "**\n** lua ...\n**" +cd $TMP/tmp-$PRGNAM/lua-${LUA} + +# Use 32-bits LUAC file format on all platforms. In other words, +# 64-bits platform will support 32-bits LUAC files and reject 64-bits LUAC +# files. This should ease cross-compilation and copying luac files manually. +cat $SRCDIR/patches/luac-32bits.patch | patch -p1 --verbose \ + 2>&1 | tee $OUTPUT/patch-${PRGNAM}_lua.log + +# Make it use our CFLAGS: +sed -i "s/-DLUA_USE_LINUX/\"-DLUA_USE_LINUX $SLKCFLAGS\"/g" src/Makefile + +# Fix paths (lib64 for x86_64): +sed -i "s#/lib#/lib${LIBDIRSUFFIX}#" Makefile +sed -i "s#/usr/local#/usr#" Makefile + +MYLDFLAGS="$SLKLDFLAGS -ld" make linux ${NUMJOBS} \ + 2>&1 | tee $OUTPUT/make-${PRGNAM}_lua.log +# Install lua into a temp location so vlc can pickup the library +make install INSTALL_TOP=$VLCDEPSDIR/usr \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_lua.log +# Install a pkg-config file: +install -D -m 0644 etc/lua.pc $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig/lua.pc +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/lua +cp COPYRIGHT HISTORY README $VLCDEPSDIR/doc/lua/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile libva +# ----------------------------------------------------------------------------- +make_libva() +{ +echo -e "**\n** libva ...\n**" +cd $TMP/tmp-$PRGNAM/libva-$LIBVA + +# +# == NOTE ON VAAPI == +# +# VAAPI can enable hardware accelerated playback for MPEG-2/4, H.264/AVC +# and VC-1 video on certain graphics hardware. +# The VAAPI support in this VLC package depends on VA drivers that you have to +# install yourself for your specific hardware. The drivers should go into +# directory /usr/lib${LIBDIRSUFFIX}/dri . +# If you install my libva package you can get MPEG-2 hardware acceleration on +# Intel graphics. +# If you additionally install my libva-vdpau-driver package, then you get +# hardware acceleration on Nvidia graphics (with nvidia's binary driver). +# If you own an Ati card and use the fglrx driver, then you can achieve +# hardware acceleration by installing the xvba-video driver from here: +# http://www.splitted-desktop.com/~gbeauchesne/xvba-video/ (since I do not own +# Ati hardware I can not build a package for xvba-video myself) +# + +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_libva.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_libva.log +# Strip the static lib to prevent linking errors in 64-bit, +find . -name "*.a" | xargs strip --strip-unneeded +# Install libva into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +make install DESTDIR=$VLCDEPSDIR 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_libva.log +# Remove the .so and .la files; we want static linking. +rm -f $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libva*.so* +rm -f $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libva*.la +# Fix the pkgconfig file to get rid of unresolved symbols at link time: +sed -i -e "/^Libs:/s/$/ -lX11 -lXext -lXfixes -ldrm -ldl/" \ + $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig/libva*.pc +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libva/ +cp COPYING NEWS $VLCDEPSDIR/doc/libva/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile libvdpau +# ----------------------------------------------------------------------------- +make_vdpau() +{ +echo -e "**\n** vdpau ...\n**" +cd $TMP/tmp-$PRGNAM/libvdpau-$VDPAU + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-documentation \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_vdpau.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_vdpau.log +# Strip the static lib to prevent linking errors in 64-bit, +find . -name "*.a" | xargs strip --strip-unneeded +# Install vdpau into a temp location so vlc can pickup the library +echo -e "\n**\n**\n" +make install DESTDIR=$VLCDEPSDIR 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_vdpau.log +# Remove the .so and .la files; we want static linking. +rm -f $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libvdpau*.so* +rm -f $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libvdpau*.la +rm -f $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/vdpau/libvdpau*.so* +rm -f $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/vdpau/libvdpau*.la +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/vdpau/ +cp AUTHORS COPYING ChangeLog NEWS README $VLCDEPSDIR/doc/vdpau/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile VP8 +# ----------------------------------------------------------------------------- +make_vpx() +{ +echo -e "**\n** vpx ...\n**" +cd $TMP/tmp-$PRGNAM/libvpx-${VPX} + +case "$ARCH" in + i?86) + ARCHOPTS="--target=x86-linux-gcc" + ;; + x86_64) + ARCHOPTS="--target=${ARCH}-linux-gcc --enable-pic" + ;; + armv7hl) + ARCHOPTS="--target=armv7-linux-gcc --enable-pic" + cat $SRCDIR/patches/libvpx_fix-armhf-link.patch | patch -p1 --verbose + export AS=as + export AR=ar + export CROSS="${TARGET}-" + ;; + arm*) + ARCHOPTS="--target=armv5te-linux-gcc --enable-pic" + export AS=as + export AR=ar + export CROSS="${TARGET}-" + ;; + *) + ARCHOPTS="--target=${ARCH}-linux-gcc" + ;; +esac + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --disable-install-bins \ + --disable-install-srcs \ + --disable-install-libs \ + --disable-debug-libs \ + --disable-debug \ + --disable-docs \ + --disable-examples \ + --disable-unit-tests \ + --enable-postproc \ + --enable-runtime-cpu-detect \ + $ARCHOPTS \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_vpx.log + #--disable-examples \ causes errors +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_vpx.log +# Install libvpx into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_vpx.log +# The build system vor libvpx is not yet mature: +cp -a --parents vpx/*.h ${VLCDEPSDIR}/usr/include/ +cp -a libvpx.a ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX} +cp -a libvpx_g.a ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX} +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/vpx/ +cp AUTHORS CHANGELOG LICENSE README \ + $VLCDEPSDIR/doc/vpx/ || true +cd - +} + +# ----------------------------------------------------------------------------- +# Compile ogg opus libraries +# ----------------------------------------------------------------------------- +make_opus() +{ +echo -e "**\n** opus ...\n**" +cd $TMP/tmp-$PRGNAM/opus-${OPUS} + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-doc \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_opus.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_opus.log +# Install opus into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_opus.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/opus/ +cp AUTHORS COPYING ChangeLog NEWS README \ + $VLCDEPSDIR/doc/opus/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile npapi-vlc +# ----------------------------------------------------------------------------- +make_npapi() +{ +echo -e "**\n** npapi ...\n**" +cd $TMP/tmp-$PRGNAM/$PRGNAM2-${NPAPI}* + +[ ! -x configure ] && ./autogen.sh 2>&1 | tee autogen-${PRGNAM}_npapi.log + +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_npapi.log + +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_npapi.log +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile libbluray +# ----------------------------------------------------------------------------- +make_bluray() +{ +echo -e "**\n** bluray ...\n**" +cd $TMP/tmp-$PRGNAM/libbluray-${BLURAY} + +sed -i -e "s|/usr/lib/libbluray|/usr/lib${LIBDIRSUFFIX}/libbluray|" \ + src/libbluray/bdj/bdj.c + +[ ! -x configure ] && sh bootstrap + +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --disable-examples \ + --disable-debug \ + --disable-shared \ + --enable-static \ + --enable-bdjava \ + --disable-doxygen-doc \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_bluray.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_bluray.log +# Install libbluray into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_bluray.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libbluray/ +cp COPYING *.txt $VLCDEPSDIR/doc/libbluray/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile asdclpib - AS-DCP File Access Library +# ----------------------------------------------------------------------------- +make_asdcplib() +{ +echo -e "**\n** asdcplib ...\n**" +cd $TMP/tmp-$PRGNAM/asdcplib-${ASDCPLIB} + +[ ! -x configure ] && sh bootstrap + +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS -std=gnu++98" \ +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --disable-shared \ + --enable-freedist \ + --enable-static \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_asdcplib.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_asdcplib.log +# Install asdcplib into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_asdcplib.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/asdcplib/ +cp COPYING* README* $VLCDEPSDIR/doc/asdcplib/ || true +cd - +} + + +# ----------------------------------------------------------------------------- +# Compile x265 +# ----------------------------------------------------------------------------- +make_x265() +{ +echo -e "**\n** x265 ...\n**" +# We use videolan's contribs repository now: +cd $TMP/tmp-$PRGNAM/x265-${X265} + +pkg_static "source/x265.pc.in" + +# Set the compiler flags: +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" +LDFLAGS="-L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" + +# We follow the build instructions at: +# https://github.com/videolan/x265/blob/master/build/linux/multilib.sh +# See also https://bitbucket.org/multicoreware/x265/wiki/Home : +# Build 10bit and 12bit only on x86_64 for which assembler code exists. +if [ "$ARCH" = "x86_64" ]; then + mkdir build-12 + cd build-12 + cmake ../source \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_INSTALL_DIR=lib${LIBDIRSUFFIX} \ + -DHIGH_BIT_DEPTH=ON \ + -DMAIN12=ON \ + -DEXPORT_C_API=OFF \ + -DENABLE_CLI=OFF \ + -DENABLE_SHARED=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_x265.log + make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_x265.log + cd - + mkdir build-10 + cd build-10 + cmake ../source \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_INSTALL_DIR=lib${LIBDIRSUFFIX} \ + -DHIGH_BIT_DEPTH=ON \ + -DEXPORT_C_API=OFF \ + -DENABLE_CLI=OFF \ + -DENABLE_SHARED=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + 2>&1 | tee -a $OUTPUT/configure-${PRGNAM}_x265.log + make ${NUMJOBS} 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_x265.log + cd - + mkdir build-8 + cd build-8 + ln -s ../build-10/libx265.a libx265_main10.a + ln -s ../build-12/libx265.a libx265_main12.a + cmake ../source \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_INSTALL_DIR=lib${LIBDIRSUFFIX} \ + -DEXTRA_LIB="x265_main10.a;x265_main12.a" \ + -DEXTRA_LINK_FLAGS="-L." \ + -DLINKED_10BIT=ON \ + -DLINKED_12BIT=ON \ + -DENABLE_SHARED=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + 2>&1 | tee -a $OUTPUT/configure-${PRGNAM}_x265.log + make ${NUMJOBS} 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_x265.log + # Rename the 8bit library, then combine all three into libx265.a using ar: + mv libx265.a libx265_main.a + ar -M <<EOF +CREATE libx265.a +ADDLIB libx265_main.a +ADDLIB libx265_main10.a +ADDLIB libx265_main12.a +SAVE +END +EOF +else + mkdir build-8 + cd build-8 + cmake ../source \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_INSTALL_DIR=lib${LIBDIRSUFFIX} \ + -DENABLE_SHARED=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_x265.log + make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_x265.log +fi + +# We were left in the final build directory: +# Install x265 into a temp location so vlc can pickup the library +make install DESTDIR=$VLCDEPSDIR \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_x265.log +cd .. + +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/x265/ +cp COPYING* build/README* $VLCDEPSDIR/doc/x265/ || true +} + +# ----------------------------------------------------------------------------- +# Compile libssh2 +# ----------------------------------------------------------------------------- +make_ssh2() +{ +echo -e "**\n** ssh2 ...\n**" +cd $TMP/tmp-$PRGNAM/libssh2-${SSH2} + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="$SLKLDFLAGS -lz -lgpg-error" \ +./configure \ + --prefix=$VLCDEPSDIR/usr \ + --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ + --enable-static \ + --disable-shared \ + --disable-examples-build \ + --with-libgcrypt \ + --without-openssl \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_ssh2.log +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_ssh2.log +# Install ssh2 into a temp location so vlc can pickup the library +make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_ssh2.log +# Add DOCS to the vlcdeps to have it added to vlc package later: +mkdir -p $VLCDEPSDIR/doc/libssh2/ +cp AUTHORS COPYING ChangeLog NEWS README \ + $VLCDEPSDIR/doc/libssh2/ || true +cd - +} + + + +# ----------------------------------------------------------------------------- +# VLC +# ----------------------------------------------------------------------------- +make_vlc() +{ +echo -e "**\n** VLC ...\n**" +OLDDIR=$(pwd) +cd $TMP/tmp-$PRGNAM + +# Determine the actual version of the program, and +# optionally the development branch it came from: + +if [ ! -d {PRGNAM}-${SRCVER} ]; then + NEWVER=$(ls -1 -d --indicator-style=none vlc-* 2>/dev/null) + if [ -n "$NEWVER" ]; then + echo "##" + echo -n "## Changing vlc VERSION from '$VERSION' to " + SRCVER=$(echo $NEWVER | cut -d- -f2-) + VERSION=$(echo $SRCVER | tr '-' '.') + echo "'$VERSION'" + echo "##" + else + echo "Can not determine which version of VLC I should build!" + exit 1 + fi +fi +if [ "$BRANCH" != "master" -a "x$BRANCH" != "x" ]; then + VERSION=$(echo "${BRANCH}_${VERSION}" | tr - _) +fi + +# If we build a static Qt4 gui, unset the QT-related environment variables, +# so that a pre-existing Qt4 will not be picked up and create errors: +if [ "$STATIC_QT4" = "YES" ]; then + unset QTDIR + unset QT4DIR + unset QT5DIR + NEWPATH="$VLCDEPSDIR/usr/bin" + for elem in $(echo $PATH | cut -d: --output-delimiter=' ' -f1-) ; do + if ! $(echo "$elem"| grep -q /qt) ; then + NEWPATH="$NEWPATH:$elem" + fi + done + export PATH="$NEWPATH" +fi + +cd $TMP/tmp-$PRGNAM/${PRGNAM}-${SRCVER} +echo "" >$OUTPUT/patch-${PRGNAM}.log + +## Configure a default Slackware TTF font: +#cat $SRCDIR/patches/vlc-2.2_deffont.patch | patch -p1 --verbose \ +# 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log + +# Fix SDL header location: +sed -i -e "s#SDL_image.h#SDL/&#" -e "s#SDL.h#SDL/&#" $(grep -lr "SDL*.h" .) + +# Only enable DLL loader on ELF ix86 platforms: +if [ "$ARCH" == "i486" -o "$ARCH" == "i686" ]; then + DO_LOADER="--enable-loader" +else + DO_LOADER="" +fi + +## FFMPEG changed it's CPU flag definitions but VLC did not yet follow: +#if grep -q FF_MM_MMX modules/stream_out/switcher.c ; then +# cat $SRCDIR/patches/vlc_ffmpeg_mm_api.patch | patch -p1 --verbose \ +# 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log +#fi + +if [ "$STATIC_FFMPEG" == "YES" ]; then + # Fix runtime errors about missing symbols: + ## vlc-cache-gen trips over at the end of the build, when we add LIBS + ## to avoid missing symbols in the avcodec plugin at runtime: + if ! grep -q " -ldrm" ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig/libavcodec.pc ; then + sed -i "/^Libs: /s/$/ -lvdpau -lva-drm -lva-x11 -lva -lX11 -lXext -lXfixes -lm -ldrm/" \ + ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig/libavcodec.pc + fi +fi + +# If we built a static projectM support library, let's use it properly: +if [ -d $VLCDEPSDIR/usr/share/vlc/projectM ]; then + sed -i -e "s#share/projectM#share/vlc/projectM#" \ + $(grep -lr 'share/projectM' .) + sed -i -e "s#usr/share/fonts/truetype/ttf-dejavu#usr/share/fonts/TTF#" \ + $(grep -lr 'usr/share/fonts/truetype/ttf-dejavu' .) +fi + +# Plug a xss vulnerability, commited right after 2.0.6: +if [ "$VERSION" = "2.0.6" ]; then + cat $SRCDIR/patches/vlc-2.0.6_xss_vulns.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log +fi + +# avcodec audio decoder: update block pointer (emergency patch for 2.0.8 +# after which a new 2.0.8a tarball was released): +if [ "$VERSION" = "2.0.8" ]; then + cat $SRCDIR/patches/vlc-2.0.8_update_block_pointer.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log +fi + +# We patched our Qt 5.5.1 package: +sed -i configure.ac \ + -e 's/AC_MSG_ERROR(\["You cannot build VLC with Qt-5.5.0/AC_MSG_WARN(\["You cannot build VLC with Qt-5.5.0/' + +## VLC 0.9.6 but also 0.9.9 needs to regenerate libtool (known bug) +#if ls m4/lt*.m4 1>/dev/null 2>/dev/null ; then +# rm -f m4/{lt,lib}*.m4; autoreconf -svif +#fi +# +## vlc checks eventfd availability in glibc rather awkwardly. Our glibc 2.7 +## implements the function but does not export it in a header. Still vlc thinks +## it can make use of it. NOTE: with glibc 2.8 it will work... have to wait... +#sed -i -e 's/^#ifdef HAVE_EVENTFD/#ifdef HAVE_SYS_EVENTFD_H/' src/misc/objects.c + +if [ "${USE_FFMPEG3}" = "YES" -o "${USE_FFMPEG3}" = "yes" ]; then + # Fix build against ffmpeg 3.x (patch adapted from freebsd original): + cat $SRCDIR/patches/vlc2_ffmpeg3.patch | patch -p0 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_vlc.log +fi + +sh bootstrap + +# Slackware > 14.2 switched to ncurses 6.x: +NCURSESWCONF=$(which ncursesw5-config 2>/dev/null || which ncursesw6-config 2>/dev/null) + +NCURSES_CFLAGS="$(${NCURSESWCONF} --cflags) -I/usr/include" \ +NCURSES_LIBS="$(${NCURSESWCONF} --libs)" \ +PROJECTM_LIBS="-lprojectM $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libMilkdropPresetFactory.a $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libRenderer.a -lGLU -lGLEW -lGL" \ +PROJECTM2_LIBS="-lprojectM $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libMilkdropPresetFactory.a $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libRenderer.a -lGLU -lGLEW -lGL" \ +CPPFLAGS="-I$VLCDEPSDIR/usr/include" \ +CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" \ +LDFLAGS="-Wl,-Bsymbolic -L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \ +PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ +PATH="$VLCDEPSDIR/usr/bin:$PATH" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --docdir=/usr/doc/vlc-$VERSION \ + --localstatedir=/var \ + --without-contrib \ + --disable-rpath \ + --disable-debug \ + --disable-freerdp \ + --disable-jack \ + --disable-gnomevfs \ + --disable-zvbi \ + --enable-alsa \ + --enable-shared \ + --enable-optimize-memory=no \ + --enable-ncurses \ + --enable-lua \ + --enable-dc1394 \ + --enable-dvbpsi \ + --enable-dvdnav \ + --enable-vcdx \ + --enable-libcddb \ + --enable-projectm \ + --enable-svg \ + --enable-telx \ + --enable-libass \ + --enable-caca \ + --enable-aa \ + --enable-sftp \ + --enable-upnp \ + --enable-flac \ + --enable-shout \ + --enable-live555 \ + --enable-realrtsp \ + --enable-speex \ + --enable-opus \ + --enable-x262 \ + --enable-x264 \ + --enable-x265 \ + --enable-a52 \ + --with-a52-tree=$TMP/tmp-$PRGNAM/a52dec-$A52 \ + --enable-twolame \ + --enable-ogg \ + --enable-vorbis \ + --enable-theora \ + --enable-swscale \ + --enable-avcodec \ + --enable-avformat \ + --enable-libva \ + --enable-vdpau \ + ${DO_LOADER} \ + --enable-run-as-root \ + --with-default-font-family="Sans Bold" \ + --with-default-font="/usr/share/fonts/TTF/DejaVuSans-Bold.ttf" \ + --with-default-monospace-font="/usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf" \ + --program-prefix= \ + --program-suffix= \ + --build=$TARGET \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}.log + + # Enabled by default: + #--enable-dca \ + #--with-dca-tree=$TMP/tmp-$PRGNAM/libdca-$DCA \ + + # Libdvdnav is now the default (which uses libdvdread in turn) + #--enable-dvdread \ + #--with-dvdread-tree=$TMP/tmp-$PRGNAM/libdvdread-$DVDREAD \ + #--enable-goom \ + #--with-goom-tree=$TMP/tmp-$PRGNAM/goom$GOOM \ + + # Sometimes skins support breaks and we'll have to disable it: + #--disable-skins2 \ + + # Got errors about missing sdt.h in ./modules/access/dvb/access.c + #--with-dvbpsi-tree=$TMP/tmp-$PRGNAM/libdvbpsi5-${DVBPSI} \ + + # Leave this out so that linking the static x264.a into a shared + # library works on x86_64: + #--with-x264-tree=$TMP/tmp-$PRGNAM/x264-snapshot-$X264 \ + + # Without these, we get also rid of "unknown symbols" runtime + #--with-dv-raw1394=$TMP/tmp-$PRGNAM/libraw1394-${RAW1394} \ + #--with-dv-avc1394=$TMP/tmp-$PRGNAM/libavc1394-${AVC1394} \ + + # Deprecated: + #--enable-ffmpeg \ + #--with-ffmpeg-tree=$TMP/tmp-$PRGNAM/ffmpeg-${FFMPEG} \ + #--enable-daap \ + #--disable-musicbrainz \ + #--disable-arts \ + #--enable-esd \ + #--with-speex-tree=$TMP/tmp-$PRGNAM/speex-$SPEEX \ + #--disable-galaktos \ + #--with-twolame-tree=$TMP/tmp-$PRGNAM/twolame-$TWOLAME \ + #--with-dv-raw1394-tree=$TMP/tmp-$PRGNAM/libraw1394-${RAW1394} \ + #--with-dv-avc1394-tree=$TMP/tmp-$PRGNAM/libavc1394-${AVC1394} \ + #--disable-testsuite \ + #--enable-release \ + #--enable-libcdio \ + #--enable-cddax \ + #--disable-snapshot \ + #--with-dvdnav-config-path=$VLCDEPSDIR/usr/bin \ + #--enable-svgalib \ + #--enable-v4l \ + #--enable-id3tag \ + + # VLC 2.1 wants OSS4 which we do not have: + #--enable-oss \ + + # Now finds the required libraries without manual tweaking: + #AVCODEC_LIBS="-lavcodec -lbz2 -lz ${DO_FFMPEG_LIBS_PAT} -ldl -ltheora -lvorbisenc -lswscale -lavutil -lvorbis -lm -logg" \ + #AVCODEC_CFLAGS="" \ + +# Now, we are ready for the compile: +make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}.log + +# If we are compiling the browser plugin, then we need to install to $VLCDEPSDIR +if [ "$MOZPLUGIN" == "YES" ]; then + echo -e "\n**\n**\n" >> $OUTPUT/make-${PRGNAM}.log + make install DESTDIR=$VLCDEPSDIR 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log + # And remove the .la files because they confuse the plugin compilation. + rm $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libvlc*.la +fi + +cd $OLDDIR +} + +# ----------------------------------------------------------------------------- +# These routines do all the work of setting up the package contents +# and creating the actual Slackware packages in $OUTPUT +# ----------------------------------------------------------------------------- + +build_npapipkg() +{ +echo -e "**\n** creating $PRGNAM2 package ...\n**" +cd $TMP/tmp-$PRGNAM/$PRGNAM2-${NPAPI} +# Install the mozilla plugin: +mkdir -p $PKG2/usr/lib${LIBDIRSUFFIX}/mozilla/plugins/ +make DESTDIR=$PKG2 install-strip + +# Add package documentation: +mkdir -p $PKG2/usr/doc/$PRGNAM2-$NPAPI +cp -a AUTHORS COPYING ChangeLog NEWS README $PKG2/usr/doc/$PRGNAM2-$NPAPI || true +find $PKG2/usr/doc -type f -exec chmod 644 {} \; +chown -R root:root $PKG2/usr/doc/$PRGNAM2-$NPAPI/* + +mkdir -p $PKG2/install +cat $SRCDIR/slack-desc.$PRGNAM2 > $PKG2/install/slack-desc +cat $SRCDIR/slack-required.$PRGNAM2 > $PKG2/install/slack-required + +cd $PKG2 +makepkg --linkadd y --chown n $OUTPUT/${PRGNAM2}-${NPAPI}-${ARCH}-${NPBUILD}${TAG}.${PKGTYPE} 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}_${PRGNAM2}.log +cd $OUTPUT +md5sum ${PRGNAM2}-${NPAPI}-${ARCH}-${NPBUILD}${TAG}.${PKGTYPE} > ${PRGNAM2}-${NPAPI}-${ARCH}-${NPBUILD}${TAG}.${PKGTYPE}.md5 +cd - +cat $PKG2/install/slack-desc | grep "^${PRGNAM2}" > $OUTPUT/${PRGNAM2}-${NPAPI}-${ARCH}-${NPBUILD}${TAG}.txt +cat $PKG2/install/slack-required > $OUTPUT/${PRGNAM2}-${NPAPI}-${ARCH}-${NPBUILD}${TAG}.dep + +} + +build_vlcpkg() +{ +# I want to be able to override the package version: +PKGVERSION=${PKGVERSION:-$VERSION} + +echo -e "**\n** building the $PRGNAM package (version $PKGVERSION) ...\n**" +# +# Install all the needed stuff to the package dir +# +cd $TMP/tmp-$PRGNAM/${PRGNAM}-${SRCVER} + +make DESTDIR=$PKG install 2>&1 |tee $OUTPUT/install-${PRGNAM}.log + +# We don't want the mozilla plugin here: +[ -d $PKG/usr/lib${LIBDIRSUFFIX}/mozilla ] && rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/mozilla + +# Copy the projectM presets and other requirements into the package if we +# are adding support for it: +if [ -d $VLCDEPSDIR/usr/share/vlc/projectM ]; then + cp -a $VLCDEPSDIR/usr/share/vlc/projectM $PKG/usr/share/vlc/ + # Add missing directory: + mkdir $PKG/usr/share/vlc/projectM/textures + # Replace fonts with symlinks to preserve space: + rm $PKG/usr/share/vlc/projectM/fonts/* + ln -sf /usr/share/fonts/TTF/DejaVuSans.ttf $PKG/usr/share/vlc/projectM/fonts/Vera.ttf + ln -sf /usr/share/fonts/TTF/DejaVuSansMono.ttf $PKG/usr/share/vlc/projectM/fonts/VeraMono.ttf +fi + +# Create an empty plugin cache configuration file, so that +# it will be deleted too in the event of a 'removepkg': +touch $PKG/usr/lib${LIBDIRSUFFIX}/vlc/plugins.dat + +# Add this to the doinst.sh: +mkdir -p $PKG/install +cat <<EOINS > $PKG/install/doinst.sh +# Update the desktop database: +if [ -x usr/bin/update-desktop-database ]; then + chroot . /usr/bin/update-desktop-database usr/share/applications > /dev/null +2>&1 +fi + +# Update hicolor theme cache: +if [ -d usr/share/icons/hicolor ]; then + if [ -x /usr/bin/gtk-update-icon-cache ]; then + chroot . /usr/bin/gtk-update-icon-cache -f -t usr/share/icons/hicolor 1> /dev/null 2> /dev/null + fi +fi + +# Update the mime database: +if [ -x usr/bin/update-mime-database ]; then + chroot . /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1 +fi + +# Remove old cache data and regenerate the file: +chroot . <<EOCR 2>/dev/null +cd /usr/lib${LIBDIRSUFFIX}/vlc +find . -name "plugins*.dat" -exec rm -f {} \; +echo "Generating VLC plugins cache data..." +DISPLAY="" ./vlc-cache-gen -f . +EOCR + +EOINS + +## Add the icons to be used in menu entries: +#mkdir -p $PKG/usr/share/pixmaps +#convert share/vlc512x512.png -resize 64x64 $PKG/usr/share/pixmaps/vlc.png +#for res in 16 32 48 64 128; do +# mkdir -p $PKG/usr/share/icons/hicolor/${res}x${res}/apps +# convert share/vlc512x512.png -resize ${res}x${res} \ +# $PKG/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png +#done + +# Add the man page: +mkdir -p $PKG/usr/man/man1 +gzip -9c doc/vlc.1 > $PKG/usr/man/man1/vlc.1.gz + +# Add a vlc log syntax definition file for vim: +mkdir -p $PKG/usr/share/vim/vimfiles/syntax +install -m644 extras/analyser/vlc.vim $PKG/usr/share/vim/vimfiles/syntax/ + +# Remove traces of our temporary install location from libtool files: +find $PKG/usr/lib${LIBDIRSUFFIX} -name "*.la" -o -name "*.pc" \ + | xargs sed -i -e "s#$VLCDEPSDIR##g" + +# Add package documentation: +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +mv $PKG/usr/share/doc/vlc/* $PKG/usr/doc/$PRGNAM-$VERSION || true +rm -rf $PKG/usr/share/doc +cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true +# Add all the supporting packages' documentation too: +cp -a $VLCDEPSDIR/doc/* $PKG/usr/doc/$PRGNAM-$VERSION || true +# Add the SlackBuild as well as all patches we used to create the package: +cat $SRCDIR/$(basename $0) > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +cp -a $SRCDIR/patches $PKG/usr/doc/$PRGNAM-$VERSION/ +find $PKG/usr/doc -type f -exec chmod 644 {} \; +chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION/* + +# Compress the man page(s): +if [ -d $PKG/usr/man ]; then + find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \; + for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done +fi + +# Strip binaries: +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \ + | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Add a package description: +mkdir -p $PKG/install +cat $SRCDIR/slack-desc > $PKG/install/slack-desc +if [ -f $SRCDIR/doinst.sh ]; then + cat $SRCDIR/doinst.sh >> $PKG/install/doinst.sh +fi +if [ -f $SRCDIR/slack-required ]; then + cat $SRCDIR/slack-required > $PKG/install/slack-required +fi + +# Build the package: +cd $PKG +makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE} 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log +cd $OUTPUT +md5sum ${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE} > ${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE}.md5 +cd - +cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.txt +if [ -f $PKG/install/slack-required ]; then + cat $PKG/install/slack-required > $OUTPUT/${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.dep +fi + +} + +# ----------------------------------------------------------------------------- +# OK - we wrapped the separate components into convenience functions +# - now call them one by one: +# ----------------------------------------------------------------------------- + +if echo "$*" | grep -qw -- --unwrapvlcdeps ; then + # We use a tarball with precompiled binaries instead of compiling all + # dependencies at this moment (saves time when all we change is VLC code): + if [ "${USE_PATENTS}" == "YES" ]; then + DEPSFILE="$SRCDIR/$PRGNAM-vlcdeps_restricted-${SLACKVER}-$ARCH.tar.bz2" + else + DEPSFILE="$SRCDIR/$PRGNAM-vlcdeps_unrestricted-${SLACKVER}-$ARCH.tar.bz2" + fi + [ ! -f $DEPSFILE ] && DEPSFILE="$SRCDIR/$PRGNAM-vlcdeps-${SLACKVER}-$ARCH.tar.bz2" + cd $TMP/tmp-$PRGNAM + echo "Extracting tarball with pre-compiled binary library code..." + tar -xvf $DEPSFILE + find . -name "*.la" -o -name "*.pc" | xargs sed -i -e "s#/vlcdepsdir#$TMP/tmp-$PRGNAM#g" + cd - + +else + #if [ "xy" == "x" ]; then + + # qt4 is used for the vlc gui: + if [ "$STATIC_QT4" = "YES" ]; then + make_qt4 + fi + + # This first, which resolves weird build failures on ARM (assembly fails) + make_x265 + make_x264 + make_x262 + + if [ "${STATIC_LIBVA}" = "YES" ]; then + # VLC supports VAAPI & VDPAU directly since 2.1. + # If anyone can fix the 'unresolved symbols' in several vlc plugins when + # libva is compiled before ffmpeg, let me know! + make_libva + make_vdpau + fi + + # CD/VCD image support: + # Circular dependencies need these loops: + make_cdio --disable-vcd-info + make_vcd + make_cdio + + # vlc wants this, but cdio chokes with "cannot find -lcddb" so build it after + # cdio (which only used cddb for the cd-info binary which we don't use): + make_cddb + + # DVD support: + # Only use patented code if we are allowing it: + if [ "${USE_PATENTS}" == "YES" ]; then + make_dvdcss + fi + make_dvdread + make_dvdnav + + if [ "$STATIC_FFMPEG" == "YES" ]; then + # Needed before ffmpeg: + make_vpx + make_theora + make_amr + make_amrwbenc + make_gsm + make_lame + + # ffmpeg uses the above static libraries: + if [ "${USE_FFMPEG3}" = "YES" -o "${USE_FFMPEG3}" = "yes" ]; then + make_ffmpeg + else + # Only use patented AAC code if we are allowing it: + if [ "${USE_PATENTS}" == "YES" ]; then + make_faac + make_aacenc + fi + make_ffmpeg2 + fi + fi + + # Additional libraries that vlc will use: + make_a52 + make_dca + make_ebml + make_matroska + make_libmpeg2 + make_mpcdec + make_twolame + #make_daap + make_upnp + make_live555 + make_fribidi + make_taglib + make_asdcplib + make_ass + make_fluid + make_1394 + make_kate + make_tiger + make_lua + make_bluray + make_opus + make_ssh2 + + # Visualisations: + # FIXME: getting symbol errors but we need a static libGLEW: + #make_glew + make_goom + make_projectm + + # Digital video: + make_dv + make_dvbpsi + + # Speex before shout and vlc: + make_speex + make_speexdsp + make_shout + + #fi # End ( "xy" == "x" ) +fi + +if echo "$*" | grep -qw -- --wrapvlcdeps ; then + # Wrap the vlcdeps tree with all pre-compiled dependencies into a tarball: + cd $TMP/tmp-$PRGNAM + find . -name "*.la" -o -name "*.pc" | xargs sed -i -e "s#$TMP/tmp-$PRGNAM#/vlcdepsdir#g" + tar -jcf $OUTPUT/$PRGNAM-vlcdeps-${SLACKVER}-$ARCH.tar.bz2 \ + vlcdeps \ + a52dec-$A52 \ + + echo "Created vlcdeps binary tarball in '$OUTPUT/$PRGNAM-vlcdeps-${SLACKVER}-$ARCH.tar.bz2'..." + cd - +else + # Compile VLC using all the precompiled static libs in $VLCDEPSDIR : + make_vlc + + # Wrap VLC into a Slackware package: + build_vlcpkg "$*" + + # Should we also compile the mozilla plugin (npapi-vlc)? + if [ "$MOZPLUGIN" == "YES" ]; then + ## Unfortunately we need to spam the root partition with the vlc package: + #upgradepkg --install-new $OUTPUT/${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE} + make_npapi + build_npapipkg + fi +fi |