Building OpenRV on macOS with DNxHD support

Assumptions:

Apple Silicon/arm64 Architecture – build machine has M4 CPU
macOS Sequoia 15.6.1
All builds to be done in $HOME/src. If that folder doesn’t exist:
mkdir ~/src; cd ~/src

Basics:

  1. Xcode 16.4, download from Apple App Store
    Install Xcode command line tools – xcode-select —install
  2. Qt 6.5.3 – Download the installer from https://my.qt.io/download, you’ll need an account to do this, then enable “Archive” to install this version
  3. Homebrew
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    brew update
  4. Install Homebrew dependencies
    brew install ninja readline sqlite3 xz zlib tcl-tk@8 autoconf automake libtool python@3.11 yasm clang-format black meson nasm pkg-config glew wget yaml-cpp pystring ptex freetype dcmtk qt@5 python@3.11
  5. Install an older version of cmake
    cd ~/Downloads; wget https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-macos-universal.dmg; open ./cmake-3.31.7-macos-universal.dmg
  6. Drag and drop the CMake icon to the Applications folder, then install cmake to /usr/local/bin
    sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install=/usr/local/bin

First library version mismatch: yaml-cpp

brew unlink yaml-cpp
mkdir -p /opt/homebrew/Cellar/yaml-cpp/0.7.0-static
cd ~/src
git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
git checkout 0.7.0
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/homebrew/Cellar/yaml-cpp/0.7.0-static -DBUILD_SHARED_LIBS=OFF -DYAML_CPP_BUILD_TESTS=OFF -DYAML_CPP_BUILD_TOOLS=OFF
cmake --build build -j
sudo cmake —install build
sudo ln -sfn /opt/homebrew/Cellar/yaml-cpp/0.7.0-static /opt/homebrew/opt/yaml-cpp

Second library version mismatch: fmt

brew unlink fmt
mkdir -p /opt/homebrew/Cellar/fmt/9.1.0
cd ~/src
curl -LO https://github.com/fmtlib/fmt/archive/refs/tags/9.1.0.tar.gz
tar xzf 9.1.0.tar.gz
cd fmt-9.1.0
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/homebrew/Cellar/fmt/9.1.0 -DBUILD_SHARED_LIBS=ON -DFMT_TEST=OFF -DFMT_DOC=OFF
cmake --build build -j
sudo cmake --install build
ln -sfn /opt/homebrew/Cellar/fmt/9.1.0 /opt/homebrew/opt/fmt

Building RV:

  1. Download the source code
    git clone --recursive https://github.com/AcademySoftwareFoundation/OpenRV.git
    cd OpenRV
  2. Make sure the build knows about Qt 5
    export Qt5_ROOT="$(brew --prefix qt@5)"
  3. Make sure that we are using the right VFX platform
    export RV_VFX_PLATFORM=CY2024
  4. Initialize the RV build command aliases
    source rvcmds.sh
  5. Make and load the Python 3.11 virtual environment
    python3.11 -m venv .venv
    source .venv/bin/activate
  6. Upgrade pip to the latest version
    pip install --upgrade pip
  7. Setup RV
    rvsetup
  8. Configure RV with support for DNxHD
    rvcfg -DRV_FFMPEG_NON_FREE_DECODERS_TO_ENABLE="dnxhd" -DRV_FFMPEG_NON_FREE_ENCODERS_TO_ENABLE="dnxhd" -DCMAKE_PREFIX_PATH="/opt/homebrew/opt/yaml-cpp:$(brew --prefix pystring):/opt/homebrew/opt/fmt"
  9. Build RV
    rvbuild
  10. Install RV – just makes the RV.app package for macOS
    rvinst
  11. Test it, to make sure it works
    cd _install; open RV.app

Extras/Installer Package:

  1. Install create-dmg
    brew install create-dmg
  2. Build the installer package – sign with your Apple Developer ID certificate if you have one
    create-dmg --volname "RV Installer" --window-pos 200 120 --window-size 600 400 --icon-size 100 --icon "RV.app" 175 190 --hide-extension "RV.app" --app-drop-link 425 190 --codesign "Developer ID Application: Alan Smithee Films Inc. (1234567890A)" ~/src/OpenRV-v3.0.0-arm64-Installer.dmg RV.app

Leave a Reply

Your email address will not be published. Required fields are marked *