Install directory: /util/ffmpeg

#!/usr/bin/env bash

sudo apt install intel-mkl-full\
    autogen \
    librav1e-dev \
    libssh-dev \
    librsvg2-dev \
    libbluray-dev \
    libjack-jackd2-dev \
    libva-dev \
    libvdpau-dev \
    libvdpau-va-gl1 \
    libsvtav1-dev \
    libzmq3-dev \
    libzvbi-dev \
    lv2-dev \
    librist-dev \
    libplacebo-dev \
    libjxl-dev \
    libdrm-dev \
    libiec61883-dev \
    libchromaprint-dev \
    frei0r-plugins-dev \
    ladspa-sdk \
    libvo-amrwbenc-dev \
    libaribb24-dev \
    libopencore-amrnb-dev \
    libopencore-amrwb-dev \
    libopenjp2-7-dev \
    libzimg-dev \
    libbs2b-dev \
    libcaca-dev \
    libcdio-dev \
    libcodec2-dev \
    libdav1d-dev \
    libfontconfig-dev \
    libfreetype-dev \
    libfribidi-dev \
    glslang-dev \
    libgsm1-dev \
    libgsmme-dev \
    libharfbuzz-dev \
    librubberband-dev \
    libshine-dev \
    libsnappy-dev \
    libsoxr-dev \
    libopengl-dev \
    libglut-dev \
    libpulse-dev \
    flite1-dev \
    libaom-dev \
    libao-dev \
    liblilv-dev \
    libavc1394-dev \
    libdc1394-dev \
    libgme-dev \
    libalsaplayer-dev \
    libsndio-dev \
    libmysofa-dev \
    libsdl1.2-dev \
    libsdl2-dev \
    libsdl2-image-dev \
    portaudio19-dev \
    libmpg123-dev \
    libopenal-dev \
    libcdio-cdda-dev \
    libcdio-paranoia-dev \
    libtinyxml2-dev \
    libtinyxml-dev \
    srt-tools \
    yasm \ 
    nasm \
    asciidoc-base

# libass 
git clone -b 0.17.4 git@github.com:libass/libass.git
cd libass
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared
make -j4
sudo make install
cd ..

# libfdk-aac
git clone -b v2.0.3 git@github.com:mstorsjo/fdk-aac.git libfdk-aac
cd libfdk-aac
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic
make -j4
sudo make install
cd ..

# mp3lame
wget https://unlimited.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
cd lame-3.100
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --enable-nasm --enable-mp3rtp
make -j4
sudo make install
cd ..

# libogg
git clone -b v1.3.6 git@github.com:xiph/ogg.git libogg
cd libogg 
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic
make -j4
sudo make install
cd ..

# libvorbis
git clone -b v1.3.7 git@github.com:xiph/vorbis.git libvorbis
cd libvorbis
./autogen.sh 
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --with-ogg=/util/ffmpeg --enable-docs
make -j1
sudo make install
cd ..

# libflac
git clone -b 1.5.0 git@github.com:xiph/flac.git libflac
cd libflac
sudo ln -s /usr/bin/libtoolize /util/bin/libtool
./autogen.sh
sudo rm /util/bin/libtool
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --with-ogg=/util/ffmpeg --disable-examples --enable-shared --enable-oss-fuzzers
make
sudo make install
cd ..

# libspeex
git clone -b Speex-1.2.1 git@github.com:xiph/speex.git libspeex
cd libspeex
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --enable-sse --with-fft=gpl-fftw3 --disable-binaries
make -j4
sudo make install
cd ..

# libopus
git clone -b v1.5.2 git@github.com:xiph/opus.git libopus
cd libopus
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --disable-extra-programs
make -j4
sudo make install
cd ..

# speexdsp
git clone -b SpeexDSP-1.2.1 git@github.com:xiph/speexdsp.git speexdsp
cd speexdsp
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" LDFLAGS="-lfftw3" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --disable-examples --enable-shared  --with-fft=gpl-fftw3
make
sudo make install
cd ..

# libsndfile
git clone -b v1.0.30 git@github.com:libsndfile/libsndfile.git libsndfile
cd libsndfile
./autogen.sh
./configure --prefix=/util/ffmpeg --enable-shared --with-pic
make -j4
sudo make install
cd ..

# libtheora
git clone -b v1.2.0 git@github.com:xiph/theora.git libtheora
cd libtheora
/autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --with-ogg=/util/ffmpeg --with-vorbis=/util/ffmpeg --disable-examples
make -j4 
sudo make install
cd ..

# libopenmpt
wget https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-0.8.3+release.autotools.tar.gz
tar -xvf libopenmpt-0.8.3+release.autotools.tar.gz
cd libopenmpt-0.8.3+release.autotools
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --with-sdl2 --with-pulseaudio
make -j4
sudo make install
cd ..

# libsrt (/util)
git clone -b v1.5.4 git@github.com:Haivision/srt.git libsrt
cd libsrt && mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_BUILD_TYPE=Release -DOPENSSL_USE_STATIC_LIBS=ON -DENABLE_STDCXX_SYNC=ON -DENABLE_CLANG_TSA=ON -DATOMIC_USE_SRT_SYNC_MUTEX=ON ..
make -j4
sudo make install
cd ../..

# libsvt-av1
git clone -b v3.1.2 git@gitlab.com:AOMediaCodec/SVT-AV1.git libsvt-av1
cd libsvt-av1 && mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_BUILD_TYPE=Release -DSVT_AV1_LTO=ON -DNATIVE=ON -DSVT_AV1_PGO=OFF -DENABLE_AVX512=ON -DCOMPILE_C_ONLY=ON ..
make -j4
sudo make install
cd ../..

# libtwolame
git clone -b 0.4.0 git@github.com:njh/twolame.git libtwolame
cd libtwolame
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --enable-static --enable-sndfile --with-pic
make -j4 || true
sudo make install || true
cd ..

# vidstab
git clone -b v1.1.1 git@github.com:georgmartius/vid.stab.git libvidstab
cd libvidstab && mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_BUILD_TYPE=Release ..
cd ../..

# libvpx 
git clone -b v1.15.2 git@github.com:webmproject/libvpx.git libvpx
cd libvpx && mkdir build-ex && cd build-ex
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ../configure --prefix=/util/ffmpeg --enable-pic --enable-shared --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-vp9-postproc  --enable-vp9-temporal-denoising --enable-webm-io
make -j4
sudo make install
cd ../..

# libx264
git clone https://code.videolan.org/videolan/x264.git libx264
cd libx264
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-pic --enable-shared --enable-static --enable-bashcompletion --enable-strip
make -j4
sudo make install
cd ..

# libx265 
git clone https://bitbucket.org/multicoreware/x265_git.git libx265
cd libx265 && mkdir build-ex && cd build-ex
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_BUILD_TYPE=Release -DNATIVE_BUILD=ON -DENABLE_SCC_EXT=ON -DENABLE_ALPHA=ON ../source/
make -j4
sudo make install
cd ../..

# libxvid
wget https://downloads.xvid.com/downloads/xvidcore-1.3.7.tar.gz
tar -xf xvidcore-1.3.7.tar.gz
cd xvidcore/build/generic
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg
make -j4
sudo make install
cd ../../..

# ffmpeg
git clone -b 'release/8.0' https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg && mkdir build && cd build
../configure --prefix=/util/ffmpeg \
    --extra-cflags='-O3 -mllvm -polly -I/util/include -I/util/ffmpeg/include' \
    --extra-ldflags='-L/util/lib -L/util/ffmpeg/lib' \
    --cc=clang --cxx=clang++ \
    --enable-gpl --enable-nonfree \
    --enable-shared \
    --enable-libdc1394 \
    --enable-libfdk-aac \
    --enable-version3 \
    --enable-gnutls \
    --enable-libaom \
    --enable-libass \
    --enable-libbs2b \
    --enable-libcaca \
    --enable-libcdio \
    --enable-libcodec2 \
    --enable-libdav1d \
    --enable-libflite \
    --enable-libfontconfig \
    --enable-libfreetype \
    --enable-libfribidi \
    --enable-libglslang \
    --enable-libgme \
    --enable-libgsm \
    --enable-libharfbuzz \
    --enable-libmp3lame \
    --enable-libmysofa \
    --enable-libopenjpeg \
    --enable-libopenmpt \
    --enable-libopus \
    --enable-librubberband \
    --enable-libshine \
    --enable-libsnappy \
    --enable-libsoxr \
    --enable-libspeex \
    --enable-libtheora \
    --enable-libtwolame \
    --enable-libvidstab \
    --enable-libvorbis \
    --enable-libvpx \
    --enable-libwebp \
    --enable-libx265 \
    --enable-libxml2 \
    --enable-libxvid \
    --enable-libzimg \
    --enable-openal \
    --enable-opengl \
    --enable-libaribb24 \
    --enable-libopencore_amrnb \
    --enable-libopencore_amrwb \
    --enable-libvo_amrwbenc \
    --enable-libdrm \
    --enable-libiec61883 \
    --enable-chromaprint \
    --enable-frei0r \
    --enable-ladspa \
    --enable-libbluray \
    --enable-libjack \
    --enable-libpulse \
    --enable-librist \
    --enable-libsrt \
    --enable-libssh \
    --enable-libsvtav1 \
    --enable-libx264 \
    --enable-libzmq \
    --enable-libzvbi \
    --enable-lv2 \
    --enable-sdl2 \
    --enable-libplacebo \
    --enable-librav1e \
    --enable-librsvg \
    --enable-libjxl
make -j4
sudo make install
cd ../..

# libzen0
git clone -b v0.4.41 git@github.com:MediaArea/ZenLib.git libzen0
cd libzen0
mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DENABLE_UNICODE=ON -DLARGE_FILES=ON ../Project/CMake
make -j4
sudo make install
cd ../..

# libmediainfo
git clone -b v25.09 git@github.com:MediaArea/MediaInfoLib.git libmediainfo
cd libmediainfo
mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release ../Project/CMake
make -j4
sudo make install
find /util/ffmpeg/lib/cmake/mediainfolib -type f -name '*.cmake' | sed -e 'p;s/MediaInfoLib/mediainfolib/' | sudo xargs -n 2 ln -s
cd ../..

# mediainfo
git clone -b v25.09 git@github.com:MediaArea/MediaInfo.git mediainfo
cd mediainfo
mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/util/ffmpeg ../Project/CMake/CLI
make -j4
sudo make install
cd ../..