From 4c069d872b0f2753940a55591ad43d8baf38ff07 Mon Sep 17 00:00:00 2001 From: jtkohl Date: Wed, 30 Aug 1989 11:24:45 +0000 Subject: [PATCH] Initial revision --- util/imake/imake.c | 749 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 749 insertions(+) create mode 100644 util/imake/imake.c diff --git a/util/imake/imake.c b/util/imake/imake.c new file mode 100644 index 00000000..5e2d89e4 --- /dev/null +++ b/util/imake/imake.c @@ -0,0 +1,749 @@ +/* + * + * Copyright 1985, 1986, 1987 by the Massachusetts Institute of Technology + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of M.I.T. not be used in + * advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. + * M.I.T. makes no representations about the suitability of + * this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * $Header$ + * $Locker$ + * + * Author: + * Todd Brunhoff + * Tektronix, inc. + * While a guest engineer at Project Athena, MIT + * + * imake: the include-make program. + * + * Usage: imake [-Idir] [-Ddefine] [-T] [-f imakefile ] [-s] [-v] [make flags] + * + * Imake takes a template makefile (Imake.template) and runs cpp on it + * producing a temporary makefile in /usr/tmp. It then runs make on + * this pre-processed makefile. + * Options: + * -D define. Same as cpp -D argument. + * -I Include directory. Same as cpp -I argument. + * -T template. Designate a template other + * than Imake.template + * -s show. Show the produced makefile on the standard + * output. Make is not run is this case. If a file + * argument is provided, the output is placed there. + * -v verbose. Show the make command line executed. + * + * Environment variables: + * + * IMAKEINCLUDE Include directory to use in addition to + * "." and "/usr/lib/local/imake.include". + * IMAKECPP Cpp to use instead of /lib/cpp + * IMAKEMAKE make program to use other than what is + * found by searching the $PATH variable. + * Other features: + * imake reads the entire cpp output into memory and then scans it + * for occurences of "@@". If it encounters them, it replaces it with + * a newline. It also trims any trailing white space on output lines + * (because make gets upset at them). This helps when cpp expands + * multi-line macros but you want them to appear on multiple lines. + * + * The macros MAKEFILE and MAKE are provided as macros + * to make. MAKEFILE is set to imake's makefile (not the constructed, + * preprocessed one) and MAKE is set to argv[0], i.e. the name of + * the imake program. + * + * Theory of operation: + * 1. Determine the name of the imakefile from the command line (-f) + * or from the content of the current directory (Imakefile or imakefile). + * Call this . This gets added to the arguments for + * make as MAKEFILE=. + * 2. Determine the name of the template from the command line (-T) + * or the default, Imake.template. Call this