Skip to content

Conversation

@nto
Copy link
Collaborator

@nto nto commented Oct 15, 2025

Replace the current build system with a GNU Make based system mostly compatible with existing configure usage and automake features, including out-of-tree builds, partial execution in subdirectories and test-suite support.

The following statistics show how much simpler and more efficient this new system is (times recorded on a ccache-enabled 96-core machine):

autotools Build.mk
files 122 44
loc 6129 3164
configure 9s 1s
build 29s 6s

Additionally, this new build system brings the following features:

  • depends on GNU Make and pkg-config only
  • maximum parallelization between subdirectories
  • overview of modules dependencies using make config-deps
  • automatic generation of pkg-config files
  • json compilation database generation for clang tooling
  • builtin support for code sanitizers
  • progress counter using PROGRESS=1 or P=1
  • time profiler to find bottlenecks for optimizing build duration

A small configure shell script is provided for compatibility with autotools but is not strictly needed. A full build can be achieved using makefiles only, using either on-the-fly config checks or using make configure beforehand, which enables caching of config checks.

@nto nto marked this pull request as ready for review October 27, 2025 14:11
@cmassiot cmassiot merged commit 857805c into Upipe:master Oct 27, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants