El problema de `make` recursivo con `-j`: cómo el jobserver se pierde y qué versiones de GNU Make lo solucionan

Recursive `make` and `-j`

El autor investiga las invocaciones recursivas de `make` y cómo el jobserver de `-j` no se propaga al submake, causando advertencias y pérdida de paralelismo. Compara el comportamiento desde GNU Make 3.81 hasta 4.3, mostrando que anteponer `+` o usar `$(MAKE)` soluciona la advertencia 'jobserver unavailable', pero no la de 'resetting jobserver mode'. Concluye que no existe una configuración ideal y hay que elegir un compromiso.

Lo que realmente queremos es una fila que se parecería a `fantasy` abajo. Pero por el momento, parece que tenemos que elegir nuestro compromiso preferido entre una de las filas citadas.
  1. stabbles

    El `-j` está pensado solo para la invocación de nivel superior, y el patrón $(MAKE) es estándar.

    Los "trucos" con `+` o $(MAKE) para asegurar que el jobserver se herede en el submake y en cualquier otro subproceso ya no son necesarios en gmake 4.4 (de 2022) porque por defecto usa un FIFO en lugar de pipes. El autor simplemente debería actualizar gmake :).

  2. fragmede

    ¡No lo hagas!

    https://accu.org/journals/overload/14/71/miller_2004/

    Recursive Make Considered Harmful

    Por Peter Miller

Más de este día

2026-09-30