Add missing header files to CVS, for check in on 2005/01/06 10:52:59.
authorMax Okumoto <okumoto@dragonflybsd.org>
Thu, 6 Jan 2005 11:41:47 +0000 (11:41 +0000)
committerMax Okumoto <okumoto@dragonflybsd.org>
Thu, 6 Jan 2005 11:41:47 +0000 (11:41 +0000)
usr.bin/make/GNode.h [new file with mode: 0644]
usr.bin/make/arch.h [new file with mode: 0644]
usr.bin/make/compat.h [new file with mode: 0644]
usr.bin/make/cond.h [new file with mode: 0644]
usr.bin/make/for.h [new file with mode: 0644]
usr.bin/make/globals.h [new file with mode: 0644]
usr.bin/make/parse.h [new file with mode: 0644]
usr.bin/make/str.h [new file with mode: 0644]
usr.bin/make/suff.h [new file with mode: 0644]
usr.bin/make/targ.h [new file with mode: 0644]
usr.bin/make/util.h [new file with mode: 0644]

diff --git a/usr.bin/make/GNode.h b/usr.bin/make/GNode.h
new file mode 100644 (file)
index 0000000..f17d60c
--- /dev/null
@@ -0,0 +1,133 @@
+#ifndef GNode_h_39503bf2
+#define        GNode_h_39503bf2
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/GNode.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+#include "sprite.h"
+#include "lst.h"
+
+struct _Suff;
+
+/*-
+ * The structure for an individual graph node. Each node has several
+ * pieces of data associated with it.
+ *     1) the name of the target it describes
+ *     2) the location of the target file in the filesystem.
+ *     3) the type of operator used to define its sources (qv. parse.c)
+ *     4) whether it is involved in this invocation of make
+ *     5) whether the target has been remade
+ *     6) whether any of its children has been remade
+ *     7) the number of its children that are, as yet, unmade
+ *     8) its modification time
+ *     9) the modification time of its youngest child (qv. make.c)
+ *     10) a list of nodes for which this is a source
+ *     11) a list of nodes on which this depends
+ *     12) a list of nodes that depend on this, as gleaned from the
+ *         transformation rules.
+ *     13) a list of nodes of the same name created by the :: operator
+ *     14) a list of nodes that must be made (if they're made) before
+ *         this node can be, but that do no enter into the datedness of
+ *         this node.
+ *     15) a list of nodes that must be made (if they're made) after
+ *         this node is, but that do not depend on this node, in the
+ *         normal sense.
+ *     16) a Lst of ``local'' variables that are specific to this target
+ *        and this target only (qv. var.c [$@ $< $?, etc.])
+ *     17) a Lst of strings that are commands to be given to a shell
+ *        to create this target.
+ */
+typedef struct GNode {
+       char    *name;  /* The target's name */
+       char    *path;  /* The full pathname of the file */
+       int     type;   /* Its type (see the OP flags, below) */
+       int     order;  /* Its wait weight */
+
+       Boolean make;   /* TRUE if this target needs to be remade */
+
+       /* Set to reflect the state of processing on this node */
+       enum {
+               UNMADE,         /* Not examined yet */
+
+               BEINGMADE,      /* Target is already being made.
+                                * Indicates a cycle in the graph.
+                                * (compat mode only) */
+
+               MADE,           /* Was out-of-date and has been made */
+
+               UPTODATE,       /* Was already up-to-date */
+
+               ERROR,          /* An error occured while it was being
+                                * made (used only in compat mode) */
+
+               ABORTED,        /* The target was aborted due to an
+                                * error making an inferior (compat). */
+
+               CYCLE,          /* Marked as potentially being part of
+                                * a graph cycle.  If we come back to
+                                * a node marked this way, it is printed
+                                * and 'made' is changed to ENDCYCLE. */
+
+               ENDCYCLE        /* The cycle has been completely printed.
+                                * Go back and unmark all its members. */
+       } made;
+
+       Boolean childMade;      /* TRUE if one of this target's children
+                                * was made */
+       int     unmade;         /* The number of unmade children */
+       int     mtime;          /* Its modification time */
+       int     cmtime;         /* Modification time of its youngest child */
+       Lst     iParents;       /* Links to parents for which this is an
+                                * implied source, if any */
+       Lst     cohorts;        /* Other nodes for the :: operator */
+       Lst     parents;        /* Nodes that depend on this one */
+       Lst     children;       /* Nodes on which this one depends */
+       Lst     successors;     /* Nodes that must be made after this one */
+       Lst     preds;          /* Nodes that must be made before this one */
+
+       Lst     context;        /* The local variables */
+       Lst     commands;       /* Creation commands */
+
+       /* current command executing in compat mode */
+       LstNode *compat_command;
+
+       struct _Suff    *suffix;        /* Suffix for the node (determined
+                                        * by Suff_FindDeps and opaque to
+                                        * everyone but the Suff module) */
+} GNode;
+
+#endif /* GNode_h_39503bf2 */
diff --git a/usr.bin/make/arch.h b/usr.bin/make/arch.h
new file mode 100644 (file)
index 0000000..424d160
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef arch_h_488adf7a
+#define        arch_h_488adf7a
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/arch.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+#include "sprite.h"
+
+struct GNode;
+struct Lst;
+
+ReturnStatus Arch_ParseArchive(char **, struct Lst *, struct GNode *);
+void Arch_Touch(struct GNode *);
+void Arch_TouchLib(struct GNode *);
+int Arch_MTime(struct GNode *);
+int Arch_MemMTime(struct GNode *);
+void Arch_FindLib(struct GNode *, struct Lst *);
+Boolean Arch_LibOODate(struct GNode *);
+void Arch_Init(void);
+
+#endif /* arch_h_488adf7a */
diff --git a/usr.bin/make/compat.h b/usr.bin/make/compat.h
new file mode 100644 (file)
index 0000000..4f8d011
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef compat_h_29e49e8c
+#define        compat_h_29e49e8c
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/Attic/compat.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+struct Lst;
+
+void Compat_Run(struct Lst *);
+int Compat_RunCommand(void *, void *);
+
+#endif /* compat_h_29e49e8c */
diff --git a/usr.bin/make/cond.h b/usr.bin/make/cond.h
new file mode 100644 (file)
index 0000000..f431449
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef cond_h_6e96ad7c
+#define        cond_h_6e96ad7c
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/cond.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+/*
+ * Values returned by Cond_Eval.
+ */
+#define        COND_PARSE      0       /* Parse the next lines */
+#define        COND_SKIP       1       /* Skip the next lines */
+#define        COND_INVALID    2       /* Not a conditional statement */
+
+int Cond_Eval(char *);
+void Cond_End(void);
+
+#endif /* cond_h_6e96ad7c */
diff --git a/usr.bin/make/for.h b/usr.bin/make/for.h
new file mode 100644 (file)
index 0000000..54737a8
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef for_h_9d770f33
+#define        for_h_9d770f33
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/for.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+int For_Eval(char *);
+void For_Run(int);
+
+#endif /* for_h_9d770f33 */
diff --git a/usr.bin/make/globals.h b/usr.bin/make/globals.h
new file mode 100644 (file)
index 0000000..f2b98ba
--- /dev/null
@@ -0,0 +1,116 @@
+#ifndef globals_h_1c1edb96
+#define        globals_h_1c1edb96
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/globals.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+/*
+ * Global Variables
+ */
+
+#include <time.h>
+
+#include "lst.h"
+#include "parse.h"
+#include "sprite.h"
+
+struct GNode;
+
+/*
+ * The list of target names specified on the command line.
+ * Used to resolve #if make(...) statements
+ */
+extern Lst create;
+
+/* The list of directories to search when looking for targets */
+extern Lst dirSearchPath;
+
+extern IFile   curFile;        /* current makefile */
+
+/* The list of directories to search when looking for includes */
+extern Lst parseIncPath;
+
+extern Boolean jobsRunning;    /* True if jobs are running */
+extern Boolean compatMake;     /* True if we are make compatible */
+extern Boolean ignoreErrors;   /* True if should ignore all errors */
+extern Boolean beSilent;       /* True if should print no commands */
+extern Boolean beVerbose;      /* True if should print extra cruft */
+extern Boolean noExecute;      /* True if should execute nothing */
+extern Boolean allPrecious;    /* True if every target is precious */
+extern Boolean keepgoing;      /* True if should continue on unaffected
+                                * portions of the graph when have an error
+                                * in one portion */
+extern Boolean touchFlag;      /* TRUE if targets should just be 'touched'
+                                * if out of date. Set by the -t flag */
+extern Boolean usePipes;       /* TRUE if should capture the output of
+                                * subshells by means of pipes. Otherwise it
+                                * is routed to temporary files from which it
+                                * is retrieved when the shell exits */
+extern Boolean queryFlag;      /* TRUE if we aren't supposed to really make
+                                * anything, just see if the targets are out-
+                                * of-date */
+
+extern Boolean checkEnvFirst;  /* TRUE if environment should be searched for
+                                * all variables before the global context */
+
+/* List of specific variables for which the environment should be
+ * searched before the global context */
+extern Lst envFirstVars;
+
+extern struct GNode    *DEFAULT;       /* .DEFAULT rule */
+
+extern struct GNode    *VAR_GLOBAL;    /* Variables defined in a global context, e.g
+                                        * in the Makefile itself */
+
+extern struct GNode    *VAR_CMD;       /* Variables defined on the command line */
+
+extern char    var_Error[];    /* Value returned by Var_Parse when an error
+                                * is encountered. It actually points to
+                                * an empty string, so naive callers needn't
+                                * worry about it. */
+
+extern time_t  now;            /* The time at the start of this whole
+                                * process */
+
+extern Boolean oldVars;        /* Do old-style variable substitution */
+
+/* The system include path. */
+extern Lst     sysIncPath;
+
+extern int debug;
+
+#endif /* globals_h_1c1edb96 */
diff --git a/usr.bin/make/parse.h b/usr.bin/make/parse.h
new file mode 100644 (file)
index 0000000..f0c3d90
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef parse_h_470eeb9a
+#define        parse_h_470eeb9a
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/parse.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+#include <stdio.h>
+
+#include "sprite.h"
+
+struct GNode;
+struct Lst;
+
+/*
+ * Definitions for handling #include specifications
+ */
+typedef struct {
+    char *str;
+    char *ptr;
+} PTR;
+typedef struct IFile {
+    char            *fname;        /* name of previous file */
+    int             lineno;        /* saved line number */
+    FILE           *F;             /* the open stream */
+    PTR                    *p;             /* the char pointer */
+} IFile;
+
+void Parse_Error(int, const char *, ...);
+Boolean Parse_AnyExport(void);
+Boolean Parse_IsVar(char *);
+void Parse_DoVar(char *, struct GNode *);
+void Parse_AddIncludeDir(char *);
+void Parse_File(char *, FILE *);
+void Parse_Init(void);
+void Parse_FromString(char *, int);
+void Parse_MainName(struct Lst *);
+
+#endif /* parse_h_470eeb9a */
diff --git a/usr.bin/make/str.h b/usr.bin/make/str.h
new file mode 100644 (file)
index 0000000..abfcb7d
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef str_h_44db59e6
+#define        str_h_44db59e6
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/str.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+#include "buf.h"
+#include "sprite.h"
+
+/*
+ * These constants are all used by the Str_Concat function to decide how the
+ * final string should look. If STR_ADDSPACE is given, a space will be
+ * placed between the two strings. If STR_ADDSLASH is given, a '/' will
+ * be used instead of a space. If neither is given, no intervening characters
+ * will be placed between the two strings in the final output.
+ */
+#define        STR_ADDSPACE    0x01    /* add a space when Str_Concat'ing */
+#define        STR_ADDSLASH    0x04    /* add a slash when Str_Concat'ing */
+
+void str_init(void);
+char *str_concat(const char *, const char *, int);
+char **brk_string(char *, int *, Boolean);
+int Str_Match(const char *, const char *);
+const char *Str_SYSVMatch(const char *, const char *, int *);
+void Str_SYSVSubst(Buffer, const char *, const char *, int);
+
+#endif /* str_h_44db59e6 */
diff --git a/usr.bin/make/suff.h b/usr.bin/make/suff.h
new file mode 100644 (file)
index 0000000..4b70089
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef suff_h_2d5a821c
+#define        suff_h_2d5a821c
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/suff.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+struct GNode;
+
+void Suff_ClearSuffixes(void);
+Boolean Suff_IsTransform(char *);
+struct GNode *Suff_AddTransform(char *);
+int Suff_EndTransform(void *, void *);
+void Suff_AddSuffix(char *);
+Lst *Suff_GetPath(char *);
+void Suff_DoPaths(void);
+void Suff_AddInclude(char *);
+void Suff_AddLib(char *);
+void Suff_FindDeps(GNode *);
+void Suff_SetNull(char *);
+void Suff_Init(void);
+void Suff_PrintAll(void);
+
+#endif /* suff_h_2d5a821c */
diff --git a/usr.bin/make/targ.h b/usr.bin/make/targ.h
new file mode 100644 (file)
index 0000000..acda527
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef targ_h_6ded1830
+#define        targ_h_6ded1830
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/targ.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+#include <time.h>
+
+/*
+ * The TARG_ constants are used when calling the Targ_FindNode and
+ * Targ_FindList functions in targ.c. They simply tell the functions what to
+ * do if the desired node(s) is (are) not found. If the TARG_CREATE constant
+ * is given, a new, empty node will be created for the target, placed in the
+ * table of all targets and its address returned. If TARG_NOCREATE is given,
+ * a NULL pointer will be returned.
+ */
+#define        TARG_CREATE     0x01      /* create node if not found */
+#define        TARG_NOCREATE   0x00      /* don't create it */
+
+struct GNode;
+struct Lst;
+
+void Targ_Init(void);
+struct GNode *Targ_NewGN(char *);
+struct GNode *Targ_FindNode(char *, int);
+void Targ_FindList(struct Lst *, struct Lst *, int);
+Boolean Targ_Ignore(struct GNode *);
+Boolean Targ_Silent(struct GNode *);
+Boolean Targ_Precious(struct GNode *);
+void Targ_SetMain(struct GNode *);
+int Targ_PrintCmd(void *, void *);
+char *Targ_FmtTime(time_t);
+void Targ_PrintType(int);
+void Targ_PrintGraph(int);
+
+#endif /* targ_h_6ded1830 */
diff --git a/usr.bin/make/util.h b/usr.bin/make/util.h
new file mode 100644 (file)
index 0000000..94e8391
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef util_h_b7020fdb
+#define        util_h_b7020fdb
+/*
+ * Copyright (c) 2004, 2005 by Max Okumoto
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Adam de Boor.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $DragonFly: src/usr.bin/make/util.h,v 1.1 2005/01/06 11:41:47 okumoto Exp $
+ */
+
+#include <sys/types.h>
+
+#define        CONCAT(a,b)     a##b
+
+/*
+ * debug control:
+ *     There is one bit per module.  It is up to the module what debug
+ *     information to print.
+ */
+#define        DEBUG_ARCH      0x0001
+#define        DEBUG_COND      0x0002
+#define        DEBUG_DIR       0x0004
+#define        DEBUG_GRAPH1    0x0008
+#define        DEBUG_GRAPH2    0x0010
+#define        DEBUG_JOB       0x0020
+#define        DEBUG_MAKE      0x0040
+#define        DEBUG_SUFF      0x0080
+#define        DEBUG_TARG      0x0100
+#define        DEBUG_VAR       0x0200
+#define        DEBUG_FOR       0x0400
+#define        DEBUG_LOUD      0x0800
+
+#define        DEBUG(module)   (debug & CONCAT(DEBUG_,module))
+#define        DEBUGF(module,args)             \
+do {                                           \
+       if (DEBUG(module)) {                    \
+               Debug args ;                    \
+       }                                       \
+} while (0)
+
+#define        ISDOT(c) ((c)[0] == '.' && (((c)[1] == '\0') || ((c)[1] == '/')))
+#define        ISDOTDOT(c) ((c)[0] == '.' && ISDOT(&((c)[1])))
+
+void Debug(const char *, ...);
+void Error(const char *, ...);
+void Fatal(const char *, ...);
+void Punt(const char *, ...);
+void DieHorribly(void);
+int PrintAddr(void *, void *);
+void Finish(int);
+char *estrdup(const char *);
+void *emalloc(size_t);
+void *erealloc(void *, size_t);
+void enomem(void);
+int eunlink(const char *);
+
+#endif /* util_h_b7020fdb */