Keywords: make+, make, automake, autoconf, rpm, deb, dpkg, package

Chapter 2. make+ theory of operation
Prev |  | Next

## Chapter 2. make+ theory of operation

A make+-enabled package contains a single file called `Makefile+` located in the top-level source directory. make+ should never be used recursively, so you will not need more than one `Makefile+` file even if your package source contains subdirectories.

make+ has the notion of a "pristine" source directory. This means that make+ should never create intermediate files (object files, Java class files and the like) directly in the source directory. Instead, make+ creates a build directory before it starts to store intermediate build files. Normally this directory is called something like `build-i686-unknown-linux` but it may, of course, be something different on your particular machine and operating system.

The make+ command is a shell script which performs the following steps:

- Creates the build directory if it doesn't exist already.

- Change into the build directory, ie. cd build-foo-bar

- Set the GNU make environment variable `MAKEFILES`. This causes GNU make to load the make+ library first.

- Run gmake -f ../Makefile+. Because `MAKEFILES` has been set, GNU make will first load the make+ library, and second load `Makefile+` from the top level of the source directory.

Because make+ runs in the build subdirectory, intermediate files shouldn't pollute the source directory. For this reason, make+ can use a very simple scheme when it builds a source tarball of the package: it just treats every file in the source directory as a source file, ignoring only the build subdirectory itself and files with names like `foo~` and `CVS`.

Prev | Up | Next
Chapter 1. Introduction | Home | Chapter 3. Compiling a package which has been converted to use make+