Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Make works remarkably well. You’re just confusing it with C compilation. None of these complaints have anything to do with make.

Autotools, which generate configure scripts, was built to work around the specific issues associated with old-school C cross platform compilation (with shared libraries, version differences, and misc libc editions). Ditto valgrind, et.al.

So, yeah. Make’s fine. You just don’t like C. Which, that’s cool, just unrelated.



I'm not writing C. so I'm not sure what you mean, I mentioned ./configure as a solution to a problem because it was obviously a big enough problem;

To go into issues though:

Make itself executes by default with `sh` which is wildly different between platforms.

Even if you write portable enough shell; Paths are still incompatible between OS's and distros.

You still must ship your tools, which is a direct contradition of what is mentioned.

In fact; I just googled it and this chapter from Managing Projects with GNU Make; talks about the issues in making Make (GNU Make, as opposed to BSD Make, which is different enough to have broken my things!): portable

https://www.oreilly.com/library/view/managing-projects-with/...


./compile works around c cross compilation issues, where different platforms have different files with the same names.

Fixing that within Make would require it to be platform aware. Not just “is this Linux” but “which flavor of Linux is this and what version of that flavor”. It’s also highly specific to C.

Perhaps your other complaints here are valid, but they’re issues I’ve never run into myself, in my 20 odd years with it.

EDIT: Would you blame Just for not handling C cross compilation capability built in? Would you blame Just if someone automates the creation of Just command files to work around a particularly nasty workflow?


I don't need to google to find fault, but I figured the make book might have something to say about portability and in better words than I can construct at 3am.

Look, I'm not taking your tools away, there is no need to be defensive.

Make isn't going anywhere, but it is a bad tool, the syntax is completely arcane and it's designed for things few people actually need these days.

The most common case I've seen of modern Make usage is `make docker` and for Golang, where it doesn't get an opportunity to stretch its legs as a dependency manager at all -- making it a glorified task runner.

The portability aspect is all I mentioned, because that was all that was in question.

But if you really want me to get into it, I can be quite cruel.

Just because you spent 20 years learning or using something does not mean it is a good tool, I'm glad it works for you, truly, but it is an abomination and people only continue to use it for a sense of sunk cost fallacy or by telling themselves that "most people have it installed already".


You're confusing make with GNU Make.

One of the reasons autotools is so complicated is it is used to build GNU Make so has to work with whatever crummy make your Unix vendor shipped with




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

Search: