Skip to content

libffi build logic is quite spread out

The rules for building libffi are in Rules.Libffi and at a first glance they just use the normal Make builder in order to build the project. However, if one looks carefully, you actually need to run make install so the normal Make builder has an argument appended in Settings.Builders.Make.

The problem here is that the two modules are completely unrelated to each other. In order to discover this I had to wonder why the build was failing to copy a file and then by chance guess that it wasn't running make install. I think grepped for "install" and managed to find this additional rule.

Is there a way to move this logic into one place? I considered two possibilities but it didn't seem to be "how things are done".

  1. Modify the Make builder to take an additional argument which indicates whether to add the install flag.
  2. Move the override of Make for libffi into Rules.Libffi and then import it into Settings.Builders.Make. This seems better but you still not entirely obvious what is going on.

Do the hadrian experts have any opinion on this?

Trac metadata
Trac field Value
Version 8.6.3
Type Task
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information