Building DCP-o-matic for Linux

Ubuntu 24.04Fedora 41

Packaged dependencies

sudo apt update
sudo apt -y install git openssh-server g++ pkg-config libgtk2.0-dev libxml++2.6-dev \
libboost-filesystem-dev libboost-test-dev libboost-locale-dev libboost-regex-dev \
libboost-date-time-dev libboost-thread-dev libssl-dev libxmlsec1-dev cmake \
libx264-dev yasm libsndfile-dev libmagick++-dev libpulse-dev libasound2-dev \
libsamplerate-dev wget curl libpangomm-1.4-dev libssh-dev libcurl4-openssl-dev \
libzip-dev nettle-dev devscripts libfftw3-dev libfluidsynth-dev liblilv-dev \
autoconf fuse libpolkit-gobject-1-dev python3 libxerces-c-dev libnanomsg-dev ccache \
libgl1-mesa-dev libglu1-mesa-dev libgtk-3-dev python-is-python3 meson ninja-build \
nasm libwxgtk3.2-dev wx3.2-i18n libsqlite3-dev ruby-dev sox fd-find mediainfo \
python3-lxml python3-pip fonts-liberation e2fsprogs e2tools libfmt-dev

dav1d

wget https://dcpomatic.com/deps/linux/dav1d-0.9.2.tar.bz2
tar xjf dav1d-0.9.2.tar.bz2
cd dav1d-0.9.2
mkdir build
meson build --default-library=static --libdir=/usr/local/lib
sudo ninja -C build install
sudo sed -i "s/-ldav1d/-ldav1d -pthread -ldl/" /usr/local/lib/pkgconfig/dav1d.pc
cd ..

fast_float

wget https://dcpomatic.com/deps/linux/fast_float-7.0.0.tar.gz
tar xzf fast_float-7.0.0.tar.gz
cd fast_float-7.0.0
cmake .
make -j8
sudo make install
cd ..

libcxml

git clone git://git.carlh.net/git/libcxml.git
cd libcxml
./waf configure build
sudo ./waf install
cd ..

libopenjpeg version 2.5.2 with some patches

git clone git://git.carlh.net/git/openjpeg.git
cd openjpeg
git checkout dcpomatic-2.5.2
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_PKGCONFIG_FILES=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF
make -j8
sudo make install
cd ..

asdcplib with some patches

git clone git://git.carlh.net/git/asdcplib.git
cd asdcplib
git checkout dcpomatic-2.13.0
./waf configure build
sudo ./waf install
cd ..

ffmpeg with some patches

git clone git://git.carlh.net/git/ffmpeg.git
cd ffmpeg
git checkout dcpomatic-7.0.1
./configure --enable-gpl --enable-postproc --enable-shared --disable-static --enable-libx264 --enable-libdav1d
make -j8
sudo make install
cd ..

libdcp

git clone git://git.carlh.net/git/libdcp.git
cd libdcp
PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig ./waf configure build
sudo ./waf install
cd ..

libsub

git clone git://git.carlh.net/git/libsub.git
cd libsub
./waf configure build
sudo ./waf install
cd ..

leqm_nrt

git clone git://git.carlh.net/git/leqm-nrt.git
cd leqm-nrt
git checkout carl
./waf configure --without-libsndfile build
sudo ./waf install
cd ..

rtaudio

git clone git://git.carlh.net/git/rtaudio.git
cd rtaudio
git checkout carl
./configure --prefix=/usr/local --with-pulse --with-alsa
make -j8
sudo make install
cd ..

openssl

cd /usr/local/bin
sudo ln -s $(which openssl) dcpomatic2_openssl

DCP-o-matic itself

git clone git://git.carlh.net/git/dcpomatic.git
cd dcpomatic
PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig ./waf configure build
sudo ./waf install
cd ..