Skip to content

cmake install improvements #166

Closed
Closed

Description

@lgarrison

It would be nice for EXP's cmake --install to put all of its public libraries and headers in the install tree, so that Gala and other consumers can compile against the tree without poking at the source or build directories. This means including the libraries and headers of vendored dependencies.

Gala would also find useful a "minimal build" mode that just builds the expui and exputil libraries.

Activity

  1. The9Cat commented on Oct 18, 2025

    @The9Cat
    Member

    @lgarrison Do you have a list of public headers needed by the minimum install for Gala at least?

    Might save some iteration...

    The second issue is trivial. Implemented at tested at the compile level. Took 90 sec on my X1C laptop! Added ENABLE_MINIMAL to implement this with a single flag. I suppose we could also have a ENABLE_PYTHON_ONLY set of flags if need be. One step more than MINIMAL.

    See #168 for the proposed metaflag implementation.

  2. lgarrison commented on Oct 20, 2025

    @lgarrison
    ContributorAuthor

    Gala is including these headers from EXP:

    #include <Coefficients.H>
    #include <BiorthBasis.H>
    #include <FieldGenerator.H>

    We need any headers transitively included by those headers. In terms of vendored dependencies, it might just be these two:

    #include <highfive/H5File.hpp>
    #include <yaml-cpp/yaml.h>
  3. The9Cat commented on Oct 21, 2025

    @The9Cat
    Member

    Thanks! That's helpful. The transitive closure of those first three is bigger than anticipated. Still doable 'by hand', but maybe there's clever way. I'll look.

  4. The9Cat commented on Oct 21, 2025

    @The9Cat
    Member

    I've added some support for installing public headers from submodules and the core libraries in EXP-code/EXP/#170. TBH, I meant to make a separate PR, oops, but this is probably okay since the minor issue is also Gala related.

    Summary: each submodule and EXP support libraries get a separate directory to keep things somewhat clean.

    It seems to do what is supposed to do, but there are missing headers, almost certainly. So consider this a WIP. The CMake incantations are easily augmented for those missing bits, as you find them. I was not able to find a clean way to do the transitive closure over header dependencies automatically. In principle, GCC can do this, but not in a helpful form.

    Anyway, if you try this and find missing headers, please add them and push a PR. Thanks.

  5. The9Cat commented on Oct 23, 2025

    @The9Cat
    Member

    Addressed by PR #170

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions