1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  23  * Use is subject to license terms.
  24  */
  25 
  26 /*
  27  *      globals.cc
  28  *
  29  *      This declares all global variables
  30  */
  31 
  32 /*
  33  * Included files
  34  */
  35 #include <nl_types.h>
  36 #include <mk/defs.h>
  37 #include <sys/stat.h>
  38 
  39 /*
  40  * Defined macros
  41  */
  42 
  43 /*
  44  * typedefs & structs
  45  */
  46 
  47 /*
  48  * Global variables used by make only
  49  */
  50         FILE            *dependency_report_file;
  51 
  52 /*
  53  * Global variables used by make
  54  */
  55         Boolean         allrules_read=false;
  56         Name            posix_name;
  57         Name            svr4_name;
  58         Boolean         sdot_target;    /* used to identify s.m(/M)akefile */
  59         Boolean         all_parallel;                   /* TEAMWARE_MAKE_CMN */
  60         Boolean         assign_done;
  61         int foo;        
  62         Boolean         build_failed_seen;
  63 #ifdef DISTRIBUTED
  64         Boolean         building_serial;
  65 #endif
  66         Name            built_last_make_run;
  67         Name            c_at;
  68 #ifdef DISTRIBUTED
  69         Boolean         called_make = false;
  70 #endif
  71         Boolean         cleanup;
  72         Boolean         close_report;
  73         Boolean         command_changed;
  74         Boolean         commands_done;
  75         Chain           conditional_targets;
  76         Name            conditionals;
  77         Boolean         continue_after_error;           /* `-k' */
  78         Property        current_line;
  79         Name            current_make_version;
  80         Name            current_target;
  81         short           debug_level;
  82         Cmd_line        default_rule;
  83         Name            default_rule_name;
  84         Name            default_target_to_build;
  85         Name            dmake_group;
  86         Name            dmake_max_jobs;
  87         Name            dmake_mode;
  88         DMake_mode      dmake_mode_type;
  89         Name            dmake_output_mode;
  90         DMake_output_mode       output_mode = txt1_mode;
  91         Name            dmake_odir;
  92         Name            dmake_rcfile;
  93         Name            done;
  94         Name            dot;
  95         Name            dot_keep_state;
  96         Name            dot_keep_state_file;
  97         Name            empty_name;
  98 #if defined(HP_UX) ||  defined(linux)
  99         int             exit_status;
 100 #endif
 101         Boolean         fatal_in_progress;
 102         int             file_number;
 103 #if 0
 104         Boolean         filter_stderr;                  /* `-X' */
 105 #endif
 106         Name            force;
 107         Name            ignore_name;
 108         Boolean         ignore_errors;                  /* `-i' */
 109         Boolean         ignore_errors_all;              /* `-i' */
 110         Name            init;
 111         int             job_msg_id;
 112         Boolean         keep_state;
 113         Name            make_state;
 114 #ifdef TEAMWARE_MAKE_CMN
 115         timestruc_t     make_state_before;
 116 #endif
 117         Dependency      makefiles_used;
 118         Name            makeflags;
 119 //      Boolean         make_state_locked; // Moved to lib/mksh
 120         Name            make_version;
 121         char            mbs_buffer2[(MAXPATHLEN * MB_LEN_MAX)];
 122         char            *mbs_ptr;
 123         char            *mbs_ptr2;
 124         int             mtool_msgs_fd;
 125         Boolean         depinfo_already_read = false;
 126 #ifdef NSE
 127         Name            derived_src;
 128         Boolean         nse;                            /* NSE on */
 129         Name            nse_backquote_seen;
 130         char            nse_depinfo_lockfile[MAXPATHLEN];
 131         Boolean         nse_depinfo_locked;
 132         Boolean         nse_did_recursion;
 133         Name            nse_shell_var_used;
 134         Boolean         nse_watch_vars = false;
 135         wchar_t         current_makefile[MAXPATHLEN];
 136 #endif
 137         Boolean         no_action_was_taken = true;     /* true if we've not **
 138                                                         ** run any command   */
 139 
 140         Boolean         no_parallel = false;            /* TEAMWARE_MAKE_CMN */
 141 #ifdef SGE_SUPPORT
 142         Boolean         grid = false;                   /* TEAMWARE_MAKE_CMN */
 143 #endif
 144         Name            no_parallel_name;
 145         Name            not_auto;
 146         Boolean         only_parallel;                  /* TEAMWARE_MAKE_CMN */
 147         Boolean         parallel;                       /* TEAMWARE_MAKE_CMN */
 148         Name            parallel_name;
 149         Name            localhost_name;
 150         int             parallel_process_cnt;
 151         Percent         percent_list;
 152         Dyntarget       dyntarget_list;
 153         Name            plus;
 154         Name            pmake_machinesfile;
 155         Name            precious;
 156         Name            primary_makefile;
 157         Boolean         quest;                          /* `-q' */
 158         short           read_trace_level;
 159         Boolean         reading_dependencies = false;
 160         Name            recursive_name;
 161         int             recursion_level;
 162         short           report_dependencies_level = 0;  /* -P */
 163         Boolean         report_pwd;
 164         Boolean         rewrite_statefile;
 165         Running         running_list;
 166         char            *sccs_dir_path;
 167         Name            sccs_get_name;
 168         Name            sccs_get_posix_name;
 169         Cmd_line        sccs_get_rule;
 170         Cmd_line        sccs_get_org_rule;
 171         Cmd_line        sccs_get_posix_rule;
 172         Name            get_name;
 173         Cmd_line        get_rule;
 174         Name            get_posix_name;
 175         Cmd_line        get_posix_rule;
 176         Boolean         send_mtool_msgs;                /* `-K' */
 177         Boolean         all_precious;
 178         Boolean         silent_all;                     /* `-s' */
 179         Boolean         report_cwd;                     /* `-w' */
 180         Boolean         silent;                         /* `-s' */
 181         Name            silent_name;
 182         char            *stderr_file = NULL;
 183         char            *stdout_file = NULL;
 184 #ifdef SGE_SUPPORT
 185         char            script_file[MAXPATHLEN] = "";
 186 #endif
 187         Boolean         stdout_stderr_same;
 188         Dependency      suffixes;
 189         Name            suffixes_name;
 190         Name            sunpro_dependencies;
 191         Boolean         target_variants;
 192         char            *tmpdir = NOCATGETS("/tmp");
 193         char            *temp_file_directory = NOCATGETS(".");
 194         Name            temp_file_name;
 195         short           temp_file_number;
 196         time_t          timing_start;
 197         wchar_t         *top_level_target;
 198         Boolean         touch;                          /* `-t' */
 199         Boolean         trace_reader;                   /* `-D' */
 200         Boolean         build_unconditional;            /* `-u' */
 201         pathpt          vroot_path = VROOT_DEFAULT;
 202         Name            wait_name;
 203         wchar_t         wcs_buffer2[MAXPATHLEN];
 204         wchar_t         *wcs_ptr;
 205         wchar_t         *wcs_ptr2;
 206         nl_catd         catd;
 207         long int        hostid;
 208 
 209 /*
 210  * File table of contents
 211  */
 212