Hacker News new | ask | show | jobs
by hoytech 2698 days ago
You shouldn't hard-code gcc. make has an implicit CC variable for this: https://www.gnu.org/software/make/manual/html_node/Implicit-...

Your makefile will then work on systems without gcc, and it is also easier to override it, ie:

    make CC=clang
2 comments

> You shouldn't hard-code gcc.

You should unless you've committed to writing portable code. If you're using GCC specific features then using CC would imply a false level of compatibility.

In this case they are using gcc specific features "-MMD -MP -MT".

I just tested and this Makefile works fine with clang, except that -flto should be added to LDFLAGS.

In fact I believe it should be there for gcc too, according to https://gcc.gnu.org/wiki/LinkTimeOptimization so perhaps this is a bug in the Makefile?

Flushing out issues like this is another reason to commit to writing portable code (and build systems), as you put it.

or just rely on the /usr/bin/cc symbolic link
Not every system that can use Makefiles has a C compiler at /usr/bin/cc
we shouldn't hardcode the path but I would assume that most unixes with a C compiler will have a cc symlinked somewhere in the $PATH
Okay, and what if someone wants to cross-compile?