feat(build): Add system_stb option#3275
Open
NickHastings wants to merge 1 commit into
Open
Conversation
This allows building against the system stb library instead of the vendored one. The option is disabled by default to retain the default behavior.
carlwgeorge
reviewed
Jul 5, 2026
| include_directories: include_directories('third_party/stb', is_system: true), | ||
| ) | ||
| if get_option('system_stb') | ||
| stb_dep = dependency('stb', include_type: 'system') |
Contributor
There was a problem hiding this comment.
dependency relies on either pkgconfig or cmake files for detection. Debian has a pkgconfig file, but it's the result of a downstream patch. Fedora and Arch at least don't have that pkgconfig file, and probably other distros don't either. Those distros can still keep using the bundled one, but ideally the system_stb flag shouldn't be only useful on Debian.
Contributor
There was a problem hiding this comment.
Here's an alternate approach that should be more cross-distro compatible.
Suggested change
| stb_dep = dependency('stb', include_type: 'system') | |
| stb_dep = declare_dependency( | |
| include_directories: include_directories('/usr/include/stb', is_system: true), | |
| ) |
carlwgeorge
suggested changes
Jul 5, 2026
carlwgeorge
suggested changes
Jul 5, 2026
| option('tests', type: 'feature', value: 'auto', description: 'Build unit tests (auto: on for unsanitized debug builds)') | ||
| option('system_md4c', type: 'boolean', value: false, description: 'Use system md4c instead of vendored') | ||
| option('system_tomlplusplus', type: 'boolean', value: false, description: 'Use system tomlplusplus instead of vendored') | ||
| option('system_stb', type: 'boolean', value: false, description: 'Use system tomlplusplus instead of vendored') |
Contributor
There was a problem hiding this comment.
Suggested change
| option('system_stb', type: 'boolean', value: false, description: 'Use system tomlplusplus instead of vendored') | |
| option('system_stb', type: 'boolean', value: false, description: 'Use system stb instead of vendored') |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This allows building against the system stb library instead of the vendored one. The option is disabled by default to retain the existing behavior.
Motivation
Many distributions have guidelines/policies recommending the usage of system copies of shared libraries whenever possible.
Debian has a very strong stance on this. From the Debian policy manual:
Introducing an optional flag to build against the system shared library allows distros to use it if desired, while preserving the vendored approach otherwise.
Type of Change
Testing
On Debian 13 I tested this branch using builds with the system std (
meson setup .. -Dsystem_std=true) and also with the vendoredthird_party/std.Note that
include_type: 'system'was used to suppress some warnings from implicit conversions between integer types in bothstb_image_resize2.handstb_image_write.h.Manual Coverage
Screenshots / Videos
Checklist
CONTRIBUTING.md.just formatwith clang-format v22+ installed, or this PR has no code changes.assets/translations/en.json, or this PR adds no new user-facing strings.