Ninja on käännösautomaatiojärjestelmä tietokoneohjelman kääntämiseen lähdekoodista.[2] Ohjelma on julkaistu Apache 2.0 -lisenssillä.[3]
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.[4] Ohjelma on toteutettu C++-kielellä.[4]
Evan Martin toteutti Ninjan johtuen make-ohjelman ongelmista kuten sen hitaudesta.[5][6] Martin aloitti Ninjan vuonna 2010 työskennellessään Chrome-projektissa.[2] Chromen käännös ottaa noin 40 000 C++-lähdekooditiedostoa ja tuottaa noin 90 megatavun ohjelmatiedoston.[2] Ero make-ohjelmaan suorituskyvyssä ilmenee suurissa projekteissa.[7] Ninja suorittaa useita käännöstoimintoja rinnakkain oletuksena.[7]
Työkalua käyttävät Google Chrome, osat Android-käyttöjärjestelmästä sekä LLVM-projekti.[8]
Esimerkki
Esimerkki ohjelman konfiguraatiotiedostosta:[4]
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