- Fix the NEWS file to be accurate
[make.git] / make.h
blob60ade4c16361c772bd92dbaf63f1f1cfbae153ef
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.
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.
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.
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/>. */
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
26 /* Specify we want GNU source code. This must be defined before any
27 system headers are included. */
29 #define _GNU_SOURCE 1
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
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
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
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
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
81 #include <errno.h>
83 #ifndef errno
84 extern int errno;
85 #endif
87 #ifndef isblank
88 # define isblank(c) ((c) == ' ' || (c) == '\t')
89 #endif
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
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
105 #if !defined (POSIX) && defined (_AIX) && defined (_POSIX_SOURCE)
106 # define POSIX 1
107 #endif
109 #ifndef RETSIGTYPE
110 # define RETSIGTYPE void
111 #endif
113 #ifndef sigmask
114 # define sigmask(sig) (1 << ((sig) - 1))
115 #endif
117 #ifndef HAVE_SA_RESTART
118 # define SA_RESTART 0
119 #endif
121 #ifdef HAVE_LIMITS_H
122 # include <limits.h>
123 #endif
124 #ifdef HAVE_SYS_PARAM_H
125 # include <sys/param.h>
126 #endif
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
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
147 #ifndef CHAR_BIT
148 # define CHAR_BIT 8
149 #endif
151 /* Nonzero if the integer type T is signed. */
152 #define INTEGER_TYPE_SIGNED(t) ((t) -1 < 0)
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))
160 #ifndef CHAR_MAX
161 # define CHAR_MAX INTEGER_TYPE_MAXIMUM (char)
162 #endif
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. */
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
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
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))
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 *);
224 void abort (void) __attribute__ ((noreturn));
225 void exit (int) __attribute__ ((noreturn));
226 # endif /* HAVE_STDLIB_H. */
228 #endif /* Standard headers. */
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
238 #ifndef ANSI_STRING
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
246 #endif /* !ANSI_STRING. */
247 #undef ANSI_STRING
249 #if HAVE_INTTYPES_H
250 # include <inttypes.h>
251 #endif
252 #define FILE_TIMESTAMP uintmax_t
254 #if !defined(HAVE_STRSIGNAL)
255 char *strsignal (int signum);
256 #endif
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)
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))))
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
286 #define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
288 #if defined(__GNUC__) || defined(ENUM_BITFIELDS)
289 # define ENUM_BITFIELD(bits) :bits
290 #else
291 # define ENUM_BITFIELD(bits)
292 #endif
294 /* Handle gettext and locales. */
296 #if HAVE_LOCALE_H
297 # include <locale.h>
298 #else
299 # define setlocale(category, locale)
300 #endif
302 #include <gettext.h>
304 #define _(msgid) gettext (msgid)
305 #define N_(msgid) gettext_noop (msgid)
306 #define S_(msg1,msg2,num) ngettext (msg1,msg2,num)
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
319 /* This is needed for getcwd() and chdir(), on some W32 systems. */
320 #if defined(HAVE_DIRECT_H)
321 # include <direct.h>
322 #endif
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))
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);
335 /* indicates whether or not we have Bourne shell */
336 extern int no_default_sh_exe;
338 /* is default_shell unixy? */
339 extern int unixy_shell;
340 #endif /* WINDOWS32 */
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
350 struct floc
352 const char *filenm;
353 unsigned long lineno;
355 #define NILF ((struct floc *)0)
357 #define STRING_SIZE_TUPLE(_s) (_s), (sizeof (_s)-1)
360 /* We have to have stdarg.h or varargs.h AND v*printf or doprnt to use
361 variadic versions of these functions. */
363 #if HAVE_STDARG_H || HAVE_VARARGS_H
364 # if HAVE_VPRINTF || HAVE_DOPRNT
365 # define USE_VARIADIC 1
366 # endif
367 #endif
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
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 *);
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 *);
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);
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
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);
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);
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);
440 void construct_include_path (const char **arg_dirs);
442 void user_access (void);
443 void make_access (void);
444 void child_access (void);
446 void close_stdout (void);
448 char *strip_whitespace (const char **begpp, const char **endpp);
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);
458 #ifdef HAVE_VFORK_H
459 # include <vfork.h>
460 #endif
462 /* We omit these declarations on non-POSIX systems which define _POSIX_VERSION,
463 because such systems often declare them in header files anyway. */
465 #if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32)
467 long int atol ();
468 # ifndef VMS
469 long int lseek ();
470 # endif
472 #endif /* Not GNU C library or POSIX. */
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
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
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
505 extern const struct floc *reading_file;
506 extern const struct floc **expanding_var;
508 extern char **environ;
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;
518 /* can we run commands via 'sh -c xxx' or must we use batch files? */
519 extern int batch_mode_shell;
521 /* Resetting the command script introduction prefix character. */
522 #define RECIPEPREFIX_NAME ".RECIPEPREFIX"
523 #define RECIPEPREFIX_DEFAULT '\t'
524 extern char cmd_prefix;
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
535 extern char *program;
536 extern char *starting_directory;
537 extern unsigned int makelevel;
538 extern char *version_string, *remote_description, *make_host;
540 extern unsigned int commands_started;
542 extern int handling_fatal_signal;
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
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
562 /* Set up heap debugging library dmalloc. */
564 #ifdef HAVE_DMALLOC_H
565 #include <dmalloc.h>
566 #endif
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
577 #ifdef __EMX__
578 # if !defined chdir
579 # define chdir _chdir2
580 # endif
581 # if !defined getcwd
582 # define getcwd _getcwd2
583 # endif
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
595 #ifndef initialize_main
596 # define initialize_main(pargc, pargv)
597 #endif
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. */
607 #define EINTRLOOP(_v,_c) while (((_v)=_c)==-1 && errno==EINTR)
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. */
616 #define ENULLLOOP(_v,_c) do { errno = 0; (_v) = _c; } \
617 while((_v)==0 && errno==EINTR)