llnl / llnl/axom

Support external `fmt` dependency

Open
#1,302 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

App Integration Build system CI Reviewed TPL User Request
Dominant language
C++
Stars
196
Forks
34
Avg merge
4d 1h
Merged PRs (30d)
11

Description

Axom currently vendors a copy of the fmt library in the <axom>/src/thirdparty/axom/fmt directory and places it under the axom::fmt namespace to avoid clashes with other common libraries that use fmt, e.g. conduit and umpire. This is convenient since fmt is a required dependency for axom and we cannot build the code without it.

In their latest release, umpire began using an external fmt, e.g. built/installed through spack or vcpkg, which has created some issues for axom developers and users in their various build and test configurations. Notably, in #1301, we had to disable Umpire in our Windows build due to ambiguities between the built-in and external fmt in the vcpkg configuration.

To resolve these, axom should support both an externally built/configured fmt, when supplied, and an internal/vendored/submoduled copy otherwise.

Once this is resolved, we can add umpire back to our vcpkg configuration.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the build configuration around /src/thirdparty/axom/fmt and the dependency settings used for external fmt. Reproduce the Windows/vcpkg ambiguity described in #1301, then verify that Axom builds with either an externally configured fmt or its vendored copy; done when Umpire can be restored to the vcpkg configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
build-system
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.