VirtualBox

source: kBuild/vendor/gnumake/3.82/make.h

Last change on this file was 2579, checked in by bird, 12 years ago

Importing make-3.82.tar.bz2 (md5sum 1a11100f3c63fcf5753818e59d63088f) with --auto-props but no keywords.

  • Property svn:eol-style set to native
File size: 16.8 KB
Line 
1/* Miscellaneous global declarations and portability cruft for GNU Make.
2Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
31998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
42010 Free Software Foundation, Inc.
5This file is part of GNU Make.
6
7GNU Make is free software; you can redistribute it and/or modify it under the
8terms of the GNU General Public License as published by the Free Software
9Foundation; either version 3 of the License, or (at your option) any later
10version.
11
12GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License along with
17this 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 */
40char *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
84extern 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)
144unsigned 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
220void *malloc (int);
221void *realloc (void *, int);
222void free (void *);
223
224void abort (void) __attribute__ ((noreturn));
225void 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)
243char *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)
255char *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
330void sync_Path_environment (void);
331int w32_kill (pid_t pid, int sig);
332char *end_of_token_w32 (const char *s, char stopchar);
333int find_and_set_default_shell (const char *token);
334
335/* indicates whether or not we have Bourne shell */
336extern int no_default_sh_exe;
337
338/* is default_shell unixy? */
339extern 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>
347struct rlimit stack_limit;
348#endif
349
350struct 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
360
361/* We have to have stdarg.h or varargs.h AND v*printf or doprnt to use
362 variadic versions of these functions. */
363
364#if HAVE_STDARG_H || HAVE_VARARGS_H
365# if HAVE_VPRINTF || HAVE_DOPRNT
366# define USE_VARIADIC 1
367# endif
368#endif
369
370#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
371const char *concat (unsigned int, ...);
372void message (int prefix, const char *fmt, ...)
373 __attribute__ ((__format__ (__printf__, 2, 3)));
374void error (const struct floc *flocp, const char *fmt, ...)
375 __attribute__ ((__format__ (__printf__, 2, 3)));
376void fatal (const struct floc *flocp, const char *fmt, ...)
377 __attribute__ ((noreturn, __format__ (__printf__, 2, 3)));
378#else
379const char *concat ();
380void message ();
381void error ();
382void fatal ();
383#endif
384
385void die (int) __attribute__ ((noreturn));
386void log_working_directory (int);
387void pfatal_with_name (const char *) __attribute__ ((noreturn));
388void perror_with_name (const char *, const char *);
389void *xmalloc (unsigned int);
390void *xcalloc (unsigned int);
391void *xrealloc (void *, unsigned int);
392char *xstrdup (const char *);
393char *xstrndup (const char *, unsigned int);
394char *find_next_token (const char **, unsigned int *);
395char *next_token (const char *);
396char *end_of_token (const char *);
397void collapse_continuations (char *);
398char *lindex (const char *, const char *, int);
399int alpha_compare (const void *, const void *);
400void print_spaces (unsigned int);
401char *find_percent (char *);
402const char *find_percent_cached (const char **);
403FILE *open_tmpfile (char **, const char *);
404
405#ifndef NO_ARCHIVES
406int ar_name (const char *);
407void ar_parse_name (const char *, char **, char **);
408int ar_touch (const char *);
409time_t ar_member_date (const char *);
410
411typedef long int (*ar_member_func_t) (int desc, const char *mem, int truncated,
412 long int hdrpos, long int datapos,
413 long int size, long int date, int uid,
414 int gid, int mode, const void *arg);
415
416long int ar_scan (const char *archive, ar_member_func_t function, const void *arg);
417int ar_name_equal (const char *name, const char *mem, int truncated);
418#ifndef VMS
419int ar_member_touch (const char *arname, const char *memname);
420#endif
421#endif
422
423int dir_file_exists_p (const char *, const char *);
424int file_exists_p (const char *);
425int file_impossible_p (const char *);
426void file_impossible (const char *);
427const char *dir_name (const char *);
428void hash_init_directories (void);
429
430void define_default_variables (void);
431void set_default_suffixes (void);
432void install_default_suffix_rules (void);
433void install_default_implicit_rules (void);
434
435void build_vpath_lists (void);
436void construct_vpath_list (char *pattern, char *dirpath);
437const char *vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr,
438 unsigned int* vpath_index, unsigned int* path_index);
439int gpath_search (const char *file, unsigned int len);
440
441void construct_include_path (const char **arg_dirs);
442
443void user_access (void);
444void make_access (void);
445void child_access (void);
446
447void close_stdout (void);
448
449char *strip_whitespace (const char **begpp, const char **endpp);
450
451/* String caching */
452void strcache_init (void);
453void strcache_print_stats (const char *prefix);
454int strcache_iscached (const char *str);
455const char *strcache_add (const char *str);
456const char *strcache_add_len (const char *str, int len);
457int strcache_setbufsize (int size);
458
459#ifdef HAVE_VFORK_H
460# include <vfork.h>
461#endif
462
463/* We omit these declarations on non-POSIX systems which define _POSIX_VERSION,
464 because such systems often declare them in header files anyway. */
465
466#if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32)
467
468long int atol ();
469# ifndef VMS
470long int lseek ();
471# endif
472
473#endif /* Not GNU C library or POSIX. */
474
475#ifdef HAVE_GETCWD
476# if !defined(VMS) && !defined(__DECC)
477char *getcwd ();
478# endif
479#else
480char *getwd ();
481# define getcwd(buf, len) getwd (buf)
482#endif
483
484#if !HAVE_STRCASECMP
485# if HAVE_STRICMP
486# define strcasecmp stricmp
487# elif HAVE_STRCMPI
488# define strcasecmp strcmpi
489# else
490/* Create our own, in misc.c */
491int strcasecmp (const char *s1, const char *s2);
492# endif
493#endif
494
495#if !HAVE_STRNCASECMP
496# if HAVE_STRNICMP
497# define strncasecmp strnicmp
498# elif HAVE_STRNCMPI
499# define strncasecmp strncmpi
500# else
501/* Create our own, in misc.c */
502int strncasecmp (const char *s1, const char *s2, int n);
503# endif
504#endif
505
506extern const struct floc *reading_file;
507extern const struct floc **expanding_var;
508
509extern char **environ;
510
511extern int just_print_flag, silent_flag, ignore_errors_flag, keep_going_flag;
512extern int print_data_base_flag, question_flag, touch_flag, always_make_flag;
513extern int env_overrides, no_builtin_rules_flag, no_builtin_variables_flag;
514extern int print_version_flag, print_directory_flag, check_symlink_flag;
515extern int warn_undefined_variables_flag, posix_pedantic, not_parallel;
516extern int second_expansion, clock_skew_detected, rebuilding_makefiles;
517extern int one_shell;
518
519/* can we run commands via 'sh -c xxx' or must we use batch files? */
520extern int batch_mode_shell;
521
522/* Resetting the command script introduction prefix character. */
523#define RECIPEPREFIX_NAME ".RECIPEPREFIX"
524#define RECIPEPREFIX_DEFAULT '\t'
525extern char cmd_prefix;
526
527extern unsigned int job_slots;
528extern int job_fds[2];
529extern int job_rfd;
530#ifndef NO_FLOAT
531extern double max_load_average;
532#else
533extern int max_load_average;
534#endif
535
536extern char *program;
537extern char *starting_directory;
538extern unsigned int makelevel;
539extern char *version_string, *remote_description, *make_host;
540
541extern unsigned int commands_started;
542
543extern int handling_fatal_signal;
544
545
546#ifndef MIN
547#define MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
548#endif
549#ifndef MAX
550#define MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
551#endif
552
553#ifdef VMS
554# define MAKE_SUCCESS 1
555# define MAKE_TROUBLE 2
556# define MAKE_FAILURE 3
557#else
558# define MAKE_SUCCESS 0
559# define MAKE_TROUBLE 1
560# define MAKE_FAILURE 2
561#endif
562
563/* Set up heap debugging library dmalloc. */
564
565#ifdef HAVE_DMALLOC_H
566#include <dmalloc.h>
567#endif
568
569#ifndef initialize_main
570# ifdef __EMX__
571# define initialize_main(pargc, pargv) \
572 { _wildcard(pargc, pargv); _response(pargc, pargv); }
573# else
574# define initialize_main(pargc, pargv)
575# endif
576#endif
577
578#ifdef __EMX__
579# if !defined chdir
580# define chdir _chdir2
581# endif
582# if !defined getcwd
583# define getcwd _getcwd2
584# endif
585
586/* NO_CHDIR2 causes make not to use _chdir2() and _getcwd2() instead of
587 chdir() and getcwd(). This avoids some error messages for the
588 make testsuite but restricts the drive letter support. */
589# ifdef NO_CHDIR2
590# warning NO_CHDIR2: usage of drive letters restricted
591# undef chdir
592# undef getcwd
593# endif
594#endif
595
596#ifndef initialize_main
597# define initialize_main(pargc, pargv)
598#endif
599
600
601/* Some systems (like Solaris, PTX, etc.) do not support the SA_RESTART flag
602 properly according to POSIX. So, we try to wrap common system calls with
603 checks for EINTR. Note that there are still plenty of system calls that
604 can fail with EINTR but this, reportedly, gets the vast majority of
605 failure cases. If you still experience failures you'll need to either get
606 a system where SA_RESTART works, or you need to avoid -j. */
607
608#define EINTRLOOP(_v,_c) while (((_v)=_c)==-1 && errno==EINTR)
609
610/* While system calls that return integers are pretty consistent about
611 returning -1 on failure and setting errno in that case, functions that
612 return pointers are not always so well behaved. Sometimes they return
613 NULL for expected behavior: one good example is readdir() which returns
614 NULL at the end of the directory--and _doesn't_ reset errno. So, we have
615 to do it ourselves here. */
616
617#define ENULLLOOP(_v,_c) do { errno = 0; (_v) = _c; } \
618 while((_v)==0 && errno==EINTR)
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette