/* * Copyright 1993, 1995 Christopher Seiwald. * * This file is part of Jam - see jam.c for Copyright information. */ /* * 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. */ # ifdef VMS int unlink( char *f ); /* In filevms.c */ # 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 <unixlib.h> # ifdef __DECC # define OSSYMS "VMS=true","OS=OPENVMS" # else # define OSSYMS "VMS=true","OS=VMS" # endif # define MAXLINE 1024 /* longest 'together' actions */ # define SPLITPATH ',' # define EXITOK 1 # define EXITBAD 0 # else # ifdef NT # 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> # include <sys/stat.h> # define OSSYMS "NT=true","OS=NT" # define SPLITPATH ';' # define MAXLINE 996 /* longest 'together' actions */ # define EXITOK 0 # define EXITBAD 1 # else # 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 OSSYMS "OS2=true","OS=OS2" # define SPLITPATH ';' # define MAXLINE 996 /* longest 'together' actions */ # define EXITOK 0 # define EXITBAD 1 # else # ifdef __QNX__ # define unix # 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 OSSYMS "UNIX=true","OS=QNX" # define SPLITPATH ':' # define MAXLINE 996 /* longest 'together' actions */ # define EXITOK 0 # define EXITBAD 1 # else /* QNX */ # ifdef macintosh # include <time.h> # include <stdlib.h> # include <string.h> # include <stdio.h> # define OSSYMS "MAC=true","OS=MAC" # define SPLITPATH ',' # define MAXLINE 1024 /* longest 'together' actions */ # define EXITOK 0 # define EXITBAD 1 # else /* not MAC */ # include <sys/types.h> # include <sys/file.h> # include <sys/stat.h> # include <fcntl.h> # ifndef ultrix # include <stdlib.h> # endif # include <stdio.h> # include <ctype.h> # if !defined(__bsdi__)&&!defined(__FreeBSD__) # if !defined(NeXT)&&!defined(__MACHTEN__) # if !defined(MVS) # include <malloc.h> # endif # endif # endif # include <memory.h> # include <signal.h> # include <string.h> # include <time.h> # ifdef _AIX # define unix # ifdef _AIX41 # define OSSYMS "UNIX=true","OS=AIX","OSVER=41" # else # define OSSYMS "UNIX=true","OS=AIX","OSVER=32" # endif # endif # ifdef __BEOS__ # define OSSYMS "UNIX=true","OS=BEOS" # define unix # endif # ifdef __bsdi__ # define OSSYMS "UNIX=true","OS=BSDI" # endif # if defined (COHERENT) && defined (_I386) # define OSSYMS "UNIX=true","OS=COHERENT" # endif # ifdef __FreeBSD__ # define OSSYMS "UNIX=true","OS=FREEBSD" # endif # ifdef __DGUX__ # define OSSYMS "UNIX=true","OS=DGUX" # endif # ifdef __hpux # define OSSYMS "UNIX=true","OS=HPUX" # define unix # endif # ifdef __sgi # define OSSYMS "UNIX=true","OS=IRIX" # endif # ifdef __ISC # define OSSYMS "UNIX=true","OS=ISC" # endif # ifdef linux # define OSSYMS "UNIX=true","OS=LINUX" # endif # ifdef __Lynx__ # define OSSYMS "UNIX=true","OS=LYNX" # define unix # endif # ifdef __MACHTEN__ # define OSSYMS "UNIX=true","OS=MACHTEN" # endif # ifdef MVS # define unix # define OSSYMS "UNIX=true","OS=MVS" # endif # ifdef _ATT4 # define OSSYMS "UNIX=true","OS=NCR" # endif # ifdef NeXT # define OSSYMS "UNIX=true","OS=NEXT" # endif # ifdef __osf__ # define OSSYMS "UNIX=true","OS=OSF" # endif # ifdef _SEQUENT_ # define OSSYMS "UNIX=true","OS=PTX" # endif # ifdef M_XENIX # define OSSYMS "UNIX=true","OS=SCO" # endif # ifdef sinix # define OSSYMS "UNIX=true","OS=SINIX" # endif # ifdef sun # if defined(__svr4__) || defined(__SVR4) # define OSSYMS "UNIX=true","OS=SOLARIS" # else # define OSSYMS "UNIX=true","OS=SUNOS" # endif # endif # ifdef ultrix # define OSSYMS "UNIX=true","OS=ULTRIX" # endif # if defined(__USLC__) && !defined(M_XENIX) # define OSSYMS "UNIX=true","OS=UNIXWARE" # endif # ifndef OSSYMS # define OSSYMS "UNIX=true","OS=UNKNOWN" # endif # define MAXLINE 10240 /* longest 'together' actions' */ # define SPLITPATH ':' # define EXITOK 0 # define EXITBAD 1 # endif /* mac */ # endif /* QNX */ # endif /* OS/2 */ # endif /* NT */ # endif /* UNIX */ /* OSPLAT definitions - note the leading , */ # define OSPLATSYM /**/ # ifdef _M_PPC # undef OSPLATSYM # define OSPLATSYM ,"OSPLAT=PPC" # endif # if defined( _ALPHA_ ) || defined( __alpha__ ) # undef OSPLATSYM # define OSPLATSYM ,"OSPLAT=AXP" # endif # if defined( _i386_ ) || defined( __i386__ ) || defined( _M_IX86 ) # undef OSPLATSYM # define OSPLATSYM ,"OSPLAT=X86" # endif # ifdef __sparc__ # undef OSPLATSYM # define OSPLATSYM ,"OSPLAT=SPARC" # 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) */ # define CMDBUF 10240 /* size of command blocks */ /* Jam private definitions below. */ #ifndef OPT_GRAPH_DEBUG_EXT # define DEBUG_MAX 10 #else # define DEBUG_MAX 11 #endif struct globs { int noexec; int jobs; char debug[DEBUG_MAX]; int scanheaders; /* CWM - Default to true */ } ; 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 */ #ifdef OPT_GRAPH_DEBUG_EXT # define DEBUG_GRAPH ( globs.debug[ 10 ] ) /* Output the dependency graph */ #endif /* CWM */ #define YYSTACKSIZE 10000 #ifdef OPT_IMPROVED_WARNINGS_EXT char *file_and_line(); #endif
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#10 | 4110 | Craig Mcpheeters | Some of my changes from work. | ||
#9 | 3183 | Craig Mcpheeters | Integration of my jam mainline branch into my work branch. | ||
#8 | 1606 | Craig Mcpheeters |
Integration from my modified jam mainline. This is all the mainline changes into my work branch. |
||
#7 | 1477 | Craig Mcpheeters |
Integration from my main jam branch. This is 2.4-dev with my extensions. |
||
#6 | 1347 | Craig Mcpheeters |
Integration from my public area. This is the latest header cache changes. |
||
#5 | 1188 | Craig Mcpheeters |
The latest updates from my A|W work copy. Added a -d11 debug mode, which outputs information on fate changes Create jam variables to show job (-jn) information, such as the number of jobs requested, whether or not there is more than one job, and a list of the job slot numbers. These can be used in a variety of ways in supporting multi-job builds Added jobs slot expansion to the action blocks, the sequence !! is replaced by the job slot the action is running in. Modified the special shell handling to include unix. It used to be that on Unix, you could create an action block which exceeded the size that execvp() could handle (perhaps only when the DynamicCommandSize option is enabled.) On NT, all non-default shells are invoked through a intermediate file. This modification does the same for unix shells. Improved the -d+10 debug level, the dependency graph. It now shows the flags on the node as well (NOUPDATE, NOTFILE, etc.) Only issue the '...skipped' messages for nodes which would have been built |
||
#4 | 1085 | Craig Mcpheeters |
Returned some changes to bring this copy in line with our internal version * Added some double quotes in the Jambase so we can compile files with spaces in the names * Updated our Jambase.aw from the Jambase * Added some debug/optim code to the Jamfile * Fixed a bug in command.c In my dynamic command size extension, it no longer took into account if a target was marked as piecemeal. Now it does * Fixed a bug in execunix.c In jam 2.3 the logic for when to invoke the interpreter directly, and when to go through an intermediate .bat file was changed. This was failing for us, as on NT, cmd.exe does not handle large lines. rc.exe was failing when it went through a .bat file. Reverted it to the 2.2 logic |
||
#3 | 785 | Craig Mcpheeters |
Integration from //guest/craig_mcpheeters/jam/src/... This work area now contains both the Alias|Wavefront changes, and the latest integrations from the mainline. There are some changes in this area which shouldn't be merged back into the mainline. As I merge this branch back into my jam/src/... branch, I'll leave out a few of the changes. |
||
#2 | 782 | Craig Mcpheeters |
Initial return of the Alias|Wavefront mods to jam 2.2. I made a stab at a configuration system - see the file Jamfile.config. Most of the mods are now enclosed within #ifdef blocks, which kind of pollutes the code, but may make it easier to accept or reject some of these changes. Some of these #ifdefs could disappear completely if they are accepted into the mainline This return implements the following extensions: * header cache * dynamic command block size, allowing for *large* commands * slightly improved warnings and errors * serial output from jam - nice when working with multiple jobs * an extension to variable modifiers: $(>:/) and $(>:\\) * ability to ignore header dependencies for a build (jam -p) * new debug level, -d+10, which outputs the dependency graph * added no-care support to internal nodes. if they fail, dependents are built anyway * time stamps on output * a few minor output modifications * a fix for nt batch file names conflicing when more than one jam runs at a time Each of the above can be enabled/disabled on the command line. For example, to turn on the HeaderCache code: jam -sHeaderCache=1 that is, build jam first, then use that jam to build a new one with the options you want. Some of these changes may have been made in the mainline already, my next step will be to integrate the mainline changes into these ones This return isn't yet ready for prime-time |
||
#1 | 777 | Craig Mcpheeters |
Branch of my jam/src/... area. This new area establishes the integration base for the copy of Jam which has all the changes. |
||
//guest/craig_mcpheeters/jam/src/jam.h | |||||
#2 | 617 | Craig Mcpheeters | Integration from mainline as of @3 | ||
#1 | 616 | Craig Mcpheeters | Integration from Jam mainline, as of @2 |