Hacker News new | past | comments | ask | show | jobs | submit login

One problem with non-recursive make for very large projects is that make can take a long time to parse and interpret the uber-Makefile. Even though this paper provides some advice for reducing the parse time, it isn't enough for really large projects.

Android suffered from this a lot in the early days. I always wondered whether the initial Android team had read this paper and got carried away...




it's not the parsing per se that takes time on modern computers, it's opening and reading in all the scattered included makefiles. also what specifically Android build system is doing behind the scenes is, it runs a python script, which in turn runs find (or maybe several, I don't remember), to gather all the makefiles to include.

but parsing, once all the text is in memory? peanuts.


Android's build system now generates Ninja files, which are semantically very close to non-recursive Makefiles, so it's a real-world example you can examine and measure.

Android's build files currently add up to 1.5gb of text(!!!), which even with a fast parser take some time to load (~10-20s).

It's discussed further in this thread (in which among other things I suggest that maybe something is going wrong when you have 1.5gb of text):

https://groups.google.com/d/topic/ninja-build/htlu9akobq0/di...

[disclaimer: I am the author of Ninja]




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: