This article describes how to improve the standard and the implementations of make, and some of the progress already made. Make is a widely-used software build tool, but the POSIX standard that covers it lacks key functions. As a result, make is difficult to use portably in many common cases. This article is primarily inspired by Peter Miller’s paper Recursive Make Considered Harmful (1997). This article is intended for those who already understand make and software build processes.

Introduction

The make tool is a very widely-used build tool for software development. The make tool was first created by Stuart Feldman in April 1976 at Bell Labs, and was originally described in “Make - A Program for Maintaining Computer Programs” by Stuart I. Feldman (Software - Practice and Experience, Vol. 9, 255-265, 1979). In 2003 Dr. Feldman received the ACM Software System Award for creating make because it is such an important tool. There are certainly other build tools including Apache Ant (often used for Java), Apache Maven (also often used for Java as long as you can accept its preset structure), Gradle (which uses its own language, Groovy, for actions), Rake, Scons (a Python-based system), ASDF 3 (for Common Lisp), and Jake. There are other tools that layer themselves on top of make, such as Cmake and automake (automake is part of the autotools). Wikipedia even maintains a list of build automation software. However, for a variety of reasons, make is still very widely used directly, especially when you’re writing code where performance really matters (such as most C and C++ code). Make is standardized (it’s part of the POSIX standard), widely available, and widely understood. Make is also baked into a huge number of larger systems. Yes, make has some weirdnesses (in particular the standard requires tabs in certain places), but it is still a handy tool. Recent articles like Build Tools - Make, no more, Using GNU Make as a Front-end Development Build Tool, and The Ultimate Frontend Build Tool: make all state that make is often a very useful tool, even today. Improving the standards for make also helps tools that layer on top of it, including automake and Cmake.

 

https://dwheeler.com/essays/make.html 

Post a Comment

Previous Post Next Post