/* * Copyright 1994 Christopher Seiwald. * * This file is part of Jam - see jam.c for Copyright information. */ /* * command.h - the CMD structure and routines to manipulate them * * Both ACTION and CMD contain a rule, targets, and sources. An * ACTION describes a rule to be applied to the given targets and * sources; a CMD is what actually gets executed by the shell. The * differences are due to: * * ACTIONS must be combined if 'actions together' is given. * ACTIONS must be split if 'actions piecemeal' is given. * ACTIONS must have current sources omitted for 'actions updated'. * * The CMD datatype holds a single command that is to be executed * against a target, and they can chain together to represent the * full collection of commands used to update a target. * * Structures: * * CMD - an action, ready to be formatted into a buffer and executed * * External routines: * * cmd_new() - return a new CMD or 0 if too many args * cmd_free() - delete CMD and its parts * cmd_next() - walk the CMD chain */ /* * CMD - an action, ready to be formatted into a buffer and executed */ typedef struct _cmd CMD; struct _cmd { CMD *next; CMD *tail; /* valid on in head */ RULE *rule; /* rule->actions contains shell script */ LIST *shell; /* $(SHELL) value */ LOL args; /* LISTs for $(<), $(>) */ #ifndef OPT_DYNAMIC_COMMAND_SIZE_EXT char buf[ MAXLINE ]; /* actual commands */ #else char *buf; #endif } ; CMD *cmd_new( RULE *rule, /* rule (referenced) */ LIST *targets, /* $(<) (freed) */ LIST *sources, /* $(>) (freed) */ LIST *shell, /* $(SHELL) (freed) */ int maxline ); /* max line length */ void cmd_free( CMD *cmd ); # define cmd_next( c ) ((c)->next)
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#5 | 3181 | Craig Mcpheeters | Integration of the Jam mainline into my branch | ||
#4 | 1023 | Craig Mcpheeters |
Integration from //guest/craig_mcpheeters/work/jam/src/... This return incorporates all of the Alias|Wavefront extensions to Jam, into an area which is a proper branch of the Jam mainline. An integration of these files into the Jam mainline will show all of the differences. There are several extensions to Jam in this return. Look at the new file Jamfile.config for an explanation of the extensions, and how to compile them into your own copy of Jam. If you want to build a copy of Jam with all of the extensions, do this: jam -sAllOptions=1 Read the config file for more info. The extensions range from minor output tweaks and simple fixes to more major things like a header cache, serialization of output from multiple jobs, dynamic command block sizing These are all offered without warranty, etc. |
||
#3 | 784 | Craig Mcpheeters | Integration from Jam mainline | ||
#2 | 617 | Craig Mcpheeters | Integration from mainline as of @3 | ||
#1 | 616 | Craig Mcpheeters | Integration from Jam mainline, as of @2 |