60ade4c16361c772bd92dbaf63f1f1cfbae153ef
[platform/upstream/make.git] / make.h
1 /* Miscellaneous global declarations and portability cruft for GNU Make.
2 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
3 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
4 2010 Free Software Foundation, Inc.
5 This file is part of GNU Make.
6
7 GNU Make is free software; you can redistribute it and/or modify it under the
8 terms of the GNU General Public License as published by the Free Software
9 Foundation; either version 3 of the License, or (at your option) any later
10 version.
11
12 GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along with
17 this program.  If not, see <http://www.gnu.org/licenses/>.  */
18
19 /* We use <config.h> instead of "config.h" so that a compilation
20    using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
21    (which it would do because make.h was found in $srcdir).  */
22 #include <config.h>
23 #undef  HAVE_CONFIG_H
24 #define HAVE_CONFIG_H 1
25
26 /* Specify we want GNU source code.  This must be defined before any
27    system headers are included.  */
28
29 #define _GNU_SOURCE 1
30
31 /* AIX requires this to be the first thing in the file.  */
32 #if HAVE_ALLOCA_H
33 # include <alloca.h>
34 #else
35 # ifdef _AIX
36  #pragma alloca
37 # else
38 #  if !defined(__GNUC__) && !defined(WINDOWS32)
39 #   ifndef alloca /* predefined by HP cc +Olibcalls */
40 char *alloca ();
41 #   endif
42 #  endif
43 # endif
44 #endif
45
46
47 #ifdef  CRAY
48 /* This must happen before #include <signal.h> so
49    that the declaration therein is changed.  */
50 # define signal bsdsignal
51 #endif
52
53 /* If we're compiling for the dmalloc debugger, turn off string inlining.  */
54 #if defined(HAVE_DMALLOC_H) && defined(__GNUC__)
55 # define __NO_STRING_INLINES
56 #endif
57
58 #include <sys/types.h>
59 #include <sys/stat.h>
60 #include <signal.h>
61 #include <stdio.h>
62 #include <ctype.h>
63 #ifdef HAVE_SYS_TIMEB_H
64 /* SCO 3.2 "devsys 4.2" has a prototype for `ftime' in <time.h> that bombs
65    unless <sys/timeb.h> has been included first.  Does every system have a
66    <sys/timeb.h>?  If any does not, configure should check for it.  */
67 # include <sys/timeb.h>
68 #endif
69
70 #if TIME_WITH_SYS_TIME
71 # include <sys/time.h>
72 # include <time.h>
73 #else
74 # if HAVE_SYS_TIME_H
75 #  include <sys/time.h>
76 # else
77 #  include <time.h>
78 # endif
79 #endif
80
81 #include <errno.h>
82
83 #ifndef errno
84 extern int errno;
85 #endif
86
87 #ifndef isblank
88 # define isblank(c)     ((c) == ' ' || (c) == '\t')
89 #endif
90
91 #ifdef  HAVE_UNISTD_H
92 # include <unistd.h>
93 /* Ultrix's unistd.h always defines _POSIX_VERSION, but you only get
94    POSIX.1 behavior with `cc -YPOSIX', which predefines POSIX itself!  */
95 # if defined (_POSIX_VERSION) && !defined (ultrix) && !defined (VMS)
96 #  define POSIX 1
97 # endif
98 #endif
99
100 /* Some systems define _POSIX_VERSION but are not really POSIX.1.  */
101 #if (defined (butterfly) || defined (__arm) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386)))
102 # undef POSIX
103 #endif
104
105 #if !defined (POSIX) && defined (_AIX) && defined (_POSIX_SOURCE)
106 # define POSIX 1
107 #endif
108
109 #ifndef RETSIGTYPE
110 # define RETSIGTYPE     void
111 #endif
112
113 #ifndef sigmask
114 # define sigmask(sig)   (1 << ((sig) - 1))
115 #endif
116
117 #ifndef HAVE_SA_RESTART
118 # define SA_RESTART 0
119 #endif
120
121 #ifdef  HAVE_LIMITS_H
122 # include <limits.h>
123 #endif
124 #ifdef  HAVE_SYS_PARAM_H
125 # include <sys/param.h>
126 #endif
127
128 #ifndef PATH_MAX
129 # ifndef POSIX
130 #  define PATH_MAX      MAXPATHLEN
131 # endif
132 #endif
133 #ifndef MAXPATHLEN
134 # define MAXPATHLEN 1024
135 #endif
136
137 #ifdef  PATH_MAX
138 # define GET_PATH_MAX   PATH_MAX
139 # define PATH_VAR(var)  char var[PATH_MAX]
140 #else
141 # define NEED_GET_PATH_MAX 1
142 # define GET_PATH_MAX   (get_path_max ())
143 # define PATH_VAR(var)  char *var = alloca (GET_PATH_MAX)
144 unsigned int get_path_max (void);
145 #endif
146
147 #ifndef CHAR_BIT
148 # define CHAR_BIT 8
149 #endif
150
151 /* Nonzero if the integer type T is signed.  */
152 #define INTEGER_TYPE_SIGNED(t) ((t) -1 < 0)
153
154 /* The minimum and maximum values for the integer type T.
155    Use ~ (t) 0, not -1, for portability to 1's complement hosts.  */
156 #define INTEGER_TYPE_MINIMUM(t) \
157   (! INTEGER_TYPE_SIGNED (t) ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))
158 #define INTEGER_TYPE_MAXIMUM(t) (~ (t) 0 - INTEGER_TYPE_MINIMUM (t))
159
160 #ifndef CHAR_MAX
161 # define CHAR_MAX INTEGER_TYPE_MAXIMUM (char)
162 #endif
163
164 #ifdef STAT_MACROS_BROKEN
165 # ifdef S_ISREG
166 #  undef S_ISREG
167 # endif
168 # ifdef S_ISDIR
169 #  undef S_ISDIR
170 # endif
171 #endif  /* STAT_MACROS_BROKEN.  */
172
173 #ifndef S_ISREG
174 # define S_ISREG(mode)  (((mode) & S_IFMT) == S_IFREG)
175 #endif
176 #ifndef S_ISDIR
177 # define S_ISDIR(mode)  (((mode) & S_IFMT) == S_IFDIR)
178 #endif
179
180 #ifdef VMS
181 # include <types.h>
182 # include <unixlib.h>
183 # include <unixio.h>
184 # include <perror.h>
185 /* Needed to use alloca on VMS.  */
186 # include <builtins.h>
187 #endif
188
189 #ifndef __attribute__
190 /* This feature is available in gcc versions 2.5 and later.  */
191 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
192 #  define __attribute__(x)
193 # endif
194 /* The __-protected variants of `format' and `printf' attributes
195    are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
196 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
197 #  define __format__ format
198 #  define __printf__ printf
199 # endif
200 #endif
201 #define UNUSED  __attribute__ ((unused))
202
203 #if defined (STDC_HEADERS) || defined (__GNU_LIBRARY__)
204 # include <stdlib.h>
205 # include <string.h>
206 # define ANSI_STRING 1
207 #else   /* No standard headers.  */
208 # ifdef HAVE_STRING_H
209 #  include <string.h>
210 #  define ANSI_STRING 1
211 # else
212 #  include <strings.h>
213 # endif
214 # ifdef HAVE_MEMORY_H
215 #  include <memory.h>
216 # endif
217 # ifdef HAVE_STDLIB_H
218 #  include <stdlib.h>
219 # else
220 void *malloc (int);
221 void *realloc (void *, int);
222 void free (void *);
223
224 void abort (void) __attribute__ ((noreturn));
225 void exit (int) __attribute__ ((noreturn));
226 # endif /* HAVE_STDLIB_H.  */
227
228 #endif /* Standard headers.  */
229
230 /* These should be in stdlib.h.  Make sure we have them.  */
231 #ifndef EXIT_SUCCESS
232 # define EXIT_SUCCESS 0
233 #endif
234 #ifndef EXIT_FAILURE
235 # define EXIT_FAILURE 1
236 #endif
237
238 #ifndef  ANSI_STRING
239
240 /* SCO Xenix has a buggy macro definition in <string.h>.  */
241 #undef  strerror
242 #if !defined(__DECC)
243 char *strerror (int errnum);
244 #endif
245
246 #endif  /* !ANSI_STRING.  */
247 #undef  ANSI_STRING
248
249 #if HAVE_INTTYPES_H
250 # include <inttypes.h>
251 #endif
252 #define FILE_TIMESTAMP uintmax_t
253
254 #if !defined(HAVE_STRSIGNAL)
255 char *strsignal (int signum);
256 #endif
257
258 /* ISDIGIT offers the following features:
259    - Its arg may be any int or unsigned int; it need not be an unsigned char.
260    - It's guaranteed to evaluate its argument exactly once.
261       NOTE!  Make relies on this behavior, don't change it!
262    - It's typically faster.
263    POSIX 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
264    only '0' through '9' are digits.  Prefer ISDIGIT to isdigit() unless
265    it's important to use the locale's definition of `digit' even when the
266    host does not conform to POSIX.  */
267 #define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
268
269 /* Test if two strings are equal. Is this worthwhile?  Should be profiled.  */
270 #define streq(a, b) \
271    ((a) == (b) || \
272     (*(a) == *(b) && (*(a) == '\0' || !strcmp ((a) + 1, (b) + 1))))
273
274 /* Test if two strings are equal, but match case-insensitively on systems
275    which have case-insensitive filesystems.  Should only be used for
276    filenames!  */
277 #ifdef HAVE_CASE_INSENSITIVE_FS
278 # define patheq(a, b) \
279     ((a) == (b) \
280      || (tolower((unsigned char)*(a)) == tolower((unsigned char)*(b)) \
281          && (*(a) == '\0' || !strcasecmp ((a) + 1, (b) + 1))))
282 #else
283 # define patheq(a, b) streq(a, b)
284 #endif
285
286 #define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
287
288 #if defined(__GNUC__) || defined(ENUM_BITFIELDS)
289 # define ENUM_BITFIELD(bits)    :bits
290 #else
291 # define ENUM_BITFIELD(bits)
292 #endif
293
294 /* Handle gettext and locales.  */
295
296 #if HAVE_LOCALE_H
297 # include <locale.h>
298 #else
299 # define setlocale(category, locale)
300 #endif
301
302 #include <gettext.h>
303
304 #define _(msgid)            gettext (msgid)
305 #define N_(msgid)           gettext_noop (msgid)
306 #define S_(msg1,msg2,num)   ngettext (msg1,msg2,num)
307
308 /* Handle other OSs.  */
309 #ifndef PATH_SEPARATOR_CHAR
310 # if defined(HAVE_DOS_PATHS)
311 #  define PATH_SEPARATOR_CHAR ';'
312 # elif defined(VMS)
313 #  define PATH_SEPARATOR_CHAR ','
314 # else
315 #  define PATH_SEPARATOR_CHAR ':'
316 # endif
317 #endif
318
319 /* This is needed for getcwd() and chdir(), on some W32 systems.  */
320 #if defined(HAVE_DIRECT_H)
321 # include <direct.h>
322 #endif
323
324 #ifdef WINDOWS32
325 # include <fcntl.h>
326 # include <malloc.h>
327 # define pipe(_p)        _pipe((_p), 512, O_BINARY)
328 # define kill(_pid,_sig) w32_kill((_pid),(_sig))
329
330 void sync_Path_environment (void);
331 int w32_kill (pid_t pid, int sig);
332 char *end_of_token_w32 (const char *s, char stopchar);
333 int find_and_set_default_shell (const char *token);
334
335 /* indicates whether or not we have Bourne shell */
336 extern int no_default_sh_exe;
337
338 /* is default_shell unixy? */
339 extern int unixy_shell;
340 #endif  /* WINDOWS32 */
341
342 #if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
343 # define SET_STACK_SIZE
344 #endif
345 #ifdef SET_STACK_SIZE
346 # include <sys/resource.h>
347 struct rlimit stack_limit;
348 #endif
349
350 struct floc
351   {
352     const char *filenm;
353     unsigned long lineno;
354   };
355 #define NILF ((struct floc *)0)
356
357 #define STRING_SIZE_TUPLE(_s) (_s), (sizeof (_s)-1)
358
359 \f
360 /* We have to have stdarg.h or varargs.h AND v*printf or doprnt to use
361    variadic versions of these functions.  */
362
363 #if HAVE_STDARG_H || HAVE_VARARGS_H
364 # if HAVE_VPRINTF || HAVE_DOPRNT
365 #  define USE_VARIADIC 1
366 # endif
367 #endif
368
369 #if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
370 const char *concat (unsigned int, ...);
371 void message (int prefix, const char *fmt, ...)
372               __attribute__ ((__format__ (__printf__, 2, 3)));
373 void error (const struct floc *flocp, const char *fmt, ...)
374             __attribute__ ((__format__ (__printf__, 2, 3)));
375 void fatal (const struct floc *flocp, const char *fmt, ...)
376                    __attribute__ ((noreturn, __format__ (__printf__, 2, 3)));
377 #else
378 const char *concat ();
379 void message ();
380 void error ();
381 void fatal ();
382 #endif
383
384 void die (int) __attribute__ ((noreturn));
385 void log_working_directory (int);
386 void pfatal_with_name (const char *) __attribute__ ((noreturn));
387 void perror_with_name (const char *, const char *);
388 void *xmalloc (unsigned int);
389 void *xcalloc (unsigned int);
390 void *xrealloc (void *, unsigned int);
391 char *xstrdup (const char *);
392 char *xstrndup (const char *, unsigned int);
393 char *find_next_token (const char **, unsigned int *);
394 char *next_token (const char *);
395 char *end_of_token (const char *);
396 void collapse_continuations (char *);
397 char *lindex (const char *, const char *, int);
398 int alpha_compare (const void *, const void *);
399 void print_spaces (unsigned int);
400 char *find_percent (char *);
401 const char *find_percent_cached (const char **);
402 FILE *open_tmpfile (char **, const char *);
403
404 #ifndef NO_ARCHIVES
405 int ar_name (const char *);
406 void ar_parse_name (const char *, char **, char **);
407 int ar_touch (const char *);
408 time_t ar_member_date (const char *);
409
410 typedef long int (*ar_member_func_t) (int desc, const char *mem, int truncated,
411                                       long int hdrpos, long int datapos,
412                                       long int size, long int date, int uid,
413                                       int gid, int mode, const void *arg);
414
415 long int ar_scan (const char *archive, ar_member_func_t function, const void *arg);
416 int ar_name_equal (const char *name, const char *mem, int truncated);
417 #ifndef VMS
418 int ar_member_touch (const char *arname, const char *memname);
419 #endif
420 #endif
421
422 int dir_file_exists_p (const char *, const char *);
423 int file_exists_p (const char *);
424 int file_impossible_p (const char *);
425 void file_impossible (const char *);
426 const char *dir_name (const char *);
427 void hash_init_directories (void);
428
429 void define_default_variables (void);
430 void set_default_suffixes (void);
431 void install_default_suffix_rules (void);
432 void install_default_implicit_rules (void);
433
434 void build_vpath_lists (void);
435 void construct_vpath_list (char *pattern, char *dirpath);
436 const char *vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr,
437                           unsigned int* vpath_index, unsigned int* path_index);
438 int gpath_search (const char *file, unsigned int len);
439
440 void construct_include_path (const char **arg_dirs);
441
442 void user_access (void);
443 void make_access (void);
444 void child_access (void);
445
446 void close_stdout (void);
447
448 char *strip_whitespace (const char **begpp, const char **endpp);
449
450 /* String caching  */
451 void strcache_init (void);
452 void strcache_print_stats (const char *prefix);
453 int strcache_iscached (const char *str);
454 const char *strcache_add (const char *str);
455 const char *strcache_add_len (const char *str, int len);
456 int strcache_setbufsize (int size);
457
458 #ifdef  HAVE_VFORK_H
459 # include <vfork.h>
460 #endif
461
462 /* We omit these declarations on non-POSIX systems which define _POSIX_VERSION,
463    because such systems often declare them in header files anyway.  */
464
465 #if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32)
466
467 long int atol ();
468 # ifndef VMS
469 long int lseek ();
470 # endif
471
472 #endif  /* Not GNU C library or POSIX.  */
473
474 #ifdef  HAVE_GETCWD
475 # if !defined(VMS) && !defined(__DECC)
476 char *getcwd ();
477 # endif
478 #else
479 char *getwd ();
480 # define getcwd(buf, len)       getwd (buf)
481 #endif
482
483 #if !HAVE_STRCASECMP
484 # if HAVE_STRICMP
485 #  define strcasecmp stricmp
486 # elif HAVE_STRCMPI
487 #  define strcasecmp strcmpi
488 # else
489 /* Create our own, in misc.c */
490 int strcasecmp (const char *s1, const char *s2);
491 # endif
492 #endif
493
494 #if !HAVE_STRNCASECMP
495 # if HAVE_STRNICMP
496 #  define strncasecmp strnicmp
497 # elif HAVE_STRNCMPI
498 #  define strncasecmp strncmpi
499 # else
500 /* Create our own, in misc.c */
501 int strncasecmp (const char *s1, const char *s2, int n);
502 # endif
503 #endif
504
505 extern const struct floc *reading_file;
506 extern const struct floc **expanding_var;
507
508 extern char **environ;
509
510 extern int just_print_flag, silent_flag, ignore_errors_flag, keep_going_flag;
511 extern int print_data_base_flag, question_flag, touch_flag, always_make_flag;
512 extern int env_overrides, no_builtin_rules_flag, no_builtin_variables_flag;
513 extern int print_version_flag, print_directory_flag, check_symlink_flag;
514 extern int warn_undefined_variables_flag, posix_pedantic, not_parallel;
515 extern int second_expansion, clock_skew_detected, rebuilding_makefiles;
516 extern int one_shell;
517
518 /* can we run commands via 'sh -c xxx' or must we use batch files? */
519 extern int batch_mode_shell;
520
521 /* Resetting the command script introduction prefix character.  */
522 #define RECIPEPREFIX_NAME          ".RECIPEPREFIX"
523 #define RECIPEPREFIX_DEFAULT       '\t'
524 extern char cmd_prefix;
525
526 extern unsigned int job_slots;
527 extern int job_fds[2];
528 extern int job_rfd;
529 #ifndef NO_FLOAT
530 extern double max_load_average;
531 #else
532 extern int max_load_average;
533 #endif
534
535 extern char *program;
536 extern char *starting_directory;
537 extern unsigned int makelevel;
538 extern char *version_string, *remote_description, *make_host;
539
540 extern unsigned int commands_started;
541
542 extern int handling_fatal_signal;
543
544
545 #ifndef MIN
546 #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
547 #endif
548 #ifndef MAX
549 #define MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
550 #endif
551
552 #ifdef VMS
553 #  define MAKE_SUCCESS 1
554 #  define MAKE_TROUBLE 2
555 #  define MAKE_FAILURE 3
556 #else
557 #  define MAKE_SUCCESS 0
558 #  define MAKE_TROUBLE 1
559 #  define MAKE_FAILURE 2
560 #endif
561
562 /* Set up heap debugging library dmalloc.  */
563
564 #ifdef HAVE_DMALLOC_H
565 #include <dmalloc.h>
566 #endif
567
568 #ifndef initialize_main
569 # ifdef __EMX__
570 #  define initialize_main(pargc, pargv) \
571                           { _wildcard(pargc, pargv); _response(pargc, pargv); }
572 # else
573 #  define initialize_main(pargc, pargv)
574 # endif
575 #endif
576
577 #ifdef __EMX__
578 # if !defined chdir
579 #  define chdir _chdir2
580 # endif
581 # if !defined getcwd
582 #  define getcwd _getcwd2
583 # endif
584
585 /* NO_CHDIR2 causes make not to use _chdir2() and _getcwd2() instead of
586    chdir() and getcwd(). This avoids some error messages for the
587    make testsuite but restricts the drive letter support. */
588 # ifdef NO_CHDIR2
589 #  warning NO_CHDIR2: usage of drive letters restricted
590 #  undef chdir
591 #  undef getcwd
592 # endif
593 #endif
594
595 #ifndef initialize_main
596 # define initialize_main(pargc, pargv)
597 #endif
598
599
600 /* Some systems (like Solaris, PTX, etc.) do not support the SA_RESTART flag
601    properly according to POSIX.  So, we try to wrap common system calls with
602    checks for EINTR.  Note that there are still plenty of system calls that
603    can fail with EINTR but this, reportedly, gets the vast majority of
604    failure cases.  If you still experience failures you'll need to either get
605    a system where SA_RESTART works, or you need to avoid -j.  */
606
607 #define EINTRLOOP(_v,_c)   while (((_v)=_c)==-1 && errno==EINTR)
608
609 /* While system calls that return integers are pretty consistent about
610    returning -1 on failure and setting errno in that case, functions that
611    return pointers are not always so well behaved.  Sometimes they return
612    NULL for expected behavior: one good example is readdir() which returns
613    NULL at the end of the directory--and _doesn't_ reset errno.  So, we have
614    to do it ourselves here.  */
615
616 #define ENULLLOOP(_v,_c)   do { errno = 0; (_v) = _c; } \
617                            while((_v)==0 && errno==EINTR)