📄 jam.h
字号:
/* * Copyright 1993, 1995 Christopher Seiwald. * * This file is part of Jam - see jam.c for Copyright information. *//* This file is ALSO: * Copyright 2001-2004 David Abrahams. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) *//* * jam.h - includes and globals for jam * * 04/08/94 (seiwald) - Coherent/386 support added. * 04/21/94 (seiwald) - DGUX is __DGUX__, not just __DGUX. * 05/04/94 (seiwald) - new globs.jobs (-j jobs) * 11/01/94 (wingerd) - let us define path of Jambase at compile time. * 12/30/94 (wingerd) - changed command buffer size for NT (MS-DOS shell). * 02/22/95 (seiwald) - Jambase now in /usr/local/lib. * 04/30/95 (seiwald) - FreeBSD added. Live Free or Die. * 05/10/95 (seiwald) - SPLITPATH character set up here. * 08/20/95 (seiwald) - added LINUX. * 08/21/95 (seiwald) - added NCR. * 10/23/95 (seiwald) - added SCO. * 01/03/96 (seiwald) - SINIX (nixdorf) added. * 03/13/96 (seiwald) - Jambase now compiled in; remove JAMBASE variable. * 04/29/96 (seiwald) - AIX now has 31 and 42 OSVERs. * 11/21/96 (peterk) - added BeOS with MW CW mwcc * 12/21/96 (seiwald) - OSPLAT now defined for NT. * 07/19/99 (sickel) - Mac OS X Server and Client support added * 02/18/00 (belmonte)- Support for Cygwin. * 09/12/00 (seiwald) - OSSYMS split to OSMAJOR/OSMINOR/OSPLAT * 12/29/00 (seiwald) - OSVER dropped. */#ifndef JAM_H_VP_2003_08_01#define JAM_H_VP_2003_08_01#ifdef HAVE_PYTHON#include <Python.h>#endif/* Assume popen support is available unless known otherwise. */#define HAVE_POPEN 1/* * VMS, OPENVMS */# ifdef VMS# include <types.h># include <file.h># include <stat.h># include <stdio.h># include <ctype.h># include <stdlib.h># include <signal.h># include <string.h># include <time.h># include <unistd.h># include <unixlib.h># define OSMINOR "OS=VMS"# define OSMAJOR "VMS=true"# define OS_VMS# define MAXLINE 1024 /* longest 'together' actions */# define SPLITPATH ','# define EXITOK 1# define EXITBAD 0# define DOWNSHIFT_PATHS/* This may be inaccurate */# ifndef __DECC# define OSPLAT "OSPLAT=VAX"# endif # endif/* * Windows NT */# ifdef NT# include <fcntl.h># include <stdlib.h># include <stdio.h># include <ctype.h># include <malloc.h># ifndef __MWERKS__# include <memory.h>#endif# include <signal.h># include <string.h># include <time.h># define OSMAJOR "NT=true"# define OSMINOR "OS=NT"# define OS_NT# define SPLITPATH ';'/* Windows NT 3.51 only allows 996 chars per line, but we deal *//* with problem in "execnt.c". */# define MAXLINE (maxline()) /* longest 'together' actions */# define USE_EXECNT# define USE_PATHUNIX# define PATH_DELIM '\\'# define DOWNSHIFT_PATHS/* AS400 cross-compile from NT */# ifdef AS400# undef OSMINOR# undef OSMAJOR# define OSMAJOR "AS400=true"# define OSMINOR "OS=AS400"# define OS_AS400# endif/* Metrowerks Standard Library on Windows. */# ifdef __MSL__#undef HAVE_POPEN#endif# endif/* * Windows MingW32 */# ifdef MINGW# include <fcntl.h># include <stdlib.h># include <stdio.h># include <ctype.h># include <malloc.h># include <memory.h># include <signal.h># include <string.h># include <time.h># define OSMAJOR "MINGW=true"# define OSMINOR "OS=MINGW"# define OS_NT# define SPLITPATH ';'# define MAXLINE 996 /* longest 'together' actions */# define USE_EXECUNIX# define USE_PATHUNIX# define PATH_DELIM '\\'# define DOWNSHIFT_PATHS# endif/* * OS2 */# ifdef __OS2__# include <fcntl.h># include <stdlib.h># include <stdio.h># include <ctype.h># include <malloc.h># include <signal.h># include <string.h># include <time.h># define OSMAJOR "OS2=true"# define OSMINOR "OS=OS2"# define OS_OS2# define SPLITPATH ';'# define MAXLINE 996 /* longest 'together' actions */# define USE_EXECUNIX# define USE_PATHUNIX# define PATH_DELIM '\\'# define DOWNSHIFT_PATHS# ifdef __EMX__# define USE_FILEUNIX# endif# endif/* * Macintosh MPW */# ifdef macintosh# include <time.h># include <stdlib.h># include <string.h># include <stdio.h># define OSMAJOR "MAC=true"# define OSMINOR "OS=MAC"# define OS_MAC# define SPLITPATH ','# endif/* * God fearing UNIX */# ifndef OSMINOR# define OSMAJOR "UNIX=true"# define USE_EXECUNIX# define USE_FILEUNIX# define USE_PATHUNIX# define PATH_DELIM '/'# ifdef _AIX# define unix# define MAXLINE 23552 /* 24k - 1k, longest 'together' actions */# define OSMINOR "OS=AIX"# define OS_AIX# define NO_VFORK# endif# ifdef AMIGA# define OSMINOR "OS=AMIGA"# define OS_AMIGA# endif# ifdef __BEOS__# define unix# define OSMINOR "OS=BEOS"# define OS_BEOS# define NO_VFORK# endif# ifdef __bsdi__# define OSMINOR "OS=BSDI"# define OS_BSDI# endif# if defined (COHERENT) && defined (_I386)# define OSMINOR "OS=COHERENT"# define OS_COHERENT# define NO_VFORK# endif# if defined(__cygwin__) || defined(__CYGWIN__)# define OSMINOR "OS=CYGWIN"# define OS_CYGWIN# endif# if defined(__FreeBSD__) && !defined(__DragonFly__)# define OSMINOR "OS=FREEBSD"# define OS_FREEBSD# endif# ifdef __DragonFly__# define OSMINOR "OS=DRAGONFLYBSD"# define OS_DRAGONFLYBSD# endif# ifdef __DGUX__# define OSMINOR "OS=DGUX"# define OS_DGUX# endif# ifdef __hpux# define OSMINOR "OS=HPUX"# define OS_HPUX# endif# ifdef __OPENNT# define unix# define OSMINOR "OS=INTERIX"# define OS_INTERIX# define NO_VFORK# endif# ifdef __sgi# define OSMINOR "OS=IRIX"# define OS_IRIX# define NO_VFORK# endif# ifdef __ISC# define OSMINOR "OS=ISC"# define OS_ISC# define NO_VFORK# endif# ifdef linux# define OSMINOR "OS=LINUX"# define OS_LINUX# endif# ifdef __Lynx__# define OSMINOR "OS=LYNX"# define OS_LYNX# define NO_VFORK# define unix# endif# ifdef __MACHTEN__# define OSMINOR "OS=MACHTEN"# define OS_MACHTEN# endif# ifdef mpeix# define unix# define OSMINOR "OS=MPEIX"# define OS_MPEIX# define NO_VFORK# endif# ifdef __MVS__# define unix# define OSMINOR "OS=MVS"# define OS_MVS# endif# ifdef _ATT4# define OSMINOR "OS=NCR"# define OS_NCR# endif# ifdef __NetBSD__# define unix# define OSMINOR "OS=NETBSD"# define OS_NETBSD# define NO_VFORK# endif# ifdef __QNX__# define unix# ifdef __QNXNTO__# define OSMINOR "OS=QNXNTO"# define OS_QNXNTO# else# define OSMINOR "OS=QNX"# define OS_QNX# define NO_VFORK# define MAXLINE 996# endif# endif# ifdef NeXT# ifdef __APPLE__# define OSMINOR "OS=RHAPSODY"# define OS_RHAPSODY# else# define OSMINOR "OS=NEXT"# define OS_NEXT# endif# endif# ifdef __APPLE__# define unix# define OSMINOR "OS=MACOSX"# define OS_MACOSX# endif# ifdef __osf__# ifndef unix# define unix# endif# define OSMINOR "OS=OSF"# define OS_OSF# endif# ifdef _SEQUENT_# define OSMINOR "OS=PTX"# define OS_PTX# endif# ifdef M_XENIX# define OSMINOR "OS=SCO"# define OS_SCO# define NO_VFORK# endif# ifdef sinix# define unix# define OSMINOR "OS=SINIX"# define OS_SINIX# endif# ifdef sun# if defined(__svr4__) || defined(__SVR4)# define OSMINOR "OS=SOLARIS"# define OS_SOLARIS# else# define OSMINOR "OS=SUNOS"# define OS_SUNOS# endif# endif# ifdef ultrix# define OSMINOR "OS=ULTRIX"# define OS_ULTRIX# endif# ifdef _UNICOS# define OSMINOR "OS=UNICOS"# define OS_UNICOS# endif# if defined(__USLC__) && !defined(M_XENIX)# define OSMINOR "OS=UNIXWARE"# define OS_UNIXWARE# endif# ifdef __OpenBSD__# define OSMINOR "OS=OPENBSD"# define OS_OPENBSD# define unix# endif# if defined (__FreeBSD_kernel__) && !defined(__FreeBSD__)# define OSMINOR "OS=KFREEBSD"# define OS_KFREEBSD# endif# ifndef OSMINOR# define OSMINOR "OS=UNKNOWN"# endif/* All the UNIX includes */# include <sys/types.h># include <sys/stat.h># ifndef OS_MPEIX# include <sys/file.h># endif# include <fcntl.h># include <stdio.h># include <ctype.h># include <signal.h># include <string.h># include <time.h># ifndef OS_QNX# include <memory.h># endif# ifndef OS_ULTRIX# include <stdlib.h># endif# if !defined(OS_BSDI) && \ !defined(OS_FREEBSD) && \ !defined(OS_DRAGONFLYBSD) && \ !defined(OS_NEXT) && \ !defined(OS_MACHTEN) && \ !defined(OS_MACOSX) && \ !defined(OS_RHAPSODY) && \ !defined(OS_MVS) && \ !defined(OS_OPENBSD)# include <malloc.h># endif# endif /* * OSPLAT definitions - suppressed when it's a one-of-a-kind */# if defined( _M_PPC ) || \ defined( PPC ) || \ defined( ppc ) || \ defined( __powerpc__ ) || \ defined( __ppc__ )# define OSPLAT "OSPLAT=PPC"# endif# if defined( _ALPHA_ ) || \ defined( __alpha__ )# define OSPLAT "OSPLAT=AXP"# endif# if defined( _i386_ ) || \ defined( __i386__ ) || \ defined( _M_IX86 )# define OSPLAT "OSPLAT=X86"# endif # if defined( __ia64__ ) || defined( __IA64__ ) || defined( __ia64 )# define OSPLAT "OSPLAT=IA64"# endif# if \ defined( __x86_64__ ) || \ defined( __amd64__ ) || \ defined( _M_AMD64 )# define OSPLAT "OSPLAT=X86_64"# endif# ifdef __sparc__# define OSPLAT "OSPLAT=SPARC"# endif# ifdef __mips__# define OSPLAT "OSPLAT=MIPS"# endif# ifdef __arm__# define OSPLAT "OSPLAT=ARM"# endif# ifdef __s390__# define OSPLAT "OSPLAT=390"# endif# ifdef __hppa# define OSPLAT "OSPLAT=PARISC"# endif# ifndef OSPLAT# define OSPLAT ""# endif/* * Jam implementation misc. */# ifndef MAXLINE# define MAXLINE 102400 /* longest 'together' actions' */# endif# ifndef EXITOK# define EXITOK 0# define EXITBAD 1# endif# ifndef SPLITPATH# define SPLITPATH ':'# endif/* You probably don't need to muck with these. */# define MAXSYM 1024 /* longest symbol in the environment */# define MAXJPATH 1024 /* longest filename */# define MAXJOBS 64 /* silently enforce -j limit */# define MAXARGC 32 /* words in $(JAMSHELL) *//* Jam private definitions below. */# define DEBUG_MAX 14struct globs { int noexec; int jobs; int quitquick; int newestfirst; /* build newest sources first */ int pipe_action; char debug[DEBUG_MAX]; FILE *cmdout; /* print cmds, not run them */ long timeout; /* number of seconds to limit actions to, default 0 for no limit. */ int dart; /* output build and test results formatted for Dart */} ;extern struct globs globs;# define DEBUG_MAKE ( globs.debug[ 1 ] ) /* show actions when executed */# define DEBUG_MAKEQ ( globs.debug[ 2 ] ) /* show even quiet actions */# define DEBUG_EXEC ( globs.debug[ 2 ] ) /* show text of actons */# define DEBUG_MAKEPROG ( globs.debug[ 3 ] ) /* show progress of make0 */# define DEBUG_BIND ( globs.debug[ 3 ] ) /* show when files bound */# define DEBUG_EXECCMD ( globs.debug[ 4 ] ) /* show execcmds()'s work */# define DEBUG_COMPILE ( globs.debug[ 5 ] ) /* show rule invocations */# define DEBUG_HEADER ( globs.debug[ 6 ] ) /* show result of header scan */# define DEBUG_BINDSCAN ( globs.debug[ 6 ] ) /* show result of dir scan */# define DEBUG_SEARCH ( globs.debug[ 6 ] ) /* show attempts at binding */# define DEBUG_VARSET ( globs.debug[ 7 ] ) /* show variable settings */# define DEBUG_VARGET ( globs.debug[ 8 ] ) /* show variable fetches */# define DEBUG_VAREXP ( globs.debug[ 8 ] ) /* show variable expansions */# define DEBUG_IF ( globs.debug[ 8 ] ) /* show 'if' calculations */# define DEBUG_LISTS ( globs.debug[ 9 ] ) /* show list manipulation */# define DEBUG_SCAN ( globs.debug[ 9 ] ) /* show scanner tokens */# define DEBUG_MEM ( globs.debug[ 9 ] ) /* show memory use */# define DEBUG_PROFILE ( globs.debug[ 10 ] ) /* dump rule execution times */# define DEBUG_PARSE ( globs.debug[ 11 ] ) /* debug parsing */# define DEBUG_GRAPH ( globs.debug[ 12 ] ) /* debug dependencies */# define DEBUG_FATE ( globs.debug[ 13 ] ) /* show changes to fate in make0() *//* Everyone gets the memory definitions. */#include "mem.h"/* They also get the profile functions. */#include "debug.h"#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -