VirtualBox

source: kBuild/trunk/src/kmk/commands.h@ 2074

Last change on this file since 2074 was 2056, checked in by bird, 16 years ago

kmk: some MBs of memory during building by freeing up the chopped up command lines after we're done with them. (Code not perfect, but wtf., it saves me 7 MBs (out of 45), a bunch of faults and turns out to using less cpu time...)

  • Property svn:eol-style set to native
File size: 2.5 KB
Line 
1/* Definition of data structures describing shell commands for GNU Make.
2Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
31998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
4Foundation, Inc.
5This file is part of GNU Make.
6
7GNU Make is free software; you can redistribute it and/or modify it under the
8terms of the GNU General Public License as published by the Free Software
9Foundation; either version 3 of the License, or (at your option) any later
10version.
11
12GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License along with
17this program. If not, see <http://www.gnu.org/licenses/>. */
18
19/* Structure that gives the commands to make a file
20 and information about where these commands came from. */
21
22struct commands
23 {
24 struct floc fileinfo; /* Where commands were defined. */
25 char *commands; /* Commands text. */
26 unsigned int ncommand_lines;/* Number of command lines. */
27 char **command_lines; /* Commands chopped up into lines. */
28#ifdef CONFIG_WITH_COMMANDS_FUNC
29 short *lines_flags; /* One set of flag bits for each line. */
30#else
31 char *lines_flags; /* One set of flag bits for each line. */
32#endif
33 int any_recurse; /* Nonzero if any `lines_recurse' elt has */
34 /* the COMMANDS_RECURSE bit set. */
35#ifdef CONFIG_WITH_MEMORY_OPTIMIZATIONS
36 int refs; /* References. */
37#endif
38 };
39
40/* Bits in `lines_flags'. */
41#define COMMANDS_RECURSE 1 /* Recurses: + or $(MAKE). */
42#define COMMANDS_SILENT 2 /* Silent: @. */
43#define COMMANDS_NOERROR 4 /* No errors: -. */
44#ifdef CONFIG_WITH_EXTENDED_NOTPARALLEL
45# define COMMANDS_NOTPARALLEL 32 /* kmk: The commands must be executed alone. */
46# define COMMANDS_NO_COMMANDS 64 /* kmk: No commands. */
47#endif
48#ifdef CONFIG_WITH_KMK_BUILTIN
49# define COMMANDS_KMK_BUILTIN 128 /* kmk: kmk builtin command. */
50#endif
51#ifdef CONFIG_WITH_COMMANDS_FUNC
52# define COMMAND_GETTER_SKIP_IT 256 /* $(commands target) skips this: % */
53#endif
54
55void execute_file_commands (struct file *file);
56void print_commands (const struct commands *cmds);
57void delete_child_targets (struct child *child);
58void chop_commands (struct commands *cmds);
59#if defined(CONFIG_WITH_COMMANDS_FUNC) || defined (CONFIG_WITH_DOT_MUST_MAKE)
60void set_file_variables (struct file *file, int called_early);
61#else
62void set_file_variables (struct file *file);
63#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette