version 1.38, 2000/07/01 00:21:22 |
version 1.39, 2000/07/18 20:17:20 |
|
|
char * chdir_verify_path __P((char *, char *)); |
char * chdir_verify_path __P((char *, char *)); |
static int ReadMakefile __P((void *, void *)); |
static int ReadMakefile __P((void *, void *)); |
static void usage __P((void)); |
static void usage __P((void)); |
|
static void posixParseOptLetter __P((char)); |
int main __P((int, char **)); |
int main __P((int, char **)); |
|
|
static char *curdir; /* startup directory */ |
static char *curdir; /* startup directory */ |
static char *objdir; /* where we chdir'ed to */ |
static char *objdir; /* where we chdir'ed to */ |
|
|
|
static void |
|
posixParseOptLetter(c) |
|
char c; |
|
{ |
|
switch(c) { |
|
case 'B': |
|
compatMake = TRUE; |
|
break; |
|
case 'P': |
|
usePipes = FALSE; |
|
Var_Append(MAKEFLAGS, "-P", VAR_GLOBAL); |
|
break; |
|
case 'S': |
|
keepgoing = FALSE; |
|
Var_Append(MAKEFLAGS, "-S", VAR_GLOBAL); |
|
break; |
|
case 'e': |
|
checkEnvFirst = TRUE; |
|
Var_Append(MAKEFLAGS, "-e", VAR_GLOBAL); |
|
break; |
|
case 'i': |
|
ignoreErrors = TRUE; |
|
Var_Append(MAKEFLAGS, "-i", VAR_GLOBAL); |
|
break; |
|
case 'k': |
|
keepgoing = TRUE; |
|
Var_Append(MAKEFLAGS, "-k", VAR_GLOBAL); |
|
break; |
|
case 'n': |
|
noExecute = TRUE; |
|
Var_Append(MAKEFLAGS, "-n", VAR_GLOBAL); |
|
break; |
|
case 'q': |
|
queryFlag = TRUE; |
|
/* Kind of nonsensical, wot? */ |
|
Var_Append(MAKEFLAGS, "-q", VAR_GLOBAL); |
|
break; |
|
case 'r': |
|
noBuiltins = TRUE; |
|
Var_Append(MAKEFLAGS, "-r", VAR_GLOBAL); |
|
break; |
|
case 's': |
|
beSilent = TRUE; |
|
Var_Append(MAKEFLAGS, "-s", VAR_GLOBAL); |
|
break; |
|
case 't': |
|
touchFlag = TRUE; |
|
Var_Append(MAKEFLAGS, "-t", VAR_GLOBAL); |
|
break; |
|
default: |
|
case '?': |
|
usage(); |
|
} |
|
} |
|
|
/*- |
/*- |
* MainParseArgs -- |
* MainParseArgs -- |
* Parse a given argument vector. Called from main() and from |
* Parse a given argument vector. Called from main() and from |
|
|
#else |
#else |
# define OPTFLAGS "BD:I:PSV:d:ef:ij:km:nqrst" |
# define OPTFLAGS "BD:I:PSV:d:ef:ij:km:nqrst" |
#endif |
#endif |
|
# define OPTLETTERS "BPSiknqrst" |
rearg: while((c = getopt(argc, argv, OPTFLAGS)) != -1) { |
rearg: while((c = getopt(argc, argv, OPTFLAGS)) != -1) { |
switch(c) { |
switch(c) { |
case 'D': |
case 'D': |
|
|
Var_Append(MAKEFLAGS, "-V", VAR_GLOBAL); |
Var_Append(MAKEFLAGS, "-V", VAR_GLOBAL); |
Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); |
Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); |
break; |
break; |
case 'B': |
|
compatMake = TRUE; |
|
break; |
|
#ifdef REMOTE |
#ifdef REMOTE |
case 'L': { |
case 'L': { |
char *endptr; |
char *endptr; |
|
|
break; |
break; |
} |
} |
#endif |
#endif |
case 'P': |
|
usePipes = FALSE; |
|
Var_Append(MAKEFLAGS, "-P", VAR_GLOBAL); |
|
break; |
|
case 'S': |
|
keepgoing = FALSE; |
|
Var_Append(MAKEFLAGS, "-S", VAR_GLOBAL); |
|
break; |
|
case 'd': { |
case 'd': { |
char *modules = optarg; |
char *modules = optarg; |
|
|
|
|
Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); |
Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); |
break; |
break; |
} |
} |
case 'e': |
|
checkEnvFirst = TRUE; |
|
Var_Append(MAKEFLAGS, "-e", VAR_GLOBAL); |
|
break; |
|
case 'f': |
case 'f': |
Lst_AtEnd(&makefiles, optarg); |
Lst_AtEnd(&makefiles, optarg); |
break; |
break; |
case 'i': |
|
ignoreErrors = TRUE; |
|
Var_Append(MAKEFLAGS, "-i", VAR_GLOBAL); |
|
break; |
|
case 'j': { |
case 'j': { |
char *endptr; |
char *endptr; |
|
|
|
|
Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); |
Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); |
break; |
break; |
} |
} |
case 'k': |
|
keepgoing = TRUE; |
|
Var_Append(MAKEFLAGS, "-k", VAR_GLOBAL); |
|
break; |
|
case 'm': |
case 'm': |
Dir_AddDir(&sysIncPath, optarg); |
Dir_AddDir(&sysIncPath, optarg); |
Var_Append(MAKEFLAGS, "-m", VAR_GLOBAL); |
Var_Append(MAKEFLAGS, "-m", VAR_GLOBAL); |
Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); |
Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); |
break; |
break; |
case 'n': |
|
noExecute = TRUE; |
|
Var_Append(MAKEFLAGS, "-n", VAR_GLOBAL); |
|
break; |
|
case 'q': |
|
queryFlag = TRUE; |
|
/* Kind of nonsensical, wot? */ |
|
Var_Append(MAKEFLAGS, "-q", VAR_GLOBAL); |
|
break; |
|
case 'r': |
|
noBuiltins = TRUE; |
|
Var_Append(MAKEFLAGS, "-r", VAR_GLOBAL); |
|
break; |
|
case 's': |
|
beSilent = TRUE; |
|
Var_Append(MAKEFLAGS, "-s", VAR_GLOBAL); |
|
break; |
|
case 't': |
|
touchFlag = TRUE; |
|
Var_Append(MAKEFLAGS, "-t", VAR_GLOBAL); |
|
break; |
|
default: |
default: |
case '?': |
posixParseOptLetter(c); |
usage(); |
|
} |
} |
} |
} |
|
|
|
|
int argc; /* Number of arguments in argv */ |
int argc; /* Number of arguments in argv */ |
char *args; /* Space used by the args */ |
char *args; /* Space used by the args */ |
char *buf; |
char *buf; |
char *argv0 = Var_Value(".MAKE", VAR_GLOBAL); |
char *argv0; |
|
char *s; |
|
|
if (line == NULL) |
if (line == NULL) |
return; |
return; |
|
|
if (!*line) |
if (!*line) |
return; |
return; |
|
|
|
/* POSIX rule: MAKEFLAGS can hold a set of option letters without |
|
* any blanks or dashes. */ |
|
for (s = line;; s++) { |
|
if (*s == '\0') { |
|
while (line != s) |
|
posixParseOptLetter(*line++); |
|
return; |
|
} |
|
if (strchr(OPTLETTERS, *s) == NULL) |
|
break; |
|
} |
|
argv0 = Var_Value(".MAKE", VAR_GLOBAL); |
buf = emalloc(strlen(line) + strlen(argv0) + 2); |
buf = emalloc(strlen(line) + strlen(argv0) + 2); |
(void)sprintf(buf, "%s %s", argv0, line); |
(void)sprintf(buf, "%s %s", argv0, line); |
|
|
|
|
|
|
MainParseArgs(argc, argv); |
MainParseArgs(argc, argv); |
|
|
|
#ifdef NotYet |
|
Var_AddCmdline(MAKEFLAGS); |
|
#endif |
|
|
/* |
/* |
* Initialize archive, target and suffix modules in preparation for |
* Initialize archive, target and suffix modules in preparation for |