summaryrefslogtreecommitdiffstats
path: root/usr.bin/make/GNode.h
diff options
context:
space:
mode:
authorharti <harti@FreeBSD.org>2005-05-10 14:27:04 +0000
committerharti <harti@FreeBSD.org>2005-05-10 14:27:04 +0000
commit4e99d859a89fb83d3001764fed9e693baeb605e6 (patch)
tree1823597517d9c07dd62d8327fab8abb3190e11d9 /usr.bin/make/GNode.h
parent59c55733793bcd9b59e27a4c51cff131f473b99a (diff)
downloadFreeBSD-src-4e99d859a89fb83d3001764fed9e693baeb605e6.zip
FreeBSD-src-4e99d859a89fb83d3001764fed9e693baeb605e6.tar.gz
Move the definitions of the OP_* constants from make.h into GNode.h
where they actually belong to. Move the definitions of the strings for special macros like "$*" from make.h to parse.h - they're used only in the parser. Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.211)
Diffstat (limited to 'usr.bin/make/GNode.h')
-rw-r--r--usr.bin/make/GNode.h65
1 files changed, 63 insertions, 2 deletions
diff --git a/usr.bin/make/GNode.h b/usr.bin/make/GNode.h
index bf60b0e..23e68aa 100644
--- a/usr.bin/make/GNode.h
+++ b/usr.bin/make/GNode.h
@@ -56,9 +56,70 @@ typedef struct GNode {
/*
* The type of operator used to define the sources (qv. parse.c)
- * See OP_ flags in make.h
+ *
+ * The OP_ constants are used when parsing a dependency line as a way of
+ * communicating to other parts of the program the way in which a target
+ * should be made. These constants are bitwise-OR'ed together and
+ * placed in the 'type' field of each node. Any node that has
+ * a 'type' field which satisfies the OP_NOP function was never never on
+ * the lefthand side of an operator, though it may have been on the
+ * righthand side...
*/
int type;
+#define OP_DEPENDS 0x00000001 /* Execution of commands depends on
+ * kids (:) */
+#define OP_FORCE 0x00000002 /* Always execute commands (!) */
+#define OP_DOUBLEDEP 0x00000004 /* Execution of commands depends on
+ * kids per line (::) */
+#define OP_OPMASK (OP_DEPENDS|OP_FORCE|OP_DOUBLEDEP)
+
+#define OP_OPTIONAL 0x00000008 /* Don't care if the target doesn't
+ * exist and can't be created */
+#define OP_USE 0x00000010 /*
+ * Use associated commands for
+ * parents
+ */
+#define OP_EXEC 0x00000020 /* Target is never out of date, but
+ * always execute commands anyway.
+ * Its time doesn't matter, so it has
+ * none...sort of
+ */
+#define OP_IGNORE 0x00000040 /*
+ * Ignore errors when creating the node
+ */
+#define OP_PRECIOUS 0x00000080 /* Don't remove the target when
+ * interrupted */
+#define OP_SILENT 0x00000100 /* Don't echo commands when executed */
+#define OP_MAKE 0x00000200 /*
+ * Target is a recurrsive make so its
+ * commands should always be executed
+ * when it is out of date, regardless
+ * of the state of the -n or -t flags
+ */
+#define OP_JOIN 0x00000400 /* Target is out-of-date only if any of
+ * its children was out-of-date */
+#define OP_INVISIBLE 0x00004000 /* The node is invisible to its parents.
+ * I.e. it doesn't show up in the
+ * parents's local variables. */
+#define OP_NOTMAIN 0x00008000 /* The node is exempt from normal 'main
+ * target' processing in parse.c */
+#define OP_PHONY 0x00010000 /* Not a file target; run always */
+/* Attributes applied by PMake */
+#define OP_TRANSFORM 0x80000000 /* The node is a transformation rule */
+#define OP_MEMBER 0x40000000 /* Target is a member of an archive */
+#define OP_LIB 0x20000000 /* Target is a library */
+#define OP_ARCHV 0x10000000 /* Target is an archive construct */
+#define OP_HAS_COMMANDS 0x08000000 /* Target has all the commands it
+ * should. Used when parsing to catch
+ * multiple commands for a target */
+#define OP_SAVE_CMDS 0x04000000 /* Saving commands on .END (Compat) */
+#define OP_DEPS_FOUND 0x02000000 /* Already processed by Suff_FindDeps */
+
+/*
+ * OP_NOP will return TRUE if the node with the given type was not the
+ * object of a dependency operator
+ */
+#define OP_NOP(t) (((t) & OP_OPMASK) == 0x00000000)
int order; /* Its wait weight */
@@ -122,7 +183,7 @@ typedef struct GNode {
/* Lst of nodes for which this is a source (that depend on this one) */
Lst parents;
- /* List of nodes on which this depends */
+ /* List of nodes on which this depends */
Lst children;
/*
OpenPOWER on IntegriCloud