Differential Revision: https://phabricator.services.mozilla.com/D171066
2.8 KiB
Compilation
For more details and other workflows see the "Advanced guide" below.
Checking out the code
git clone https://github.com/libjxl/libjxl.git --recursive --shallow-submodules
This repository uses git submodules to handle some third party dependencies
under third_party
, that's why it is important to pass --recursive
. If you
didn't check out with --recursive
, or any submodule has changed, run:
git submodule update --init --recursive --depth 1 --recommend-shallow
The --shallow-submodules
and --depth 1 --recommend-shallow
options create
shallow clones which only downloads the commits requested, and is all that is
needed to build libjxl
. Should full clones be necessary, you could always run:
git submodule foreach git fetch --unshallow
git submodule update --init --recursive
which pulls the rest of the commits in the submodules.
Important: If you downloaded a zip file or tarball from the web interface you
won't get the needed submodules and the code will not compile. You can download
these external dependencies from source running ./deps.sh
. The git workflow
described above is recommended instead.
Installing dependencies
Required dependencies for compiling the code, in a Debian/Ubuntu based distribution run:
sudo apt install cmake pkg-config libbrotli-dev
Optional dependencies for supporting other formats in the cjxl
/djxl
tools,
in a Debian/Ubuntu based distribution run:
sudo apt install libgif-dev libjpeg-dev libopenexr-dev libpng-dev libwebp-dev
We recommend using a recent Clang compiler (version 7 or newer), for that
install clang and set CC
and CXX
variables.
sudo apt install clang
export CC=clang CXX=clang++
Building
cd libjxl
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF ..
cmake --build . -- -j$(nproc)
The encoder/decoder tools will be available in the build/tools
directory.
Installing
sudo cmake --install .
Advanced guide
Building with Docker
We build a common environment based on Debian/Ubuntu using Docker. Other systems may have different combinations of versions and dependencies that have not been tested and may not work. For those cases we recommend using the Docker container as explained in the step by step guide.
Building JPEG XL for developers
For experienced developers, we provide build instructions for several other environments:
- Building on Debian
- Building on Windows with vcpkg (Visual Studio 2019)
- Building on Windows with MSYS2
- Cross Compiling for Windows with Crossroad
If you encounter any difficulties, please use Docker instead.