AcademySoftwareFoundation / AcademySoftwareFoundation/OpenImageIO

[FEATURE REQUEST] Add self-building abilities for more dependencies

Open
#4,387 17 comments 0 reactions 0 assignees View on GitHub
build / testing / port / CI devdays devdays24 devdays25 difficulty/easy good first issue help wanted
Dominant language
C++
Stars
2.4k
Forks
698
Avg merge
2d 23h
Merged PRs (30d)
46

Description

We recently added (in PR #4242) the ability for OIIO's CMake build system to automatically download and build certain dependencies if they are not found.

(Note: It doesn't happen by default, it requires `OpenImageIO_BUILD_MISSING_DEPS` to be set to a comma-separated list of deps to self-build (or "all"). Also, `OpenImageIO_BUILD_LOCAL_DEPS` can be use to *force* listed dependencies to be built in this way, even if found.)

The original PR #4242 set this up for Imath, OpenEXR, fmt, Robinmap, and OpenColorIO. Subsequent PRs added the self-build ability for Freetype (#4283), libtiff and its libdeflate dependency (#4296), pybind11 (#4297), and improved that of OpenColorIO (#4367).

It would be great to have this ability added for other dependencies! Each can be tackled separately, and each is therefore a fairly self-contained task that doesn't require any prior deep knowledge of the OIIO internals, and could be a good first issue or Dev Days project.

The other high priority dependencies that would be good to add these self-build scripts for are:

- [ ] LibJPEG (maybe unnecessary because we can auto-build jpeg-turbo, which is better?)
- [x] libPNG
- [x] GIFlib
- [x] LibWEBP
- [ ] Ptex
- [x] OpenJPEG
- [ ] libheif (may also require libde265 to be made)
- [x] openjph

If you'd like to work on one of these, just comment below 👇 and say which one you will work on so that two people aren't trying to do the same one. Also feel free to ask below if you have any questions about what needs to be done, where to find examples of the ones that already work, or anything else that would help you get started.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing PR #4242 and the existing self-build implementations for the completed dependencies, then choose one unchecked dependency such as LibJPEG, Ptex, or libheif and confirm the required CMake entry points. Done means the selected dependency can be downloaded and built through the documented OpenImageIO_BUILD_MISSING_DEPS or OpenImageIO_BUILD_LOCAL_DEPS options.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp
Domain
build-system
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.