Well, in perfect world maybe. But in real life Makefiles never work out of the box and you always have to dig inside, and to moan because it is over-complicated for nothing.
Don't blame friends that help youYou're conflating. Variety of build environments is not
Make's fault.
Complaining like this is like blaming a friend that helps you because they don't have a solution for every problem of your life.
Different build systems for different kind of programs.Programs with tons of dependencies on modern features often use different, higher level tools, because in those cases, pure makefile-based workflow cannot simply express the needs. Perhaps you have suffered some program where author wrote a big makefile in a situation where it was not the simplest solution.
Simple program, simple makefile.rasm is simple to build, it uses basic file APIs along with standard input and output. It's typically a program perfectly suited for a simple makefile.
A simple makefile is where people are looking first.When getting source code, people look at file names for hints.
Makefile is a traditional entry point.
A simple makefile is machine-executable documentation.Programs need it too. IDE, packaging infrastructures, automated quality assurance tools like travis need machine-readable instructions. A two-line
Makefile eases integration and avoids bugs due to different contexts using different build options.
No makefile feels like the author is too lazy, doesn't know how to write a two-line makefile.
Simple and convenient solution that always worksFor the user, typing
make is shorter than other options.
Even
make -f Makefile.other is only a few more keystrokes using
Tab key.
Such directory layout is very clear, shows that author is seasoned about portability, with default
Makefile for gcc-compatible build environment and took care of making things easy for users of a number of platforms:
Makefile
Makefile.win-msvs
Makefile.dos-watcom
Makefile.morphos-gcc
Makefile.macos
source.c
In the case of RASM it *will* work out-of-the-box.