xref: /titanic_51/usr/src/cmd/make/include/mk/defs.h (revision 10d63b7db37a83b39c7f511cf9426c9d03ea0760)
1*10d63b7dSRichard Lowe #ifndef _MK_DEFS_H
2*10d63b7dSRichard Lowe #define _MK_DEFS_H
3*10d63b7dSRichard Lowe /*
4*10d63b7dSRichard Lowe  * CDDL HEADER START
5*10d63b7dSRichard Lowe  *
6*10d63b7dSRichard Lowe  * The contents of this file are subject to the terms of the
7*10d63b7dSRichard Lowe  * Common Development and Distribution License (the "License").
8*10d63b7dSRichard Lowe  * You may not use this file except in compliance with the License.
9*10d63b7dSRichard Lowe  *
10*10d63b7dSRichard Lowe  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11*10d63b7dSRichard Lowe  * or http://www.opensolaris.org/os/licensing.
12*10d63b7dSRichard Lowe  * See the License for the specific language governing permissions
13*10d63b7dSRichard Lowe  * and limitations under the License.
14*10d63b7dSRichard Lowe  *
15*10d63b7dSRichard Lowe  * When distributing Covered Code, include this CDDL HEADER in each
16*10d63b7dSRichard Lowe  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17*10d63b7dSRichard Lowe  * If applicable, add the following below this CDDL HEADER, with the
18*10d63b7dSRichard Lowe  * fields enclosed by brackets "[]" replaced with your own identifying
19*10d63b7dSRichard Lowe  * information: Portions Copyright [yyyy] [name of copyright owner]
20*10d63b7dSRichard Lowe  *
21*10d63b7dSRichard Lowe  * CDDL HEADER END
22*10d63b7dSRichard Lowe  */
23*10d63b7dSRichard Lowe /*
24*10d63b7dSRichard Lowe  * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
25*10d63b7dSRichard Lowe  * Use is subject to license terms.
26*10d63b7dSRichard Lowe  */
27*10d63b7dSRichard Lowe 
28*10d63b7dSRichard Lowe /*
29*10d63b7dSRichard Lowe  * Included files
30*10d63b7dSRichard Lowe  */
31*10d63b7dSRichard Lowe 
32*10d63b7dSRichard Lowe #include <mksh/defs.h>
33*10d63b7dSRichard Lowe 
34*10d63b7dSRichard Lowe 
35*10d63b7dSRichard Lowe 
36*10d63b7dSRichard Lowe /*
37*10d63b7dSRichard Lowe  * Defined macros
38*10d63b7dSRichard Lowe  */
39*10d63b7dSRichard Lowe 
40*10d63b7dSRichard Lowe #define SKIPSPACE(x)	while (*x &&				\
41*10d63b7dSRichard Lowe 			       ((*x == (int) space_char) ||	\
42*10d63b7dSRichard Lowe 			        (*x == (int) tab_char) ||	\
43*10d63b7dSRichard Lowe 			        (*x == (int) comma_char))) {	\
44*10d63b7dSRichard Lowe 					x++;			\
45*10d63b7dSRichard Lowe 			}
46*10d63b7dSRichard Lowe 
47*10d63b7dSRichard Lowe #define SKIPWORD(x)	while (*x &&				\
48*10d63b7dSRichard Lowe 			       (*x != (int) space_char) &&	\
49*10d63b7dSRichard Lowe 			       (*x != (int) tab_char) &&	\
50*10d63b7dSRichard Lowe 			       (*x != (int) newline_char) &&	\
51*10d63b7dSRichard Lowe 			       (*x != (int) comma_char) &&	\
52*10d63b7dSRichard Lowe 			       (*x != (int) equal_char)) {	\
53*10d63b7dSRichard Lowe 					x++;			\
54*10d63b7dSRichard Lowe 			}
55*10d63b7dSRichard Lowe 
56*10d63b7dSRichard Lowe #define SKIPTOEND(x)	while (*x &&				\
57*10d63b7dSRichard Lowe 			       (*x != (int) newline_char)) {	\
58*10d63b7dSRichard Lowe 					x++;			\
59*10d63b7dSRichard Lowe 			}
60*10d63b7dSRichard Lowe 
61*10d63b7dSRichard Lowe #define PMAKE_DEF_MAX_JOBS	2	/* Default number of parallel jobs. */
62*10d63b7dSRichard Lowe 
63*10d63b7dSRichard Lowe #define OUT_OF_DATE(a,b) \
64*10d63b7dSRichard Lowe 	(((a) < (b)) || (((a) == file_doesnt_exist) && ((b) == file_doesnt_exist)))
65*10d63b7dSRichard Lowe 
66*10d63b7dSRichard Lowe #define OUT_OF_DATE_SEC(a,b) \
67*10d63b7dSRichard Lowe 	(((a).tv_sec < (b).tv_sec) || (((a).tv_sec == file_doesnt_exist.tv_sec) && ((b).tv_sec == file_doesnt_exist.tv_sec)))
68*10d63b7dSRichard Lowe 
69*10d63b7dSRichard Lowe #define SETVAR(name, value, append) \
70*10d63b7dSRichard Lowe 				setvar_daemon(name, value, append, no_daemon, \
71*10d63b7dSRichard Lowe 					      true, debug_level)
72*10d63b7dSRichard Lowe #define MAX(a,b)		(((a)>(b))?(a):(b))
73*10d63b7dSRichard Lowe /*
74*10d63b7dSRichard Lowe  * New feature added to SUN5_0 make,  invoke the vanilla svr4 make when
75*10d63b7dSRichard Lowe  * the USE_SVR4_MAKE environment variable is set.
76*10d63b7dSRichard Lowe  */
77*10d63b7dSRichard Lowe #define SVR4_MAKE		"/usr/ccs/lib/svr4.make"
78*10d63b7dSRichard Lowe #define USE_SVR4_MAKE		"USE_SVR4_MAKE"
79*10d63b7dSRichard Lowe /*
80*10d63b7dSRichard Lowe  * The standard MAXHOSTNAMELEN is 64. We want 32.
81*10d63b7dSRichard Lowe  */
82*10d63b7dSRichard Lowe #define	MAX_HOSTNAMELEN		32
83*10d63b7dSRichard Lowe 
84*10d63b7dSRichard Lowe 
85*10d63b7dSRichard Lowe /*
86*10d63b7dSRichard Lowe  * typedefs & structs
87*10d63b7dSRichard Lowe  */
88*10d63b7dSRichard Lowe typedef enum {
89*10d63b7dSRichard Lowe 	no_state,
90*10d63b7dSRichard Lowe 	scan_name_state,
91*10d63b7dSRichard Lowe 	scan_command_state,
92*10d63b7dSRichard Lowe 	enter_dependencies_state,
93*10d63b7dSRichard Lowe 	enter_conditional_state,
94*10d63b7dSRichard Lowe 	enter_equal_state,
95*10d63b7dSRichard Lowe 	illegal_bytes_state,
96*10d63b7dSRichard Lowe 	illegal_eoln_state,
97*10d63b7dSRichard Lowe 	poorly_formed_macro_state,
98*10d63b7dSRichard Lowe 	exit_state
99*10d63b7dSRichard Lowe }                       Reader_state;
100*10d63b7dSRichard Lowe 
101*10d63b7dSRichard Lowe struct _Name_vector {
102*10d63b7dSRichard Lowe 	struct _Name		*names[64];
103*10d63b7dSRichard Lowe 	struct _Chain		*target_group[64];
104*10d63b7dSRichard Lowe 	short                   used;
105*10d63b7dSRichard Lowe 	struct _Name_vector	*next;
106*10d63b7dSRichard Lowe };
107*10d63b7dSRichard Lowe 
108*10d63b7dSRichard Lowe struct _Running {
109*10d63b7dSRichard Lowe 	struct _Running		*next;
110*10d63b7dSRichard Lowe 	Doname			state;
111*10d63b7dSRichard Lowe 	struct _Name		*target;
112*10d63b7dSRichard Lowe 	struct _Name		*true_target;
113*10d63b7dSRichard Lowe 	struct _Property	*command;
114*10d63b7dSRichard Lowe 	struct _Name		*sprodep_value;
115*10d63b7dSRichard Lowe 	char			*sprodep_env;
116*10d63b7dSRichard Lowe 	int			recursion_level;
117*10d63b7dSRichard Lowe 	Boolean			do_get;
118*10d63b7dSRichard Lowe 	Boolean			implicit;
119*10d63b7dSRichard Lowe 	Boolean			redo;
120*10d63b7dSRichard Lowe 	int			auto_count;
121*10d63b7dSRichard Lowe 	struct _Name		**automatics;
122*10d63b7dSRichard Lowe 	pid_t			pid;
123*10d63b7dSRichard Lowe 	int			job_msg_id;
124*10d63b7dSRichard Lowe 	char			*stdout_file;
125*10d63b7dSRichard Lowe 	char			*stderr_file;
126*10d63b7dSRichard Lowe 	struct _Name		*temp_file;
127*10d63b7dSRichard Lowe 	int			conditional_cnt;
128*10d63b7dSRichard Lowe 	struct _Name		**conditional_targets;
129*10d63b7dSRichard Lowe 	Boolean			make_refd;
130*10d63b7dSRichard Lowe };
131*10d63b7dSRichard Lowe 
132*10d63b7dSRichard Lowe typedef enum {
133*10d63b7dSRichard Lowe 	serial_mode,
134*10d63b7dSRichard Lowe 	parallel_mode
135*10d63b7dSRichard Lowe } DMake_mode;
136*10d63b7dSRichard Lowe 
137*10d63b7dSRichard Lowe typedef enum {
138*10d63b7dSRichard Lowe 	txt1_mode,
139*10d63b7dSRichard Lowe 	txt2_mode,
140*10d63b7dSRichard Lowe 	html1_mode
141*10d63b7dSRichard Lowe } DMake_output_mode;
142*10d63b7dSRichard Lowe 
143*10d63b7dSRichard Lowe struct _Recursive_make {
144*10d63b7dSRichard Lowe 	struct _Recursive_make	*next;	/* Linked list */
145*10d63b7dSRichard Lowe 	wchar_t			*target;/* Name of target */
146*10d63b7dSRichard Lowe 	wchar_t			*oldline;/* Original line in .nse_depinfo */
147*10d63b7dSRichard Lowe 	wchar_t			*newline;/* New line in .nse_depinfo */
148*10d63b7dSRichard Lowe 	wchar_t			*cond_macrostring;
149*10d63b7dSRichard Lowe 					/* string built from value of
150*10d63b7dSRichard Lowe 					 * conditional macros used by
151*10d63b7dSRichard Lowe 					 * this target
152*10d63b7dSRichard Lowe 					 */
153*10d63b7dSRichard Lowe 	Boolean			removed;/* This target is no longer recursive*/
154*10d63b7dSRichard Lowe };
155*10d63b7dSRichard Lowe 
156*10d63b7dSRichard Lowe struct _Dyntarget {
157*10d63b7dSRichard Lowe 	struct _Dyntarget	*next;
158*10d63b7dSRichard Lowe 	struct _Name		*name;
159*10d63b7dSRichard Lowe };
160*10d63b7dSRichard Lowe 
161*10d63b7dSRichard Lowe 
162*10d63b7dSRichard Lowe /*
163*10d63b7dSRichard Lowe  * Typedefs for all structs
164*10d63b7dSRichard Lowe  */
165*10d63b7dSRichard Lowe typedef struct _Cmd_line	*Cmd_line, Cmd_line_rec;
166*10d63b7dSRichard Lowe typedef struct _Dependency	*Dependency, Dependency_rec;
167*10d63b7dSRichard Lowe typedef struct _Macro		*Macro, Macro_rec;
168*10d63b7dSRichard Lowe typedef struct _Name_vector	*Name_vector, Name_vector_rec;
169*10d63b7dSRichard Lowe typedef struct _Percent		*Percent, Percent_rec;
170*10d63b7dSRichard Lowe typedef struct _Dyntarget	*Dyntarget;
171*10d63b7dSRichard Lowe typedef struct _Recursive_make	*Recursive_make, Recursive_make_rec;
172*10d63b7dSRichard Lowe typedef struct _Running		*Running, Running_rec;
173*10d63b7dSRichard Lowe 
174*10d63b7dSRichard Lowe 
175*10d63b7dSRichard Lowe /*
176*10d63b7dSRichard Lowe  *	extern declarations for all global variables.
177*10d63b7dSRichard Lowe  *	The actual declarations are in globals.cc
178*10d63b7dSRichard Lowe  */
179*10d63b7dSRichard Lowe extern	Boolean		allrules_read;
180*10d63b7dSRichard Lowe extern	Name		posix_name;
181*10d63b7dSRichard Lowe extern	Name		svr4_name;
182*10d63b7dSRichard Lowe extern	Boolean		sdot_target;
183*10d63b7dSRichard Lowe extern	Boolean		all_parallel;
184*10d63b7dSRichard Lowe extern	Boolean		assign_done;
185*10d63b7dSRichard Lowe extern	Boolean		build_failed_seen;
186*10d63b7dSRichard Lowe extern	Name		built_last_make_run;
187*10d63b7dSRichard Lowe extern	Name		c_at;
188*10d63b7dSRichard Lowe extern	Boolean		command_changed;
189*10d63b7dSRichard Lowe extern	Boolean		commands_done;
190*10d63b7dSRichard Lowe extern	Chain		conditional_targets;
191*10d63b7dSRichard Lowe extern	Name		conditionals;
192*10d63b7dSRichard Lowe extern	Boolean		continue_after_error;
193*10d63b7dSRichard Lowe extern	Property	current_line;
194*10d63b7dSRichard Lowe extern	Name		current_make_version;
195*10d63b7dSRichard Lowe extern	Name		current_target;
196*10d63b7dSRichard Lowe extern	short		debug_level;
197*10d63b7dSRichard Lowe extern	Cmd_line	default_rule;
198*10d63b7dSRichard Lowe extern	Name		default_rule_name;
199*10d63b7dSRichard Lowe extern	Name		default_target_to_build;
200*10d63b7dSRichard Lowe extern	Boolean		depinfo_already_read;
201*10d63b7dSRichard Lowe extern	Name		dmake_group;
202*10d63b7dSRichard Lowe extern	Name		dmake_max_jobs;
203*10d63b7dSRichard Lowe extern	Name		dmake_mode;
204*10d63b7dSRichard Lowe extern	DMake_mode	dmake_mode_type;
205*10d63b7dSRichard Lowe extern	Name		dmake_output_mode;
206*10d63b7dSRichard Lowe extern	DMake_output_mode	output_mode;
207*10d63b7dSRichard Lowe extern	Name		dmake_odir;
208*10d63b7dSRichard Lowe extern	Name		dmake_rcfile;
209*10d63b7dSRichard Lowe extern	Name		done;
210*10d63b7dSRichard Lowe extern	Name		dot;
211*10d63b7dSRichard Lowe extern	Name		dot_keep_state;
212*10d63b7dSRichard Lowe extern	Name		dot_keep_state_file;
213*10d63b7dSRichard Lowe extern	Name		empty_name;
214*10d63b7dSRichard Lowe extern	Boolean		fatal_in_progress;
215*10d63b7dSRichard Lowe extern	int		file_number;
216*10d63b7dSRichard Lowe extern	Name		force;
217*10d63b7dSRichard Lowe extern	Name		ignore_name;
218*10d63b7dSRichard Lowe extern	Boolean		ignore_errors;
219*10d63b7dSRichard Lowe extern	Boolean		ignore_errors_all;
220*10d63b7dSRichard Lowe extern	Name		init;
221*10d63b7dSRichard Lowe extern	int		job_msg_id;
222*10d63b7dSRichard Lowe extern	Boolean		keep_state;
223*10d63b7dSRichard Lowe extern	Name		make_state;
224*10d63b7dSRichard Lowe extern	timestruc_t	make_state_before;
225*10d63b7dSRichard Lowe extern	Boolean		make_state_locked;
226*10d63b7dSRichard Lowe extern	Dependency	makefiles_used;
227*10d63b7dSRichard Lowe extern	Name		makeflags;
228*10d63b7dSRichard Lowe extern	Name		make_version;
229*10d63b7dSRichard Lowe extern	char		mbs_buffer2[];
230*10d63b7dSRichard Lowe extern	char		*mbs_ptr;
231*10d63b7dSRichard Lowe extern	char		*mbs_ptr2;
232*10d63b7dSRichard Lowe extern	Boolean		no_action_was_taken;
233*10d63b7dSRichard Lowe extern	Boolean		no_parallel;
234*10d63b7dSRichard Lowe extern	Name		no_parallel_name;
235*10d63b7dSRichard Lowe extern	Name		not_auto;
236*10d63b7dSRichard Lowe extern	Boolean		only_parallel;
237*10d63b7dSRichard Lowe extern	Boolean		parallel;
238*10d63b7dSRichard Lowe extern	Name		parallel_name;
239*10d63b7dSRichard Lowe extern	Name		localhost_name;
240*10d63b7dSRichard Lowe extern	int		parallel_process_cnt;
241*10d63b7dSRichard Lowe extern	Percent		percent_list;
242*10d63b7dSRichard Lowe extern	Dyntarget	dyntarget_list;
243*10d63b7dSRichard Lowe extern	Name		plus;
244*10d63b7dSRichard Lowe extern	Name		pmake_machinesfile;
245*10d63b7dSRichard Lowe extern	Name		precious;
246*10d63b7dSRichard Lowe extern	Name		primary_makefile;
247*10d63b7dSRichard Lowe extern	Boolean		quest;
248*10d63b7dSRichard Lowe extern	short		read_trace_level;
249*10d63b7dSRichard Lowe extern	Boolean		reading_dependencies;
250*10d63b7dSRichard Lowe extern	int		recursion_level;
251*10d63b7dSRichard Lowe extern	Name		recursive_name;
252*10d63b7dSRichard Lowe extern	short		report_dependencies_level;
253*10d63b7dSRichard Lowe extern	Boolean		report_pwd;
254*10d63b7dSRichard Lowe extern	Boolean		rewrite_statefile;
255*10d63b7dSRichard Lowe extern	Running		running_list;
256*10d63b7dSRichard Lowe extern	char		*sccs_dir_path;
257*10d63b7dSRichard Lowe extern	Name		sccs_get_name;
258*10d63b7dSRichard Lowe extern	Name		sccs_get_posix_name;
259*10d63b7dSRichard Lowe extern	Cmd_line	sccs_get_rule;
260*10d63b7dSRichard Lowe extern	Cmd_line	sccs_get_org_rule;
261*10d63b7dSRichard Lowe extern	Cmd_line	sccs_get_posix_rule;
262*10d63b7dSRichard Lowe extern	Name		get_name;
263*10d63b7dSRichard Lowe extern	Name		get_posix_name;
264*10d63b7dSRichard Lowe extern	Cmd_line	get_rule;
265*10d63b7dSRichard Lowe extern	Cmd_line	get_posix_rule;
266*10d63b7dSRichard Lowe extern	Boolean		all_precious;
267*10d63b7dSRichard Lowe extern	Boolean		report_cwd;
268*10d63b7dSRichard Lowe extern	Boolean		silent_all;
269*10d63b7dSRichard Lowe extern	Boolean		silent;
270*10d63b7dSRichard Lowe extern	Name		silent_name;
271*10d63b7dSRichard Lowe extern	char		*stderr_file;
272*10d63b7dSRichard Lowe extern	char		*stdout_file;
273*10d63b7dSRichard Lowe extern	Boolean		stdout_stderr_same;
274*10d63b7dSRichard Lowe extern	Dependency	suffixes;
275*10d63b7dSRichard Lowe extern	Name		suffixes_name;
276*10d63b7dSRichard Lowe extern	Name		sunpro_dependencies;
277*10d63b7dSRichard Lowe extern	Boolean		target_variants;
278*10d63b7dSRichard Lowe extern	const char	*tmpdir;
279*10d63b7dSRichard Lowe extern	const char	*temp_file_directory;
280*10d63b7dSRichard Lowe extern	Name		temp_file_name;
281*10d63b7dSRichard Lowe extern	short		temp_file_number;
282*10d63b7dSRichard Lowe extern  wchar_t		*top_level_target;
283*10d63b7dSRichard Lowe extern	Boolean		touch;
284*10d63b7dSRichard Lowe extern	Boolean		trace_reader;
285*10d63b7dSRichard Lowe extern	Boolean		build_unconditional;
286*10d63b7dSRichard Lowe extern	pathpt		vroot_path;
287*10d63b7dSRichard Lowe extern	Name		wait_name;
288*10d63b7dSRichard Lowe extern	wchar_t		wcs_buffer2[];
289*10d63b7dSRichard Lowe extern	wchar_t		*wcs_ptr;
290*10d63b7dSRichard Lowe extern	wchar_t		*wcs_ptr2;
291*10d63b7dSRichard Lowe extern	long int	hostid;
292*10d63b7dSRichard Lowe 
293*10d63b7dSRichard Lowe /*
294*10d63b7dSRichard Lowe  * Declarations of system defined variables
295*10d63b7dSRichard Lowe  */
296*10d63b7dSRichard Lowe /* On linux this variable is defined in 'signal.h' */
297*10d63b7dSRichard Lowe extern	char		*sys_siglist[];
298*10d63b7dSRichard Lowe 
299*10d63b7dSRichard Lowe /*
300*10d63b7dSRichard Lowe  * Declarations of system supplied functions
301*10d63b7dSRichard Lowe  */
302*10d63b7dSRichard Lowe extern	int		file_lock(char *, char *, int *, int);
303*10d63b7dSRichard Lowe 
304*10d63b7dSRichard Lowe /*
305*10d63b7dSRichard Lowe  * Declarations of functions declared and used by make
306*10d63b7dSRichard Lowe  */
307*10d63b7dSRichard Lowe extern	void		add_pending(Name target, int recursion_level, Boolean do_get, Boolean implicit, Boolean redo);
308*10d63b7dSRichard Lowe extern	void		add_running(Name target, Name true_target, Property command, int recursion_level, int auto_count, Name *automatics, Boolean do_get, Boolean implicit);
309*10d63b7dSRichard Lowe extern	void		add_serial(Name target, int recursion_level, Boolean do_get, Boolean implicit);
310*10d63b7dSRichard Lowe extern	void		add_subtree(Name target, int recursion_level, Boolean do_get, Boolean implicit);
311*10d63b7dSRichard Lowe extern  void 		append_or_replace_macro_in_dyn_array(ASCII_Dyn_Array *Ar, char *macro);
312*10d63b7dSRichard Lowe extern	void		await_parallel(Boolean waitflg);
313*10d63b7dSRichard Lowe extern	void		build_suffix_list(Name target_suffix);
314*10d63b7dSRichard Lowe extern	Boolean		check_auto_dependencies(Name target, int auto_count, Name *automatics);
315*10d63b7dSRichard Lowe extern	void		check_state(Name temp_file_name);
316*10d63b7dSRichard Lowe extern	void		cond_macros_into_string(Name np, String_rec *buffer);
317*10d63b7dSRichard Lowe extern	void		construct_target_string();
318*10d63b7dSRichard Lowe extern	void		create_xdrs_ptr(void);
319*10d63b7dSRichard Lowe extern	void		depvar_add_to_list (Name name, Boolean cmdline);
320*10d63b7dSRichard Lowe extern	Doname		doname(register Name target, register Boolean do_get, register Boolean implicit, register Boolean automatic = false);
321*10d63b7dSRichard Lowe extern	Doname		doname_check(register Name target, register Boolean do_get, register Boolean implicit, register Boolean automatic);
322*10d63b7dSRichard Lowe extern	Doname		doname_parallel(Name target, Boolean do_get, Boolean implicit);
323*10d63b7dSRichard Lowe extern	Doname		dosys(register Name command, register Boolean ignore_error, register Boolean call_make, Boolean silent_error, Boolean always_exec, Name target);
324*10d63b7dSRichard Lowe extern	void		dump_make_state(void);
325*10d63b7dSRichard Lowe extern	void		dump_target_list(void);
326*10d63b7dSRichard Lowe extern	void		enter_conditional(register Name target, Name name, Name value, register Boolean append);
327*10d63b7dSRichard Lowe extern	void		enter_dependencies(register Name target, Chain target_group, register Name_vector depes, register Cmd_line command, register Separator separator);
328*10d63b7dSRichard Lowe extern	void		enter_dependency(Property line, register Name depe, Boolean automatic);
329*10d63b7dSRichard Lowe extern	void		enter_equal(Name name, Name value, register Boolean append);
330*10d63b7dSRichard Lowe extern  Percent		enter_percent(register Name target, Chain target_group, register Name_vector depes, Cmd_line command);
331*10d63b7dSRichard Lowe extern	Dyntarget	enter_dyntarget(register Name target);
332*10d63b7dSRichard Lowe extern	Name_vector	enter_name(String string, Boolean tail_present, register wchar_t *string_start, register wchar_t *string_end, Name_vector current_names, Name_vector *extra_names, Boolean *target_group_seen);
333*10d63b7dSRichard Lowe extern	Boolean		exec_vp(register char *name, register char **argv, char **envp, register Boolean ignore_error);
334*10d63b7dSRichard Lowe extern	Doname		execute_parallel(Property line, Boolean waitflg, Boolean local = false);
335*10d63b7dSRichard Lowe extern	Doname		execute_serial(Property line);
336*10d63b7dSRichard Lowe extern	timestruc_t&  	exists(register Name target);
337*10d63b7dSRichard Lowe extern	void		fatal(const char *, ...);
338*10d63b7dSRichard Lowe extern	void		fatal_reader(char *, ...);
339*10d63b7dSRichard Lowe extern	Doname		find_ar_suffix_rule(register Name target, Name true_target, Property *command, Boolean rechecking);
340*10d63b7dSRichard Lowe extern	Doname		find_double_suffix_rule(register Name target, Property *command, Boolean rechecking);
341*10d63b7dSRichard Lowe extern	Doname		find_percent_rule(register Name target, Property *command, Boolean rechecking);
342*10d63b7dSRichard Lowe extern	int		find_run_directory (char *cmd, char *cwd, char *dir, char **pgm, char **run, char *path);
343*10d63b7dSRichard Lowe extern	Doname		find_suffix_rule(Name target, Name target_body, Name target_suffix, Property *command, Boolean rechecking);
344*10d63b7dSRichard Lowe extern	Chain		find_target_groups(register Name_vector target_list, register int i, Boolean reset);
345*10d63b7dSRichard Lowe extern	void		finish_children(Boolean docheck);
346*10d63b7dSRichard Lowe extern	void		finish_running(void);
347*10d63b7dSRichard Lowe extern	void		free_chain(Name_vector ptr);
348*10d63b7dSRichard Lowe extern  void		gather_recursive_deps(void);
349*10d63b7dSRichard Lowe extern	char		*get_current_path(void);
350*10d63b7dSRichard Lowe extern	int		get_job_msg_id(void);
351*10d63b7dSRichard Lowe extern	wchar_t		*getmem_wc(register int size);
352*10d63b7dSRichard Lowe /* On linux getwd(char *) is defined in 'unistd.h' */
353*10d63b7dSRichard Lowe #ifdef __cplusplus
354*10d63b7dSRichard Lowe extern "C" {
355*10d63b7dSRichard Lowe #endif
356*10d63b7dSRichard Lowe extern	char		*getwd(char *);
357*10d63b7dSRichard Lowe #ifdef __cplusplus
358*10d63b7dSRichard Lowe }
359*10d63b7dSRichard Lowe #endif
360*10d63b7dSRichard Lowe extern	void		handle_interrupt(int);
361*10d63b7dSRichard Lowe extern	Boolean		is_running(Name target);
362*10d63b7dSRichard Lowe extern	void		load_cached_names(void);
363*10d63b7dSRichard Lowe extern	Boolean		parallel_ok(Name target, Boolean line_prop_must_exists);
364*10d63b7dSRichard Lowe extern	void		print_dependencies(register Name target, register Property line);
365*10d63b7dSRichard Lowe extern	void		send_job_start_msg(Property line);
366*10d63b7dSRichard Lowe extern	void		send_rsrc_info_msg(int max_jobs, char *hostname, char *username);
367*10d63b7dSRichard Lowe extern	void		print_value(register Name value, Daemon daemon);
368*10d63b7dSRichard Lowe extern	timestruc_t&	read_archive(register Name target);
369*10d63b7dSRichard Lowe extern	int		read_dir(Name dir, wchar_t *pattern, Property line, wchar_t *library);
370*10d63b7dSRichard Lowe extern	void		read_directory_of_file(register Name file);
371*10d63b7dSRichard Lowe extern	int		read_make_machines(Name make_machines_name);
372*10d63b7dSRichard Lowe extern	Boolean		read_simple_file(register Name makefile_name, register Boolean chase_path, register Boolean doname_it, Boolean complain, Boolean must_exist, Boolean report_file, Boolean lock_makefile);
373*10d63b7dSRichard Lowe extern	void		remove_recursive_dep(Name target);
374*10d63b7dSRichard Lowe extern	void		report_recursive_dep(Name target, char *line);
375*10d63b7dSRichard Lowe extern	void		report_recursive_done(void);
376*10d63b7dSRichard Lowe extern	void		report_recursive_init(void);
377*10d63b7dSRichard Lowe extern	Recursive_make	find_recursive_target(Name target);
378*10d63b7dSRichard Lowe extern	void		reset_locals(register Name target, register Property old_locals, register Property conditional, register int index);
379*10d63b7dSRichard Lowe extern	void		set_locals(register Name target, register Property old_locals);
380*10d63b7dSRichard Lowe extern	void		setvar_append(register Name name, register Name value);
381*10d63b7dSRichard Lowe extern	void		setvar_envvar(void);
382*10d63b7dSRichard Lowe extern	void		special_reader(Name target, register Name_vector depes, Cmd_line command);
383*10d63b7dSRichard Lowe extern	void		startup_rxm();
384*10d63b7dSRichard Lowe extern	Doname		target_can_be_built(register Name target);
385*10d63b7dSRichard Lowe extern	char		*time_to_string(const timestruc_t &time);
386*10d63b7dSRichard Lowe extern	void		update_target(Property line, Doname result);
387*10d63b7dSRichard Lowe extern	void		warning(char *, ...);
388*10d63b7dSRichard Lowe extern	void		write_state_file(int report_recursive, Boolean exiting);
389*10d63b7dSRichard Lowe extern	Name		vpath_translation(register Name cmd);
390*10d63b7dSRichard Lowe extern	char 		*make_install_prefix(void);
391*10d63b7dSRichard Lowe 
392*10d63b7dSRichard Lowe #define DEPINFO_FMT_VERSION "VERS2$"
393*10d63b7dSRichard Lowe #define VER_LEN strlen(DEPINFO_FMT_VERSION)
394*10d63b7dSRichard Lowe 
395*10d63b7dSRichard Lowe 
396*10d63b7dSRichard Lowe #endif
397