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