Skip to content

RFC : standardize on cmake and remove other build systems #10268

Closed
@slaren

Description

@slaren

Currently we have at least these build systems in llama.cpp:

  • cmake
  • make
  • Nix
  • Swift

As the project grows, the build process becomes more complicated and maintaining all of these build systems takes a significant amount of time that could be spent in more meaningful development. Additionally, it prevents adding more advanced logic to the build because having to replicate it in every other build system is not really feasible.

In my opinion there is little reason to not standardize on cmake and remove the other build systems. Compared to make, it is just one more command to build the project. The Makefile has grown to be an unmaintainable mess that effectively requires running make clean every single time because it has no idea of what are the dependencies of each source file. Build systems such as Nix can live in a separate repository where the people interested in them can keep them updated, but we should not absorb the maintenance cost of other projects. The swift build might make more sense in a separate repository together with llama.cpp API bindings.

This is not the first time this has been proposed, but in my opinion we are finally at a point where it is no longer reasonable to continue maintaining multiple build systems. I would be interested in hearing what are the opinions of other people in the community.

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