Ninja (käännösjärjestelmä)

Ninja on käännösautomaatiojärjestelmä tietokoneohjelman kääntämiseen lähdekoodista. Ohjelma on julkaistu Apache 2.0 -lisenssillä.

Ninja ei toteuta eräitä toiminta, vaan luottaa toisen käännöstyökalun kuten CMake tai Meson tuottamiin tiedostoihin: Ninjan konfiguraatiotiedostoja ei ole tarkoitus tehdä käsin. Ohjelma on toteutettu C++-kielellä.

Evan Martin toteutti Ninjan johtuen make-ohjelman ongelmista kuten sen hitaudesta. Martin aloitti Ninjan vuonna 2010 työskennellessään Chrome-projektissa. Chromen käännös ottaa noin  C++-lähdekooditiedostoa ja tuottaa noin 90 megatavun ohjelmatiedoston. Ero make-ohjelmaan suorituskyvyssä ilmenee suurissa projekteissa. Ninja suorittaa useita käännöstoimintoja rinnakkain oletuksena.

Työkalua käyttävät Google Chrome, osat Android-käyttöjärjestelmästä sekä LLVM-projekti.

Esimerkki 
Esimerkki ohjelman konfiguraatiotiedostosta:
    rule cc
      command = gcc -c -o $out $in
      description = CC $out
    
    rule link
      command = gcc -o $out $in
      description = LINK $out
    
    build source1.o: cc source1.c
    build source2.o: cc source2.c
    build myprogram: link source1.o source2.o

Lähteet

Aiheesta muualla 
 The Ninja build system 

Käännöstyökalut