#!/bin/bash # $Id: vlc.SlackBuild,v 1.225 2024/07/22 14:07:21 root Exp root $ # Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 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 # For: vlc # Descr: multimedia player for various audio and video formats # URL: http://www.videolan.org/vlc/ # Buildneeds: apache-ant, java8, meson, ninja, python3 # (Slackware 14.2: newer nasm) # Needs: (Slackware 14.2: OpenAL, SDL_sound, libxkbcommon, qt5, # libinput, libwacom) # libdvdcss for playing encrypted DVDs # Changelog: # 0.8.6a-1: 15/Mar/2007 by Eric Hameleers # * Initial build. # 0.8.6b-1: 25/apr/2007 by Eric Hameleers # * Update. # 0.8.6c-1: 04/sep/2007 by Eric Hameleers # * Update. Allow vlc to be built without patented code (lame/amr). # 0.8.6d-1: 12/dec/2007 by Eric Hameleers # * 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 # * 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 # * New release fixes security issues. # 0.8.6e-2: 23/mar/2008 by Eric Hameleers # * Update libebml; new ffmpeg,live555 snapshots # 0.8.6f-1: 03/apr/2008 by Eric Hameleers # * New release (bugfixes). Also updated the snapshot for ffmpeg # 0.8.6f-2: 03/apr/2008 by Eric Hameleers # * Updated the snapshot for ffmpeg # 0.8.6g-1: 31/may/2008 by Eric Hameleers # * New release. Updated the snapshot for ffmpeg and live555, # updated libtheora. # 0.8.6h-1: 10/jun/2008 by Eric Hameleers # * 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 # * Fixed the broken DTS audio codec support (did not play # 6 channel sound here) # 0.8.6h-3: 17/jun/2008 by Eric Hameleers # * 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 # * New release. Also updated to the new lame-3.98. # 0.9.1-1: 31/aug/2008 by Eric Hameleers # * 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 # * Updated to 0.9.2 # 0.9.3-1: 30/sep/2008 by Eric Hameleers # * 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 # * 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 # * 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 # * 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 # * Updated libtheora to 1.0 and libcdio to 0.81 # 0.9.6-1: 08/nov/2008 by Eric Hameleers # * New release. Updated ffmpeg/x264 snapshots. # 0.9.8-1: 02/dec/2008 by Eric Hameleers # * New release. Updated ffmpeg/x264/live555 versions. Added midi # playback support through fluidsynth # 0.9.8a-1: 04/dec/2008 by Eric Hameleers # * 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 # * Updated ffmpeg/x264 snapshots, and re-adding firewire support # 0.9.8a-3: 28/dec/2008 by Eric Hameleers # * Updated ffmpeg/x264 snapshots, made it build on x86_64 with the # help of Attila Craciun. # 20090307-1: 07/mar/2009 by Eric Hameleers # * 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 # * Building the first release candidate. # 0.9.9.rc2-2:27/mar/2009 by Eric Hameleers # * Fix AAC decoding by removing "--with-drm" # 0.9.9-1: 27/mar/2009 by Eric Hameleers # * 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 # * 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 # * The first release candidate for 1.0.0 # 1.0.0.rc2-1: 26/may/2009 by Eric Hameleers # * The second release candidate for 1.0.0 # 1.0.0.rc3-1: 09/jun/2009 by Eric Hameleers # * The third release candidate for 1.0.0 # 1.0.0.rc4-1: 18/jun/2009 by Eric Hameleers # * 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 # * VLC 1.0.0 has been released! # 1.0.1-1: 28/jul/2009 by Eric Hameleers # * 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 # * Fix the swscale plugin # 1.0.2-1: 19/sep/2009 by Eric Hameleers # * Update. # 1.0.3-1: 31/oct/2009 by Eric Hameleers # * 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 # * Try to fix broken firewire support (libraw1394). Allow root to # run vlc. # 1.0.3-3: 13/nov/2009 by Eric Hameleers # * 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 # * 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 # * Make the dc1394 plugin work by patching VLC to use the new API. # 1.0.4-1: 11/dec/2009 by Eric Hameleers # * New release. The ffmpeg/x264 snapshots were updated. # 20091228-1: 28/dec/2009 by Eric Hameleers # * Test of git snapshot (1.1.git) # 1.1.0.pre3-1: 01/may/2010 by Eric Hameleers # * 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 # * 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 # * 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 # * 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 # * 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 # * 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 # * 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 # * 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 # * 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 # * Update to RC4 for the upcoming 1.1.0 release. # 1.1.0-1: 21/jun/2010 by Eric Hameleers # * 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 # * Test build of what will be 1.1.1, with updated x264 and live555. # 1.1.1-1: 20/jul/2010 by Eric Hameleers # * Official release of vlc 1.1.1. # 1.1.3-1: 22/aug/2010 by Eric Hameleers # * Update to 1.1.3. # 1.1.5-1: 12/nov/2010 by Eric Hameleers # * 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 # * 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 # * 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 # * 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 # * 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 # * Updated snapshots for vlcgit and x264. # 20111006-1: 06/oct/2011 by Eric Hameleers # * Added (unencrypted) bluray playback support. # Updated the ffmpeg, lbvpx, live555, v4l and x264 support # libraries. # 20111016-1: 16/oct/2011 by Eric Hameleers # * 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 # * 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 # * 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 # * 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 # * 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 # * Update to 2.0.1 while keeping the internal dependencies # unchanged. # 2.0.2-1 27/jun/2012 by Eric Hameleers # * New release. Further updates to internal bluray, ffmpeg, lame, # and x264 libraries. # 2.0.3-1 25/jul/2012 by Eric Hameleers # * New release. # 2.0.4-1 18/oct/2012 by Eric Hameleers # * 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 # * 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 # * 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 # * Apply patch for VideoLAN-SA-1302 (critical vulnerability in # the ASF demuxer). # 2.0.6-1 08/apr/2013 by Eric Hameleers # * New release. Updates to the internal ffmpeg fribidi live555 # libvpx and x264 libraries. # 2.0.6-2 12/apr/2013 by Eric Hameleers # * Fix the broken uPnP service discovery module which caused # audio stuttering in some videos. # 2.0.7-1 28/may/2013 by Eric Hameleers # * 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 # * New release. # 20130818-1 19/aug/2013 by Eric Hameleers # * 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 # * New release: 2.1.0! # 2.1.1-1 16/nov/2013 by Eric Hameleers # * 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 # * 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 # * Add VDPAU driver. # 2.1.2-3 13/dec/2013 by Eric Hameleers # * 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 # * 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 # * 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 # * New release. No updates to internal libraries. # 2.1.5-1 02/aug/2014 by Eric Hameleers # * New release. Updates to internal libraries: ass, ffmpeg, # dvdnav, dvdread, live555, x264. # 2.2.0-1 27/feb/2015 by Eric Hameleers # * 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 # * Fix hardware video decoding for hybrid cards (thanks manciuleas) # 2.2.1-1 14/apr/2015 by Eric Hameleers # * New release. # 2.2.1-2 04/may/2015 by Eric Hameleers # * Rebuilt for -current where libkate would not compile. # 2.2.1-3 25/jun/2015 by Eric Hameleers # * 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 # * 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 # * New release. # 2.2.2-2 22/feb/2016 by Eric Hameleers # * Rebuilt slackware-current version without Qt5 dependency. # 2.2.4-1 07/jul/2016 by Eric Hameleers # * Update. New versions of internal support libraries: x262, # opus, libva and libmpcdec. # 2.2.5.1-1 24/may/2017 by Eric Hameleers # * Update. # 2.2.6-1 25/may/2017 by Eric Hameleers # * Update. # 2.2.6-2 26/oct/2017 by Eric Hameleers # * Rebuilt for -current to fix broken TLS support. # 2.2.8-1 29/nov/2017 by Eric Hameleers # * 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 # * 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 # * Fix hardware decoding in ffmpeg3 variant. # 20180106-1 06/jan/2018 by Eric Hameleers # * VLC 3 is a major release update. The 20180106 git snapshot # is near 3.0.0-rc5. # - Now uses Qt5 for its GUI. # - Decoding engine uses ffmpeg3 codebase, so picking ffmpeg2 # instead is no longer an option. # - Updates to several internal libraries: ffmpeg, libass, # libbluray, live555, libssh2, x262, x264. # - New internal libraries: microdns, sdm, srt. # - Removed libraries: aacenc, daap, faad, faac, vcdimager. # - Incorporating static Qt libraries into the package is # no longer supported by the SlackBuild. You need to install # libxkbcommon, qt5, qt5-webkit packages separately. # 20180120-1 21/jan/2018 by Eric Hameleers # * VLC 3.0.0 RC7 testing. # 3.0.0-1 09/feb/2018 by Eric Hameleers # * VLC 3.0.0 released! # 3.0.0-2 13/feb/2018 by Eric Hameleers # * Enable chromecast. # 3.0.2-1 21/apr/2018 by Eric Hameleers # * Update. # 3.0.2-2 19/may/2018 by Eric Hameleers # * Rebuilt due to libidn2/openssl update in -current. # Also updated internal libraries: asdcp, dca, dsm, dvbpsi, x265. # 3.0.3-1 29/may/2018 by Eric Hameleers # * Update. # 3.0.4-1 07/sep/2018 by Eric Hameleers # * Update. # 3.0.6-1 12/jan/2019 by Eric Hameleers # * Update. Added the dav1d (AV1 video) decoder. # 3.0.7-1 25/may/2019 by Eric Hameleers # * Update. # 3.0.8-1 30/aug/2019 by Eric Hameleers # * Update. Also updated some of the internal libraries: # bluray, dav1d, ebml and matroska. # Removed the NPAPI plugin. # 3.0.10-1 27/apr/2020 by Eric Hameleers # * Update. Also updated some of the internal libraries: # bluray, dav1d, dca, dsm, dvdnav, dvdread, ebml, fribidi, mdns. # 3.0.11.1-1 16/sep/2020 by Eric Hameleers # * Update. Also updated internal libraries: # dav1d, ebml, matroska, vpx # 3.0.12-1 23/jan/2021 by Eric Hameleers # * Update. Also updated internal libraries: bluray, dav1d. # 3.0.16-1 03/dec/2021 by Eric Hameleers # * Update. Also updated internal libraries: bluray, dav1d, # dvdnav, dvdread, dvdcss, ebml, libva, matroska, opus, pcre2, # speexdsp, ssh2, vpx. Added patches to internal ffmpeg. # 3.0.17.4-1 22/jul/2022 by Eric Hameleers # * Update. Also updated internal libraries: ass, bluray, dav1d, # dsm, dvdread, ffmpeg (to 4.4), fribidi, srt, twolame and x265. # 3.0.18-1 15/apr/2023 by Eric Hameleers # * Update. Also updated internal libraries: bluray, dav1d, ffmpeg, # glew, libva, speex, upnp, vdpau, vlx and x265. # 3.0.19-1 13/oct/2023 by Eric Hameleers # * Update. Added soxr audio-resampler and libplacebo which is # required for 4K HDR tone-mapping. Also updated internal # libraries: dav1d, ffmpeg, libva, shout, upnp, vpx. # 3.0.21-1 21/jul/2024 by Eric Hameleers # * Update. Added support for amf (AMD Media Framework), also # updated internal bluray, dav1d, ffmpeg, matroska and vpx libs. # # 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 BUILD=${BUILD:-1} 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:-"3.0.0"} #VERSION=${VERSION:-"20180103"} #VERSION=${VERSION:-"HEAD"} #VERSION=${VERSION:-"master#20180103"} #VERSION=${VERSION:-"@3.0.0#20180102"} #VERSION=${VERSION:-"master@git://git.videolan.org/vlc/vlc-3.0.git#20180102"} # # And then you can specify a package version explicitly if you want to # override the default which equals "$VERSION": #PKGVERSION="xxx" # ----------------------------------------------------------------------------- VLCBRANCH=${VLCBRANCH:-"3.0.x"} DEFGITURI=${GITURI:-"https://code.videolan.org/videolan/vlc.git"} VERSION=${VERSION:-"3.0.21"} PKGVERSION=${VERSION} #VLCMINOR=${VLCMINOR:-"21"} #PKGVERSION=${PKGVERSION:-"${VLCBRANCH}.${VLCMINOR}"} DOCS="ABOUT-NLS AUTHORS COPYING COPYING.LIB ChangeLog INSTALL NEWS README THANKS" NUMJOBS=${NUMJOBS:-"-j$(nproc)"} # 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) ARCH=i586 ;; arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; # Unless $ARCH is already set, use uname -m for all other archs: *) ARCH=$(uname -m) ;; esac export ARCH 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="" ;; *) 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 to the US # that incorporate patented code. So here you go. USE_PATENTS=${USE_PATENTS:-"YES"} USE_PATENTS=$(echo $USE_PATENTS | tr 'a-z' 'A-Z') # VLC requires Qt5 for its GUI. # Slackware older than 15.0 does not include Qt5, so on those # releases, we need to include the Qt5 librarieus into the package. # In that case, define STATIC_QT5="YES", else the package will depend on # the presence of the system version of Qt5. # BIG FAT WARNING: STATIC QT5 DOES NOT WORK CURRENTLY STATIC_QT5=${STATIC_QT5:-"NO"} STATIC_QT5=$(echo $STATIC_QT5 | 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') # 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 # Allow override of development tools: export CC=${CC:-"gcc"} export CPP=${CPP:-"cpp"} export CXX=${CXX:-"g++"} export AR=${AR:-"gcc-ar"} export NM=${NM:-"gcc-nm"} export RANLIB=${RANLIB:-"gcc-ranlib"} # ----------------------------------------------------------------------------- # We're done with the initials. Let's move on: # ----------------------------------------------------------------------------- A52=0.7.4 AMF=1.4.34 AMRWBENC=0.1.3 AMR=0.1.3 ASDCPLIB=2.7.19 ASS=0.16.0 AVC1394=0.5.4 BLURAY=1.3.4 CDDB=1.3.2 CDIO=0.90 DAV1D=1.4.3 DC1394=2.2.1 DCA=0.0.7 DSM=0.4.3 DV=1.0.0 DVBPSI=1.3.2 DVDNAV=6.1.1 DVDREAD=6.1.3 DVDCSS=1.4.3 EBML=1.4.3 FFMPEG=4.4.4 FLUID=1.1.6 FRIBIDI=1.0.12 GII=1.0.2 GLEW=2.2.0 GOOM=2k4-0 GSM=1.0.16 KATE=0.4.1 LAME=3.100 LIBVA=2.20.0 LIVE=2016.11.28 LUA=5.1.5 MATROSKA=1.7.0 MDNS=0.1.2 MPCDEC=r481 MPEG2DEC=0.5.1 OPUS=1.3 PCRE2=10.39 PLACEBO=5.264.1 # Vlc 3.0.x requires libplacebo < 6 PROJECTM=2.0.1 PROTOBUF=3.1.0 QT5=5.7.1 RAW1394=2.0.5 SHOUT=2.4.6 SOXR=0.1.3 SPEEX=1.2.1 SPEEXDSP=1.2.1 SRT=1.4.4 SSH2=1.10.0 TAGLIB=1.11.1 THEORA=1.1.1 TIGER=0.3.4 TWOLAME=0.4.0 UPNP=1.14.15 VDPAU=1.5 VPX=1.14.1 X262=20180907 X264=20180907-2245 X265=3.5 # 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 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 dav1d, dsm, fribidi plugins requires meson/ninja/python3: if ( ! which meson || ! which ninja || ! which python3 ) 1>/dev/null 2>/dev/null ; then echo "+++ MESON, NINJA and/or PYTHON3 not present - the build will abort on compiling dav1d encoder! +++" echo "+++ Press Ctrl-C within 10 seconds, install 'meson', 'ninja' and 'python3' and try again. +++" sleep 10 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/sources/${PRGNAM}-${SRCVER}.tar.xz" SRCPAT[0]="NO" USE[0]="YES" # ffmpeg libraries SOURCE[1]="$SRCDIR/sources/ffmpeg-${FFMPEG}.tar.xz" SRCURL[1]="https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.xz" #SRCURL[1]="" SRCPAT[1]="NO" USE[1]="YES" # AMR de/encoder libraries used in ffmpeg to encode 3GPP audio SOURCE[2]="$SRCDIR/sources/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/sources/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/sources/libtiger-${TIGER}.tar.gz" SRCURL[4]="https://download.videolan.org/pub/contrib/tiger/libtiger-${TIGER}.tar.gz" SRCPAT[4]="NO" USE[4]="YES" # Lua - embedded interpreter for lua playlist, metafetcher and interface plugins SOURCE[5]="$SRCDIR/sources/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/sources/libkate-${KATE}.tar.gz" SRCURL[6]="https://download.videolan.org/pub/contrib/kate/libkate-${KATE}.tar.gz" SRCPAT[6]="NO" USE[6]="YES" # DV video, used by most digital (firewire) camcorders: SOURCE[7]="$SRCDIR/sources/libdv-${DV}.tar.gz" SRCURL[7]="http://downloads.sourceforge.net/libdv/libdv-${DV}.tar.gz" SRCPAT[7]="NO" USE[7]="YES" # Unicode BiDirectional algorithm library, requirement for libass. SOURCE[8]="$SRCDIR/sources/fribidi-${FRIBIDI}.tar.xz" SRCURL[8]="https://github.com/fribidi/fribidi/releases/download/v${FRIBIDI}/fribidi-${FRIBIDI}.tar.xz" SRCPAT[8]="NO" USE[8]="YES" # HEVC (X.265) codec: SOURCE[9]="$SRCDIR/sources/x265_${X265}.tar.gz" SRCURL[9]="https://bitbucket.org/multicoreware/x265_git/downloads/x265_${X265}.tar.gz" SRCPAT[9]="NO" USE[9]="YES" # MPEG-2 Part 2 (X.262) codec: SOURCE[10]="$SRCDIR/sources/x262-${X262}.tar.gz" SRCURL[10]="" SRCPAT[10]="NO" USE[10]="YES" # Matroska support: SOURCE[11]="$SRCDIR/sources/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/sources/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/sources/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/sources/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/sources/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/sources/libcdio-${CDIO}.tar.gz" SRCURL[16]="http://ftp.gnu.org/gnu/libcdio/libcdio-$CDIO.tar.gz" SRCPAT[16]="NO" USE[16]="YES" # speex dsp implementation: SOURCE[17]="$SRCDIR/sources/speexdsp-${SPEEXDSP}.tar.gz" SRCURL[17]="http://downloads.us.xiph.org/releases/speex/speexdsp-${SPEEXDSP}.tar.gz" SRCPAT[17]="NO" USE[17]="YES" # MP2 audio (de)coding support: SOURCE[18]="$SRCDIR/sources/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/sources/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/sources/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/sources/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/sources/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/sources/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/sources/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/sources/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/sources/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/sources/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/sources/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/sources/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/sources/libraw1394-${RAW1394}.tar.gz" SRCURL[30]="http://downloads.sourceforge.net/libraw1394/libraw1394-${RAW1394}.tar.gz" SRCPAT[30]="NO" USE[30]="YES" SOURCE[31]="$SRCDIR/sources/libdc1394-${DC1394}.tar.gz" SRCURL[31]="http://downloads.sourceforge.net/libdc1394/libdc1394-${DC1394}.tar.gz" SRCPAT[31]="NO" USE[31]="YES" SOURCE[32]="$SRCDIR/sources/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/sources/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/sources/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/sources/libva-${LIBVA}.tar.bz2" SRCURL[35]="https://github.com/intel/libva/releases/download/${LIBVA}/libva-${LIBVA}.tar.bz2" SRCPAT[35]="NO" USE[35]="YES" # Universal Plug'n'Play SOURCE[36]="$SRCDIR/sources/libupnp-${UPNP}.tar.bz2" SRCURL[36]="http://downloads.sourceforge.net/pupnp/libupnp-${UPNP}.tar.bz2" SRCPAT[36]="NO" USE[36]="YES" # Bluray support library (for unencrypted content): SOURCE[37]="$SRCDIR/sources/libbluray-${BLURAY}.tar.bz2" SRCURL[37]="https://download.videolan.org/pub/videolan/libbluray//${BLURAY}/libbluray-${BLURAY}.tar.bz2" SRCPAT[37]="NO" USE[37]="YES" # Libass - portable library for SSA/ASS subtitles rendering SOURCE[38]="$SRCDIR/sources/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/sources/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/sources/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/sources/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/sources/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/sources/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/sources/libvpx-${VPX}.tar.gz" SRCURL[44]="https://github.com/webmproject/libvpx/archive/v${VPX}.tar.gz" #SRCURL[44]="" SRCPAT[44]="NO" USE[44]="YES" # AMR-WB encoder libraries used to encode 3GPP audio SOURCE[45]="$SRCDIR/sources/vo-amrwbenc-${AMRWBENC}.tar.gz" SRCURL[45]="http://downloads.sourceforge.net/opencore-amr/vo-amrwbenc-${AMRWBENC}.tar.gz" SRCPAT[45]="NO" USE[45]="YES" # VDPAU for video hardware acceleration: SOURCE[46]="$SRCDIR/sources/libvdpau-${VDPAU}.tar.gz" SRCURL[46]="https://gitlab.freedesktop.org/vdpau/libvdpau/-/archive/${VDPAU}/libvdpau-${VDPAU}.tar.gz" SRCPAT[46]="NO" USE[46]="YES" # DAV1D, a free AV1 decoder: SOURCE[47]="$SRCDIR/sources/dav1d-${DAV1D}.tar.xz" SRCURL[47]="http://download.videolan.org/pub/videolan/dav1d/${DAV1D}/dav1d-${DAV1D}.tar.xz" SRCPAT[47]="NO" USE[47]="YES" # Library for AS-DCP files: SOURCE[48]="$SRCDIR/sources/asdcplib-${ASDCPLIB}.tar.gz" SRCURL[48]="http://download.cinecert.com/asdcplib/asdcplib-${ASDCPLIB}.tar.gz" SRCPAT[48]="NO" USE[48]="YES" # MicroDNS for mDNS services discovery: SOURCE[49]="$SRCDIR/sources/microdns-${MDNS}.tar.xz" SRCURL[49]="https://github.com/videolabs/libmicrodns/releases/download/${MDNS}/microdns-${MDNS}.tar.xz" SRCPAT[49]="NO" USE[49]="YES" # Secure Reliable Transport (srt): SOURCE[50]="$SRCDIR/sources/srt-${SRT}.tar.gz" SRCURL[50]="https://github.com/Haivision/srt/archive/v${SRT}.tar.gz" SRCPAT[50]="NO" USE[50]="YES" # Defective SMb (dsm): SOURCE[51]="$SRCDIR/sources/libdsm-${DSM}.tar.xz" SRCURL[51]="https://github.com/videolabs/libdsm/releases/download/v${DSM}/libdsm-${DSM}.tar.xz" SRCPAT[51]="NO" USE[51]="YES" # Protobuf: SOURCE[52]="$SRCDIR/sources/protobuf-cpp-${PROTOBUF}.tar.gz" SRCURL[52]="https://github.com/google/protobuf/releases/download/v${PROTOBUF}/protobuf-cpp-${PROTOBUF}.tar.gz" SRCPAT[52]="NO" USE[52]="YES" # libplacebo enables HDR tone mapping in VLC: SOURCE[53]="$SRCDIR/sources/libplacebo-${PLACEBO}.tar.gz" #SRCURL[53]="https://code.videolan.org/videolan/libplacebo/-/archive/v${PLACEBO}/libplacebo-v${PLACEBO}.tar.gz" SRCURL[53]="" SRCPAT[53]="NO" USE[53]="YES" # Soxr resampling library (depends on ffmpeg): SOURCE[54]="$SRCDIR/sources/soxr-${SOXR}-Source.tar.xz" SRCURL[54]="http://downloads.sourceforge.net/project/soxr/soxr-${SOXR}-Source.tar.xz" SRCPAT[54]="NO" USE[54]="YES" # Advanced Media Framework (AMF) SDK: SOURCE[55]="$SRCDIR/sources/AMF-headers-${AMF}.tar.gz" SRCURL[55]="https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/download/v${AMF}/AMF-headers.tar.gz" SRCPAT[55]="NO" USE[55]="YES" # PCRE2 library for Qt5Base: SOURCE[56]="$SRCDIR/sources/pcre2-${PCRE2}.tar.gz" SRCURL[56]="https://ftp.pcre.org/pub/pcre/pcre2-${PCRE2}.tar.gz" SRCPAT[56]="NO" USE[56]="NO" # Qt5 base libraries: SOURCE[57]="$SRCDIR/sources/qtbase-opensource-src-${QT5}.tar.xz" SRCURL[57]="http://download.qt.io/official_releases/qt/$(echo $QT5 |cut -d. -f1,2)/${QT5}/submodules/qtbase-opensource-src-${QT5}.tar.xz" SRCPAT[57]="NO" USE[57]="NO" # Qt5 SVG support: SOURCE[58]="$SRCDIR/sources/qtsvg-opensource-src-${QT5}.tar.xz" SRCURL[58]="http://download.qt.io/official_releases/qt/$(echo $QT5 |cut -d. -f1,2)/${QT5}/submodules/qtsvg-opensource-src-${QT5}.tar.xz" SRCPAT[58]="NO" USE[58]="NO" # Qt5 platform-specific APIs for X11: SOURCE[59]="$SRCDIR/sources/qtx11extras-opensource-src-${QT5}.tar.xz" SRCURL[59]="http://download.qt.io/official_releases/qt/$(echo $QT5 |cut -d. -f1,2)/${QT5}/submodules/qtx11extras-opensource-src-${QT5}.tar.xz" SRCPAT[59]="NO" USE[59]="NO" # CSS decoding- VLC can do without if you install an external libdvdcss package. SOURCE[60]="$SRCDIR/sources/libdvdcss-${DVDCSS}.tar.bz2" SRCURL[60]="http://download.videolan.org/pub/libdvdcss/${DVDCSS}/libdvdcss-${DVDCSS}.tar.bz2" SRCPAT[60]="YES" USE[60]="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} ;; 17) # 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} ;; 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 ;; 37) # 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} ;; 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} ;; 53) # We clone the git of libplacebo including submodules: mkdir libplacebo-${PLACEBO} \ && cd libplacebo-${PLACEBO} \ && git clone https://code.videolan.org/videolan/libplacebo . \ && git checkout tags/v${PLACEBO} -b v${PLACEBO} \ && git submodule update --init --recursive \ && chown -R root:root . \ && cd .. \ && tar --exclude .git -${TARCOMP}cf ${2} libplacebo-${PLACEBO} rm -rf libplacebo-${PLACEBO} ;; *) # 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 Qt5 sources: if [ "$STATIC_QT5" != "NO" ]; then echo "**" echo "** Building with a static QT5..." echo "**" USE[55]="YES" USE[56]="YES" USE[57]="YES" USE[58]="YES" fi # We may not need to download and unpack the ffmpeg sources: if [ "$STATIC_FFMPEG" != "YES" ]; then echo "**" echo "** Not building static FFMPEG and its internal 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 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 -xf ${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 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 COPYING ChangeLog 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 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 # Fix assembly with binutils >= 2.41: cat $SRCDIR/patches/ffmpeg_binutils241.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log # Prevent a crash in DVXA in interlaced VC-1: cat $SRCDIR/patches/ffmpeg_dxva_vc1_crash.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log # Fix SAR not set early enough when starting the decoder: cat $SRCDIR/patches/ffmpeg_h264_early_SAR.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log # Apply VLC's own patches: cat $SRCDIR/patches/0001-avcodec-dxva2_hevc-add-support-for-parsing-HEVC-Rang.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log cat $SRCDIR/patches/0002-avcodec-hevcdec-allow-HEVC-444-8-10-12-bits-decoding.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log cat $SRCDIR/patches/0003-avcodec-hevcdec-allow-HEVC-422-10-12-bits-decoding-w.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log cat $SRCDIR/patches/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-start.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log cat $SRCDIR/patches/0002-avcodec-mpeg12dec-don-t-end-a-slice-without-first_sl.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ffmpeg.log if pkg-config --exists libopenjp2 1>/dev/null 2>/dev/null ; then USE_OPENJPEG="--enable-libopenjpeg" else USE_OPENJPEG="" fi if [ "$ARCH" = "x86_64" ]; then ARCHOPTS="--arch=x86_64 --enable-pic" elif [ "$ARCH" = "i586" ]; then ARCHOPTS="--arch=x86" 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} \ ${USE_OPENJPEG} \ --disable-avdevice \ --disable-avfilter \ --disable-avisynth \ --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-amf \ --enable-libgsm \ --enable-libmp3lame \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --enable-libtheora \ --enable-libvorbis \ --enable-libvo-amrwbenc \ --enable-libvpx \ --enable-bsf=vp9_superframe \ --enable-bzlib \ --enable-postproc \ --enable-pthreads \ --enable-zlib \ --enable-static \ $ARCHOPTS \ --target-os=linux \ --extra-cflags="-I${VLCDEPSDIR}/usr/include" \ --extra-ldflags="-L${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX} -ldl" \ --extra-libs="-lm -lpthread" \ 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 ! find $VLCDEPSDIR/usr/include/vaapi*.h 1>/dev/null 2>/dev/null ; 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 \ $VLCDEPSDIR/doc/ffmpeg/ || true cd $OLDDIR } # ----------------------------------------------------------------------------- # 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 .*/#include /' \ 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 # Borrowing from VLC contribs: # Change permissions to patch and sed the source chmod -R u+w . # Remove hardcoded cc, c++, ar variables sed -e "s%cc%${CC}%" -e "s%c++%${CXX}%" -e "s%LIBRARY_LINK =.*ar%LIBRARY_LINK = ${AR}%" -i.orig config.linux # We want 64bits offsets and PIC on Linux sed -e 's%-D_FILE_OFFSET_BITS=64%-D_FILE_OFFSET_BITS=64\ -fPIC\ -DPIC%' -i.orig config.linux # Apply patches: touch $OUTPUT/patch-${PRGNAM}_live.log cat $SRCDIR/patches/live555_no_null_reference.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_live.log cat $SRCDIR/patches/live555_expose_server_string.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_live.log ./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 export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS -fexceptions -fvisibility=hidden" export LDFLAGS="$SLKLDFLAGS" mkdir build ( cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=${VLCDEPSDIR}/usr \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ -DBUILD_SHARED_LIBS=OFF \ 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 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 ## Apply patches: #touch $OUTPUT/patch-${PRGNAM}_matroska.log ## Fix writing on NULL memory: #cat $SRCDIR/patches/matroska_dont-write-to-null-memory.patch | patch -p1 --verbose \ # 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_matroska.log ## Do not use invalid lace sizes: #cat $SRCDIR/patches/matroska_invalid-lace-sizes.patch | patch -p1 --verbose \ # 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_matroska.log 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" pkg_static "libmatroska.pc.in" mkdir build ( cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=${VLCDEPSDIR}/usr \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ -DBUILD_SHARED_LIBS=OFF \ 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 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 # Apply patches: touch $OUTPUT/patch-${PRGNAM}_libmpcdec.log # Be compatible with GCC 14: cat $SRCDIR/patches/musepack-tools-495_gcc14.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_libmpcdec.log 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 pkg_static "misc/dvdnav.pc.in" 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 \ --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 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 # Apply patches: touch $OUTPUT/patch-${PRGNAM}_cddb.log # Be compatible with GCC 14: cat $SRCDIR/patches/libcddb-1.3.2_c99.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_cddb.log 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**" cd $TMP/tmp-$PRGNAM/libcdio-$CDIO 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 \ --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 AUTHORS COPYING ChangeLog NEWS README* THANKS TODO \ $VLCDEPSDIR/doc/libcdio/ || 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 NEWS README \ $VLCDEPSDIR/doc/twolame/ || true cd - } # ----------------------------------------------------------------------------- # Compile libupnp # ----------------------------------------------------------------------------- make_upnp() { echo -e "**\n** libupnp ...\n**" cd $TMP/tmp-$PRGNAM/libupnp-$UPNP # Apply patches: touch $OUTPUT/patch-${PRGNAM}_upnp.log # Fix some libupnp bugs: cat $SRCDIR/patches/libupnp_pthread.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_upnp.log cat $SRCDIR/patches/libupnp_miniserver.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_upnp.log autoreconf -vif \ 2>&1 | tee $OUTPUT/reconf-${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 \ --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 COPYING ChangeLog THANKS \ $VLCDEPSDIR/doc/libupnp/ || true cd - } # ----------------------------------------------------------------------------- # Compile srt # ----------------------------------------------------------------------------- make_srt() { echo -e "**\n** srt ...\n**" cd $TMP/tmp-$PRGNAM/srt-${SRT} ## Apply patches: #touch $OUTPUT/patch-${PRGNAM}_srt.log #cat $SRCDIR/patches/srt_fix_pc.patch \ # | patch -p1 --verbose 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_srt.log #cat $SRCDIR/patches/srt_add_implicit_link_libraries.patch \ # | patch -p1 --verbose 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_srt.log pkg_static "scripts/srt.pc.in" # Adapt for x86_64 library paths: sed -e "s,DESTINATION lib,&${LIBDIRSUFFIX}," \ -e "s,lib/pkgconfig,lib${LIBDIRSUFFIX}/pkgconfig," \ -i CMakeLists.txt mkdir build cd build CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ LDFLAGS="$SLKLDFLAGS" \ cmake .. \ -DCMAKE_INSTALL_PREFIX=${VLCDEPSDIR}/usr \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ -DENABLE_SHARED=OFF \ -DUSE_GNUTLS=ON \ -DENABLE_CXX11=OFF \ 2>&1 | tee $OUTPUT/cmake-${PRGNAM}_srt.log make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_srt.log # Install srt into a temp location so vlc can pickup the library make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_srt.log cd .. # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/srt/ cp CONTRIBUTING* LICENSE README* $VLCDEPSDIR/doc/srt/ || true cd .. } # ----------------------------------------------------------------------------- # Compile dsm # ----------------------------------------------------------------------------- make_dsm() { echo -e "**\n** dsm ...\n**" cd $TMP/tmp-$PRGNAM/libdsm-${DSM} export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" export LDFLAGS="$SLKLDFLAGS" mkdir meson-build cd meson-build meson setup \ --default-library=static \ --prefix=$VLCDEPSDIR/usr \ --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ -Dauto_features=disabled -Dbinaries=false \ .. 2>&1 | tee $OUTPUT/configure-${PRGNAM}_dsm.log ninja 2>&1 | tee $OUTPUT/make-${PRGNAM}_dsm.log cd - 1>/dev/null pkg_static "libdsm.pc.in" # Install into a temp location so vlc can pickup the library echo -e "\n**\n**\n" ninja install -C meson-build 2>&1 | tee $OUTPUT/install-${PRGNAM}_dsm.log # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/dsm/ cp AUTHORS COPYING NEWS $VLCDEPSDIR/doc/dsm/ || 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 pkg_static "speexdsp.pc" # 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 pkg_static "shout.pc.in" touch $OUTPUT/patch-${PRGNAM}_shout.log # Don't try to pull in openssl: cat $SRCDIR/patches/libshout_no_openssl.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_shout.log # Build fixes: cat $SRCDIR/patches/libshout_stdio.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_shout.log cat $SRCDIR/patches/libshout_strings.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_shout.log # Prevent libtool error: autoreconf -vif \ 2>&1 | tee $OUTPUT/autoreconf-${PRGNAM}_shout.log 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} \ --without-openssl \ --enable-speex \ --enable-static \ --disable-shared \ --disable-examples \ --disable-tools \ --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} pkg_static "libdca/libdca.pc.in" [ ! -x configure ] && autoreconf -vif \ 2>&1 | tee $OUTPUT/bootstrap-${PRGNAM}_dca.log 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 # Apply patches: touch $OUTPUT/patch-${PRGNAM}_fribidi.log ## Do not build tests and binaries: #cat $SRCDIR/patches/fribidi_nobins.patch | patch -p1 --verbose \ # 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_fribidi.log meson build \ --default-library=static \ --prefix=$VLCDEPSDIR/usr \ --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ -Ddocs=false -Dbin=false -Dtests=false \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_fribidi.log # Install fribidi into a temp location so vlc can pickup the library echo -e "\n**\n**\n" ninja install -C build 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 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* $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} # Apply patches: touch $OUTPUT/patch-${PRGNAM}_kate.log cat $SRCDIR/patches/libkate_automake.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_kate.log # The patch touches configure.ac: autoreconf -vif \ 2>&1 | tee $OUTPUT/autoreconf-${PRGNAM}_kate.log # Note that KDJ is broken and depends on Python2. Since our 'python' calls # Python3, this results in messages like: # 'SyntaxError: multiple exception types must be parenthesized' # Ignore those because we are not using KDJ in any case. 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 -e "s#/lib#/lib${LIBDIRSUFFIX}#" Makefile sed -i -e "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 dav1d libraries # ----------------------------------------------------------------------------- make_dav1d() { echo -e "**\n** dav1d ...\n**" cd $TMP/tmp-$PRGNAM/dav1d-${DAV1D} # Needs a newer nasm to make it compile on 14.2! meson build \ --prefix $VLCDEPSDIR/usr \ --default-library static \ --backend ninja \ --buildtype release \ -Dlibdir=lib${LIBDIRSUFFIX} \ -Denable_tests=false -Denable_tools=false \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_opus.log # Install dav1d into a temp location so vlc can pickup the library cd build ninja install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dav1d.log cd - 1>/dev/null # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/dav1d/ cp COPYING NEWS *.md doc/PATENTS \ $VLCDEPSDIR/doc/dav1d/ || true cd - } # ----------------------------------------------------------------------------- # Compile microdns # ----------------------------------------------------------------------------- make_microdns() { echo -e "**\n** microdns ...\n**" cd $TMP/tmp-$PRGNAM/microdns-${MDNS} CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ LDFLAGS="$SLKLDFLAGS" \ meson build \ -Dauto_features=disabled \ --default-library=static \ --prefix=$VLCDEPSDIR/usr \ --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_microdns.log # Install microdns into a temp location so vlc can pickup the library ninja install -C build 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_microdns.log # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/microdns/ cp AUTHORS COPYING NEWS \ $VLCDEPSDIR/doc/microdns/ || true cd - } # ----------------------------------------------------------------------------- # Compile libbluray # ----------------------------------------------------------------------------- make_bluray() { echo -e "**\n** bluray ...\n**" cd $TMP/tmp-$PRGNAM/libbluray-${BLURAY} # Apply patches: touch $OUTPUT/patch-${PRGNAM}_bluray.log # Add bdjo header: cat $SRCDIR/patches/bluray_bdjo-data-header.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_bluray.log # Fix 64bit library path: sed -i -e "s|/usr/lib/libbluray|/usr/lib${LIBDIRSUFFIX}/libbluray|" \ src/libbluray/bdj/bdj.c # Make it stop whining about automake-1.16 on Slackware 14.2: autoreconf -vif \ 2>&1 | tee $OUTPUT/bootstrap-${PRGNAM}_bluray.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=$VLCDEPSDIR/usr \ --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ --disable-doxygen-doc \ --disable-examples \ --disable-silent-rules \ --disable-shared \ --enable-static \ --with-libxml2 \ --enable-bdjava-jar \ --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 README* $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} # Apply patches: touch $OUTPUT/patch-${PRGNAM}_asdcplib.log cat $SRCDIR/patches/asdcplib_nettle.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_asdcplib.log # The patch touches configure.ac: #[ ! -x configure ] && sh bootstrap autoreconf -vif \ 2>&1 | tee $OUTPUT/reconf-${PRGNAM}_asdcplib.log 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-dev-headers \ --enable-freedist \ --enable-static \ --with-nettle \ --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 a .pc file otherwise VLC will not find the library: mkdir -p $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig cat < $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig/asdcplib.pc prefix=$VLCDEPSDIR/usr exec_prefix=\${prefix} includedir=\${prefix}/include libdir=\${exec_prefix}/lib${LIBDIRSUFFIX} Name: asdcplib Description: The asdcp library Version: ${ASDCPLIB} Cflags: -I\${includedir} Libs: -L\${libdir} -lasdcp -lkumu -lnettle -lgmp EOT # 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 <&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} # Apply patches: touch $OUTPUT/patch-${PRGNAM}_ssh2.log cat $SRCDIR/patches/libssh2_notests.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_ssh2.log pkg_static "libssh2.pc.in" autoreconf -vif \ 2>&1 | tee $OUTPUT/reconf-${PRGNAM}_ssh2.log 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-crypto=libgcrypt \ --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 COPYING ChangeLog NEWS README \ $VLCDEPSDIR/doc/libssh2/ || true cd - } # ----------------------------------------------------------------------------- # Compile protobuf - required for chromecast # ----------------------------------------------------------------------------- make_protobuf() { echo -e "**\n** protobuf ...\n**" cd $TMP/tmp-$PRGNAM/protobuf-${PROTOBUF} 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-static \ --program-prefix= \ --program-suffix= \ --build=$TARGET \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_protobuf.log make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_protobuf.log # Install protobuf into a temp location so vlc can pickup the library make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_protobuf.log # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/protobuf/ cp LICENSE *.txt $VLCDEPSDIR/doc/protobuf/ || true cd - } # ----------------------------------------------------------------------------- # Extract AMF headers # ----------------------------------------------------------------------------- make_amf() { echo -e "**\n** amf ...\n**" mkdir -p $VLCDEPSDIR/usr/include/ cp -a $TMP/tmp-$PRGNAM/AMF $VLCDEPSDIR/usr/include/ } # ----------------------------------------------------------------------------- # Compile pcre2 # ----------------------------------------------------------------------------- make_pcre2() { echo -e "**\n** pcre2 ...\n**" cd $TMP/tmp-$PRGNAM/pcre2-${PCRE2} 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 \ --disable-silent-rules \ --enable-static \ --enable-static=no \ --enable-pcre2-16 \ --enable-pcre2-32 \ --enable-jit \ --program-prefix= \ --program-suffix= \ --build=$TARGET \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_pcre2.log make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_pcre2.log # Install pcre2 into a temp location so qtbase can pickup the library make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_pcre2.log # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/pcre2/ cp AUTHORS COPYING ChangeLog HACKING LICENCE NEWS README \ $VLCDEPSDIR/doc/pcre2/ || true cd - } # ----------------------------------------------------------------------------- # Compile libplacebo # ----------------------------------------------------------------------------- make_placebo() { echo -e "**\n** placebo ...\n**" cd $TMP/tmp-$PRGNAM/libplacebo-${PLACEBO} # Our meson is too old but still useable: cat $SRCDIR/patches/libplacebo_meson.patch | patch -p0 --verbose \ 2>&1 | tee $OUTPUT/patch-${PRGNAM}_placebo.log CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ LDFLAGS="$SLKLDFLAGS" \ meson build \ -Dbuildtype=release \ --default-library=static \ --prefix=$VLCDEPSDIR/usr \ --libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_placebo.log # Install libplacebo into a temp location so vlc can pickup the library ninja install -C build 2>&1 | tee $OUTPUT/make-${PRGNAM}_placebo.log # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/libplacebo/ cp LICENSE README.md \ $VLCDEPSDIR/doc/libplacebo/ || true cd - } # ----------------------------------------------------------------------------- # Compile soxr # ----------------------------------------------------------------------------- make_soxr() { echo -e "**\n** soxr ...\n**" cd $TMP/tmp-$PRGNAM/soxr-${SOXR}-Source echo > $OUTPUT/patch-${PRGNAM}_soxr.log # Find our own ffmpeg instead of the system version: cat $SRCDIR/patches/soxr_find_ffmpeg.patch |patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_soxr.log # Allow static compilation into vlc: cat $SRCDIR/patches/soxr_expose_privatelibs.patch |patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_soxr.log pkg_static "src/soxr.pc.in" CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ LDFLAGS="$SLKLDFLAGS" \ cmake . \ -DCMAKE_INSTALL_PREFIX=${VLCDEPSDIR}/usr \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_TESTS=OFF \ -DWITH_LSR_BINDINGS=OFF \ -DWITH_OPENMP=OFF \ -DWITH_AVFFT=ON \ -Wno-dev \ 2>&1 | tee $OUTPUT/cmake-${PRGNAM}_soxr.log make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_soxr.log # Install soxr into a temp location so vlc can pickup the library make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_soxr.log # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/soxr/ cp COPYING* LICENCE NEWS README $VLCDEPSDIR/doc/soxr/ || true cd - 1>/dev/null } # ----------------------------------------------------------------------------- # Compile qt5 base - for the GUI # ----------------------------------------------------------------------------- make_qt5base() { echo -e "**\n** qt5base ...\n**" RETDIR=$(pwd) # If we build a static Qt5 gui, unset the QT-related environment variables, # so that a pre-existing Qt will not be picked up and create errors later: unset QTDIR 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" 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" export PKG_CONFIG="/usr/bin/pkg-config --static" # qtbase: cd $TMP/tmp-$PRGNAM/$(ls --indicator-style=none | grep qtbase-*-${QT5}) # Apply patches: touch $OUTPUT/patch-${PRGNAM}_qtbase.log # Don't tag binaries in static mode (causes this error on linking vlc library # dynamically - "version node not found for symbol qt_version_tag@Qt_5.5": cat $SRCDIR/patches/qtbase_dont_tag_static_binaries.patch |patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_qtbase.log # Fix missing private includes: sed -e '/CMAKE_NO_PRIVATE_INCLUDES\ \=\ true/d' \ -i mkspecs/features/create_cmake.prf # Use our custom compiler and linker flags: #sed -i -e "s,-O2,$CFLAGS," mkspecs/common/g++-base.conf || exit 1 sed -i -e "s,-O2,$CFLAGS," mkspecs/common/gcc-base.conf || exit 1 sed -i -e "s,-O3,$CFLAGS," mkspecs/common/gcc-base.conf || exit 1 sed -i -e "/^QMAKE_LFLAGS\s/s,+=,+= $LDFLAGS,g" mkspecs/common/gcc-base.conf || exit 1 ./configure \ -platform linux-g++ \ -confirm-license \ -opensource \ -prefix $VLCDEPSDIR/usr \ -libdir $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} \ -headerdir $VLCDEPSDIR/usr/include/qt5 \ -datadir $VLCDEPSDIR/usr/share/qt5 \ -archdatadir $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/qt5 \ -release \ -static \ -icu \ -qpa xcb \ -qt-xcb \ -qt-xkbcommon-x11 \ -qt-libjpeg \ -system-harfbuzz -system-libpng -system-pcre -system-zlib \ -no-gif \ -no-openssl -no-opengl -no-dbus -no-qml-debug \ -no-sql-odbc -no-sql-sqlite \ -no-compile-examples -nomake examples -nomake tests \ -no-separate-debug-info \ -no-pch \ -no-shared \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_qt5base.log #-no-pkg-config \ #-no-use-gold-linker \ make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_qt5base.log # Install into a temp location so vlc can find it (INSTALL_ROOT not needed): make install \ 2>&1 | tee $OUTPUT/install-${PRGNAM}_qt5base.log # Move the plugins that VLC needs into libdir, and # add these static # plugin libraries to .pc files to prevent runtime error # "plugins are disabled in static builds" # (only seen when starting vlc as 'QT_DEBUG_PLUGINS=1 vlc'): mv ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/qt5/plugins/platforms/libqxcb.* \ ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/ rm -rf ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/qt5/plugins sed -i -e 's/ -lQt5Gui/ -lfontconfig -lX11 -lxcb -lqxcb -lQt5XcbQpa -lQt5PlatformSupport -lQt5Gui/g' \ ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig/Qt5Gui.pc # Link includes to match what VLC expects mkdir -p ${VLCDEPSDIR}/usr/include/QtGui/qpa ln -s \ ${VLCDEPSDIR}/usr/include/qt5/QtGui/${QT5}/QtGui/qpa/qplatformnativeinterface.h \ ${VLCDEPSDIR}/usr/include/QtGui/qpa/ # Prevent weirdness later on: unset PKG_CONFIG # Remove unwanted library: rm -f $VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/libQt5Bootstrap* # Remove all .la files: find "$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}" -type f -name '*.la' \ -exec rm -f {} \; # Fix the path in prl files: find "$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}" -type f -name '*.prl' \ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \; # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/qtt5base/ cp *GPL_EXCEPTION* INSTALL LICENSE* README* \ $VLCDEPSDIR/doc/qt5base/ || true cd $RETDIR } # ----------------------------------------------------------------------------- # Compile qt5svg # ----------------------------------------------------------------------------- make_qt5svg() { echo -e "**\n** qt5svg ...\n**" RETDIR=$(pwd) # If we build a static Qt5 gui, unset the QT-related environment variables, # so that a pre-existing Qt will not be picked up and create errors later: unset QTDIR 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" 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" export QTDIR="${VLCDEPSDIR}/usr" #export QT_PLUGIN_PATH="${QTDIR}/lib${LIBDIRSUFFIX}/qt5/plugins" # qtsvg: cd $TMP/tmp-$PRGNAM/$(ls --indicator-style=none | grep qtsvg-*-${QT5}) ## Make sure our private Qt5 headers are used: #cat $SRCDIR/patches/qtsvg_use_private_qtzlib.patch | patch -p1 --verbose \ # 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_qt5svg.log # Make and install: qmake \ 2>&1 | tee $OUTPUT/qmake-${PRGNAM}_qt5svg.log make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_qt5svg.log make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_qt5svg.log # Move static libraries into place, and fix up the .pc file # so that they get linked into VLC later,: mv ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/qt5/plugins/iconengines/libqsvgicon.* \ ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/qt5/plugins/imageformats/libqsvg.* \ ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/ rm -rf ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/qt5/plugins sed -i ${VLCDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig/Qt5Svg.pc \ -e '/Libs:/ s/-lQt5Svg/-lqsvg -lqsvgicon -lQt5Svg/ ' # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/qt5svg/ cp *GPL_EXCEPTION* LICENSE* \ $VLCDEPSDIR/doc/qt5svg/ || true cd $RETDIR } # ----------------------------------------------------------------------------- # Compile qt5x11extras # ----------------------------------------------------------------------------- make_qt5x11extras() { echo -e "**\n** qt5x11extras ...\n**" RETDIR=$(pwd) # If we build a static Qt5 gui, unset the QT-related environment variables, # so that a pre-existing Qt will not be picked up and create errors later: unset QTDIR 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" 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" export QTDIR="${VLCDEPSDIR}/usr" #export QT_PLUGIN_PATH="${QTDIR}/lib${LIBDIRSUFFIX}/qt5/plugins" # qtx11extras: cd $TMP/tmp-$PRGNAM/$(ls --indicator-style=none | grep qtx11extras-*-${QT5}) # Make and install: qmake \ 2>&1 | tee $OUTPUT/qmake-${PRGNAM}_qt5x11extras.log make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_qt5x11extras.log make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_qt5x11extras.log # Add DOCS to the vlcdeps to have it added to vlc package later: mkdir -p $VLCDEPSDIR/doc/qt5x11extras/ cp *GPL_EXCEPTION* LICENSE* \ $VLCDEPSDIR/doc/qt5x11extras/ || true cd $RETDIR } # ----------------------------------------------------------------------------- # 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 cd $TMP/tmp-$PRGNAM/${PRGNAM}-${SRCVER} # Apply patches: echo "" >$OUTPUT/patch-${PRGNAM}.log # Make it possible to compile Qt5 statically for Linux: cat $SRCDIR/patches/vlc_qt5static.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 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 sh bootstrap export PATH="$VLCDEPSDIR/usr/bin:$PATH" export CPPFLAGS="-I$VLCDEPSDIR/usr/include" export CFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS -Wno-incompatible-pointer-types" export CXXFLAGS="-I$VLCDEPSDIR/usr/include $SLKCFLAGS" if [ "$STATIC_QT5" = "YES" ]; then export QTDIR="${VLCDEPSDIR}/usr" export QT_PLUGIN_PATH="${QTDIR}/lib${LIBDIRSUFFIX}/qt5/plugins" # If we build a static Qt5 gui, make sure that any pre-existing # Qt5 installation will not be picked up and create errors later: NEWPATH="" 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" # All the library additions in LDFLAGS are needed to quell missing symbol # errors when linking to the Qt5 libraries: if which pcre2-config 1>/dev/null 2>&1 ; then PCRECONFIG="pcre2-config" else PCRECONFIG="pcre-config" fi export LDFLAGS="-Wl,-Bsymbolic -L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} -lpng -lz -lharfbuzz $(icu-config --ldflags) $($PCRECONFIG --libs16) $SLKLDFLAGS" else export LDFLAGS="-Wl,-Bsymbolic -L$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" fi # 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" \ LUAC="$VLCDEPSDIR/usr/bin/luac" \ PKG_CONFIG_PATH="$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ ./configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --sysconfdir=/etc \ --mandir=/usr/man \ --docdir=/usr/doc/vlc-$PKGVERSION \ --localstatedir=/var \ --without-contrib \ --disable-rpath \ --disable-debug \ --disable-aom \ --disable-freerdp \ --disable-jack \ --disable-zvbi \ --enable-alsa \ --enable-chromecast \ --enable-shared \ --enable-optimize-memory=no \ --enable-ncurses \ --enable-lua \ --enable-dc1394 \ --enable-dvbpsi \ --enable-dvdnav \ --enable-libcddb \ --enable-projectm \ --enable-svg \ --enable-telx \ --enable-libass \ --enable-caca \ --enable-aa \ --enable-dsm \ --enable-sftp \ --enable-microdns \ --enable-srt \ --enable-upnp \ --enable-flac \ --enable-shout \ --enable-live555 \ --enable-realrtsp \ --enable-soxr \ --enable-speex \ --enable-opus \ --enable-x262 \ --enable-x264 \ --enable-x265 \ --enable-a52 \ --with-a52=$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-gnomevfs \ #--disable-musicbrainz \ #--disable-arts \ #--enable-esd \ #--enable-vcdx \ #--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} VERBOSE=1 2>&1 | tee $OUTPUT/make-${PRGNAM}.log cd $OLDDIR } # ----------------------------------------------------------------------------- # These routines do all the work of setting up the package contents # and creating the actual Slackware packages in $OUTPUT # ----------------------------------------------------------------------------- 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/plugins.dat # Add this to the doinst.sh: mkdir -p $PKG/install cat < $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 . </dev/null cd /usr/lib${LIBDIRSUFFIX}/vlc find . -name "plugins*.dat" -exec rm -f {} \; echo "Generating VLC plugins cache data..." DISPLAY="" ./vlc-cache-gen /usr/lib${LIBDIRSUFFIX}/vlc/plugins 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-$PKGVERSION mv $PKG/usr/share/doc/vlc/* $PKG/usr/doc/$PRGNAM-$PKGVERSION || true rm -rf $PKG/usr/share/doc cp -a $DOCS $PKG/usr/doc/$PRGNAM-$PKGVERSION || true # Add all the supporting packages' documentation too: cp -a $VLCDEPSDIR/doc/* $PKG/usr/doc/$PRGNAM-$PKGVERSION || true # Add the SlackBuild as well as all patches we used to create the package: cat $SRCDIR/$(basename $0) > $PKG/usr/doc/$PRGNAM-$PKGVERSION/$PRGNAM.SlackBuild cp -a $SRCDIR/patches $PKG/usr/doc/$PRGNAM-$PKGVERSION/ find $PKG/usr/doc -type f -exec chmod 644 {} \; chown -R root:root $PKG/usr/doc/$PRGNAM-$PKGVERSION/* # 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 # Don't ship .la files: rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la || true # 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 # Slackware added libinput, libwacom and Qt5 in 14.2+ (pre-15.0) OSVER=$(cat /etc/slackware-version |cut -d' ' -f2) if [ "$OSVER" != "14.2+" ] && [ $(echo $OSVER |cut -d. -f1) -lt 15 ] ; then cat $SRCDIR/slack-required > $PKG/install/slack-required fi fi # Build the package: cd $PKG makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-$(echo $PKGVERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE} 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log cd $OUTPUT md5sum ${PRGNAM}-$(echo $PKGVERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE} > ${PRGNAM}-$(echo $PKGVERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE}.md5 cd - cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-$(echo $PKGVERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.txt if [ -f $PKG/install/slack-required ]; then cat $PKG/install/slack-required > $OUTPUT/${PRGNAM}-$(echo $PKGVERSION |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 '$(basename $DEPSFILE)' with pre-compiled library code..." tar -xf $DEPSFILE find . -name "*.la" -o -name "*.pc" | xargs sed -i -e "s#/vlcdepsdir#$TMP/tmp-$PRGNAM#g" cd - else #if [ "xy" == "x" ]; then # Qt5 is used for the vlc gui: if [ "$STATIC_QT5" = "YES" ]; then #make_pcre2 make_qt5base make_qt5svg #make_qt5x11extras 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 image support: 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_amf make_vpx make_theora make_amr make_amrwbenc make_gsm make_lame # ffmpeg uses the above static libraries: make_ffmpeg fi # Additional libraries that vlc will use: make_fribidi make_dav1d make_a52 make_dca make_ebml make_matroska make_libmpeg2 make_mpcdec make_twolame make_upnp make_srt make_dsm make_microdns make_live555 make_taglib make_asdcplib make_ass make_fluid make_1394 make_kate make_tiger make_lua make_bluray make_opus make_ssh2 make_protobuf make_placebo make_soxr # 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 "$*" fi