4 ms·
I wish there was something like an updated Make, a tool that works for everything but updated to 2018. For instance Make works based on timestamps and therefor
by dagss 8y ago
I wish there was something like an updated Make, a tool that works for everything but updated to 2018.
For instance Make works based on timestamps and therefore works very poorly together with git. Switch to another branch and you can get weird effects based on what files were updated and not and often trigger needless rebuilds. And everyone uses git these days.
GNU Make, just using hashes instead of timestamps, would be a huge step forward.
- repolfx 8y agoThat'd require hashing every file on every run to figure out what changed. Not a good idea. There are modern tools that work for many things. Gradle supports native compilation these days as well as any JVM language. Bazel supports compiling many kinds of languages, and there's still scons.
- trhway 8y ago>That'd require hashing every file on every run to figure out what changed. Not a good idea. it is using time stamp to check whether to hash to check for changes.
- dagss 8y agoI've tried scons, waf, CMake, etc, always ended up hating them and return to standard Makefiles. SCons is the worst I've tried ever. As to the cost of hashing: "git status" runs on 0.009s and requires a full diff of my working directory?..
- wyldfire 8y ago> I wish there was something like an updated Make, a tool that works for everything but updated to 2018. Is ninja that tool?
- sushisource 8y agoGradle does this. There is definitely a few extra seconds of overhead compared to make, but that's hardly intolerable.
- lbenes 8y ago> GNU Make, just using hashes instead of timestamps Sounds like you're describing make on a system with ccashe installed. Hashing incurs a significant performance hit. The first build with ccashe is 20% slower than building without it[1]. Your modern make would likely be slower for people who just build something from source once and aren't doing incremental development. https://ccache.samba.org/performance.html https://ccache.samba.org/performance.html
- dagss 8y agoccache is just for c/c++.. Did you consider that it could be other things with ccache that makes it slow? E.g., the need to fully expand C headers and turn it into a text stream (NOT needed for a build tool). Everything with git is lightning fast including operations that require a full directory tree diff / hash.
- snovv_crash 8y agoCMake?
- dagss 8y agoCMake generates a standard Makefile for dependency change tracking doesn't it? Just timestamp-based on hash-based?