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
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). */
24 #define HAVE_CONFIG_H 1
26 /* Specify we want GNU source code. This must be defined before any
27 system headers are included. */
31 /* AIX requires this to be the first thing in the file. */
38 # if !defined(__GNUC__) && !defined(WINDOWS32)
39 # ifndef alloca /* predefined by HP cc +Olibcalls */
48 /* This must happen before #include <signal.h> so
49 that the declaration therein is changed. */
50 # define signal bsdsignal
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
58 #include <sys/types.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>
70 #if TIME_WITH_SYS_TIME
71 # include <sys/time.h>
75 # include <sys/time.h>
88 # define isblank(c) ((c) == ' ' || (c) == '\t')
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)
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)))
105 #if !defined (POSIX) && defined (_AIX) && defined (_POSIX_SOURCE)
110 # define RETSIGTYPE void
114 # define sigmask(sig) (1 << ((sig) - 1))
117 #ifndef HAVE_SA_RESTART
118 # define SA_RESTART 0
124 #ifdef HAVE_SYS_PARAM_H
125 # include <sys/param.h>
130 # define PATH_MAX MAXPATHLEN
134 # define MAXPATHLEN 1024
138 # define GET_PATH_MAX PATH_MAX
139 # define PATH_VAR(var) char var[PATH_MAX]
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);
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))
161 # define CHAR_MAX INTEGER_TYPE_MAXIMUM (char)
164 #ifdef STAT_MACROS_BROKEN
171 #endif /* STAT_MACROS_BROKEN. */
174 # define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
177 # define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
182 # include <unixlib.h>
185 /* Needed to use alloca on VMS. */
186 # include <builtins.h>
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)
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
201 #define UNUSED __attribute__ ((unused))
203 #if defined (STDC_HEADERS) || defined (__GNU_LIBRARY__)
206 # define ANSI_STRING 1
207 #else /* No standard headers. */
208 # ifdef HAVE_STRING_H
210 # define ANSI_STRING 1
212 # include <strings.h>
214 # ifdef HAVE_MEMORY_H
217 # ifdef HAVE_STDLIB_H
221 void *realloc (void *, int);
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. */
232 # define EXIT_SUCCESS 0
235 # define EXIT_FAILURE 1
240 /* SCO Xenix has a buggy macro definition in <string.h>. */
243 char *strerror (int errnum
);
246 #endif /* !ANSI_STRING. */
250 # include <inttypes.h>
252 #define FILE_TIMESTAMP uintmax_t
254 #if !defined(HAVE_STRSIGNAL)
255 char *strsignal (int signum
);
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) \
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
277 #ifdef HAVE_CASE_INSENSITIVE_FS
278 # define patheq(a, b) \
280 || (tolower((unsigned char)*(a)) == tolower((unsigned char)*(b)) \
281 && (*(a) == '\0' || !strcasecmp ((a) + 1, (b) + 1))))
283 # define patheq(a, b) streq(a, b)
286 #define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
288 #if defined(__GNUC__) || defined(ENUM_BITFIELDS)
289 # define ENUM_BITFIELD(bits) :bits
291 # define ENUM_BITFIELD(bits)
294 /* Handle gettext and locales. */
299 # define setlocale(category, locale)
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 ';'
313 # define PATH_SEPARATOR_CHAR ','
315 # define PATH_SEPARATOR_CHAR ':'
319 /* This is needed for getcwd() and chdir(), on some W32 systems. */
320 #if defined(HAVE_DIRECT_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
345 #ifdef SET_STACK_SIZE
346 # include <sys/resource.h>
347 struct rlimit stack_limit
;
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
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)));
378 const char *concat ();
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 *);
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
);
418 int ar_member_touch (const char *arname
, const char *memname
);
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
);
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
);
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)
472 #endif /* Not GNU C library or POSIX. */
475 # if !defined(VMS) && !defined(__DECC)
480 # define getcwd(buf, len) getwd (buf)
485 # define strcasecmp stricmp
487 # define strcasecmp strcmpi
489 /* Create our own, in misc.c */
490 int strcasecmp (const char *s1
, const char *s2
);
494 #if !HAVE_STRNCASECMP
496 # define strncasecmp strnicmp
498 # define strncasecmp strncmpi
500 /* Create our own, in misc.c */
501 int strncasecmp (const char *s1
, const char *s2
, int n
);
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];
530 extern double max_load_average
;
532 extern int max_load_average
;
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
;
546 #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
549 #define MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
553 # define MAKE_SUCCESS 1
554 # define MAKE_TROUBLE 2
555 # define MAKE_FAILURE 3
557 # define MAKE_SUCCESS 0
558 # define MAKE_TROUBLE 1
559 # define MAKE_FAILURE 2
562 /* Set up heap debugging library dmalloc. */
564 #ifdef HAVE_DMALLOC_H
568 #ifndef initialize_main
570 # define initialize_main(pargc, pargv) \
571 { _wildcard(pargc, pargv); _response(pargc, pargv); }
573 # define initialize_main(pargc, pargv)
579 # define chdir _chdir2
582 # define getcwd _getcwd2
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. */
589 # warning NO_CHDIR2: usage of drive letters restricted
595 #ifndef initialize_main
596 # define initialize_main(pargc, pargv)
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)