Improve backslash/newline handling to adhere to POSIX requirements.
[make.git] / make.h
blobea282df63dd3cdbfbd962f441508026914edd3ef
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 #ifndef USHRT_MAX
152 # define USHRT_MAX 65535
153 #endif
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))
164 #ifndef CHAR_MAX
165 # define CHAR_MAX INTEGER_TYPE_MAXIMUM (char)
166 #endif
168 #ifdef STAT_MACROS_BROKEN
169 # ifdef S_ISREG
170 # undef S_ISREG
171 # endif
172 # ifdef S_ISDIR
173 # undef S_ISDIR
174 # endif
175 #endif /* STAT_MACROS_BROKEN. */
177 #ifndef S_ISREG
178 # define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
179 #endif
180 #ifndef S_ISDIR
181 # define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
182 #endif
184 #ifdef VMS
185 # include <types.h>
186 # include <unixlib.h>
187 # include <unixio.h>
188 # include <perror.h>
189 /* Needed to use alloca on VMS. */
190 # include <builtins.h>
191 #endif
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)
197 # endif
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
203 # endif
204 #endif
205 #define UNUSED __attribute__ ((unused))
207 #if defined (STDC_HEADERS) || defined (__GNU_LIBRARY__)
208 # include <stdlib.h>
209 # include <string.h>
210 # define ANSI_STRING 1
211 #else /* No standard headers. */
212 # ifdef HAVE_STRING_H
213 # include <string.h>
214 # define ANSI_STRING 1
215 # else
216 # include <strings.h>
217 # endif
218 # ifdef HAVE_MEMORY_H
219 # include <memory.h>
220 # endif
221 # ifdef HAVE_STDLIB_H
222 # include <stdlib.h>
223 # else
224 void *malloc (int);
225 void *realloc (void *, int);
226 void free (void *);
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. */
235 #ifndef EXIT_SUCCESS
236 # define EXIT_SUCCESS 0
237 #endif
238 #ifndef EXIT_FAILURE
239 # define EXIT_FAILURE 1
240 #endif
242 #ifndef ANSI_STRING
244 /* SCO Xenix has a buggy macro definition in <string.h>. */
245 #undef strerror
246 #if !defined(__DECC)
247 char *strerror (int errnum);
248 #endif
250 #endif /* !ANSI_STRING. */
251 #undef ANSI_STRING
253 #if HAVE_INTTYPES_H
254 # include <inttypes.h>
255 #endif
256 #define FILE_TIMESTAMP uintmax_t
258 #if !defined(HAVE_STRSIGNAL)
259 char *strsignal (int signum);
260 #endif
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) \
275 ((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
280 filenames! */
281 #ifdef HAVE_CASE_INSENSITIVE_FS
282 # define patheq(a, b) \
283 ((a) == (b) \
284 || (tolower((unsigned char)*(a)) == tolower((unsigned char)*(b)) \
285 && (*(a) == '\0' || !strcasecmp ((a) + 1, (b) + 1))))
286 #else
287 # define patheq(a, b) streq(a, b)
288 #endif
290 #define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
292 #if defined(__GNUC__) || defined(ENUM_BITFIELDS)
293 # define ENUM_BITFIELD(bits) :bits
294 #else
295 # define ENUM_BITFIELD(bits)
296 #endif
298 /* Handle gettext and locales. */
300 #if HAVE_LOCALE_H
301 # include <locale.h>
302 #else
303 # define setlocale(category, locale)
304 #endif
306 #include <gettext.h>
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 ';'
316 # elif defined(VMS)
317 # define PATH_SEPARATOR_CHAR ','
318 # else
319 # define PATH_SEPARATOR_CHAR ':'
320 # endif
321 #endif
323 /* This is needed for getcwd() and chdir(), on some W32 systems. */
324 #if defined(HAVE_DIRECT_H)
325 # include <direct.h>
326 #endif
328 #ifdef WINDOWS32
329 # include <fcntl.h>
330 # include <malloc.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
348 #endif
349 #ifdef SET_STACK_SIZE
350 # include <sys/resource.h>
351 struct rlimit stack_limit;
352 #endif
354 struct floc
356 const char *filenm;
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
370 # endif
371 #endif
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)));
381 #else
382 const char *concat ();
383 void message ();
384 void error ();
385 void fatal ();
386 #endif
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 *);
408 #ifndef NO_ARCHIVES
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);
421 #ifndef VMS
422 int ar_member_touch (const char *arname, const char *memname);
423 #endif
424 #endif
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);
454 /* String caching */
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);
462 #ifdef HAVE_VFORK_H
463 # include <vfork.h>
464 #endif
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)
471 long int atol ();
472 # ifndef VMS
473 long int lseek ();
474 # endif
476 #endif /* Not GNU C library or POSIX. */
478 #ifdef HAVE_GETCWD
479 # if !defined(VMS) && !defined(__DECC)
480 char *getcwd ();
481 # endif
482 #else
483 char *getwd ();
484 # define getcwd(buf, len) getwd (buf)
485 #endif
487 #if !HAVE_STRCASECMP
488 # if HAVE_STRICMP
489 # define strcasecmp stricmp
490 # elif HAVE_STRCMPI
491 # define strcasecmp strcmpi
492 # else
493 /* Create our own, in misc.c */
494 int strcasecmp (const char *s1, const char *s2);
495 # endif
496 #endif
498 #if !HAVE_STRNCASECMP
499 # if HAVE_STRNICMP
500 # define strncasecmp strnicmp
501 # elif HAVE_STRNCMPI
502 # define strncasecmp strncmpi
503 # else
504 /* Create our own, in misc.c */
505 int strncasecmp (const char *s1, const char *s2, int n);
506 # endif
507 #endif
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];
532 extern int job_rfd;
533 #ifndef NO_FLOAT
534 extern double max_load_average;
535 #else
536 extern int max_load_average;
537 #endif
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;
549 #ifndef MIN
550 #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
551 #endif
552 #ifndef MAX
553 #define MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
554 #endif
556 #ifdef VMS
557 # define MAKE_SUCCESS 1
558 # define MAKE_TROUBLE 2
559 # define MAKE_FAILURE 3
560 #else
561 # define MAKE_SUCCESS 0
562 # define MAKE_TROUBLE 1
563 # define MAKE_FAILURE 2
564 #endif
566 /* Set up heap debugging library dmalloc. */
568 #ifdef HAVE_DMALLOC_H
569 #include <dmalloc.h>
570 #endif
572 #ifndef initialize_main
573 # ifdef __EMX__
574 # define initialize_main(pargc, pargv) \
575 { _wildcard(pargc, pargv); _response(pargc, pargv); }
576 # else
577 # define initialize_main(pargc, pargv)
578 # endif
579 #endif
581 #ifdef __EMX__
582 # if !defined chdir
583 # define chdir _chdir2
584 # endif
585 # if !defined getcwd
586 # define getcwd _getcwd2
587 # endif
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. */
592 # ifdef NO_CHDIR2
593 # warning NO_CHDIR2: usage of drive letters restricted
594 # undef chdir
595 # undef getcwd
596 # endif
597 #endif
599 #ifndef initialize_main
600 # define initialize_main(pargc, pargv)
601 #endif
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)