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);
152 # define USHRT_MAX 65535
155 /* Nonzero if the integer type T is signed. */
156 #define INTEGER_TYPE_SIGNED(t) ((t) -1 < 0)
158 /* The minimum and maximum values for the integer type T.
159 Use ~ (t) 0, not -1, for portability to 1's complement hosts. */
160 #define INTEGER_TYPE_MINIMUM(t) \
161 (! INTEGER_TYPE_SIGNED (t) ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))
162 #define INTEGER_TYPE_MAXIMUM(t) (~ (t) 0 - INTEGER_TYPE_MINIMUM (t))
165 # define CHAR_MAX INTEGER_TYPE_MAXIMUM (char)
168 #ifdef STAT_MACROS_BROKEN
175 #endif /* STAT_MACROS_BROKEN. */
178 # define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
181 # define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
186 # include <unixlib.h>
189 /* Needed to use alloca on VMS. */
190 # include <builtins.h>
193 #ifndef __attribute__
194 /* This feature is available in gcc versions 2.5 and later. */
195 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
196 # define __attribute__(x)
198 /* The __-protected variants of `format' and `printf' attributes
199 are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
200 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
201 # define __format__ format
202 # define __printf__ printf
205 #define UNUSED __attribute__ ((unused))
207 #if defined (STDC_HEADERS) || defined (__GNU_LIBRARY__)
210 # define ANSI_STRING 1
211 #else /* No standard headers. */
212 # ifdef HAVE_STRING_H
214 # define ANSI_STRING 1
216 # include <strings.h>
218 # ifdef HAVE_MEMORY_H
221 # ifdef HAVE_STDLIB_H
225 void *realloc (void *, int);
228 void abort (void) __attribute__ ((noreturn
));
229 void exit (int) __attribute__ ((noreturn
));
230 # endif /* HAVE_STDLIB_H. */
232 #endif /* Standard headers. */
234 /* These should be in stdlib.h. Make sure we have them. */
236 # define EXIT_SUCCESS 0
239 # define EXIT_FAILURE 1
244 /* SCO Xenix has a buggy macro definition in <string.h>. */
247 char *strerror (int errnum
);
250 #endif /* !ANSI_STRING. */
254 # include <inttypes.h>
256 #define FILE_TIMESTAMP uintmax_t
258 #if !defined(HAVE_STRSIGNAL)
259 char *strsignal (int signum
);
262 /* ISDIGIT offers the following features:
263 - Its arg may be any int or unsigned int; it need not be an unsigned char.
264 - It's guaranteed to evaluate its argument exactly once.
265 NOTE! Make relies on this behavior, don't change it!
266 - It's typically faster.
267 POSIX 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
268 only '0' through '9' are digits. Prefer ISDIGIT to isdigit() unless
269 it's important to use the locale's definition of `digit' even when the
270 host does not conform to POSIX. */
271 #define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
273 /* Test if two strings are equal. Is this worthwhile? Should be profiled. */
274 #define streq(a, b) \
276 (*(a) == *(b) && (*(a) == '\0' || !strcmp ((a) + 1, (b) + 1))))
278 /* Test if two strings are equal, but match case-insensitively on systems
279 which have case-insensitive filesystems. Should only be used for
281 #ifdef HAVE_CASE_INSENSITIVE_FS
282 # define patheq(a, b) \
284 || (tolower((unsigned char)*(a)) == tolower((unsigned char)*(b)) \
285 && (*(a) == '\0' || !strcasecmp ((a) + 1, (b) + 1))))
287 # define patheq(a, b) streq(a, b)
290 #define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
292 #if defined(__GNUC__) || defined(ENUM_BITFIELDS)
293 # define ENUM_BITFIELD(bits) :bits
295 # define ENUM_BITFIELD(bits)
298 /* Handle gettext and locales. */
303 # define setlocale(category, locale)
308 #define _(msgid) gettext (msgid)
309 #define N_(msgid) gettext_noop (msgid)
310 #define S_(msg1,msg2,num) ngettext (msg1,msg2,num)
312 /* Handle other OSs. */
313 #ifndef PATH_SEPARATOR_CHAR
314 # if defined(HAVE_DOS_PATHS)
315 # define PATH_SEPARATOR_CHAR ';'
317 # define PATH_SEPARATOR_CHAR ','
319 # define PATH_SEPARATOR_CHAR ':'
323 /* This is needed for getcwd() and chdir(), on some W32 systems. */
324 #if defined(HAVE_DIRECT_H)
331 # define pipe(_p) _pipe((_p), 512, O_BINARY)
332 # define kill(_pid,_sig) w32_kill((_pid),(_sig))
334 void sync_Path_environment (void);
335 int w32_kill (pid_t pid
, int sig
);
336 char *end_of_token_w32 (const char *s
, char stopchar
);
337 int find_and_set_default_shell (const char *token
);
339 /* indicates whether or not we have Bourne shell */
340 extern int no_default_sh_exe
;
342 /* is default_shell unixy? */
343 extern int unixy_shell
;
344 #endif /* WINDOWS32 */
346 #if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
347 # define SET_STACK_SIZE
349 #ifdef SET_STACK_SIZE
350 # include <sys/resource.h>
351 struct rlimit stack_limit
;
357 unsigned long lineno
;
359 #define NILF ((struct floc *)0)
361 #define STRING_SIZE_TUPLE(_s) (_s), (sizeof (_s)-1)
364 /* We have to have stdarg.h or varargs.h AND v*printf or doprnt to use
365 variadic versions of these functions. */
367 #if HAVE_STDARG_H || HAVE_VARARGS_H
368 # if HAVE_VPRINTF || HAVE_DOPRNT
369 # define USE_VARIADIC 1
373 #if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
374 const char *concat (unsigned int, ...);
375 void message (int prefix
, const char *fmt
, ...)
376 __attribute__ ((__format__ (__printf__
, 2, 3)));
377 void error (const struct floc
*flocp
, const char *fmt
, ...)
378 __attribute__ ((__format__ (__printf__
, 2, 3)));
379 void fatal (const struct floc
*flocp
, const char *fmt
, ...)
380 __attribute__ ((noreturn
, __format__ (__printf__
, 2, 3)));
382 const char *concat ();
388 void die (int) __attribute__ ((noreturn
));
389 void log_working_directory (int);
390 void pfatal_with_name (const char *) __attribute__ ((noreturn
));
391 void perror_with_name (const char *, const char *);
392 void *xmalloc (unsigned int);
393 void *xcalloc (unsigned int);
394 void *xrealloc (void *, unsigned int);
395 char *xstrdup (const char *);
396 char *xstrndup (const char *, unsigned int);
397 char *find_next_token (const char **, unsigned int *);
398 char *next_token (const char *);
399 char *end_of_token (const char *);
400 void collapse_continuations (char *);
401 char *lindex (const char *, const char *, int);
402 int alpha_compare (const void *, const void *);
403 void print_spaces (unsigned int);
404 char *find_percent (char *);
405 const char *find_percent_cached (const char **);
406 FILE *open_tmpfile (char **, const char *);
409 int ar_name (const char *);
410 void ar_parse_name (const char *, char **, char **);
411 int ar_touch (const char *);
412 time_t ar_member_date (const char *);
414 typedef long int (*ar_member_func_t
) (int desc
, const char *mem
, int truncated
,
415 long int hdrpos
, long int datapos
,
416 long int size
, long int date
, int uid
,
417 int gid
, int mode
, const void *arg
);
419 long int ar_scan (const char *archive
, ar_member_func_t function
, const void *arg
);
420 int ar_name_equal (const char *name
, const char *mem
, int truncated
);
422 int ar_member_touch (const char *arname
, const char *memname
);
426 int dir_file_exists_p (const char *, const char *);
427 int file_exists_p (const char *);
428 int file_impossible_p (const char *);
429 void file_impossible (const char *);
430 const char *dir_name (const char *);
431 void hash_init_directories (void);
433 void define_default_variables (void);
434 void set_default_suffixes (void);
435 void install_default_suffix_rules (void);
436 void install_default_implicit_rules (void);
438 void build_vpath_lists (void);
439 void construct_vpath_list (char *pattern
, char *dirpath
);
440 const char *vpath_search (const char *file
, FILE_TIMESTAMP
*mtime_ptr
,
441 unsigned int* vpath_index
, unsigned int* path_index
);
442 int gpath_search (const char *file
, unsigned int len
);
444 void construct_include_path (const char **arg_dirs
);
446 void user_access (void);
447 void make_access (void);
448 void child_access (void);
450 void close_stdout (void);
452 char *strip_whitespace (const char **begpp
, const char **endpp
);
455 void strcache_init (void);
456 void strcache_print_stats (const char *prefix
);
457 int strcache_iscached (const char *str
);
458 const char *strcache_add (const char *str
);
459 const char *strcache_add_len (const char *str
, int len
);
460 int strcache_setbufsize (int size
);
466 /* We omit these declarations on non-POSIX systems which define _POSIX_VERSION,
467 because such systems often declare them in header files anyway. */
469 #if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32)
476 #endif /* Not GNU C library or POSIX. */
479 # if !defined(VMS) && !defined(__DECC)
484 # define getcwd(buf, len) getwd (buf)
489 # define strcasecmp stricmp
491 # define strcasecmp strcmpi
493 /* Create our own, in misc.c */
494 int strcasecmp (const char *s1
, const char *s2
);
498 #if !HAVE_STRNCASECMP
500 # define strncasecmp strnicmp
502 # define strncasecmp strncmpi
504 /* Create our own, in misc.c */
505 int strncasecmp (const char *s1
, const char *s2
, int n
);
509 extern const struct floc
*reading_file
;
510 extern const struct floc
**expanding_var
;
512 extern char **environ
;
514 extern int just_print_flag
, silent_flag
, ignore_errors_flag
, keep_going_flag
;
515 extern int print_data_base_flag
, question_flag
, touch_flag
, always_make_flag
;
516 extern int env_overrides
, no_builtin_rules_flag
, no_builtin_variables_flag
;
517 extern int print_version_flag
, print_directory_flag
, check_symlink_flag
;
518 extern int warn_undefined_variables_flag
, trace_flag
, posix_pedantic
;
519 extern int not_parallel
, second_expansion
, clock_skew_detected
;
520 extern int rebuilding_makefiles
, one_shell
;
522 /* can we run commands via 'sh -c xxx' or must we use batch files? */
523 extern int batch_mode_shell
;
525 /* Resetting the command script introduction prefix character. */
526 #define RECIPEPREFIX_NAME ".RECIPEPREFIX"
527 #define RECIPEPREFIX_DEFAULT '\t'
528 extern char cmd_prefix
;
530 extern unsigned int job_slots
;
531 extern int job_fds
[2];
534 extern double max_load_average
;
536 extern int max_load_average
;
539 extern char *program
;
540 extern char *starting_directory
;
541 extern unsigned int makelevel
;
542 extern char *version_string
, *remote_description
, *make_host
;
544 extern unsigned int commands_started
;
546 extern int handling_fatal_signal
;
550 #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
553 #define MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
557 # define MAKE_SUCCESS 1
558 # define MAKE_TROUBLE 2
559 # define MAKE_FAILURE 3
561 # define MAKE_SUCCESS 0
562 # define MAKE_TROUBLE 1
563 # define MAKE_FAILURE 2
566 /* Set up heap debugging library dmalloc. */
568 #ifdef HAVE_DMALLOC_H
572 #ifndef initialize_main
574 # define initialize_main(pargc, pargv) \
575 { _wildcard(pargc, pargv); _response(pargc, pargv); }
577 # define initialize_main(pargc, pargv)
583 # define chdir _chdir2
586 # define getcwd _getcwd2
589 /* NO_CHDIR2 causes make not to use _chdir2() and _getcwd2() instead of
590 chdir() and getcwd(). This avoids some error messages for the
591 make testsuite but restricts the drive letter support. */
593 # warning NO_CHDIR2: usage of drive letters restricted
599 #ifndef initialize_main
600 # define initialize_main(pargc, pargv)
604 /* Some systems (like Solaris, PTX, etc.) do not support the SA_RESTART flag
605 properly according to POSIX. So, we try to wrap common system calls with
606 checks for EINTR. Note that there are still plenty of system calls that
607 can fail with EINTR but this, reportedly, gets the vast majority of
608 failure cases. If you still experience failures you'll need to either get
609 a system where SA_RESTART works, or you need to avoid -j. */
611 #define EINTRLOOP(_v,_c) while (((_v)=_c)==-1 && errno==EINTR)
613 /* While system calls that return integers are pretty consistent about
614 returning -1 on failure and setting errno in that case, functions that
615 return pointers are not always so well behaved. Sometimes they return
616 NULL for expected behavior: one good example is readdir() which returns
617 NULL at the end of the directory--and _doesn't_ reset errno. So, we have
618 to do it ourselves here. */
620 #define ENULLLOOP(_v,_c) do { errno = 0; (_v) = _c; } \
621 while((_v)==0 && errno==EINTR)