diff options
Diffstat (limited to 'usr.bin/make/GNode.h')
-rw-r--r-- | usr.bin/make/GNode.h | 65 |
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; /* |