l bb__text__TEXT__data__DATAT* __cstring__TEXT`*+$$ P`*`*`*`*`*`*`*b*`*`*`*~**********+ +`*+*@+*++,`*@,u,},},`*,*,*,,},,*,-},!-*4-M-},h-*z-},-*-.`.,.,. /`/// 0`000, 1,`11},},`*1111122)2`*<2`*Q2*2`*223.3`333334@4g444},4* 5`*R5l555533566 +66g4H6`66},6*`*6`*`*7`*B7X7r77.357757 8`8H686},8* 9`*B9*`99 :u,},`*B7X7V:7.3577:::;H6@;6},;*;`*;; <X<5q<<<<<66=g4=*=C=`====6=}, >*@>`*e>>>>>??6?O?e?~??},?*?`*@@>>>7@?6?O?T@},@*@`*@A>>> A`AAAAO?T@A},B*"B`*@BVBkB~BBBBBBC},-*@CC},`*C},C*D`*-D`*+*@+*++,`*@,u,},},`*,*=D*KDcD},-*-D,D E,`E,E F,FF, G`G,1},},`*GGGGG22)2`*<2`*G*;H;@HX<5q<<<<<66=g4=*=C=H===6},H*HHHI%I@I_IyIIIIIIJ},-* J},},iJ*yJJJJJJJK$K:KRKjK|K766KKH6KKK L L=GL=`*^L*LL},},L* M`*M`*(M@MMM`*MN`N`*NN O`*YONO`*O`*OO@PP`*PPPPQ,Q>Q`QQQR(RDRg4=\RtRR=R},R*R SHS[S5xSSSSSS THT7`Tg4TTT UU6U},KU* SaU5SSSSS TsU`Tg4TTT UU6U},U*^L*UU`*UaUT`*UaUUSUV=T`*,VV9V`*PVV`*]VaUUV`*mVV`*zVaUVVVVg4V`*WV`*"W/WV`*HWWWW`*WV`*WV`*WWJW5W3Xg4V`*5XV9V`*AXV`*OXV`X`*Xg4X`*XV9V},`*`*J5SSSX366XTX UU6U`*XY'Y@Y},`*_YyY`*`*Y`*`*YYYYZ!ZJJJ2ZFZG<XZnZZZjKZZZ[@[3a[66s[[[[=[[\+\=\O\m\\\\\ ]R]7]I][]m]`*]]`*]`*`*`*@^^^_`*`*_*&_@__},`*_*_`*_*_},},`*`* `*&_`*`* `},`*`*R`*&_`*`*[`*k`},`*`*``*`a},`*4a*&_`*[`*k`},`*@a`*`a},`*ua*a},`*`*a*a&_b%bCb},`*Qb*&_},`*_b*bbc@ccc},`*zc*cb},`*c*a&_b},`*c*c},`*c*`*`*`* d`*Bd`dd`*`*dde e},`*`*Be*`*Te`*ae`*`*eebe`*`*_*e`*ff5f`*Df*]flf},`*f*ff},},},`*f*f`*g@g},`*pg*gg},`*g*gg},`*g*`*g`*_*h* h`hhh},`*i`* i},`*g},`*Bi*g`i},`*i*i&_ci},`*i*ij},`*j*@jj},`*j*j*j`* k`*Ok*`k},k`*k},},`*k*k`*`*ll`*`*8l*Hl},-*_l},`*`*vl*l},`*l*`*l},-*`*m`*#m*@m},},`*cm`*m`*m`*m`*`* n},`*`*n*k`*`*ln`*`*8l*Hl},-*_l},`*`*vl*n},`*l`*cm`*`*j*o`*@o},po*oo`*oo`* p@p`*pp`*p q`*`qq`*q* r},`*br},-*rr},},`*`*`*s*0s},`*`*Ns*hss`*ss`* t@tt`*t`*u-u},`*`*Ku*`u},`*`*iu},`*`*u*`*hss`*uu`*u-u},`*`*u*},`*`*u* vCb},`*&v*`*@v`*vv},`*v*`* wSw`*pw*w},wx},`*'x*@xj},`*kx*x`*`*lx`*`*x*xx},`*`*yy@y`*cc`*yyy},`*y},`*z*`*&z*/z`zz},},`*z*`*z`*`*z*`*zz{`*`*${`*`*~**8{*E{X{},},`*k{*8{*{{{{},},`*{*`*|},|*`*0|G|},},},`*U|*`*i`*|b`*`*|`*`*`*| }C}`}`*}`*`*}`*`*~*~.~`~~~~~@ `},},`**},`*׀*},`*8*`*``*},`**`*``* },`*R*``**},},`** `*?`*``*j*},},`*`*,*:},`*L*`},`**&_biCb},`*߄*a&_bi},`**`*`*`*/*=},`*Y*n`*`**`*},-*`*`*`* ` `**},`*`* `},`*`*"@`*`*aw},},`*`* @``*`*`* ``*`*`*`*},`**`*`*`*`*@},`*b*v},`**},`**ы},`**},`*#*`*`*4*`},`*`*},`**`*4*},`*6},`*E*`},`**},`**`*`*`*@`*l*x̎},`*`*},`*`**`*},`*`*!*@},`*`*c*`*`*{*},-*`***͏},},`*-},},`*`*=*`},`*`**`**},-*`*А`**},`*},},`*`* *`*`*@*j},},`*`**`*`*Бݑ`*`*`*`*`*`*7L\},},`*`*t*`*&z*`***},-*},},-},-*},},`*`*@`*d*`*`s`**},`*},`**},@*},`*L* },`*iJ*``*d*`*`* *+},-*`*:*`},`*–*},},`*},},`*`*`** },`**@},`*i*},`**},`**@},`*l*{},`**},`**ɘ},`**+},`*7*E},`*V*h},`**},`*ə*},`**E},`**},`***9},`*N*},`*Ś*՚},`**},`* *+},`*T*cћܛ},`**},`*"*1},`*L*\z},`*`*[`*i*},`**},`**@},},`*`*** },},`*`*j*V*h},},`*`*~****@},`**},`**},`*i* },`*N*},`** },},4**},`**},`*i*},`*N*},`** },},`**},`*N*},`**@},`**},`*i* },`**`},}, >**ģ},`**},`*i*@},`**},},;**9},`**`},`*i*},`*N* },`**},`*T*E},},?**},`** },`*N*},`**},`*٧*},`*T*E},},@** },`** },`*i*},`*N*},`** },`*T*E},},B**},`**},`*N* },`**`},`*T*E},},},`*`*C*G**9},`**},`*i* },`*N*`},`*T*E},},H**ģ},`**},`*i*},},},`*`*iJ**},`**},`*i*@},`**},`**},`*V*},`*N*@},`* *},`*T*E},},`*`*L**},`**},`*i* },`*N*`},},`***®},},`*`* ` `@`*`*`*`*@@@`*`*`*Ĵ*մ_`***},},(},`*`*<*մ_`***N},},(},`*`*i*x*},`**@},`*̶<P*},`*@`*`*)`*>`*Q},`*`*_*l*},`* ``*`*Ǻ)},`*ֺ*`*`**},5},`*I*^},`*j**@ `},},-**` `},},`**},`**`*п`**@},`**`*@`},`*`* ``* `},`*`**`*** `*Xl`**},*},},},},`*`**`* `*?*`},`*`*Q},`*`**)`*8*``**},`*`**1},},`*C},`*T*j`*`* `*@`*`*k*`*`*`*`*Df*},`*f*#1},},},`*M*f`*@g},`*`**},`*`*1*`},`**Q},`**Q},`**`*1`*`Q},`** `*1`*`Q},`*`**Q},`*`**@xj@},`*`**`*/},`*`*L JAMBASEDATE = 2004.10.07 ; if $(NT) { local SUPPORTED_TOOLSETS = BORLANDC VISUALC VISUALC16 INTELC WATCOM MINGW LCC DIGITALMARS PELLESC ; if $(JAM_TOOLSET) if ! $(JAM_TOOLSET) in $(SUPPORTED_TOOLSETS) Echo "The JAM_TOOLSET environment variable is defined but its value" ; Echo "is invalid, please use one of the following:" ; Echo ; for t in $(SUPPORTED_TOOLSETS) { Echo " " $(t) ; } Exit ; } if ! $(JAM_TOOLSET) if $(BCCROOT) JAM_TOOLSET = BORLANDC ; BORLANDC = $(BCCROOT) ; else if $(MSVC) JAM_TOOLSET = VISUALC16 ; VISUALC16 = $(MSVC) ; else if $(MSVCNT) JAM_TOOLSET = VISUALC ; VISUALC = $(MSVCNT) ; else if $(MINGW) JAM_TOOLSET = MINGW ; else Echo "Jam cannot be run because you didn't indicate which compilation toolset" ; Echo "to use. To do so, define the JAM_TOOLSET environment variable with" ; Echo "one of the following values:" ; Echo " Value Toolset Description" ; Echo " BORLANDC Borland C++" ; Echo " VISUALC Microsoft Visual C++" ; Echo " VISUALC16 Microsoft Visual C++ 16 bit" ; Echo " INTELC Intel C/C++" ; Echo " WATCOM Watcom C/C++" ; Echo " MINGW MinGW (gcc)" ; Echo " LCC Win32-LCC" ; Echo " DIGITALMARS Digital Mars C/C++" ; Echo " PELLESC Pelles C" ; Echo "The corresponding compiler must be in your path" ; Echo " e.g.: set JAM_TOOLSET=VISUALC" ; Exit ; MV ?= move /y ; CP ?= copy ; RM ?= del /f/q ; RMDIR ?= rmdir /s/q ; SLASH ?= \\ ; SUFLIB ?= .lib ; SUFOBJ ?= .obj ; SUFEXE ?= .exe ; SUFLIBSHR ?= .dll ; if $(JAM_TOOLSET) = BORLANDC Echo "Compiler is Borland C++" ; AR ?= tlib /C /P64 ; CC ?= bcc32 ; CCFLAGS ?= -w- -q -DWIN -tWR -tWM -tWC ; C++ ?= $(CC) ; C++FLAGS ?= $(CCFLAGS) -P ; LINK ?= $(CC) ; ILINK ?= ilink32 -q ; IMPLIB ?= implib ; LINKFLAGS ?= $(CCFLAGS) ; STDLIBPATH ?= $(BORLANDC)\\lib ; STDHDRS ?= $(BORLANDC)\\include ; NOARSCAN ?= true ; ILINKLIBS ?= C0D32.OBJ CW32.LIB IMPORT32.LIB ; PICFLAGS ?= -tWD ; else if $(JAM_TOOLSET) = VISUALC16 Echo "Compiler is Microsoft Visual C++ 16 bit" ; AR ?= lib /nologo ; CC ?= cl /nologo ; CCFLAGS ?= /D "\"WIN\"" ; C++ ?= $(CC) ; C++FLAGS ?= $(CCFLAGS) ; LINKLIBS ?= $(MSVC)\\lib\\mlibce.lib $(MSVC)\\lib\\oldnames.lib LINKLIBS ?= ; OPTIM ?= "" ; STDHDRS ?= $(VISUALC16)\\include ; UNDEFFLAG ?= "/u _" ; else if $(JAM_TOOLSET) = VISUALC MSVCNT ?= $(MSVCDIR) ; local I ; if $(OSPLAT) = IA64 { I = ia64\\ ; } else { I = "" ; } AR ?= lib ; AS ?= masm386 ; CC ?= cl /nologo ; CCFLAGS ?= "" ; LINK ?= link /nologo ; LINKFLAGS ?= "" ; $(MSVCNT)\\lib\\$(I)libc.lib $(MSVCNT)\\lib\\$(I)oldnames.lib $(MSVCNT)\\lib\\$(I)kernel32.lib ; STDHDRS ?= $(VISUALC)\\include ; else if $(JAM_TOOLSET) = INTELC Echo "Compiler is Intel C/C++" ; if ! $(VISUALC) Echo "As a special exception, when using the Intel C++ compiler, you need" ; Echo "to define the VISUALC environment variable to indicate the location" ; Echo "of your Visual C++ installation. Aborting.." ; CC ?= icl /nologo ; LINKLIBS ?= $(VISUALC)\\lib\\advapi32.lib $(VISUALC)\\lib\\libc.lib $(VISUALC)\\lib\\oldnames.lib $(VISUALC)\\lib\\kernel32.lib ; STDHDRS ?= $(INTELC)\include $(VISUALC)\\include ; else if $(JAM_TOOLSET) = WATCOM Echo "Compiler is Watcom C/C++" ; AR ?= wlib ; CC ?= wcc386 ; CCFLAGS ?= /zq /DWIN32 /I$(WATCOM)\\h ; # zq=quiet C++ ?= wpp386 ; CP ?= copy ; DOT ?= . ; DOTDOT ?= .. ; LINK ?= wcl386 ; LINKFLAGS ?= /zq ; # zq=quiet MV ?= move ; OPTIM ?= ; RM ?= del /f ; SLASH ?= \\ ; STDHDRS ?= $(WATCOM)\\h $(WATCOM)\\h\\nt ; SUFEXE ?= .exe ; SUFLIB ?= .lib ; SUFOBJ ?= .obj ; PICFLAGS = -s ; # disable stack checks else if $(JAM_TOOLSET) = MINGW Echo "Compiler is GCC with Mingw" ; AR ?= ar -ru ; CC ?= gcc ; CCFLAGS ?= "" ; C++ ?= $(CC) ; C++FLAGS ?= $(CCFLAGS) ; LINK ?= $(CC) ; LINKFLAGS ?= "" ; LINKLIBS ?= "" ; OPTIM ?= ; SUFOBJ = .o ; SUFLIB = .a ; SLASH = / ; else if $(JAM_TOOLSET) = LCC Echo "Compiler is Win32-LCC" ; AR ?= lcclib ; CC ?= lcc ; LINK ?= lcclnk ; NOARSCAN = true ; else if $(JAM_TOOLSET) = DIGITALMARS Echo "Compiler is Digital Mars C/C++" ; AR ?= lib -c ; CC ?= dmc ; LINK ?= link /nologo ; LINKFLAGS ?= "/EXETYPE:NT /NOMAP" ; LINKLIBS ?= USER32.LIB KERNEL32.LIB GDI32.LIB ; PICFLAGS = -mn -WD ; else if $(JAM_TOOLSET) = PELLESC Echo "Compiler is PellesC" ; AR ?= polib ; CC ?= pocc ; CCFLAGS ?= "" ; LINK ?= polink ; LINKFLAGS ?= ; LINKLIBS ?= ; OPTIM ?= ; NOARSCAN = true ; LINKLIBS ?= crt.lib oldnames.lib Win\\kernel32.lib ; Exit "On NT, set BCCROOT, MSVCNT, MINGW or MSVC to the root of the" "Borland or Microsoft directories." ; STDHRS ?= "" ; else if $(OS2) local SUPPORTED_TOOLSETS = "EMX" "WATCOM" ; TOOLSET = "" ; if $(watcom) WATCOM = $(watcom) ; TOOLSET = WATCOM ; Echo "to use. To do so, follow these simple instructions:" ; Echo " - define one of the following environment variable, with the" ; Echo " appropriate value according to this list:" ; Echo " Variable Toolset Description" ; Echo " WATCOM Watcom C/C++ Watcom install path" ; Echo " EMX EMX (gcc) EMX install path" ; Echo " - define the JAM_TOOLSET environment variable with the *name*" ; Echo " of the toolset variable you want to use." ; Echo " e.g.: set WATCOM=C:\WATCOM" ; Echo " set JAM_TOOLSET=WATCOM" ; RM = del /f ; CP = copy ; MV ?= move ; DOT ?= . ; DOTDOT ?= .. ; if $(JAM_TOOLSET) = WATCOM BINDIR ?= \\os2\\apps ; CCFLAGS ?= /zq /DOS2 /I$(WATCOM)\\h ; # zq=quiet STDHDRS ?= $(WATCOM)\\h ; else if $(JAM_TOOLSET) = EMX Echo "Compiler is GCC-EMX" ; AR ?= ar -ru ; CC ?= gcc ; CCFLAGS ?= "" ; C++ ?= $(CC) ; C++FLAGS ?= $(CCFLAGS) ; LINK ?= $(CC) ; LINKFLAGS ?= "" ; LINKLIBS ?= "" ; OPTIM ?= ; SUFOBJ = .o ; SUFLIB = .a ; UNDEFFLAG ?= "-U" ; SLASH = / ; Exit "Sorry, but the $(JAM_TOOLSET) toolset isn't supported for now" ; else if $(VMS) C++ ?= cxx ; C++FLAGS ?= ; CC ?= cc ; CCFLAGS ?= ; CHMOD ?= set file/prot= ; CP ?= copy/replace ; CRELIB ?= true ; DOT ?= [] ; DOTDOT ?= [-] ; EXEMODE ?= (w:e) ; FILEMODE ?= (w:r) ; HDRS ?= ; LINK ?= link ; MKDIR ?= create/dir ; MV ?= rename ; RM ?= delete ; RUNVMS ?= mcr ; SHELLMODE ?= (w:er) ; SLASH ?= . ; STDHDRS ?= decc$library_include ; SUFLIB ?= .olb ; switch $(OS) case OPENVMS : CCFLAGS ?= /stand=vaxc ; case VMS : LINKLIBS ?= sys$library:vaxcrtl.olb/lib ; else if $(MAC) local OPT ; CW ?= "{CW}" ; MACHDRS ?= "$(UMACHDRS):Universal:Interfaces:CIncludes" "$(CW):MSL:MSL_C:MSL_Common:Include" "$(CW):MSL:MSL_C:MSL_MacOS:Include" ; MACLIBS ?= "$(CW):MacOS Support:Universal:Libraries:StubLibraries:Interfacelib" "$(CW):MacOS Support:Universal:Libraries:StubLibraries:Mathlib" ; MPWLIBS ?= "$(CW):MacOS Support:Libraries:Runtime:Libs:MSL_MPWCRuntime_PPC.lib" "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_C_PPC_MPW.Lib" ; MPWNLLIBS ?= "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_C_PPC_MPW(NL).Lib" ; SIOUXHDRS ?= ; SIOUXLIBS ?= "$(CW):MacOS Support:Libraries:Runtime:Libs:MSL_Runtime_PPC.lib" "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_SIOUX_PPC.Lib" "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_C_PPC.Lib" ; C++ ?= mwcppc ; C++FLAGS ?= -w off ; CC ?= mwcppc ; CCFLAGS ?= -w off ; CP ?= duplicate -y ; DOT ?= ":" ; DOTDOT ?= "::" ; HDRS ?= $(MACHDRS) $(MPWHDRS) ; LINK ?= mwlinkppc ; LINKFLAGS ?= -mpwtool -warn ; LINKLIBS ?= $(MACLIBS) $(MPWLIBS) ; MKDIR ?= newfolder ; MV ?= rename -y ; RM ?= delete -y ; SLASH ?= ":" ; STDHDRS ?= ; SUFOBJ ?= .o ; else if $(OS) = BEOS && $(OSPLAT) = PPC AR ?= mwld -xml -o ; BINDIR ?= /boot/home/config/bin ; CC ?= mwcc ; CCFLAGS ?= -nosyspath ; C++FLAGS ?= -nosyspath ; CHMOD ?= chmod ; CHGRP ?= chgrp ; CHOWN ?= chown ; FORTRAN ?= "" ; LEX ?= flex ; LIBDIR ?= /boot/home/config/lib ; LINK ?= mwld ; MANDIR ?= /boot/home/config/man ; RANLIB ?= ranlib ; STDHDRS ?= /boot/develop/headers/posix ; YACC ?= bison -y ; YACCGEN ?= .c ; YACCFILES ?= y.tab ; YACCFLAGS ?= -d ; else if $(OS) = BEOS CC ?= gcc ; LINK ?= gcc ; else if $(UNIX) case AIX : LINKLIBS ?= -lbsd ; case AMIGA : case CYGWIN : CCFLAGS += -D__cygwin__ ; JAMSHELL ?= sh -c ; RANLIB ?= "" ; case DGUX : RELOCATE ?= true ; case HPUX : case INTERIX : case IRIX : case MPEIX : C++ ?= gcc ; CCFLAGS += -D_POSIX_SOURCE ; HDRS += /usr/include ; NOARUPDATE ?= true ; case MVS : case NEXT : AR ?= libtool -o ; case MACOSX : C++ ?= c++ ; MANDIR ?= /usr/local/share/man ; case NCR : case PTX : case QNX : AR ?= wlib ; CCFLAGS ?= -Q ; # quiet C++FLAGS ?= -Q ; # quiet LINKFLAGS ?= -Q ; # quiet case SCO : case SINIX : case SOLARIS : AR ?= "/usr/ccs/bin/ar ru" ; case UNICOS : OPTIM ?= -O0 ; case UNIXWARE : LEX ?= lex ; OPTIM ?= -O ; YACC ?= yacc ; SUFOBJSHR ?= .lo ; SUFLIBSHR ?= .la ; PICFLAGS ?= -fpic ; STDHDRS ?= /usr/include ; SUFOBJSHR ?= $(SUFOBJ) ; SUFLIBSHR ?= $(SUFLIB) ; DC ?= dmd ; AR ?= ar ru ; AS ?= as ; ASFLAGS ?= ; AWK ?= awk ; BINDIR ?= /usr/local/bin ; C++ ?= cc ; CP ?= cp -f ; CRELIB ?= ; EXEMODE ?= 711 ; FILEMODE ?= 644 ; FORTRAN ?= f77 ; FORTRANFLAGS ?= ; INSTALLGRIST ?= installed ; JAMFILE ?= Jamfile ; JAMRULES ?= Jamrules ; LEX ?= ; LIBDIR ?= /usr/local/lib ; LINKFLAGS ?= ; LN ?= ln ; MANDIR ?= /usr/local/man ; MKDIR ?= mkdir ; MV ?= mv -f ; RCP ?= rcp ; RM ?= rm -f ; RMDIR ?= $(RM) ; RSH ?= rsh ; SED ?= sed ; SHELLHEADER ?= "#!/bin/sh" ; SHELLMODE ?= 755 ; SLASH ?= / ; SUBDIRRULES ?= ; SUBDIRRESET ?= ASFLAGS HDRS C++FLAGS CCFLAGS ; SUFEXE ?= "" ; SUFLIB ?= .a ; UNDEFFLAG ?= "-u _" ; YACC ?= ; YACCGEN ?= ; YACCFILES ?= ; YACCFLAGS ?= ; HDRPATTERN = "^[ ]*#[ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ; OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ; Depends all : shell files lib exe obj ; Depends all shell files lib exe obj : first ; NotFile all first shell files lib exe obj dirs clean uninstall ; Always clean uninstall ; rule As Depends $(<) : $(>) ; ASFLAGS on $(<) += $(ASFLAGS) $(SUBDIRASFLAGS) ; ASHDRS on $(<) = [ FIncludes $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ] ; rule Bulk local i ; for i in $(>) File $(i:D=$(<)) : $(i) ; rule Dc DCFLAGS on $(<) += $(DCFLAGS) $(SUBDIRDCFLAGS) ; rule Cc if $(RELOCATE) CcMv $(<) : $(>) ; CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ; CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; rule C++ C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) ; rule Chmod if $(CHMOD) { Chmod1 $(<) ; } rule File Depends files : $(<) ; SEARCH on $(>) = $(SEARCH_SOURCE) ; MODE on $(<) = $(FILEMODE) ; Chmod $(<) ; rule Fortran rule GenFile local _t = [ FGristSourceFiles $(<) ] ; local _s = [ FAppendSuffix $(>[1]) : $(SUFEXE) ] ; Depends $(_t) : $(_s) $(>[2-]) ; GenFile1 $(_t) : $(_s) $(>[2-]) ; Clean clean : $(_t) ; rule GenFile1 MakeLocate $(<) : $(LOCATE_SOURCE) ; rule HardLink rule HdrMacroFile HDRMACRO $(<) ; rule HdrRule local s = $(>:G=$(HDRGRIST:E)) ; Includes $(<) : $(s) ; SEARCH on $(s) = $(HDRSEARCH) ; NoCare $(s) ; HDRSEARCH on $(s) = $(HDRSEARCH) ; HDRSCAN on $(s) = $(HDRSCAN) ; HDRRULE on $(s) = $(HDRRULE) ; HDRGRIST on $(s) = $(HDRGRIST) ; rule InstallInto local i t ; t = $(>:G=$(INSTALLGRIST)) ; Depends install : $(t) ; Clean uninstall : $(t) ; MakeLocate $(t) : $(<) ; local tt = $(i:G=$(INSTALLGRIST)) ; Depends $(tt) : $(i) ; Install $(tt) : $(i) ; Chmod $(tt) ; if $(OWNER) && $(CHOWN) Chown $(tt) ; OWNER on $(tt) = $(OWNER) ; if $(GROUP) && $(CHGRP) Chgrp $(tt) ; GROUP on $(tt) = $(GROUP) ; rule InstallBin local _t = [ FAppendSuffix $(>) : $(SUFEXE) ] ; InstallInto $(<) : $(_t) ; MODE on $(_t:G=$(INSTALLGRIST)) = $(EXEMODE) ; rule InstallFile InstallInto $(<) : $(>) ; MODE on $(>:G=$(INSTALLGRIST)) = $(FILEMODE) ; rule InstallLib rule InstallMan local i s d ; switch $(i:S) case .1 : s = 1 ; case .2 : s = 2 ; case .3 : s = 3 ; case .4 : s = 4 ; case .5 : s = 5 ; case .6 : s = 6 ; case .7 : s = 7 ; case .8 : s = 8 ; case .l : s = l ; case .n : s = n ; case .man : s = 1 ; d = man$(s) ; InstallInto $(d:R=$(<)) : $(i) ; rule InstallShell MODE on $(>:G=$(INSTALLGRIST)) = $(SHELLMODE) ; rule Lex LexMv $(<) : $(>) ; Clean clean : $(<) ; rule Library LibraryFromObjects $(<) : $(>:S=$(SUFOBJ)) ; Objects $(>) ; rule SharedLibrary SharedLibraryFromObjects $(<) : $(>:S=$(SUFOBJSHR)) : $(3) : $(4) ; SharedObjects $(>) ; if $(UNIX) rule LibToolFind if $(LIBTOOL) { return $(LIBTOOL) ; } local matches = [ Glob $(PATH) : libtool ] ; if ! $(matches) Exit "could not find 'libtool' program in current path. Aborting !" ; LIBTOOL = $(matches[1]) ; return $(LIBTOOL) ; rule LibraryFromObjects local _i _l _s ; _s = [ FGristFiles $(>) ] ; _l = $(<:S=$(SUFLIB)) ; if $(KEEPOBJS) Depends obj : $(_s) ; Depends lib : $(_l) ; if ! $(_l:D) MakeLocate $(_l) $(_l)($(_s:BS)) : $(LOCATE_TARGET) ; if $(NOARSCAN) Depends $(_l) : $(_s) ; Depends $(_l) : $(_l)($(_s:BS)) ; for _i in $(_s) Depends $(_l)($(_i:BS)) : $(_i) ; Clean clean : $(_l) ; if $(CRELIB) { CreLib $(_l) : $(_s[1]) ; } Archive $(_l) : $(_s) ; if $(RANLIB) { Ranlib $(_l) ; } if ! ( $(NOARSCAN) || $(NOARUPDATE) ) { RmTemps $(_l) : $(_s) ; } rule SharedLibraryFromObjects _l = $(<:S=$(SUFLIBSHR)) ; MakeLocate $(_l) : $(LOCATE_TARGET) ; local libtool = [ LibToolFind ] ; # find the right libtool AR on $(_l) = "$(libtool) --mode=link $(AR)" ; else if $(NT) local _implib = $(4) ; local _def = $(3) ; _implib ?= $(_l:S=$(SUFLIBSHR)$(SUFLIB)) ; _def ?= $(_l:S=.def) ; Clean clean : $(_implib) ; Depends lib : $(_implib) $(_def) ; Depends $(_implib) : $(_def) $(_l) ; Depends $(_l) : $(_def) ; DEFFILENAME on $(_l) = $(_def) ; IMPLIBNAME on $(_l) = $(_implib) ; MakeLocate $(_implib) : $(LOCATE_TARGET) ; MakeLocate $(_implib:S=.exp) : $(LOCATE_TARGET) ; if $(JAM_TOOLSET) in VISUALC BORLANDC LCC WATCOM DIGITALMARS SharedLink-$(JAM_TOOLSET) $(_l) : $(_s) : $(_implib) : $(_def) ; DllLink $(_l) : $(_s) ; Echo "Sorry, I don't know how to make a shared library on your system" ; Exit "Please contact the FTJam maintainer for help" ; rule SharedLink-VISUALC Clean clean : $(3:S=.exp) ; rule SharedLink-BORLANDC local _deffile = $(4) ; local _implib = $(3) ; LINKFLAGS on $(<) += /x /Gn /Tpd ; LINKLIBS on $(<) = $(LINKLIBS) $(ILINKLIBS) ; DllImplib $(_implib) : $(<) ; Depends $(_implib) : $(_deffile) $(<) ; Depends lib : $(_implib) ; DEFFILENAME on $(_implib) = $(_deffile) ; MakeLocate $(<:S=.tds) : $(LOCATE_TARGET) ; Clean clean : $(<:S=.tds) ; rule SharedLink-LCC if "" { Clean clean : $(4:S=.exp) ; rule SharedLink-WATCOM IMPLIB on $(<) = $(_implib) ; DEFFILE on $(<) = $(_deffile) ; rule SharedLink-DIGITALMARS rule Link MODE on $(<) = $(EXEMODE) ; rule LinkLibraries local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ; Depends $(_t) : $(>:S=$(SUFLIB)) ; NEEDLIBS on $(_t) += $(>:S=$(SUFLIB)) ; rule LinkSharedLibraries local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ; local _ext = $(SUFLIBSHR) ; if $(NT) || $(OS2) _ext = $(SUFLIBSHR)$(SUFLIB) ; Depends $(_t) : $(>:S=$(_ext)) ; NEEDLIBS on $(_t) += $(>:S=$(_ext)) ; rule Main MainFromObjects $(<) : $(>:S=$(SUFOBJ)) ; rule MainFromObjects local _s _t ; _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ; if $(_t) != $(<) Depends $(<) : $(_t) ; NotFile $(<) ; Depends exe : $(_t) ; Depends $(_t) : $(_s) ; MakeLocate $(_t) : $(LOCATE_TARGET) ; if $(JAM_TOOLSET) = BORLANDC { MakeLocate $(_t:S=.tds) : $(LOCATE_TARGET) ; Clean clean : $(_t:S=.tds) ; Link $(_t) : $(_s) ; rule MakeLocate if $(>) LOCATE on $(<) = $(>) ; Depends $(<) : $(>[1]:G=dir) ; MkDir $(>[1]:G=dir) ; rule MkDir NoUpdate $(<) ; if $(<:G=) != $(DOT) && ! $($(<)-mkdir) $(<)-mkdir = true ; Depends dirs : $(<) ; MkDir1 $(<) ; local s = $(<:P) ; switch $(s) case *: : s = ; case *:\\ : s = ; if $(UNIX) && $(OS) = CYGWIN case ?: : s = ; case ?:/ : s = ; case /cygdrive : s = ; case /cygdrive/ : s = ; if $(s) = $(<) NotFile $(s) ; else if $(s:G=) Depends $(<) : $(s) ; MkDir $(s) ; rule Object MakeLocate $(<) : $(LOCATE_TARGET) ; HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ; HDRRULE on $(>) = HdrRule ; HDRSCAN on $(>) = $(HDRPATTERN) ; HDRSEARCH on $(>) = $(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ; HDRGRIST on $(>) = $(HDRGRIST) ; DEFINES on $(<) += $(DEFINES) ; switch $(>:S) case .asm : As $(<) : $(>) ; case .c : Cc $(<) : $(>) ; case .C : C++ $(<) : $(>) ; case .cc : C++ $(<) : $(>) ; case .cpp : C++ $(<) : $(>) ; case .cxx : C++ $(<) : $(>) ; case .c++ : C++ $(<) : $(>) ; case .C++ : C++ $(<) : $(>) ; case .d : Dc $(<) : $(>) ; case .f : Fortran $(<) : $(>) ; case .l : Cc $(<) : $(<:S=.c) ; Lex $(<:S=.c) : $(>) ; case .s : As $(<) : $(>) ; case .y : Cc $(<) : $(<:S=$(YACCGEN)) ; Yacc $(<:S=$(YACCGEN)) : $(>) ; case * : UserObject $(<) : $(>) ; rule ObjectCcFlags CCFLAGS on [ FGristFiles $(<:S=$(SUFOBJ)) ] += $(>) ; rule ObjectC++Flags C++FLAGS on [ FGristFiles $(<:S=$(SUFOBJ)) ] += $(>) ; rule ObjectDefines local s = [ FGristFiles $(<:S=$(SUFOBJ)) ] ; DEFINES on $(s) += $(>) ; CCDEFS on $(s) = [ on $(s) FDefines $(DEFINES) ] ; rule ObjectHdrs HDRS on $(s) += $(>) ; CCHDRS on $(s) = [ on $(s) FIncludes $(HDRS) ] ; rule Objects local _i ; for _i in [ FGristFiles $(<) ] Object $(_i:S=$(SUFOBJ)) : $(_i) ; Depends obj : $(_i:S=$(SUFOBJ)) ; rule SharedObjects local SUFOBJ = $(SUFOBJSHR) ; Objects $(<) ; ObjectCcFlags $(<) : $(PICFLAGS) ; libtool on $(<:S=$(SUFOBJ)) = [ LibToolFind ] ; CC on $(<:S=$(SUFOBJ)) = "$(libtool) --mode=compile $(CC) -dynamic" ; rule RmTemps Temporary $(>) ; rule Setuid MODE on [ FAppendSuffix $(<) : $(SUFEXE) ] = 4711 ; rule Shell Depends shell : $(<) ; MODE on $(<) = $(SHELLMODE) ; rule SoftLink rule SubDir local _top = $(<[1]) ; local _tokens = $(<[2-]) ; if ! $(_top) Exit SubDir syntax error ; if ! $($(_top)-SET) $(_top)-SET = true ; if $($(_top)) $(_top)-UP = ; $(_top)-DOWN = ; $(_top)-ROOT = $($(_top)) ; _tokens = [ FReverse $(_tokens) ] ; SUBDIR_DOWN = [ FReverse $(SUBDIR_DOWN) ] ; FStripCommon _tokens : SUBDIR_DOWN ; if $(SUBDIR_DOWN) && $(_tokens) Echo Warning: SubDir $(<) misplaced! ; $(_top)-UP = $(SUBDIR_UP) $(_tokens) ; $(_top)-DOWN = $(SUBDIR_DOWN) ; $(_top)-ROOT = $(SUBDIR_ROOT:E="") ; $(_top) = [ FSubDirPath $(_top) ] ; SUBDIR_UP = $($(_top)-UP) ; SUBDIR_DOWN = ; SUBDIR_ROOT = $($(_top)-ROOT) ; if $($(_top)RULES) { include $($(_top)RULES) ; } else { NoCare $(JAMRULES:R=$($(_top)):G=$(_top)) ; include $(JAMRULES:R=$($(_top)):G=$(_top)) ; SUBDIR_DOWN = $($(_top)-DOWN) $(_tokens) ; SUBDIR_TOKENS = $(SUBDIR_DOWN) ; SUBDIR = [ FSubDirPath $(<) ] ; SEARCH_SOURCE = $(SUBDIR) ; LOCATE_SOURCE = $(ALL_LOCATE_TARGET) $(SUBDIR) ; LOCATE_TARGET = $(ALL_LOCATE_TARGET) $(SUBDIR) ; SOURCE_GRIST = [ FGrist $(SUBDIR_TOKENS) ] ; SUBDIR$(SUBDIRRESET) = ; $(SUBDIRRULES) $(<) ; rule FSubDirPath local _r = [ FRelPath $($(<[1])-UP) : $($(<[1])-DOWN) $(<[2-]) ] ; return $(_r:R=$($(<[1])-ROOT)) ; rule SubDirDcFlags SUBDIRDCFLAGS += $(<) ; rule SubDirCcFlags SUBDIRCCFLAGS += $(<) ; rule SubDirC++Flags SUBDIRC++FLAGS += $(<) ; rule SubDirHdrs SUBDIRHDRS += [ FDirName $(<) ] ; rule SubInclude if ! $($(<[1])) Exit SubInclude $(<[1]) without prior SubDir $(<[1]) ; SubDir $(<) ; include $(JAMFILE:D=$(SUBDIR)) ; rule SubRules Exit SubRules $(<[1]) without prior SubDir $(<[1]) ; SubDir $(>) ; rule Undefines UNDEFS on [ FAppendSuffix $(<) : $(SUFEXE) ] += $(UNDEFFLAG)$(>) ; rule UserObject Exit "Unknown suffix on" $(>) "- see UserObject rule in Jamfile(5)." ; rule Yacc local _h ; _h = $(<:BS=.h) ; MakeLocate $(<) $(_h) : $(LOCATE_SOURCE) ; if $(YACC) Depends $(<) $(_h) : $(>) ; Yacc1 $(<) $(_h) : $(>) ; YaccMv $(<) $(_h) : $(>) ; Clean clean : $(<) $(_h) ; Includes $(<) : $(_h) ; rule FGrist return $(<:J=!) ; rule FGristFiles return $(<:G=$(SOURCE_GRIST:E)) ; rule FGristSourceFiles if ! $(SOURCE_GRIST) return $(<) ; local _i _o ; for _i in $(<) switch $(_i) case *.h : _o += $(_i) ; case * : _o += $(_i:G=$(SOURCE_GRIST)) ; return $(_o) ; rule FReverse if $(1) { return [ FReverse $(1[2-]) ] $(1[1]) ; } rule FSubDir if ! $(<[1]) return $(DOT) ; local _i _d ; _d = $(DOTDOT) ; for _i in $(<[2-]) _d = $(_d:R=$(DOTDOT)) ; return $(_d) ; rule FStripCommon if $($(<)[1]) && $($(<)[1]) = $($(>)[1]) $(<) = $($(<)[2-]) ; $(>) = $($(>)[2-]) ; FStripCommon $(<) : $(>) ; rule FRelPath local _l _r ; _l = $(<) ; _r = $(>) ; FStripCommon _l : _r ; _l = [ FSubDir $(_l) ] ; _r = [ FDirName $(_r) ] ; if $(_r) = $(DOT) { return $(_l) ; return $(_r:R=$(_l)) ; rule FAppendSuffix if $(_i:S) _o += $(_i) ; _o += $(_i:S=$(>)) ; rule FQuote { return "\\\"$(<)\\\"" ; } rule FDefines { return -D$(<) ; } rule FIncludes { return -I$(<) ; } rule FDirName local _s = $(DOT) ; _s = $(_i:R=$(_s)) ; return $(_s) ; if $(OS2) rule FQuote { return "\"$(<)\"" ; } rule FIncludes { return /I$(<) ; } else if $(NT) && $(JAM_TOOLSET) != MINGW && $(JAM_TOOLSET) != LCC rule FDefines { return /D$(<) ; } rule FDefines { return "-define '$(<)'" ; } rule FIncludes { return "\"$(<:J=,)\"" ; } rule FQuote { return "\"\"\"$(<)\"\"\"" ; } rule FDefines { return "/define=( $(<:J=,) )" ; } rule FIncludes { return "/inc=( $(<:J=,) )" ; } local _s _i ; if ! $(<) _s = $(DOT) ; switch $(<[1]) case *:* : _s = $(<[1]) ; case \\[*\\] : _s = $(<[1]) ; case * : _s = [.$(<[1])] ; for _i in [.$(<[2-])] actions updated together piecemeal Archive $(AR) $(<) $(>) actions As $(AS) $(ASFLAGS) $(ASHDRS) -o $(<) $(>) actions C++ $(C++) -c -o $(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) actions Cc $(CC) -c -o $(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) actions Dc $(DC) -c -of$(<) $(DCFLAGS) $(DOPTIM) $(>) actions Chgrp $(CHGRP) $(GROUP) $(<) actions Chmod1 $(CHMOD) $(MODE) $(<) actions Chown $(CHOWN) $(OWNER) $(<) actions piecemeal together existing Clean $(RM) $(>) actions File $(CP) $(>) $(<) actions GenFile1 $(>[1]) $(<) $(>[2-]) actions Fortran $(FORTRAN) $(FORTRANFLAGS) -o $(<) $(>) actions HardLink $(RM) $(<) && $(LN) $(>) $(<) actions Install actions Lex $(LEX) $(>) actions LexMv $(MV) lex.yy.c $(<) actions Link bind NEEDLIBS $(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) actions MkDir1 $(MKDIR) $(<) actions together Ranlib $(RANLIB) $(<) actions quietly updated piecemeal together RmTemps actions Shell $(AWK) ' NR == 1 { print "$(SHELLHEADER)" } NR == 1 && /^[#:]/ { next } /^##/ { next } { print } ' < $(>) > $(<) actions SoftLink $(RM) $(<) && $(LN) -s $(>) $(<) actions Yacc1 $(YACC) $(YACCFLAGS) $(>) actions YaccMv $(MV) $(YACCFILES).c $(<[1]) $(MV) $(YACCFILES).h $(<[2]) $(C++) -c $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) $(CC) -c $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) actions ignore CcMv [ $(<) != $(>:BS=$(SUFOBJ)) ] && $(MV) $(>:BS=$(SUFOBJ)) $(<) if $(NOARUPDATE) actions Archive PATH="$PATH:." if $(JAM_TOOLSET) = VISUALC || $(JAM_TOOLSET) = INTELC if exist $(<) set _$(<:B)_=$(<) $(AR) /out:$(<) %_$(<:B)_% $(>) $(AS) /Ml /p /v /w2 $(>) $(<) ,nul,nul; $(CC) /c /Fo$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /I$(STDHDRS) $(>) $(C++) /c /Fo$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /I$(STDHDRS) /Tp$(>) $(LINK) $(LINKFLAGS) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) actions DllLink bind NEEDLIBS DEFFILENAME IMPLIBNAME $(LINK) $(LINKFLAGS) /DLL /DEF:$(DEFFILENAME) /IMPLIB:$(IMPLIBNAME) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) $(AR) $(<) -+$(>) $(CC) /c /Fo$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) $(C++) /c /Fo$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /Tp$(>) else if $(JAM_TOOLSET) = BORLANDC $(LINK) -e$(<) $(LINKFLAGS) $(UNDEFS) -L$(LINKLIBS) $(NEEDLIBS) $(>) actions DllLink bind NEEDLIBS DEFFILENAME $(ILINK) $(LINKFLAGS) $(>) , $(<) ,, $(LINKLIBS:E) $(NEEDLIBS:E) , $(DEFFILENAME) actions DllImplib bind DEFFILENAME $(IMPLIB) -a $(<) $(>) $(DEFFILENAME) $(C++) -c -o$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) $(CC) -c -o$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) actions together piecemeal Archive $(AR) $(<) $(>:T) $(CC) -c -o $(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -I$(STDHDRS) $(>) $(C++) -c -o $(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -I$(STDHDRS) $(>) actions DllLink bind DEFFILENAME IMPLIBNAME $(LINK) $(LINKFLAGS) -shared -o $(<) $(>) $(DEFFILENAME) -Wl,--out-implib,$(IMPLIBNAME) $(AR) -q $(<) +-$(>) $(CC) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /Fo=$(<) -I$(STDHDRS) $(>) $(C++) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /Fo=$(<) -I$(STDHDRS) $(>) $(LINK) $(LINKFLAGS) /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) $(LINK) $(LINKFLAGS) -l=NT_DLL -"export=$(DEFFILENAME) option implib=$(IMPLIBNAME)" /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) $(AR) /out:$(<) $(>) $(CC) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -Fo$(<) -I$(STDHDRS) $(>) $(LINK) $(LINKFLAGS) -DLL -o $(<) $(UNDEFS) $(>) $(DEFFILENAME) $(NEEDLIBS) $(LINKLIBS) actions ignore DllLinkMv $(MV) $(2) $(1) $(CC) -c $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -o$(<) -I$(STDHDRS) $(>) $(C++) -c $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -o$(<) -I$(STDHDRS) $(>) $(LINK) $(LINKFLAGS) $(>),$(<),NUL, $(NEEDLIBS) $(LINKLIBS) $(LINK) $(LINKFLAGS) /IMPLIB:$(IMPLIBNAME) $(>) , $(<) ,NUL, $(LINKLIBS:E) $(NEEDLIBS:E) , $(DEFFILENAME) $(AR) /OUT:$(<) $(>) $(CC) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /Fo $(<) -I$(STDHDRS) $(>) $(LINK) $(LINKFLAGS) /OUT:$(<) $(>) $(NEEDLIBS) $(LINKLIBS) $(LINK) $(LINKFLAGS) /DLL /DEF:$(DEFFILENAME) /IMPLIB:$(IMPLIBNAME) /OUT:$(<) $(>) $(NEEDLIBS) $(LINKLIBS) $(CC) /Fo=$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) $(C++) /Fo=$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) $(LINK) -q $(LINKFLAGS) /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) lib/replace $(<) $(>[1]) ,$(>[2-]) $(CC)/obj=$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) $(C++)/obj=$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>) $(RM) $(>[1]);* ,$(>[2-]);* actions together quietly CreLib if f$search("$(<)") .eqs. "" then lib/create $(<) mcr $(>[1]) $(<) $(>[2-]) $(LINK)/exe=$(<) $(LINKFLAGS) $(>:J=,) ,$(NEEDLIBS)/lib ,$(LINKLIBS) actions together Archive $(LINK) -library -o $(<) $(>) set -e MWCincludes $(CCHDRS) $(CC) -o $(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(>) $(CC) -o $(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(>) $(LINK) -o $(<) $(LINKFLAGS) $(>) $(NEEDLIBS) "$(LINKLIBS)" if $(WIN98) actions existing Clean del $(>) rule BULK { Bulk $(<) : $(>) ; } rule FILE { File $(<) : $(>) ; } rule HDRRULE { HdrRule $(<) : $(>) ; } rule INSTALL { Install $(<) : $(>) ; } rule LIBRARY { Library $(<) : $(>) ; } rule LIBS { LinkLibraries $(<) : $(>) ; } rule LINK { Link $(<) : $(>) ; } rule MAIN { Main $(<) : $(>) ; } rule SETUID { Setuid $(<) ; } rule SHELL { Shell $(<) : $(>) ; } rule UNDEFINES { Undefines $(<) : $(>) ; } rule INSTALLBIN { InstallBin $(BINDIR) : $(<) ; } rule INSTALLLIB { InstallLib $(LIBDIR) : $(<) ; } rule INSTALLMAN { InstallMan $(MANDIR) : $(<) ; } rule addDirName { $(<) += [ FDirName $(>) ] ; } rule makeCommon { FStripCommon $(<) : $(>) ; } rule _makeCommon { FStripCommon $(<) : $(>) ; } rule makeDirName { $(<) = [ FDirName $(>) ] ; } rule makeGrist { $(<) = [ FGrist $(>) ] ; } rule makeGristedName { $(<) = [ FGristSourceFiles $(>) ] ; } rule makeRelPath { $(<[1]) = [ FRelPath $(<[2-]) : $(>) ] ; } rule makeString { $(<) = $(>:J) ; } rule makeSubDir { $(<) = [ FSubDir $(>) ] ; } rule makeSuffixed { $(<[1]) = [ FAppendSuffix $(>) : $(<[2]) ] ; } rule _PkgAppend local result = $($(1)) ; for i in $(2) if ! $(i) in $(result) result += $(i) ; $(1) = $(result) ; rule _PkgPrepend result = $(i) $(result) ; rule PkgBegin if $(_PKG_NAME) Echo "nested package declarations are not allowed. please use" Exit "PkgEnd to finish" $(_PKG_NAME)"'s declaration" ; if ! $(PACKAGE_ROOT) PACKAGE_ROOT = [ FDirName $(HOME) packages ] ; Echo "PACKAGE_ROOT variable not set, using" $(PACKAGE_ROOT) "directory" ; _PKG_NAME = $(1[1]) ; _PKG_DESC = [ FDirName $(PACKAGE_ROOT) $(_PKG_NAME).pc ] ; _PKG_TOP = $(2) ; if ! $(_PKG_TOP) _PKG_TOP = [ FDirName $(PACKAGE_ROOT) $(_PKG_NAME) ] ; _PKG_ORG_HDRS = $(HDRS) ; _PKG_ORG_DEFINES = $(DEFINES) ; _PKG_ORG_LINKLIBS = $(LINKLIBS) ; _PKG_ORG_SUBDIRHDRS = $(SUBDIRHDRS) ; pkg-$(_PKG_NAME)-top = $(_PKG_TOP) ; _PKG_USES = ; _PKG_DEFINES = ; _PKG_INCLUDES = ; _PKG_LIBS = ; _PKG_DO_INSTALL = ; _PKG_ALL_USES = ; _PkgUpdate ; rule PkgEnd if $(_PKG_DO_INSTALL) _PkgGeneratePc $(_PKG_DESC) ; PKG on $(_PKG_DESC) = $(_PKG_NAME) ; HDRS = $(_PKG_ORG_HDRS) ; DEFINES = $(_PKG_ORG_DEFINES) ; LINKLIBS = $(_PKG_ORG_LINKLIBS) ; SUBDIRHDRS = $(_PKG_ORG_SUBDIRHDRS) ; _PKG_NAME = ; rule _PkgReverse local p ; result = $(1[1]) ; for p in $(1[2-]) result = $(p) $(result) ; return $(result) ; rule _PkgGeneratePc MkDir $(PACKAGE_ROOT) ; Depends $(1) : $(PACKAGE_ROOT) ; Depends install : $(1) ; Clean uninstall : $(1) ; Always $(1) ; # always re-install, overwrite old version actions _PkgGeneratePc echo "# this file was generated automatically - do not edit" > $(1) echo "pkg-$(PKG)-uses = $(pkg-$(PKG)-uses) ;" >> $(1) echo "pkg-$(PKG)-libs = $(pkg-$(PKG)-libs:Q) ;" >> $(1) echo "pkg-$(PKG)-defines = $(pkg-$(PKG)-defines) ;" >> $(1) echo "pkg-$(PKG)-includes = $(pkg-$(PKG)-includes:Q) ;" >> $(1) echo "pkg-$(PKG)-ok = 1 ;" >> $(1) echo # this file was generated automatically - do not edit > $(1) echo pkg-$(PKG)-uses = $(pkg-$(PKG)-uses) ; >> $(1) echo pkg-$(PKG)-libs = $(pkg-$(PKG)-libs:Q) ; >> $(1) echo pkg-$(PKG)-defines = $(pkg-$(PKG)-defines) ; >> $(1) echo pkg-$(PKG)-includes = $(pkg-$(PKG)-includes:Q) ; >> $(1) echo pkg-$(PKG)-ok = 1 ; >> $(1) rule PkgInstallPc rule _PkgUpdate local p z ; _PKG_ALL_DEFINES = ; _PKG_ALL_INCLUDES = ; _PKG_ALL_LIBS = ; _PKG_USE_LIBS = ; for p in $(_PKG_ALL_USES) _PkgAppend _PKG_ALL_DEFINES : $(pkg-$(p)-defines) ; _PkgAppend _PKG_ALL_INCLUDES : $(pkg-$(p)-includes) ; for p in [ _PkgReverse $(_PKG_ALL_USES) ] local thelibs = $(pkg-$(p)-libs) ; _PKG_ALL_LIBS += $(thelibs) ; _PKG_USE_LIBS += $(thelibs[1]) ; _PkgAppend _PKG_ALL_DEFINES : $(_PKG_DEFINES) ; _PkgAppend _PKG_ALL_INCLUDES : $(_PKG_INCLUDES) ; HDRS = $(_PKG_ORG_HDRS) $(_PKG_ALL_INCLUDES) ; DEFINES = $(_PKG_ORG_DEFINES) $(_PKG_ALL_DEFINES) ; LINKLIBS = $(_PKG_ORG_LINKLIBS) $(_PKG_ALL_LIBS) ; pkg-$(_PKG_NAME)-includes = $(_PKG_INCLUDES) ; pkg-$(_PKG_NAME)-defines = $(_PKG_DEFINES) ; pkg-$(_PKG_NAME)-uses = $(_PKG_USES) ; pkg-$(_PKG_NAME)-libs = $(_PKG_LIBS) ; rule _PkgUses for p in $(1) if ! $(p) in $(_PKG_ALL_USES) local pcfile = [ FDirName $(PACKAGE_ROOT) $(p).pc ] ; NoCare $(pcfile) ; include $(pcfile) ; if ! $(pkg-$(p)-ok) $(2) += $(p) ; else if $(pkg-$(p)-uses) _PkgUses $(pkg-$(p)-uses) ; _PKG_ALL_USES += $(p) ; rule PkgUses local pkg-missing = ; _PkgUses $(1) : pkg-missing ; if $(pkg-missing) Exit "Please install the following required packages:" $(pkg-missing) ; _PkgPrepend _PKG_USES : $(1) ; rule _PkgMakeLocate local top = $(3:E=$(DOT)) ; local dir file ss ; local dirs ; for ss in $(2) file = [ FDirName $(top) $(ss:G="") ] ; dir = $(1) ; if $(ss:D) dir = [ FDirName $(dir) $(ss:D) ] ; LOCATE on $(ss) = $(1) ; Depends $(ss) : $(dir) ; if ! $(dir) in $(dirs) dirs += $(dir) ; MkDir $(dirs) ; rule _PkgInstallInto local sources = $(2) ; local targets = $(sources:G=$(INSTALLGRIST)) ; Depends install : $(targets) ; Clean uninstall : $(targets) ; _PkgMakeLocate $(1) : $(targets) : $(3) ; for s in $(sources) local t = $(s:G=$(INSTALLGRIST)) ; Depends $(t) : $(s) ; SEARCH on $(s) = $(3) ; Install $(t) : $(s) ; Chmod $(t) ; Chown $(t) ; OWNER on $(t) = $(OWNER) ; Chgrp $(t) ; GROUP on $(t) = $(GROUP) ; rule _PkgInstallBin _PkgInstallInto $(<) : $(_t) : $(3) ; rule _PkgInstallShell _PkgInstallInto $(1) : $(2) : $(3) ; MODE on $(2:G=$(INSTALLGRIST)) = $(SHELLMODE) ; rule _PkgInstallFile MODE on $(2:G=$(INSTALLGRIST)) = $(FILEMODE) ; rule PkgIncludes _PKG_INCLUDES += $(1) ; rule PkgDefines _PKG_DEFINES += $(1) ; rule PkgInstallHeader local dir = [ FDirName $(_PKG_TOP) include ] ; _PKG_DO_INSTALL = 1 ; _PkgInstallFile [ FDirName $(dir) $(3) ] : $(1) : $(2) ; _PkgAppend _PKG_INCLUDES : $(dir) ; rule PkgInstallLib local lib = $(1:S=$(SUFLIB)) ; local dir = [ FDirName $(_PKG_TOP) lib ] ; _PkgInstallFile $(dir) : $(lib) : $(DOT) ; _PkgPrepend _PKG_LIBS : [ FDirName $(dir) $(lib) ] ; rule PkgNeedLib _PkgAppend _PKG_LIBS : $(1) ; rule PkgMain LINKLIBS on $(<:S=$(SUFEXE)) += $(LINKLIBS) ; Depends $(<:S=$(SUFEXE)) : $(_PKG_USE_LIBS) ; rule PkgGlob local files dir ; files = [ GLOB [ FDirName $(2) $(1) ] : $(3) ] ; dir = [ FDirName $(1) ] ; return $(files:D=$(dir)) ; include $(JAMFILE) ; L*H*D*@*<*8*4*0*,*(*$* ***** ****))))))))))))))))))))))))))))))))|)x)t)p)l)h)d)`)\)X)T)P)L)H)D)@)<)8)4)0),)()$) ))))) ))))((((((((((((((((((((((((((((((((|(x(t(p(l(h(d(`(\(X(T(P(L(H(D(@(<(8(4(0(,((($( ((((( ((((''''''''''''''''''''''''''''''''|'x't'p'l'h'd'`'\'X'T'P'L'H'D'@'<'8'4'0','('$' ''''' ''''&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|&x&t&p&l&h&d&`&\&X&T&P&L&H&D&@&<&8&4&0&,&(&$& &&&&& &&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%x%t%p%l%h%d%`%\%X%T%P%L%H%D%@%<%8%4%0%,%(%$% %%%%% %%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$|$x$t$p$l$h$d$`$\$X$T$P$L$H$D$@$<$8$4$0$,$($$$ $$$$$ $$$$################################|#x#t#p#l#h#d#`#\#X#T#P#L#H#D#@#<#8#4#0#,#(#$# ##### ####""""""""""""""""""""""""""""""""|"x"t"p"l"h"d"`"\"X"T"P"L"H"D"@"<"8"4"0","("$" """"" """"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!|!x!t!p!l!h!d!`!\!X!T!P!L!H!D!@!