jambase.c #1

  • //
  • guest/
  • perforce_software/
  • jam/
  • src/
  • jambase.c
  • View
  • Commits
  • Open Download .zip Download (29 KB)
/* Generated by mkjambase from Jambase */
char *jambase[] = {
/* Jambase */
"OSFULL = $(OS)$(OSPLAT)$(OSVER) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ;\n",
"switch $(OS)\n",
"{\n",
"case AIX :	LINKLIBS default = -lbsd ;\n",
"case DGUX :	RANLIB default = \"\" ; RELOCATE = true ;\n",
"case HPUX :	RANLIB default = \"\" ;\n",
"INSTALL default = \"\" ;\n",
"case IRIX :	RANLIB default = \"\" ;\n",
"INSTALL default = \"\" ;\n",
"case MVS :	RANLIB default = \"\" ; RELOCATE = true ;\n",
"case NEXT :	AR default = libtool -o ;\n",
"RANLIB default = \"\" ;\n",
"case NCR :	RANLIB default = \"\" ;\n",
"INSTALL default = \"\" ;\n",
"case PTX :	RANLIB default = \"\" ;\n",
"case QNX :	INSTALL default = \"\" ;\n",
"case SCO :	RANLIB default = \"\" ;\n",
"INSTALL default = \"\" ; RELOCATE = true ;\n",
"case SINIX :	RANLIB default = \"\" ; RELOCATE = true ;\n",
"case SOLARIS :	RANLIB default = \"\" ;\n",
"INSTALL default = \"install\" ;\n",
"AR default = \"/usr/ccs/bin/ar ru\" ;\n",
"case UNIXWARE :	RANLIB default = \"\" ; RELOCATE = true ;\n",
"}\n",
"if $(UNIX)\n",
"{\n",
"if $(OS) = QNX \n",
"{\n",
"AR		default = wlib ;\n",
"CC		default = cc ;\n",
"CCFLAGS		default = -Q ;	# quiet\n",
"C++		default = $(CC) ;\n",
"C++FLAGS	default = -Q ;	# quiet\n",
"LINK		default = $(CC) ;\n",
"LINKFLAGS	default = -Q ;	# quiet\n",
"NOARSCAN	default = true ;\n",
"RANLIB		default = \"\" ;\n",
"}\n",
"else if $(OS) = BEOS \n",
"{\n",
"AR		default = mwld -xml -o ;\n",
"BINDIR		default = /boot/bin ;\n",
"CC		default = mwcc ;\n",
"CCFLAGS		default = -nosyspath ;\n",
"C++		default = $(CC) ;\n",
"C++FLAGS	default = -nosyspath ;\n",
"FORTRAN		default = \"\" ;\n",
"LIBDIR		default = /boot/develop/libraries ;\n",
"LINK		default = $(CC) ;\n",
"LEX		default = \"\" ;\n",
"MANDIR		default = /boot/documentation/\"Shell Tools\"/HTML ;\n",
"NOARSCAN	default = true ;\n",
"RANLIB		default = \"\" ;	\n",
"STDHDRS		default = /boot/develop/headers/posix ;\n",
"YACC		default = \"\" ;\n",
"YACCFLAGS	default = \"\" ;\n",
"YACCFILES	default = \"\" ;\n",
"}\n",
"AR		default = ar ru ;\n",
"AS		default = as ;\n",
"AWK		default = awk ;\n",
"ASFLAGS		default = ;\n",
"BINDIR		default = /usr/local/bin ;\n",
"C++		default = gcc ;\n",
"C++FLAGS	default = ;\n",
"CC		default = cc ;\n",
"CCFLAGS		default = ;\n",
"CP		default = cp ;\n",
"CHMOD		default = chmod ;\n",
"DOT		default	= . ;\n",
"DOTDOT		default	= .. ;\n",
"EXEMODE		default = 711 ;\n",
"FILEMODE	default = 644 ;\n",
"FORTRAN		default = f77 ;\n",
"FORTRANFLAGS	default = ;\n",
"HDRS		default = ;\n",
"INSTALL		default = install -c ;\n",
"LEX		default = lex ;\n",
"LIBDIR		default = /usr/local/lib ;\n",
"LINK		default = $(CC) ;\n",
"LINKFLAGS	default = $(CCFLAGS) ;\n",
"LINKLIBS	default = ;\n",
"LN		default = ln ;\n",
"MANDIR		default = /usr/local/man ;\n",
"MKDIR		default = mkdir ;\n",
"MV		default = mv -f ;\n",
"OPTIM		default = -O ;\n",
"RANLIB		default = ranlib ;\n",
"RCP		default = rcp ;\n",
"RSH		default = rsh ;\n",
"RM		default = rm -f ;\n",
"SED		default = sed ;\n",
"SHELLHEADER	default = \"#!/bin/sh\" ;\n",
"SHELLMODE	default = 755 ;\n",
"SLASH		default = / ;\n",
"STDHDRS		default = /usr/include ;\n",
"SUFLIB		default = .a ;\n",
"SUFOBJ		default = .o ;\n",
"SUFEXE		default = \"\" ;\n",
"UNDEFFLAG	default = \"-u _\" ;\n",
"YACC		default = yacc ;\n",
"YACCFLAGS	default = -d ;\n",
"YACCFILES	default = y.tab ;\n",
"}\n",
"else if $(NT)\n",
"{\n",
"AWK		default = awk ;\n",
"CHMOD		default = chmod ;\n",
"CP		default = copy ;\n",
"DOT		default	= . ;\n",
"DOTDOT		default	= .. ;\n",
"EXEMODE		default = 711 ;\n",
"FILEMODE	default = 644 ;\n",
"MKDIR		default = mkdir ;\n",
"MV		default = mv -f ;\n",
"OS			= NT ;		# replace Windows_NT\n",
"RCP		default = rcp ;\n",
"RSH		default = rsh ;\n",
"RM		default = del /f/q ;\n",
"SED		default = sed ;\n",
"SLASH		default = \\\\ ;\n",
"SUFLIB		default = .lib ;\n",
"SUFOBJ		default = .obj ;\n",
"SUFEXE		default = .exe ;\n",
"if $(BCCROOT)\n",
"{\n",
"ECHO \"Compiler is Borland C++\" ;\n",
"AR		default = tlib ;\n",
"ARFLAGS		default = /C /P64 ;\n",
"CC		default = bcc32 ;\n",
"CCFLAGS		default = -v -w- -DNT ;\n",
"C++		default = bcc32 ;\n",
"C++FLAGS	default = -v -w- ;\n",
"LINK		default = $(CC) ;\n",
"LINKFLAGS	default = $(CCFLAGS) ;\n",
"STDLIBPATH	default = $(BCCROOT)\\\\lib ;\n",
"STDHDRS		default = $(BCCROOT)\\\\include ;\n",
"NOARSCAN	default = true ;\n",
"}\n",
"else if $(MSVC)\n",
"{\n",
"ECHO \"Compiler is Microsoft Visual C++ 16 bit\" ;\n",
"AR		default = lib /nologo ;\n",
"CC		default = cl /nologo ;\n",
"CCFLAGS		default = /D \\\"WIN\\\" ;\n",
"C++		default = $(CC) ;\n",
"C++FLAGS	default = $(CCFLAGS) ;\n",
"LINK		default = $(CC) ;\n",
"LINKFLAGS	default = $(CCFLAGS) ;\n",
"LINKLIBS	default = \n",
"$(MSVC)\\\\lib\\\\mlibce.lib\n",
"$(MSVC)\\\\lib\\\\oldnames.lib\n",
";\n",
"LINKLIBS	default = ;\n",
"NOARSCAN	default = true ;\n",
"OPTIM		default =  ;\n",
"STDHDRS		default = $(MSVC)\\\\include ;\n",
"UNDEFFLAG	default = \"/u _\" ;\n",
"}\n",
"else if $(MSVCNT)\n",
"{\n",
"ECHO \"Compiler is Microsoft Visual C++\" ;\n",
"AR		default = lib ;\n",
"AS		default = masm386 ;\n",
"CC		default = cl /nologo ;\n",
"CCFLAGS		default = ;\n",
"C++		default = $(CC) ;\n",
"C++FLAGS	default = $(CCFLAGS) ;\n",
"LINK		default = link ;\n",
"LINKFLAGS	default = ;\n",
"LINKLIBS	default = $(MSVCNT)\\\\lib\\\\advapi32.lib\n",
"$(MSVCNT)\\\\lib\\\\libc.lib\n",
"$(MSVCNT)\\\\lib\\\\oldnames.lib\n",
"$(MSVCNT)\\\\lib\\\\kernel32.lib ;\n",
"OPTIM		default =  ;\n",
"STDHDRS		default = $(MSVCNT)\\\\include ;\n",
"UNDEFFLAG	default = \"/u _\" ;\n",
"}\n",
"else\n",
"{\n",
"EXIT On NT, set BCCROOT, MSVCNT, or MSVC to the root of the\n",
"Borland or Microsoft directories. ;\n",
"}\n",
"}\n",
"else if $(OS2)\n",
"{\n",
"WATCOM		default = $(watcom) ;\n",
"CP		default = copy ;\n",
"DOT		default	= . ;\n",
"DOTDOT		default	= .. ;\n",
"MKDIR		default = mkdir ;\n",
"MV		default = move ;\n",
"RM		default = del /f ;\n",
"SED		default = sed ;\n",
"SLASH		default = \\\\ ;\n",
"SUFLIB		default = .lib ;\n",
"SUFOBJ		default = .obj ;\n",
"SUFEXE		default = .exe ;\n",
"if ! $(WATCOM)\n",
"{\n",
"EXIT On OS2, set WATCOM to the root of the Watcom directory. ;\n",
"}\n",
"ECHO \"OS2 compiler is Watcom.\" ;\n",
"AR		default = wlib ;\n",
"CC		default = wcc386 ;\n",
"CCFLAGS		default = /zq /DOS2 /I$(WATCOM)\\\\h ; # zq=quiet\n",
"C++		default = wpp386 ;\n",
"C++FLAGS	default = $(CCFLAGS) ;\n",
"LINK		default = wcl386 ;\n",
"LINKFLAGS	default = /zq ; # zq=quiet\n",
"LINKLIBS	default = ;\n",
"NOARSCAN	default = true ;\n",
"OPTIM		default = ;\n",
"STDHDRS		default = $(WATCOM)\\\\h ;\n",
"UNDEFFLAG	default = \"/u _\" ;\n",
"}\n",
"else if $(VMS)\n",
"{\n",
"AS		default = as ;\n",
"CC		default = cc ;\n",
"CCFLAGS		default = ;\n",
"CP		default = copy/replace ;\n",
"CRELIB		default = true ;\n",
"DOT		default	= [] ;\n",
"DOTDOT		default	= [-] ;\n",
"EXEMODE		default = (w:e) ;\n",
"FILEMODE	default = (w:r) ;\n",
"HDRS		default = ;\n",
"LEX		default = lex ;\n",
"LINK		default = link ;\n",
"LINKFLAGS	default = ;\n",
"LINKLIBS	default = ;\n",
"MV		default = rename ;\n",
"OPTIM		default = ;\n",
"RM		default = delete ;\n",
"RUNVMS		default = mcr ;\n",
"SED		default = sed ;\n",
"SHELLMODE	default = (w:er) ;\n",
"SLASH		default = . ;\n",
"STDHDRS		default = decc$library_include ;\n",
"SUFLIB		default = .olb ;\n",
"SUFOBJ		default = .obj ;\n",
"SUFEXE		default = .exe ;\n",
"switch $(OS) \n",
"{\n",
"case OPENVMS : CCFLAGS default = /stand=vaxc ;\n",
"case VMS     : LINKLIBS default = sys$library:vaxcrtl.olb/lib ;\n",
"}\n",
"}\n",
"else if $(MAC)\n",
"{\n",
"CWGUSI		default = \"{CWGUSI}\" ;\n",
"CWMAC		default = \"{CWMAC}\" ;\n",
"CWGUSIHDR	default = $(CWGUSI):include ;\n",
"CWGUSILIB	default = $(CWGUSI):Lib ;\n",
"CWMACLIB	default = $(CWMAC):Libraries ;\n",
"CWMACHDR	default = $(CWMAC):Headers ;\n",
"CC		default = mwcppc ;\n",
"CCFLAGS		default = -w off ;\n",
"CP		default = copy ;\n",
"DOT		default = \":\" ;\n",
"DOTDOT		default = \"::\" ;\n",
"HDRS		default = $(CWGUSIHDR) \n",
"$(CWMACHDR):\"ANSI Headers\" \n",
"$(CWMACHDR):\"Universal Headers\" ;\n",
"LINK		default = mwlinkppc ;\n",
"LINKFLAGS	default = -mpwtool -warn ;\n",
"LINKLIBS	default = \"$(CWGUSILIB):GUSIMPW.Lib.PPC\" \n",
"\"$(CWGUSILIB):GUSI.Lib.PPC\" \n",
"\"$(CWMACLIB):MacOS Common:Interfacelib\" \n",
"\"$(CWMACLIB):MacOS Common:PLStringFuncs Glue:PLStringFuncsPPC.lib\" \n",
"\"$(CWMACLIB):Runtime:Runtime PPC:MWMPWCRuntime.lib\" \n",
"\"$(CWMACLIB):ANSI PPC:MPW ANSI.C.PPC.Lib\" \n",
"\"$(CWMACLIB):MacOS PPC:PPCToolLibs.o\" \n",
"\"$(CWMACLIB):MacOS PPC:Mathlib\" ;\n",
"MKDIR		default = newfolder ;\n",
"MV		default = rename ;\n",
"NOARSCAN	default = true ;\n",
"OPTIM		default = ;\n",
"RM		default = delete ;\n",
"SLASH		default = \":\" ;\n",
"STDHDRS		default = ; #$(MWCIncludes) ;\n",
"SUFLIB		default = .lib ;\n",
"SUFOBJ		default = .o ;\n",
"SUFEXE		default = \"\" ;\n",
"NOARSCAN	default = true ;\n",
"}\n",
"if $(NT) || $(OS2)\n",
"{\n",
"MSLIB 		default = lib ;\n",
"MSLINK		default = link ;\n",
"MSIMPLIB 	default = implib ;\n",
"MSRC		default = rc ;\n",
"}\n",
"JAMFILE		default = Jamfile ;\n",
"JAMRULES	default = Jamrules ;\n",
"HDRPATTERN = \"^#[	 ]*include[	 ]*[<\\\"](.*)[\\\">].*$\" ;\n",
"DEPENDS all : shell files lib exe obj ;\n",
"DEPENDS all shell files lib exe obj : first ;\n",
"NOTFILE all first shell files lib exe obj dirs clean uninstall ;\n",
"ALWAYS clean uninstall ;\n",
"rule As\n",
"{\n",
"DEPENDS $(<) : $(>) ;\n",
"ASFLAGS on $(<) += $(ASFLAGS) $(SUBDIRASFLAGS) ;\n",
"}\n",
"rule Bulk\n",
"{\n",
"local i ;\n",
"for i in $(>)\n",
"{\n",
"File $(i:D=$(<)) : $(i) ;\n",
"}\n",
"}\n",
"rule Cc\n",
"{\n",
"local _h ;\n",
"DEPENDS $(<) : $(>) ;\n",
"CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ;\n",
"if $(RELOCATE)\n",
"{\n",
"CcMv $(<) : $(>) ;\n",
"}\n",
"_h = $(SEARCH_SOURCE) $(HDRS) $(SUBDIRHDRS) ;\n",
"if $(VMS) && $(_h)\n",
"{\n",
"SLASHINC on $(<) = \"/inc=(\" $(_h[1]) ,$(_h[2-]) \")\" ;\n",
"}\n",
"else if $(MAC) && $(_h)\n",
"{\n",
"local _i _j ;\n",
"_j = $(_h[1]) ;\n",
"for _i in $(_h[2-])\n",
"{\n",
"_j = $(_j),$(_i) ;\n",
"}\n",
"MACINC on $(<) = \\\"$(_j)\\\" ;\n",
"}\n",
"}\n",
"rule C++\n",
"{\n",
"local _h ;\n",
"DEPENDS $(<) : $(>) ;\n",
"C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) ;\n",
"if $(RELOCATE)\n",
"{\n",
"CcMv $(<) : $(>) ;\n",
"}\n",
"_h = $(SEARCH_SOURCE) $(HDRS) $(SUBDIRHDRS) ;\n",
"if $(VMS) && $(_h)\n",
"{\n",
"SLASHINC on $(<) = \"/inc=(\" $(_h[1]) ,$(_h[2-]) \")\" ;\n",
"}\n",
"else if $(MAC) && $(_h)\n",
"{\n",
"local _i _j ;\n",
"_j = $(_h[1]) ;\n",
"for _i in $(_h[2-])\n",
"{\n",
"_j = $(_j),$(_i) ;\n",
"}\n",
"MACINC on $(<) = \\\"$(_j)\\\" ;\n",
"}\n",
"}\n",
"rule File\n",
"{\n",
"DEPENDS files : $(<) ;\n",
"DEPENDS $(<) : $(>) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"MODE on $(<) = $(FILEMODE) ;\n",
"Chmod $(<) ;\n",
"}\n",
"rule Fortran\n",
"{\n",
"DEPENDS $(<) : $(>) ;\n",
"}\n",
"rule GenFile \n",
"{\n",
"local s ;\n",
"makeGristedName s : $(<) ;\n",
"Depends $(s) : $(>[1]:S=$(SUFEXE)) $(>[2-]) ;\n",
"GenFile1 $(s) : $(>[1]:S=$(SUFEXE)) $(>[2-]) ;\n",
"Clean clean : $(s) ;\n",
"}\n",
"rule GenFile1\n",
"{\n",
"MakeLocate $(<) : $(LOCATE_SOURCE) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"}\n",
"rule HardLink\n",
"{\n",
"DEPENDS files : $(<) ;\n",
"DEPENDS $(<) : $(>) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"}\n",
"rule HdrRule\n",
"{\n",
"local s ;\n",
"if $(HDRGRIST) \n",
"{ \n",
"s = $(>:G=$(HDRGRIST)) ;\n",
"} else { \n",
"s = $(>) ; \n",
"}\n",
"INCLUDES $(<) : $(s) ;\n",
"SEARCH on $(s) = $(HDRSEARCH) ;\n",
"NOCARE $(s) ;\n",
"HDRSEARCH on $(s) = $(HDRSEARCH) ;\n",
"HDRSCAN on $(s) = $(HDRSCAN) ;\n",
"HDRRULE on $(s) = $(HDRRULE) ;\n",
"HDRGRIST on $(s) = $(HDRGRIST) ;\n",
"}\n",
"rule InstallInto\n",
"{\n",
"local i t ;\n",
"t = $(>:G=installed) ;\n",
"DEPENDS install : $(t) ;\n",
"DEPENDS $(t) : $(>) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"MakeLocate $(t) : $(<) ;\n",
"Clean uninstall : $(t) ;\n",
"for i in $(>)\n",
"{\n",
"Install $(i:G=installed) : $(i) ;\n",
"}\n",
"if ! $(INSTALL)\n",
"{\n",
"Chmod $(t) ;\n",
"if $(OWNER) { Chown $(t) ; OWNER on $(t) = $(OWNER) ; }\n",
"if $(GROUP) { Chgrp $(t) ; GROUP on $(t) = $(GROUP) ; }\n",
"}\n",
"}\n",
"rule InstallBin\n",
"{\n",
"InstallInto $(<) : $(>) ;\n",
"MODE on $(>:G=installed) = $(EXEMODE) ;\n",
"}\n",
"rule InstallFile\n",
"{\n",
"InstallInto $(<) : $(>) ;\n",
"MODE on $(>:G=installed) = $(FILEMODE) ;\n",
"}\n",
"rule InstallLib\n",
"{\n",
"InstallInto $(<) : $(>) ;\n",
"MODE on $(>:G=installed) = $(FILEMODE) ;\n",
"}\n",
"rule InstallMan\n",
"{\n",
"local i s d ;\n",
"for i in $(>)\n",
"{\n",
"switch $(i:S)\n",
"{\n",
"case .1 : s = 1 ; case .2 : s = 2 ; case .3 : s = 3 ;\n",
"case .4 : s = 4 ; case .5 : s = 5 ; case .6 : s = 6 ;\n",
"case .7 : s = 7 ; case .8 : s = 8 ; case .l : s = l ;\n",
"case .n : s = n ; case .man : s = 1 ;\n",
"}\n",
"d = man$(s) ;\n",
"InstallInto $(d:R=$(<)) : $(i) ;\n",
"}\n",
"MODE on $(>:G=installed) = $(FILEMODE) ;\n",
"}\n",
"rule InstallShell\n",
"{\n",
"InstallInto $(<) : $(>) ;\n",
"MODE on $(>:G=installed) = $(SHELLMODE) ;\n",
"}\n",
"rule Lex\n",
"{\n",
"DEPENDS $(<) : $(>) ;\n",
"MakeLocate $(<) : $(LOCATE_SOURCE) ;\n",
"Clean clean : $(<) ;\n",
"}\n",
"rule Library\n",
"{\n",
"LibraryFromObjects $(<) : $(>:S=$(SUFOBJ)) ;\n",
"Objects $(>) ;\n",
"}\n",
"rule LibraryFromObjects\n",
"{\n",
"local i l s ;\n",
"makeGristedName s : $(>) ;\n",
"l = $(<:S=$(SUFLIB)) ;\n",
"if $(KEEPOBJS)\n",
"{\n",
"DEPENDS obj : $(s) ;\n",
"}\n",
"else\n",
"{\n",
"DEPENDS lib : $(l) ;\n",
"}\n",
"if ! $(l:D)\n",
"{\n",
"MakeLocate $(l) $(l)($(s:BS)) : $(LOCATE_TARGET) ;\n",
"}\n",
"if $(NOARSCAN) \n",
"{ \n",
"DEPENDS $(l) : $(s) ;\n",
"}\n",
"else\n",
"{\n",
"DEPENDS $(l) : $(l)($(s:BS)) ;\n",
"for i in $(s)\n",
"{\n",
"DEPENDS $(l)($(i:BS)) : $(i) ;\n",
"}\n",
"}\n",
"Clean clean : $(l) ;\n",
"if $(CRELIB) { CreLib $(l) : $(s[1]) ; }\n",
"Archive $(l) : $(s) ;\n",
"if $(RANLIB) { Ranlib $(l) ; }\n",
"if ! ( $(NOARSCAN) || $(KEEPOBJS) ) { RmTemps $(l) : $(s) ; }\n",
"}\n",
"rule Link\n",
"{\n",
"MODE on $(<) = $(EXEMODE) ;\n",
"Chmod $(<) ;\n",
"}\n",
"rule LinkLibraries\n",
"{\n",
"local t ;\n",
"if $(<:S)\n",
"{\n",
"t = $(<) ;\n",
"} else {\n",
"t = $(<:S=$(SUFEXE)) ;\n",
"}\n",
"DEPENDS $(t) : $(>:S=$(SUFLIB)) ;\n",
"NEEDLIBS on $(t) += $(>:S=$(SUFLIB)) ;\n",
"}\n",
"rule Main\n",
"{\n",
"MainFromObjects $(<) : $(>:S=$(SUFOBJ)) ;\n",
"Objects $(>) ;\n",
"}\n",
"rule MainFromObjects\n",
"{\n",
"local s t ;\n",
"makeGristedName s : $(>) ;\n",
"makeSuffixed t $(SUFEXE) : $(<) ;\n",
"if $(t) != $(<)\n",
"{\n",
"DEPENDS $(<) : $(t) ;\n",
"NOTFILE $(<) ;\n",
"}\n",
"DEPENDS exe : $(t) ;\n",
"DEPENDS $(t) : $(s) ;\n",
"MakeLocate $(t) : $(LOCATE_TARGET) ;\n",
"Clean clean : $(t) ;\n",
"Link $(t) : $(s) ;\n",
"}\n",
"rule MakeLocate\n",
"{\n",
"if $(>)\n",
"{\n",
"LOCATE on $(<) = $(>) ;\n",
"Depends $(<) : $(>[1]) ;\n",
"MkDir $(>[1]) ;\n",
"}\n",
"}\n",
"rule MkDir\n",
"{\n",
"if $(<) != $(DOT) && ! $($(<)-mkdir) \n",
"{\n",
"local s ;\n",
"$(<)-mkdir = true ;\n",
"MkDir1 $(<) ;\n",
"NOUPDATE $(<) ;\n",
"Depends dirs : $(<) ;\n",
"s = $(<:P) ;\n",
"if $(NT)\n",
"{\n",
"switch $(s)\n",
"{\n",
"case *:   : s = ;\n",
"case *:\\\\ : s = ;\n",
"}\n",
"}\n",
"if $(s) && $(s) != $(<)\n",
"{\n",
"Depends $(<) : $(s) ;\n",
"MkDir $(s) ;\n",
"}\n",
"else if $(s)\n",
"{\n",
"NOTFILE $(s) ;\n",
"}\n",
"}\n",
"}\n",
"rule Object\n",
"{\n",
"local h ;\n",
"Clean clean : $(<) ;\n",
"MakeLocate $(<) : $(LOCATE_TARGET) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"HDRS on $(<) = $(SEARCH_SOURCE) $(HDRS) $(SUBDIRHDRS) ;\n",
"if $(SEARCH_SOURCE)\n",
"{\n",
"h = $(SEARCH_SOURCE) ;\n",
"}\n",
"else\n",
"{\n",
"h = \"\" ;\n",
"}\n",
"HDRRULE on $(>) = HdrRule ;\n",
"HDRSCAN on $(>) = $(HDRPATTERN) ;\n",
"HDRSEARCH on $(>) = $(HDRS) $(SUBDIRHDRS) $(h) $(STDHDRS) ;\n",
"HDRGRIST on $(>) = $(HDRGRIST) ;\n",
"switch $(>:S)\n",
"{\n",
"case .asm : As $(<) : $(>) ;\n",
"case .c :	Cc $(<) : $(>) ;\n",
"case .C :	C++ $(<) : $(>) ;\n",
"case .cc :	C++ $(<) : $(>) ;\n",
"case .cpp : C++ $(<) : $(>) ;\n",
"case .f :	Fortran $(<) : $(>) ;\n",
"case .l :	Cc $(<) : $(<:S=.c) ;\n",
"Lex $(<:S=.c) : $(>) ;\n",
"case .s :	As $(<) : $(>) ;\n",
"case .y :	Cc $(<) : $(<:S=.c) ;\n",
"Yacc $(<:S=.c) : $(>) ;\n",
"case * :	UserObject $(<) : $(>) ;\n",
"}\n",
"}\n",
"rule ObjectCcFlags\n",
"{\n",
"local s ;\n",
"makeGristedName s : $(<:S=$(SUFOBJ)) ;\n",
"CCFLAGS on $(s) += $(>) ;\n",
"}\n",
"rule ObjectC++Flags\n",
"{\n",
"local s ;\n",
"makeGristedName s : $(<:S=$(SUFOBJ)) ;\n",
"C++FLAGS on $(s) += $(>) ;\n",
"}\n",
"rule ObjectHdrs\n",
"{\n",
"local s ;\n",
"makeGristedName s : $(<:S=$(SUFOBJ)) ;\n",
"HDRS on $(s) += $(>) ;\n",
"}\n",
"rule Objects\n",
"{\n",
"local i s ;\n",
"makeGristedName s : $(<) ;\n",
"for i in $(s)\n",
"{\n",
"Object $(i:S=$(SUFOBJ)) : $(i) ;\n",
"DEPENDS obj : $(i:S=$(SUFOBJ)) ;\n",
"}\n",
"}\n",
"rule RmTemps\n",
"{\n",
"TEMPORARY $(>) ;\n",
"}\n",
"rule Setuid\n",
"{\n",
"local t ;\n",
"if $(<:S)\n",
"{\n",
"t = $(<) ;\n",
"} else {\n",
"t = $(<:S=$(SUFEXE)) ;\n",
"}\n",
"MODE on $(t) = 4711 ;\n",
"}\n",
"rule Shell\n",
"{\n",
"DEPENDS shell : $(<) ;\n",
"DEPENDS $(<) : $(>) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"MODE on $(<) = $(SHELLMODE) ;\n",
"Clean clean : $(<) ;\n",
"Chmod $(<) ;\n",
"}\n",
"rule SubDir\n",
"{\n",
"local r s ;\n",
"if ! $($(<[1]))\n",
"{\n",
"if ! $(<[1])\n",
"{\n",
"EXIT SubDir syntax error ;\n",
"}\n",
"makeSubDir $(<[1]) : $(<[2-]) ;\n",
"}\n",
"if ! $($(<[1])-included)\n",
"{\n",
"$(<[1])-included = TRUE ;\n",
"r = $($(<[1])RULES) ;\n",
"if ! $(r)\n",
"{\n",
"r = $(JAMRULES:R=$($(<[1]))) ;\n",
"}\n",
"include $(r) ;\n",
"}\n",
"makeDirName s : $(<[2-]) ;\n",
"SUBDIR = $(s:R=$($(<[1]))) ;\n",
"SUBDIR_TOKENS = $(<[2-]) ;\n",
"SEARCH_SOURCE = $(SUBDIR) ;\n",
"LOCATE_SOURCE = $(ALL_LOCATE_TARGET) $(SUBDIR) ;\n",
"LOCATE_TARGET = $(ALL_LOCATE_TARGET) $(SUBDIR) ;\n",
"makeGrist SOURCE_GRIST : $(<[2-]) ;\n",
"SUBDIRCCFLAGS = ;\n",
"SUBDIRC++FLAGS = ;\n",
"SUBDIRHDRS = ;\n",
"}\n",
"rule SubDirCcFlags\n",
"{\n",
"SUBDIRCCFLAGS += $(<) ;\n",
"}\n",
"rule SubDirC++Flags\n",
"{\n",
"SUBDIRC++FLAGS += $(<) ;\n",
"}\n",
"rule SubDirHdrs\n",
"{\n",
"SUBDIRHDRS += $(<) ;\n",
"}\n",
"rule SubInclude\n",
"{\n",
"local s ;\n",
"if ! $($(<[1]))\n",
"{\n",
"EXIT Top level of source tree has not been set with $(<[1]) ;\n",
"}\n",
"makeDirName s : $(<[2-]) ;\n",
"include $(JAMFILE:D=$(s):R=$($(<[1]))) ;\n",
"}\n",
"rule Undefines\n",
"{\n",
"local t ;\n",
"if $(<:S)\n",
"{\n",
"t = $(<) ;\n",
"} else {\n",
"t = $(<:S=$(SUFEXE)) ;\n",
"}\n",
"UNDEFS on $(t) += $(UNDEFFLAG)$(>) ;\n",
"}\n",
"rule UserObject\n",
"{\n",
"EXIT \"Unknown suffix on\" $(>) \"- see UserObject rule in Jamfile(5).\" ;\n",
"}\n",
"rule Yacc\n",
"{\n",
"local h ;\n",
"h = $(<:BS=.h) ;\n",
"MakeLocate $(<) $(h) : $(LOCATE_SOURCE) ;\n",
"if $(YACC)\n",
"{\n",
"DEPENDS $(<) $(h) : $(>) ;\n",
"Yacc1 $(<) $(h) : $(>) ;\n",
"Clean clean : $(<) $(h) ;\n",
"}\n",
"INCLUDES $(<) : $(h) ;\n",
"}\n",
"rule makeString\n",
"{\n",
"local _t ;\n",
"$(<) = $(>[1]) ;\n",
"for _t in $(>[2-])\n",
"{\n",
"$(<) = $($(<))$(_t) ;\n",
"}\n",
"}\n",
"rule makeSubDir\n",
"{\n",
"local _i _d ;\n",
"if ! $(>[1]) \n",
"{\n",
"_d = $(DOT) ;\n",
"} \n",
"else\n",
"{\n",
"_d = $(DOTDOT) ;\n",
"for _i in $(>[2-])\n",
"{\n",
"_d = $(_d:R=$(DOTDOT)) ;\n",
"}\n",
"}\n",
"$(<) = $(_d) ;\n",
"}\n",
"rule addDirName\n",
"{\n",
"local _s _i ;\n",
"if ! $(>)\n",
"{\n",
"_s = $(DOT) ;\n",
"}\n",
"else if $(VMS)\n",
"{\n",
"switch $(>[1])\n",
"{\n",
"case *:* : _s = $(>[1]) ;\n",
"case \\\\[*\\\\] : _s = $(>[1]) ;\n",
"case * : _s = [.$(>[1])] ;\n",
"}\n",
"for _i in [.$(>[2-])]\n",
"{\n",
"_s = $(_i:R=$(_s)) ;\n",
"}\n",
"}\n",
"else if $(MAC)\n",
"{\n",
"_s = $(DOT) ;\n",
"for _i in $(>)\n",
"{\n",
"_s = $(_i:R=$(_s)) ;\n",
"}\n",
"}\n",
"else\n",
"{\n",
"_s = $(>[1]) ; \n",
"for _i in $(>[2-])\n",
"{\n",
"_s = $(_i:R=$(_s)) ;\n",
"}\n",
"}\n",
"$(<) += $(_s) ;\n",
"}\n",
"rule makeDirName\n",
"{\n",
"$(<) = ; addDirName $(<) : $(>) ;\n",
"}\n",
"rule makeGrist\n",
"{\n",
"local _g _i ;\n",
"_g = $(>[1]) ;\n",
"for _i in $(>[2-])\n",
"{\n",
"_g = $(_g)!$(_i) ;\n",
"}\n",
"$(<) = $(_g) ;\n",
"}\n",
"rule makeGristedName\n",
"{\n",
"local _i _o ;\n",
"if ! $(SOURCE_GRIST)\n",
"{\n",
"$(<) = $(>) ;\n",
"}\n",
"else \n",
"{\n",
"_o = ;\n",
"for _i in $(>)\n",
"{\n",
"switch $(_i)\n",
"{\n",
"case *.h :	_o += $(_i) ;\n",
"case * : 	_o += $(_i:G=$(SOURCE_GRIST)) ;\n",
"}\n",
"}\n",
"$(<) = $(_o) ;\n",
"}\n",
"}\n",
"rule makeCommon\n",
"{\n",
"if $($(<)[1]) && $($(<)[1]) = $($(>)[1])\n",
"{\n",
"$(<) = $($(<)[2-]) ;\n",
"$(>) = $($(>)[2-]) ;\n",
"makeCommon $(<) : $(>) ;\n",
"}\n",
"}\n",
"rule makeRelPath \n",
"{\n",
"local _l _r ;\n",
"_l = $(<[2-]) ;\n",
"_r = $(>) ;\n",
"makeCommon _l : _r ;\n",
"makeSubDir _l : $(_l) ;\n",
"makeDirName _r : $(_r) ;\n",
"if $(_r) = $(DOT) {\n",
"$(<[1]) = $(_l) ;\n",
"} else {\n",
"$(<[1]) = $(_r:R=$(_l)) ;\n",
"}\n",
"}\n",
"rule makeSuffixed\n",
"{\n",
"if $(<[2])\n",
"{\n",
"local _i ;\n",
"$(<[1]) = ;\n",
"for _i in $(>)\n",
"{\n",
"if $(_i:S)\n",
"{\n",
"$(<[1]) += $(_i) ;\n",
"}\n",
"else\n",
"{\n",
"$(<[1]) += $(_i:S=$(<[2])) ;\n",
"}\n",
"}\n",
"}\n",
"else\n",
"{\n",
"$(<[1]) = $(>) ;\n",
"}\n",
"}\n",
"rule unmakeDir\n",
"{\n",
"if $(>[1]:D) && $(>[1]:D) != $(>[1]) && $(>[1]:D) != \\\\\\\\ \n",
"{\n",
"unmakeDir $(<) : $(>[1]:D) $(>[1]:BS) $(>[2-]) ;\n",
"}\n",
"else\n",
"{\n",
"$(<) = $(>) ;\n",
"}\n",
"}\n",
"if $(UNIX)\n",
"{\n",
"if $(OS) = QNX \n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) $(<) +-$(>) \n",
"}\n",
"}\n",
"else if $(OS) = BEOS\n",
"{\n",
"actions together Archive\n",
"{\n",
"$(AR) $(<) $(>)\n",
"}\n",
"}\n",
"else\n",
"{\n",
"actions updated together piecemeal Archive\n",
"{\n",
"$(AR) $(<) $(>)\n",
"}\n",
"}\n",
"actions As\n",
"{\n",
"$(AS) $(ASFLAGS) -I$(HDRS) -o $(<) $(>)\n",
"}\n",
"if $(OS) = SINIX\n",
"{\n",
"actions C++\n",
"{\n",
"[ $(>:S) != .C ] && $(CP) $(>) $(>:S=.C) && trap \"rm -f $(>:S=.C)\" 0\n",
"$(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) $(>:S=.C)\n",
"}\n",
"} \n",
"else if $(RELOCATE)\n",
"{\n",
"actions C++\n",
"{\n",
"$(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) $(>)\n",
"}\n",
"}\n",
"else\n",
"{\n",
"actions C++\n",
"{\n",
"$(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) -o $(<) $(>)\n",
"}\n",
"}\n",
"actions Cc\n",
"{\n",
"$(CC) -c $(CCFLAGS) $(OPTIM) -I$(HDRS) -o $(<) $(>)\n",
"}\n",
"if $(RELOCATE)\n",
"{\n",
"actions Cc\n",
"{\n",
"$(CC) -c $(CCFLAGS) $(OPTIM) -I$(HDRS) $(>)\n",
"}\n",
"}\n",
"actions ignore CcMv\n",
"{\n",
"[ $(<) != $(>:BS=$(SUFOBJ)) ] && $(MV) $(>:BS=$(SUFOBJ)) $(<)\n",
"}\n",
"actions Chgrp\n",
"{\n",
"chgrp $(GROUP) $(<)\n",
"}\n",
"actions Chmod\n",
"{\n",
"chmod $(MODE) $(<)\n",
"}\n",
"actions Chown\n",
"{\n",
"chown $(OWNER) $(<)\n",
"}\n",
"actions piecemeal together existing Clean\n",
"{\n",
"$(RM) $(>)\n",
"}\n",
"actions File\n",
"{\n",
"$(RM) $(<)\n",
"$(CP) $(>) $(<)\n",
"}\n",
"actions GenFile1\n",
"{\n",
"$(>[1]) $(<) $(>[2-])\n",
"}\n",
"actions Fortran\n",
"{\n",
"$(FORTRAN) $(FORTRANFLAGS) -o $(<) $(>)\n",
"}\n",
"actions HardLink\n",
"{\n",
"$(RM) $(<) && $(LN) $(>) $(<)\n",
"}\n",
"if $(INSTALL)\n",
"{\n",
"actions Install\n",
"{\n",
"$(INSTALL) -m$(MODE) -o$(OWNER) -g$(GROUP) $(>) $(<)\n",
"}\n",
"}\n",
"else\n",
"{\n",
"actions Install\n",
"{\n",
"$(CP) $(>) $(<) \n",
"}\n",
"}\n",
"actions Lex\n",
"{\n",
"$(LEX) $(>) && $(MV) lex.yy.c $(<)\n",
"}\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) \n",
"}\n",
"actions MkDir1\n",
"{\n",
"$(MKDIR) $(<)\n",
"}\n",
"actions together Ranlib\n",
"{\n",
"$(RANLIB) $(<)\n",
"}\n",
"actions quietly updated piecemeal together RmTemps\n",
"{\n",
"$(RM) $(>)\n",
"}\n",
"actions Shell\n",
"{\n",
"$(AWK) '\n",
"NR == 1 { print \"$(SHELLHEADER)\" }\n",
"NR == 1 && /^[#:]/ { next }\n",
"/^##/ { next }\n",
"{ print }\n",
"' < $(>) > $(<)\n",
"}\n",
"actions Yacc1\n",
"{\n",
"$(YACC) $(YACCFLAGS) $(>) &&\n",
"{\n",
"$(MV) $(YACCFILES).c $(<[1])\n",
"$(MV) $(YACCFILES).h $(<[2])\n",
"}\n",
"}\n",
"}\n",
"else if $(NT) || $(OS2)\n",
"{\n",
"if $(BCCROOT)\n",
"{\n",
"actions C++\n",
"{\n",
"$(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) -o$(<) $(>)\n",
"}\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) -e$(<) $(LINKFLAGS) $(UNDEFS) -L$(LINKLIBS) $(NEEDLIBS) $(>)\n",
"}\n",
"actions updated together piecemeal Archive\n",
"{\n",
"$(AR) $(ARFLAGS) $(<) -+$(>)\n",
"}\n",
"actions Cc\n",
"{\n",
"$(CC) -c $(CCFLAGS) $(OPTIM) -I$(HDRS) -o$(<) $(>)\n",
"}\n",
"}\n",
"else if $(MSVC) \n",
"{\n",
"actions updated together piecemeal Archive\n",
"{\n",
"$(AR) $(<) -+$(>) ;\n",
"}\n",
"actions Cc\n",
"{\n",
"$(CC) /c $(CCFLAGS) $(OPTIM) /Fo$(<) /I$(HDRS) $(>)\n",
"}\n",
"actions C++\n",
"{\n",
"$(C++) /c $(C++FLAGS) $(OPTIM) /Fo$(<) /I$(HDRS) /Tp$(>)\n",
"}\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"}\n",
"else if $(MSVCNT)\n",
"{\n",
"actions updated together piecemeal Archive\n",
"{\n",
"if exist $(<) set _$(<:B)_=$(<)\n",
"$(AR) /out:$(<) %_$(<:B)_% $(>)\n",
"}\n",
"actions As\n",
"{\n",
"$(AS) /Ml /p /v /w2 $(>) $(<) ,nul,nul;\n",
"}\n",
"actions Cc\n",
"{\n",
"$(CC) /c $(CCFLAGS) $(OPTIM) /Fo$(<) /I$(HDRS) /I$(STDHDRS) $(>)\n",
"}\n",
"actions C++\n",
"{\n",
"$(C++) /c $(C++FLAGS) $(OPTIM) /Fo$(<) /I$(HDRS) /I$(STDHDRS) /Tp$(>)\n",
"}\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"}\n",
"else if $(WATCOM)\n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) $(<) +-$(>) \n",
"}\n",
"actions Cc\n",
"{\n",
"$(CC) $(CCFLAGS) $(OPTIM) /Fo=$(<) /I$(HDRS) $(>)\n",
"}\n",
"actions C++\n",
"{\n",
"$(C++) $(C++FLAGS) $(OPTIM) /Fo=$(<) /I$(HDRS) $(>)\n",
"}\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"}\n",
"actions Chmod\n",
"{\n",
"}\n",
"actions piecemeal together existing Clean\n",
"{\n",
"$(RM) $(>)\n",
"}\n",
"actions File\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"actions GenFile1\n",
"{\n",
"$(>[1]) $(<) $(>[2-])\n",
"}\n",
"actions Install\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"actions MkDir1\n",
"{\n",
"$(MKDIR) $(<)\n",
"}\n",
"actions quietly updated piecemeal together RmTemps\n",
"{\n",
"$(RM) $(>)\n",
"}\n",
"actions Shell\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"}\n",
"else if $(VMS)\n",
"{\n",
"actions updated together piecemeal Archive \n",
"{\n",
"lib/replace $(<) $(>[1]) ,$(>[2-])\n",
"}\n",
"actions Cc\n",
"{ \n",
"cc/obj=$(<) $(CCFLAGS) $(OPTIM) $(SLASHINC) $(>) \n",
"}\n",
"actions C++\n",
"{ \n",
"cxx/obj=$(<) $(C++FLAGS) $(OPTIM) $(SLASHINC) $(>) \n",
"}\n",
"actions Chmod\n",
"{\n",
"set file/prot=$(MODE) $(<)\n",
"}\n",
"actions piecemeal together existing Clean\n",
"{\n",
"$(RM) $(>[1]);* ,$(>[2-]);*\n",
"}\n",
"actions together quietly CreLib\n",
"{\n",
"if f$search(\"$(<)\") .eqs. \"\" then lib/create $(<)\n",
"}\n",
"actions File\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"actions GenFile1\n",
"{\n",
"mcr $(>[1]) $(<) $(>[2-])\n",
"}\n",
"actions Install\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"actions Lex\n",
"{\n",
"$(LEX) $(>) \n",
"$(MV) lex.yy.c $(<)\n",
"}\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK)/exe=$(<) $(LINKFLAGS) $(>[1]) ,$(>[2-]) ,$(NEEDLIBS)/lib ,$(LINKLIBS)\n",
"}\n",
"actions MkDir1\n",
"{\n",
"create/dir $(<)\n",
"}\n",
"actions quietly updated piecemeal together RmTemps\n",
"{\n",
"$(RM) $(>[1]);* ,$(>[2-]);*\n",
"}\n",
"actions Shell\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"actions Yacc1\n",
"{\n",
"$(YACC) $(YACCFLAGS) $(>)\n",
"$(MV) $(YACCFILES).c $(<[1])\n",
"$(MV) $(YACCFILES).h $(<[2])\n",
"}\n",
"}\n",
"else if $(MAC)\n",
"{\n",
"SP = \" \" ;\n",
"actions together piecemeal Archive \n",
"{\n",
"$(LINK) -library -o $(<) $(>)\n",
"}\n",
"actions Cc\n",
"{\n",
"set MWCincludes $(MACINC)\n",
"$(CC) -o $(<) $(CCFLAGS) $(OPTIM) $(>) \n",
"}\n",
"actions C++\n",
"{ \n",
"set MWCincludes $(MACINC)\n",
"$(CC) -o $(<) $(C++FLAGS) $(OPTIM) $(>) \n",
"}\n",
"rule Chmod\n",
"{\n",
"}\n",
"actions piecemeal together existing Clean\n",
"{\n",
"$(RM) $(>)\n",
"}\n",
"actions File\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"actions GenFile1\n",
"{\n",
"$(>[1]) $(<) $(>[2-])\n",
"}\n",
"actions Install\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) -o $(<) $(LINKFLAGS) $(>) $(NEEDLIBS) \"$(LINKLIBS)\"\n",
"}\n",
"actions MkDir1\n",
"{\n",
"$(MKDIR) $(<)\n",
"}\n",
"actions quietly updated piecemeal together RmTemps\n",
"{\n",
"$(RM) $(>)\n",
"}\n",
"actions Shell\n",
"{\n",
"copy $(>) $(<)\n",
"}\n",
"}\n",
"rule BULK { Bulk $(<) : $(>) ; }\n",
"rule FILE { File $(<) : $(>) ; }\n",
"rule HDRRULE { HdrRule $(<) : $(>) ; }\n",
"rule INSTALL { Install $(<) : $(>) ; }\n",
"rule LIBRARY { Library $(<) : $(>) ; }\n",
"rule LIBS { LinkLibraries $(<) : $(>) ; }\n",
"rule LINK { Link $(<) : $(>) ; }\n",
"rule MAIN { Main $(<) : $(>) ; }\n",
"rule SETUID { Setuid $(<) ; }\n",
"rule SHELL { Shell $(<) : $(>) ; }\n",
"rule UNDEFINES { Undefines $(<) : $(>) ; }\n",
"rule INSTALLBIN { InstallBin $(BINDIR) : $(<) ; }\n",
"rule INSTALLLIB { InstallLib $(LIBDIR) : $(<) ; }\n",
"rule INSTALLMAN { InstallMan $(MANDIR) : $(<) ; }\n",
"{\n",
"if $(JAMFILE) { include $(JAMFILE) ; }\n",
"}\n",
0 };
# Change User Description Committed
#39 23298 Nick Poole Updating Jam source

The changes here include a simplified Windows build process:
the makefile now has 2 MSVC sections, one 32-bit the other
64-bit.
#38 9949 brett Build rules for jam on Darwin 9.0.


p4transfer.py: Transferred from production
#37 9948 brett Update build rules for AIX53.


p4transfer.py: Transferred from production
#36 9947 brett On a Windows debug build the /MT flag was used in addition to
the /MTd flag.  Basically harmless except the compiler issued
a warning for every file compiled.

Removed the use of the /MT flag in the jambase arena.  This
allows the Jamrules to properly set this flag as required.

Also when doing a Smart Heap debug build, duplicate symbols
in the Smart Heap library conflicted with the standard
Windows CRT library.  Adding a /FORCE to the link line solves
this problem.  This is a very narrow case and should not effect
builds without Smart Heap.

Jam must be rebuilt to remove the /MT and /MTd warning.


p4transfer.py: Transferred from production
#35 9946 brett Remove hard coded paths to the Visual Studio SDK libraries.

As of Visual Studio 2008 and including 2010 the SDK libraries,
like kernel32.lib, have been moved out of the VC directory
structure.  These hard coded paths prevented jam from building.

Test built jam with VS2005 x64 and x86, VS2010 x64 and x86
with these new settings.

Test built main/p4 in these combinations as well.


p4transfer.py: Transferred from production
#34 9945 brett Followon change to 142516.

The x86 build was using VS2003 with the VS2005 flags.

Placed the VS2003 x86 build rules before the VS2005 x86 build
rules and accounted for both MSVCDIR and MSVCDir.


p4transfer.py: Transferred from production
#33 9944 brett Move the /MT flag for NET 2005 into jam's Jamfile and out
of the Jambase file.  This removes the conflict with the
various TYPE=dyn, TYPE=dyng and so on, yet compiles jam as
multi threaded.


p4transfer.py: Transferred from production
#32 9943 brett Build jam on Windows using NET 2005 in X86 mode.
This is the counter part to NET 2005 in X64 mode.


p4transfer.py: Transferred from production
#31 9942 noahf Follow-on to change 129197: Update JAMBASEDATE and submit updated
jambase.c generated from Jambase.


p4transfer.py: Transferred from production
#30 9941 Perforce staff New jambase.c to follow new Jambase.


p4transfer.py: Transferred from production
#29 9940 Perforce staff Fix jam HdrRule change 79346 -- it has horrible combinatoric
behavior when you have system include files that go like this:

    arpa/something includes
    sys/something includes
    machine/something includes
    sys/something-else

Now HdrRule tries to be as conservative as possible to avoid
building monster SEARCH lists.

This is needed for AIX 5.3, where they apparently have such wild
include mazes.

Change to unreleased behavior.


p4transfer.py: Transferred from production
#28 9939 brett An attempt at sorting out the various 64bit Windows builds.

IA64 indicates the Intel Itanium 64bit Windows build.
X64 indicates the AMD64 and the Intel EM64T 64bit Windows build.

It should not be necessary to set MSVCVer or OSPLAT for these builds.

Hopefully these changes didn't break the AMD64 Linux build.


p4transfer.py: Transferred from production
#27 9938 brett Jam changes for building on the AMD64 platform.
 The .NET 2005
beta2 compiler requires several flags.  First it is necessary
to turn off the depreciation stuff, CRT functions like strcpy
sprintf and so on are now viewed as insecure by MS.  For now it
is still possible to use them with the correct application of
compile flags.  MS is making noises in line with taking these
functions away for good.

The "Win64" token was used for 64 bit builds.  This is now a
bit ambiguous since it covers x64, ia64 and em64t.  With this
change Win64 has been retired and we use x64 for amd64, ia64
for the Itanium and em64t for the extended memory processors.
Set MSVCVer accordingly.  MSVCNT is set as always, to the
location of the VC directory, VC98, VC7 and now just VC.

For the most part the x64 build works on amd64, the exception
being a template problem in nettcp.cc.  That problem will not
be corrected in this change.


p4transfer.py: Transferred from production
#26 9937 tony jam and 2004.2 p4 client for AS/400.
Built on AS/400 V5R2 with native
ILE C/C++ compiler. Note, this build reports itself as
P4/AS400/2004.2/76944 but this change contains porting changes that
were required to make the build work so the changelist number is incorrect.
This can be resolved with a clean build for 2005.1 at a later date.

p4.sav and jam.sav are AS/400 "Save Files" that can be used to install
the software on an AS/400 machine. The p4.sav file includes the p4.cmd
and p4sync.cmd files we distributed with our older AS/400 builds. These
files define a forms-type interface for supplying the parameters to the
commands when you run them.

Porting change only. No functional change.


p4transfer.py: Transferred from production
#25 9936 Perforce staff Fix to HdrRule to handle '#include "path/file"': if the included
file has a directory component, then SEARCH and HDRSEARCH are set
to include the previous HDRSEARCH with 'path' appended. Without
this, then any files included by "path/file" might not be found
by jam, as it didn't know to look in the 'path' subdirectory.

This is needed for p4v's central 'windows' include file.


p4transfer.py: Transferred from production
#24 3072 Perforce staff Bring generated jam files up to date.
#23 2850 rmg Mac classic MPW Codewarrior 7 upgrades: minor compiling issues, new paths
in Jambase for libraries and includes, and separate out GenFile1 that sets PATH
for UNIX only, as it does't work under MPW (or anything other than with sh).

Porting change, noted in RELNOTES.

=== computer:1666: Change 41285 by evalynne@evalynne-bld-mac on 2003/02/05 11:47:19
#22 2849 rmg WinXP IA64 porting: set MSVCNT to the root of the SDK and
MSVCVer to Win64.

Jam: change handle type to long long (too much to include
windows.h?); bury IA64 in the library path in Jambase.

timer.cc: use long long for timer.

Also pulled over main's Jamsh.bat and extended it to handle the
IA64 SDK environment when MSVCVer=Win64.

Finally wrote a TarBall rule for NT that works (still uses tar
and cp, but written in cmd syntax), so 'jam api' works.

Porting changes, noted in RELNOTES.

=== computer:1666: Change 40867 by perforce@tridium on 2003/01/24 09:01:01
#21 2615 rmg Remove NT FQuote rule, as (at least with the command shell
I use), \" is required to pass quotes on the command line.

Fix to bug introduced by 2.5rc1.

Noted in the RELNOTES (for the moment) as a change between
2.5rc1 and 2.5rc2.

=== computer:1666: Change 40127 by seiwald@tricks-seiwald on 2003/01/14 16:20:25
#20 2567 rmg Check in regenerated jambase.c, prepatory to 2.5rc1.
#19 2557 rmg Shuffle mechanism for optional Jamrules includes: now no error
message is issued for a missing include file marked with NOCARE.

Previously, we used Glob to try to find the optional Jamrules
files, but on VMS that doesn't work so well: Glob returns all
uppercase file names with .'s at the end, which doesn't match
"Jamrules" at all.

The NOCARE part is a user-visible change documented in RELNOTES.

=== computer:1666: Change 39273 by seiwald@waffle-cyg-seiwald on 2002/12/19 22:44:03
#18 2503 rmg No longer link jam with advapi32.lib -- it isn't needed
and it keeps moving.

No functional change.

=== computer:1666: Change 38674 by seiwald@tricks-seiwald on 2002/12/10 12:02:55
#17 2497 rmg Jambase no longer announces the compiler on Windows.
 It doesn't
announce anything else.

User visible change documented in RELNOTES.

=== computer:1666: Change 38194 by seiwald@tricks-seiwald on 2002/11/25 15:02:57
#16 2496 rmg Fix SubInclude's error message so that it actually mentions
the variable that is unset.

Also bumped patchlevel to 2.4.2 capriciously.

Change to unreleased behavior.

=== computer:1666: Change 38182 by seiwald@tricks-seiwald on 2002/11/25 10:47:50
#15 2493 rmg Rewrite the past: update all jam's source with comments to
reflect changes since about 2.3, very early 2001.

Whitespace only change.

=== computer:1666: Change 37660 by seiwald@play-seiwald on 2002/11/06 22:41:35

Note: I regenerated jamgram.c on my linux 7.3 system prior to
the submit, since patch was so unhappy trying to lay down the
changes from Christopher's change. Presumably this is just due to
different yacc/bison/whatever particulars on the system where
Christopher made the changes originally. - rmg
#14 2480 rmg Rewrite jam's SubDir rule to allow multiple roots.

Infrastructure change.

=== computer:1666: Change 33320 by seiwald@thin on 2002/05/13 10:10:50
#13 1580 rmg Changes for 2.4beta.

Yes, Christopher, I brashly said "2.4-dev WAS the beta" at tea
yesterday, but I've since come to my better instincts (got
chicken?), so this one will say

  rmg $ jam -v
  Jam 2.4beta. OS=LINUX. Copyright 1993-2002 Christopher Seiwald.

for a week or two, at least.
#12 1539 Perforce staff Fix definitions of FIncludes/FDefines for OS2 and NT, mistakes
caught by Craigh McPheeters.

This corrects behavior altered since jam 2.3 and prior to 2.4.
#11 1532 Perforce staff Submit up-to-date built source files for bootstrapping.
Previously, you needed jam to build jam because the built
source files, which make(1) doesn't make, were out of date.
#10 1355 rmg Record integration of Change 281 by john_belmonte.
 (This was
actually dropped in as part of the Jam 2.3 release; the
present change serves to record the fact in the integration
history, only.)
#9 1344 rmg Under NT, default $(MV) to "move /y" in Jambase.
Logically (and in the integ hhistory) integrates Change 390 by Eric Scouten.

Cc: eric@scouten.com
#8 1319 rmg Jam 2.3 + Perforce's internal changes.

This change is a drop of the Perforce internal Jam changes
since the 2.3 public release. The individual changes
represented herein are preserved in the
//guest/richard_geiger/intjam/ branch.

The intent of this drop is to provide a base, from which other
contributors' Jam branches may be integrated into. It is not
intended to become a packaged release in this state. We will
be integrating changes from other users prior to creating the
next packaged release.

Please refer to the src/RELNOTES file for an overview of the
changes present in this integration.

  - Richard Geiger
  Open Source Engineer at Perforce
#7 486 Perforce staff Jam 2.3.
 See RELNOTES for a list of changes from 2.2.x.

Just about every source file was touched when jam got ANSI-fied.
#6 211 Perforce staff Jeff Sickel's Mac OS X port.
#5 76 Laura Wingerd Integrate command-block-too-long fix, plus minor doc
updates. Jam/MR release level is now 2.2.5.
(change 72, change 73, change 74, change 75)
#4 67 Laura Wingerd Integrate Perforce's jam changes & project page update
(change 59, change 60, change 61, change 62, change 63, change 64,
change 66)
#3 5 Perforce maintenance Jam/MR 2.2.4 (HDRPATTERN, JAMUNAME, JAMSHELL, plus misc tweaks)
#2 4 Perforce maintenance Jam/MR 2.2.2 (AmigaOS support)
#1 2 laura Add Jam/MR 2.2 source