4 ms·
You shouldn't hard-code gcc. make has an implicit CC variable for this: https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html https://www.g
by hoytech 8y 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-Variables.html 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
- jdmoreira 8y agoor just rely on the /usr/bin/cc symbolic link
- ohithereyou 8y agoNot every system that can use Makefiles has a C compiler at /usr/bin/cc
- jdmoreira 8y agowe 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
- ohithereyou 8y agoOkay, and what if someone wants to cross-compile?
- flukus 8y ago> 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".
- hoytech 8y agoI 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 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.