/* Generated by mkjambase from Jambase */
const char *jambase[] = {
/* Jambase */
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"JAMBASEDATE = 2004.10.07 ;\n",
"\n",
"\n",
"\n",
"if $(NT)\n",
"{\n",
"local SUPPORTED_TOOLSETS = BORLANDC\n",
"VISUALC\n",
"VISUALC16\n",
"INTELC\n",
"WATCOM\n",
"MINGW\n",
"LCC\n",
"DIGITALMARS\n",
"PELLESC\n",
";\n",
"\n",
"if $(JAM_TOOLSET)\n",
"{\n",
"if ! $(JAM_TOOLSET) in $(SUPPORTED_TOOLSETS)\n",
"{\n",
"Echo \"The JAM_TOOLSET environment variable is defined but its value\" ;\n",
"Echo \"is invalid, please use one of the following:\" ;\n",
"Echo ;\n",
"\n",
"for t in $(SUPPORTED_TOOLSETS) { Echo \" \" $(t) ; }\n",
"Exit ;\n",
"}\n",
"}\n",
"\n",
"if ! $(JAM_TOOLSET)\n",
"{\n",
"if $(BCCROOT)\n",
"{\n",
"JAM_TOOLSET = BORLANDC ;\n",
"BORLANDC = $(BCCROOT) ;\n",
"}\n",
"else if $(MSVC)\n",
"{\n",
"JAM_TOOLSET = VISUALC16 ;\n",
"VISUALC16 = $(MSVC) ;\n",
"}\n",
"else if $(MSVCNT)\n",
"{\n",
"JAM_TOOLSET = VISUALC ;\n",
"VISUALC = $(MSVCNT) ;\n",
"}\n",
"else if $(MINGW)\n",
"{\n",
"JAM_TOOLSET = MINGW ;\n",
"}\n",
"else\n",
"{\n",
"Echo \"Jam cannot be run because you didn't indicate which compilation toolset\" ;\n",
"Echo \"to use. To do so, define the JAM_TOOLSET environment variable with\" ;\n",
"Echo \"one of the following values:\" ;\n",
"Echo ;\n",
"Echo \" Value Toolset Description\" ;\n",
"Echo ;\n",
"Echo \" BORLANDC Borland C++\" ;\n",
"Echo \" VISUALC Microsoft Visual C++\" ;\n",
"Echo \" VISUALC16 Microsoft Visual C++ 16 bit\" ;\n",
"Echo \" INTELC Intel C/C++\" ;\n",
"Echo \" WATCOM Watcom C/C++\" ;\n",
"Echo \" MINGW MinGW (gcc)\" ;\n",
"Echo \" LCC Win32-LCC\" ;\n",
"Echo \" DIGITALMARS Digital Mars C/C++\" ;\n",
"Echo \" PELLESC Pelles C\" ;\n",
"Echo ;\n",
"Echo \"The corresponding compiler must be in your path\" ;\n",
"Echo ;\n",
"Echo \" e.g.: set JAM_TOOLSET=VISUALC\" ;\n",
"Exit ;\n",
"}\n",
"}\n",
"\n",
"MV ?= move /y ;\n",
"CP ?= copy ;\n",
"RM ?= del /f/q ;\n",
"RMDIR ?= rmdir /s/q ;\n",
"SLASH ?= \\\\ ;\n",
"SUFLIB ?= .lib ;\n",
"SUFOBJ ?= .obj ;\n",
"SUFEXE ?= .exe ;\n",
"\n",
"SUFLIBSHR ?= .dll ;\n",
"\n",
"if $(JAM_TOOLSET) = BORLANDC\n",
"{\n",
"Echo \"Compiler is Borland C++\" ;\n",
"\n",
"AR ?= tlib /C /P64 ;\n",
"CC ?= bcc32 ;\n",
"CCFLAGS ?= -w- -q -DWIN -tWR -tWM -tWC ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= $(CCFLAGS) -P ;\n",
"LINK ?= $(CC) ;\n",
"ILINK ?= ilink32 -q ;\n",
"IMPLIB ?= implib ;\n",
"LINKFLAGS ?= $(CCFLAGS) ;\n",
"STDLIBPATH ?= $(BORLANDC)\\\\lib ;\n",
"STDHDRS ?= $(BORLANDC)\\\\include ;\n",
"NOARSCAN ?= true ;\n",
"ILINKLIBS ?= C0D32.OBJ CW32.LIB IMPORT32.LIB ;\n",
"PICFLAGS ?= -tWD ;\n",
"}\n",
"else if $(JAM_TOOLSET) = VISUALC16\n",
"{\n",
"Echo \"Compiler is Microsoft Visual C++ 16 bit\" ;\n",
"\n",
"AR ?= lib /nologo ;\n",
"CC ?= cl /nologo ;\n",
"CCFLAGS ?= /D \"\\\"WIN\\\"\" ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"LINK ?= $(CC) ;\n",
"LINKFLAGS ?= $(CCFLAGS) ;\n",
"LINKLIBS ?=\n",
"$(MSVC)\\\\lib\\\\mlibce.lib\n",
"$(MSVC)\\\\lib\\\\oldnames.lib\n",
";\n",
"LINKLIBS ?= ;\n",
"NOARSCAN ?= true ;\n",
"OPTIM ?= \"\" ;\n",
"STDHDRS ?= $(VISUALC16)\\\\include ;\n",
"UNDEFFLAG ?= \"/u _\" ;\n",
"}\n",
"else if $(JAM_TOOLSET) = VISUALC\n",
"{\n",
"\n",
"MSVCNT ?= $(MSVCDIR) ;\n",
"\n",
"\n",
"local I ; if $(OSPLAT) = IA64 { I = ia64\\\\ ; } else { I = \"\" ; }\n",
"\n",
"AR ?= lib ;\n",
"AS ?= masm386 ;\n",
"CC ?= cl /nologo ;\n",
"CCFLAGS ?= \"\" ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"LINK ?= link /nologo ;\n",
"LINKFLAGS ?= \"\" ;\n",
"LINKLIBS ?=\n",
"$(MSVCNT)\\\\lib\\\\$(I)libc.lib\n",
"$(MSVCNT)\\\\lib\\\\$(I)oldnames.lib\n",
"$(MSVCNT)\\\\lib\\\\$(I)kernel32.lib ;\n",
"OPTIM ?= \"\" ;\n",
"STDHDRS ?= $(VISUALC)\\\\include ;\n",
"UNDEFFLAG ?= \"/u _\" ;\n",
"}\n",
"else if $(JAM_TOOLSET) = INTELC\n",
"{\n",
"Echo \"Compiler is Intel C/C++\" ;\n",
"\n",
"if ! $(VISUALC)\n",
"{\n",
"Echo \"As a special exception, when using the Intel C++ compiler, you need\" ;\n",
"Echo \"to define the VISUALC environment variable to indicate the location\" ;\n",
"Echo \"of your Visual C++ installation. Aborting..\" ;\n",
"Exit ;\n",
"}\n",
"\n",
"AR ?= lib ;\n",
"AS ?= masm386 ;\n",
"CC ?= icl /nologo ;\n",
"CCFLAGS ?= \"\" ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"LINK ?= link /nologo ;\n",
"LINKFLAGS ?= \"\" ;\n",
"LINKLIBS ?= $(VISUALC)\\\\lib\\\\advapi32.lib\n",
"$(VISUALC)\\\\lib\\\\libc.lib\n",
"$(VISUALC)\\\\lib\\\\oldnames.lib\n",
"$(VISUALC)\\\\lib\\\\kernel32.lib ;\n",
"OPTIM ?= \"\" ;\n",
"STDHDRS ?= $(INTELC)\\include $(VISUALC)\\\\include ;\n",
"UNDEFFLAG ?= \"/u _\" ;\n",
"}\n",
"else if $(JAM_TOOLSET) = WATCOM\n",
"{\n",
"Echo \"Compiler is Watcom C/C++\" ;\n",
"\n",
"AR ?= wlib ;\n",
"CC ?= wcc386 ;\n",
"CCFLAGS ?= /zq /DWIN32 /I$(WATCOM)\\\\h ; # zq=quiet\n",
"C++ ?= wpp386 ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"CP ?= copy ;\n",
"DOT ?= . ;\n",
"DOTDOT ?= .. ;\n",
"LINK ?= wcl386 ;\n",
"LINKFLAGS ?= /zq ; # zq=quiet\n",
"LINKLIBS ?= ;\n",
"MV ?= move ;\n",
"NOARSCAN ?= true ;\n",
"OPTIM ?= ;\n",
"RM ?= del /f ;\n",
"SLASH ?= \\\\ ;\n",
"STDHDRS ?= $(WATCOM)\\\\h $(WATCOM)\\\\h\\\\nt ;\n",
"SUFEXE ?= .exe ;\n",
"SUFLIB ?= .lib ;\n",
"SUFOBJ ?= .obj ;\n",
"UNDEFFLAG ?= \"/u _\" ;\n",
"PICFLAGS = -s ; # disable stack checks\n",
"}\n",
"else if $(JAM_TOOLSET) = MINGW\n",
"{\n",
"Echo \"Compiler is GCC with Mingw\" ;\n",
"\n",
"AR ?= ar -ru ;\n",
"CC ?= gcc ;\n",
"CCFLAGS ?= \"\" ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"LINK ?= $(CC) ;\n",
"LINKFLAGS ?= \"\" ;\n",
"LINKLIBS ?= \"\" ;\n",
"OPTIM ?= ;\n",
"SUFOBJ = .o ;\n",
"SUFLIB = .a ;\n",
"SLASH = / ;\n",
"}\n",
"else if $(JAM_TOOLSET) = LCC\n",
"{\n",
"Echo \"Compiler is Win32-LCC\" ;\n",
"\n",
"AR ?= lcclib ;\n",
"CC ?= lcc ;\n",
"CCFLAGS ?= \"\" ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"LINK ?= lcclnk ;\n",
"LINKFLAGS ?= \"\" ;\n",
"LINKLIBS ?= \"\" ;\n",
"OPTIM ?= ;\n",
"NOARSCAN = true ;\n",
"}\n",
"else if $(JAM_TOOLSET) = DIGITALMARS\n",
"{\n",
"Echo \"Compiler is Digital Mars C/C++\" ;\n",
"\n",
"AR ?= lib -c ;\n",
"CC ?= dmc ;\n",
"CCFLAGS ?= \"\" ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"LINK ?= link /nologo ;\n",
"LINKFLAGS ?= \"/EXETYPE:NT /NOMAP\" ;\n",
"LINKLIBS ?= USER32.LIB\n",
"KERNEL32.LIB\n",
"GDI32.LIB ;\n",
"OPTIM ?= ;\n",
"NOARSCAN = true ;\n",
"PICFLAGS = -mn -WD ;\n",
"}\n",
"else if $(JAM_TOOLSET) = PELLESC\n",
"{\n",
"Echo \"Compiler is PellesC\" ;\n",
"\n",
"AR ?= polib ;\n",
"CC ?= pocc ;\n",
"CCFLAGS ?= \"\" ;\n",
"LINK ?= polink ;\n",
"LINKFLAGS ?= ;\n",
"LINKLIBS ?= ;\n",
"OPTIM ?= ;\n",
"NOARSCAN = true ;\n",
"LINKLIBS ?=\n",
"crt.lib oldnames.lib Win\\\\kernel32.lib ;\n",
"}\n",
"else\n",
"{\n",
"Exit \"On NT, set BCCROOT, MSVCNT, MINGW or MSVC to the root of the\"\n",
"\"Borland or Microsoft directories.\" ;\n",
"}\n",
"\n",
"STDHRS ?= \"\" ;\n",
"}\n",
"else if $(OS2)\n",
"{\n",
"local SUPPORTED_TOOLSETS = \"EMX\" \"WATCOM\" ;\n",
"\n",
"TOOLSET = \"\" ;\n",
"\n",
"if $(JAM_TOOLSET)\n",
"{\n",
"if ! $(JAM_TOOLSET) in $(SUPPORTED_TOOLSETS)\n",
"{\n",
"Echo \"The JAM_TOOLSET environment variable is defined but its value\" ;\n",
"Echo \"is invalid, please use one of the following:\" ;\n",
"Echo ;\n",
"\n",
"for t in $(SUPPORTED_TOOLSETS) { Echo \" \" $(t) ; }\n",
"Exit ;\n",
"}\n",
"}\n",
"\n",
"if ! $(JAM_TOOLSET)\n",
"{\n",
"if $(watcom)\n",
"{\n",
"WATCOM = $(watcom) ;\n",
"TOOLSET = WATCOM ;\n",
"}\n",
"else\n",
"{\n",
"Echo \"Jam cannot be run because you didn't indicate which compilation toolset\" ;\n",
"Echo \"to use. To do so, follow these simple instructions:\" ;\n",
"Echo ;\n",
"Echo \" - define one of the following environment variable, with the\" ;\n",
"Echo \" appropriate value according to this list:\" ;\n",
"Echo ;\n",
"Echo \" Variable Toolset Description\" ;\n",
"Echo ;\n",
"Echo \" WATCOM Watcom C/C++ Watcom install path\" ;\n",
"Echo \" EMX EMX (gcc) EMX install path\" ;\n",
"Echo ;\n",
"Echo \" - define the JAM_TOOLSET environment variable with the *name*\" ;\n",
"Echo \" of the toolset variable you want to use.\" ;\n",
"Echo ;\n",
"Echo \" e.g.: set WATCOM=C:\\WATCOM\" ;\n",
"Echo \" set JAM_TOOLSET=WATCOM\" ;\n",
"Echo ;\n",
"Exit ;\n",
"}\n",
"}\n",
"\n",
"RM = del /f ;\n",
"CP = copy ;\n",
"MV ?= move ;\n",
"DOT ?= . ;\n",
"DOTDOT ?= .. ;\n",
"SUFLIB ?= .lib ;\n",
"SUFOBJ ?= .obj ;\n",
"SUFEXE ?= .exe ;\n",
"\n",
"SUFLIBSHR ?= .dll ;\n",
"\n",
"if $(JAM_TOOLSET) = WATCOM\n",
"{\n",
"AR ?= wlib ;\n",
"BINDIR ?= \\\\os2\\\\apps ;\n",
"CC ?= wcc386 ;\n",
"CCFLAGS ?= /zq /DOS2 /I$(WATCOM)\\\\h ; # zq=quiet\n",
"C++ ?= wpp386 ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"CP ?= copy ;\n",
"DOT ?= . ;\n",
"DOTDOT ?= .. ;\n",
"LINK ?= wcl386 ;\n",
"LINKFLAGS ?= /zq ; # zq=quiet\n",
"LINKLIBS ?= ;\n",
"MV ?= move ;\n",
"NOARSCAN ?= true ;\n",
"OPTIM ?= ;\n",
"RM ?= del /f ;\n",
"SLASH ?= \\\\ ;\n",
"STDHDRS ?= $(WATCOM)\\\\h ;\n",
"SUFEXE ?= .exe ;\n",
"SUFLIB ?= .lib ;\n",
"SUFOBJ ?= .obj ;\n",
"UNDEFFLAG ?= \"/u _\" ;\n",
"}\n",
"else if $(JAM_TOOLSET) = EMX\n",
"{\n",
"Echo \"Compiler is GCC-EMX\" ;\n",
"AR ?= ar -ru ;\n",
"CC ?= gcc ;\n",
"CCFLAGS ?= \"\" ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"LINK ?= $(CC) ;\n",
"LINKFLAGS ?= \"\" ;\n",
"LINKLIBS ?= \"\" ;\n",
"OPTIM ?= ;\n",
"SUFOBJ = .o ;\n",
"SUFLIB = .a ;\n",
"UNDEFFLAG ?= \"-U\" ;\n",
"SLASH = / ;\n",
"}\n",
"else\n",
"{\n",
"Exit \"Sorry, but the $(JAM_TOOLSET) toolset isn't supported for now\" ;\n",
"}\n",
"}\n",
"else if $(VMS)\n",
"{\n",
"C++ ?= cxx ;\n",
"C++FLAGS ?= ;\n",
"CC ?= cc ;\n",
"CCFLAGS ?= ;\n",
"CHMOD ?= set file/prot= ;\n",
"CP ?= copy/replace ;\n",
"CRELIB ?= true ;\n",
"DOT ?= [] ;\n",
"DOTDOT ?= [-] ;\n",
"EXEMODE ?= (w:e) ;\n",
"FILEMODE ?= (w:r) ;\n",
"HDRS ?= ;\n",
"LINK ?= link ;\n",
"LINKFLAGS ?= \"\" ;\n",
"LINKLIBS ?= ;\n",
"MKDIR ?= create/dir ;\n",
"MV ?= rename ;\n",
"OPTIM ?= \"\" ;\n",
"RM ?= delete ;\n",
"RUNVMS ?= mcr ;\n",
"SHELLMODE ?= (w:er) ;\n",
"SLASH ?= . ;\n",
"STDHDRS ?= decc$library_include ;\n",
"SUFEXE ?= .exe ;\n",
"SUFLIB ?= .olb ;\n",
"SUFOBJ ?= .obj ;\n",
"\n",
"switch $(OS)\n",
"{\n",
"case OPENVMS : CCFLAGS ?= /stand=vaxc ;\n",
"case VMS : LINKLIBS ?= sys$library:vaxcrtl.olb/lib ;\n",
"}\n",
"}\n",
"else if $(MAC)\n",
"{\n",
"local OPT ;\n",
"\n",
"CW ?= \"{CW}\" ;\n",
"\n",
"MACHDRS ?=\n",
"\"$(UMACHDRS):Universal:Interfaces:CIncludes\"\n",
"\"$(CW):MSL:MSL_C:MSL_Common:Include\"\n",
"\"$(CW):MSL:MSL_C:MSL_MacOS:Include\" ;\n",
"\n",
"MACLIBS ?=\n",
"\"$(CW):MacOS Support:Universal:Libraries:StubLibraries:Interfacelib\"\n",
"\"$(CW):MacOS Support:Universal:Libraries:StubLibraries:Mathlib\" ;\n",
"\n",
"MPWLIBS ?=\n",
"\"$(CW):MacOS Support:Libraries:Runtime:Libs:MSL_MPWCRuntime_PPC.lib\"\n",
"\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_C_PPC_MPW.Lib\" ;\n",
"\n",
"MPWNLLIBS ?=\n",
"\"$(CW):MacOS Support:Libraries:Runtime:Libs:MSL_MPWCRuntime_PPC.lib\"\n",
"\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_C_PPC_MPW(NL).Lib\" ;\n",
"\n",
"SIOUXHDRS ?= ;\n",
"\n",
"SIOUXLIBS ?=\n",
"\"$(CW):MacOS Support:Libraries:Runtime:Libs:MSL_Runtime_PPC.lib\"\n",
"\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_SIOUX_PPC.Lib\"\n",
"\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_C_PPC.Lib\" ;\n",
"\n",
"C++ ?= mwcppc ;\n",
"C++FLAGS ?= -w off ;\n",
"CC ?= mwcppc ;\n",
"CCFLAGS ?= -w off ;\n",
"CP ?= duplicate -y ;\n",
"DOT ?= \":\" ;\n",
"DOTDOT ?= \"::\" ;\n",
"HDRS ?= $(MACHDRS) $(MPWHDRS) ;\n",
"LINK ?= mwlinkppc ;\n",
"LINKFLAGS ?= -mpwtool -warn ;\n",
"LINKLIBS ?= $(MACLIBS) $(MPWLIBS) ;\n",
"MKDIR ?= newfolder ;\n",
"MV ?= rename -y ;\n",
"NOARSCAN ?= true ;\n",
"OPTIM ?= ;\n",
"RM ?= delete -y ;\n",
"SLASH ?= \":\" ;\n",
"STDHDRS ?= ;\n",
"SUFLIB ?= .lib ;\n",
"SUFOBJ ?= .o ;\n",
"}\n",
"else if $(OS) = BEOS && $(OSPLAT) = PPC\n",
"{\n",
"AR ?= mwld -xml -o ;\n",
"BINDIR ?= /boot/home/config/bin ;\n",
"CC ?= mwcc ;\n",
"CCFLAGS ?= -nosyspath ;\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= -nosyspath ;\n",
"CHMOD ?= chmod ;\n",
"CHGRP ?= chgrp ;\n",
"CHOWN ?= chown ;\n",
"FORTRAN ?= \"\" ;\n",
"LEX ?= flex ;\n",
"LIBDIR ?= /boot/home/config/lib ;\n",
"LINK ?= mwld ;\n",
"LINKFLAGS ?= \"\" ;\n",
"MANDIR ?= /boot/home/config/man ;\n",
"NOARSCAN ?= true ;\n",
"RANLIB ?= ranlib ;\n",
"STDHDRS ?= /boot/develop/headers/posix ;\n",
"YACC ?= bison -y ;\n",
"YACCGEN ?= .c ;\n",
"YACCFILES ?= y.tab ;\n",
"YACCFLAGS ?= -d ;\n",
"}\n",
"else if $(OS) = BEOS\n",
"{\n",
"BINDIR ?= /boot/home/config/bin ;\n",
"CC ?= gcc ;\n",
"C++ ?= $(CC) ;\n",
"CHMOD ?= chmod ;\n",
"CHGRP ?= chgrp ;\n",
"CHOWN ?= chown ;\n",
"FORTRAN ?= \"\" ;\n",
"LEX ?= flex ;\n",
"LIBDIR ?= /boot/home/config/lib ;\n",
"LINK ?= gcc ;\n",
"MANDIR ?= /boot/home/config/man ;\n",
"NOARSCAN ?= true ;\n",
"RANLIB ?= ranlib ;\n",
"STDHDRS ?= /boot/develop/headers/posix ;\n",
"YACC ?= bison -y ;\n",
"YACCGEN ?= .c ;\n",
"YACCFILES ?= y.tab ;\n",
"YACCFLAGS ?= -d ;\n",
"}\n",
"else if $(UNIX)\n",
"{\n",
"switch $(OS)\n",
"{\n",
"case AIX :\n",
"LINKLIBS ?= -lbsd ;\n",
"\n",
"case AMIGA :\n",
"CC ?= gcc ;\n",
"YACC ?= bison -y ;\n",
"\n",
"case CYGWIN :\n",
"CC ?= gcc ;\n",
"CCFLAGS += -D__cygwin__ ;\n",
"LEX ?= flex ;\n",
"JAMSHELL ?= sh -c ;\n",
"RANLIB ?= \"\" ;\n",
"SUFEXE ?= .exe ;\n",
"YACC ?= bison -y ;\n",
"\n",
"case DGUX :\n",
"RANLIB ?= \"\" ;\n",
"RELOCATE ?= true ;\n",
"\n",
"case HPUX :\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case INTERIX :\n",
"CC ?= gcc ;\n",
"JAMSHELL ?= sh -c ;\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case IRIX :\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case MACOSX :\n",
"PICFLAGS ?= -fPIC ;\n",
"\n",
"case MPEIX :\n",
"CC ?= gcc ;\n",
"C++ ?= gcc ;\n",
"CCFLAGS += -D_POSIX_SOURCE ;\n",
"HDRS += /usr/include ;\n",
"RANLIB ?= \"\" ;\n",
"NOARSCAN ?= true ;\n",
"NOARUPDATE ?= true ;\n",
"\n",
"case MVS :\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case NEXT :\n",
"AR ?= libtool -o ;\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case MACOSX :\n",
"C++ ?= c++ ;\n",
"MANDIR ?= /usr/local/share/man ;\n",
"\n",
"case NCR :\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case PTX :\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case QNX :\n",
"AR ?= wlib ;\n",
"CC ?= cc ;\n",
"CCFLAGS ?= -Q ; # quiet\n",
"C++ ?= $(CC) ;\n",
"C++FLAGS ?= -Q ; # quiet\n",
"LINK ?= $(CC) ;\n",
"LINKFLAGS ?= -Q ; # quiet\n",
"NOARSCAN ?= true ;\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case SCO :\n",
"RANLIB ?= \"\" ;\n",
"RELOCATE ?= true ;\n",
"\n",
"case SINIX :\n",
"RANLIB ?= \"\" ;\n",
"\n",
"case SOLARIS :\n",
"RANLIB ?= \"\" ;\n",
"AR ?= \"/usr/ccs/bin/ar ru\" ;\n",
"\n",
"case UNICOS :\n",
"NOARSCAN ?= true ;\n",
"OPTIM ?= -O0 ;\n",
"\n",
"case UNIXWARE :\n",
"RANLIB ?= \"\" ;\n",
"RELOCATE ?= true ;\n",
"}\n",
"\n",
"\n",
"CCFLAGS ?= ;\n",
"C++FLAGS ?= $(CCFLAGS) ;\n",
"CHMOD ?= chmod ;\n",
"CHGRP ?= chgrp ;\n",
"CHOWN ?= chown ;\n",
"LEX ?= lex ;\n",
"LINKFLAGS ?= $(CCFLAGS) ;\n",
"LINKLIBS ?= ;\n",
"OPTIM ?= -O ;\n",
"RANLIB ?= ranlib ;\n",
"YACC ?= yacc ;\n",
"YACCGEN ?= .c ;\n",
"YACCFILES ?= y.tab ;\n",
"YACCFLAGS ?= -d ;\n",
"\n",
"SUFOBJSHR ?= .lo ;\n",
"SUFLIBSHR ?= .la ;\n",
"PICFLAGS ?= -fpic ;\n",
"STDHDRS ?= /usr/include ;\n",
"}\n",
"\n",
"SUFOBJSHR ?= $(SUFOBJ) ;\n",
"SUFLIBSHR ?= $(SUFLIB) ;\n",
"\n",
"\n",
"DC ?= dmd ;\n",
"\n",
"\n",
"AR ?= ar ru ;\n",
"AS ?= as ;\n",
"ASFLAGS ?= ;\n",
"AWK ?= awk ;\n",
"BINDIR ?= /usr/local/bin ;\n",
"C++ ?= cc ;\n",
"C++FLAGS ?= ;\n",
"CC ?= cc ;\n",
"CCFLAGS ?= ;\n",
"CP ?= cp -f ;\n",
"CRELIB ?= ;\n",
"DOT ?= . ;\n",
"DOTDOT ?= .. ;\n",
"EXEMODE ?= 711 ;\n",
"FILEMODE ?= 644 ;\n",
"FORTRAN ?= f77 ;\n",
"FORTRANFLAGS ?= ;\n",
"HDRS ?= ;\n",
"INSTALLGRIST ?= installed ;\n",
"JAMFILE ?= Jamfile ;\n",
"JAMRULES ?= Jamrules ;\n",
"LEX ?= ;\n",
"LIBDIR ?= /usr/local/lib ;\n",
"LINK ?= $(CC) ;\n",
"LINKFLAGS ?= ;\n",
"LINKLIBS ?= ;\n",
"LN ?= ln ;\n",
"MANDIR ?= /usr/local/man ;\n",
"MKDIR ?= mkdir ;\n",
"MV ?= mv -f ;\n",
"OPTIM ?= ;\n",
"RCP ?= rcp ;\n",
"RM ?= rm -f ;\n",
"RMDIR ?= $(RM) ;\n",
"RSH ?= rsh ;\n",
"SED ?= sed ;\n",
"SHELLHEADER ?= \"#!/bin/sh\" ;\n",
"SHELLMODE ?= 755 ;\n",
"SLASH ?= / ;\n",
"SUBDIRRULES ?= ;\n",
"SUBDIRRESET ?= ASFLAGS HDRS C++FLAGS CCFLAGS ;\n",
"SUFEXE ?= \"\" ;\n",
"SUFLIB ?= .a ;\n",
"SUFOBJ ?= .o ;\n",
"UNDEFFLAG ?= \"-u _\" ;\n",
"YACC ?= ;\n",
"YACCGEN ?= ;\n",
"YACCFILES ?= ;\n",
"YACCFLAGS ?= ;\n",
"\n",
"HDRPATTERN =\n",
"\"^[ ]*#[ ]*include[ ]*[<\\\"]([^\\\">]*)[\\\">].*$\" ;\n",
"\n",
"OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ;\n",
"\n",
"\n",
"\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",
"\n",
"\n",
"rule As\n",
"{\n",
"Depends $(<) : $(>) ;\n",
"ASFLAGS on $(<) += $(ASFLAGS) $(SUBDIRASFLAGS) ;\n",
"ASHDRS on $(<) = [ FIncludes $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ] ;\n",
"}\n",
"\n",
"rule Bulk\n",
"{\n",
"local i ;\n",
"\n",
"for i in $(>)\n",
"{\n",
"File $(i:D=$(<)) : $(i) ;\n",
"}\n",
"}\n",
"\n",
"\n",
"rule Dc\n",
"{\n",
"Depends $(<) : $(>) ;\n",
"\n",
"\n",
"DCFLAGS on $(<) += $(DCFLAGS) $(SUBDIRDCFLAGS) ;\n",
"}\n",
"\n",
"\n",
"rule Cc\n",
"{\n",
"Depends $(<) : $(>) ;\n",
"\n",
"\n",
"if $(RELOCATE)\n",
"{\n",
"CcMv $(<) : $(>) ;\n",
"}\n",
"\n",
"\n",
"CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ;\n",
"\n",
"CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;\n",
"CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;\n",
"}\n",
"\n",
"rule C++\n",
"{\n",
"Depends $(<) : $(>) ;\n",
"\n",
"if $(RELOCATE)\n",
"{\n",
"CcMv $(<) : $(>) ;\n",
"}\n",
"\n",
"C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) ;\n",
"\n",
"CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;\n",
"CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;\n",
"}\n",
"\n",
"rule Chmod\n",
"{\n",
"if $(CHMOD) { Chmod1 $(<) ; }\n",
"}\n",
"\n",
"\n",
"rule File\n",
"{\n",
"Depends files : $(<) ;\n",
"Depends $(<) : $(>) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"MODE on $(<) = $(FILEMODE) ;\n",
"Chmod $(<) ;\n",
"}\n",
"\n",
"rule Fortran\n",
"{\n",
"Depends $(<) : $(>) ;\n",
"}\n",
"\n",
"rule GenFile\n",
"{\n",
"local _t = [ FGristSourceFiles $(<) ] ;\n",
"local _s = [ FAppendSuffix $(>[1]) : $(SUFEXE) ] ;\n",
"Depends $(_t) : $(_s) $(>[2-]) ;\n",
"GenFile1 $(_t) : $(_s) $(>[2-]) ;\n",
"Clean clean : $(_t) ;\n",
"}\n",
"\n",
"rule GenFile1\n",
"{\n",
"MakeLocate $(<) : $(LOCATE_SOURCE) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"}\n",
"\n",
"rule HardLink\n",
"{\n",
"Depends files : $(<) ;\n",
"Depends $(<) : $(>) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"}\n",
"\n",
"rule HdrMacroFile\n",
"{\n",
"HDRMACRO $(<) ;\n",
"}\n",
"\n",
"rule HdrRule\n",
"{\n",
"\n",
"\n",
"\n",
"local s = $(>:G=$(HDRGRIST:E)) ;\n",
"\n",
"Includes $(<) : $(s) ;\n",
"SEARCH on $(s) = $(HDRSEARCH) ;\n",
"NoCare $(s) ;\n",
"\n",
"\n",
"HDRSEARCH on $(s) = $(HDRSEARCH) ;\n",
"HDRSCAN on $(s) = $(HDRSCAN) ;\n",
"HDRRULE on $(s) = $(HDRRULE) ;\n",
"HDRGRIST on $(s) = $(HDRGRIST) ;\n",
"}\n",
"\n",
"\n",
"rule InstallInto\n",
"{\n",
"\n",
"local i t ;\n",
"\n",
"t = $(>:G=$(INSTALLGRIST)) ;\n",
"\n",
"\n",
"Depends install : $(t) ;\n",
"Clean uninstall : $(t) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"MakeLocate $(t) : $(<) ;\n",
"\n",
"\n",
"for i in $(>)\n",
"{\n",
"local tt = $(i:G=$(INSTALLGRIST)) ;\n",
"\n",
"Depends $(tt) : $(i) ;\n",
"Install $(tt) : $(i) ;\n",
"Chmod $(tt) ;\n",
"\n",
"if $(OWNER) && $(CHOWN)\n",
"{\n",
"Chown $(tt) ;\n",
"OWNER on $(tt) = $(OWNER) ;\n",
"}\n",
"\n",
"if $(GROUP) && $(CHGRP)\n",
"{\n",
"Chgrp $(tt) ;\n",
"GROUP on $(tt) = $(GROUP) ;\n",
"}\n",
"}\n",
"}\n",
"\n",
"rule InstallBin\n",
"{\n",
"local _t = [ FAppendSuffix $(>) : $(SUFEXE) ] ;\n",
"\n",
"InstallInto $(<) : $(_t) ;\n",
"MODE on $(_t:G=$(INSTALLGRIST)) = $(EXEMODE) ;\n",
"}\n",
"\n",
"rule InstallFile\n",
"{\n",
"InstallInto $(<) : $(>) ;\n",
"MODE on $(>:G=$(INSTALLGRIST)) = $(FILEMODE) ;\n",
"}\n",
"\n",
"rule InstallLib\n",
"{\n",
"InstallInto $(<) : $(>) ;\n",
"MODE on $(>:G=$(INSTALLGRIST)) = $(FILEMODE) ;\n",
"}\n",
"\n",
"rule InstallMan\n",
"{\n",
"\n",
"local i s d ;\n",
"\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",
"\n",
"d = man$(s) ;\n",
"\n",
"InstallInto $(d:R=$(<)) : $(i) ;\n",
"}\n",
"\n",
"MODE on $(>:G=$(INSTALLGRIST)) = $(FILEMODE) ;\n",
"}\n",
"\n",
"rule InstallShell\n",
"{\n",
"InstallInto $(<) : $(>) ;\n",
"MODE on $(>:G=$(INSTALLGRIST)) = $(SHELLMODE) ;\n",
"}\n",
"\n",
"rule Lex\n",
"{\n",
"LexMv $(<) : $(>) ;\n",
"Depends $(<) : $(>) ;\n",
"MakeLocate $(<) : $(LOCATE_SOURCE) ;\n",
"Clean clean : $(<) ;\n",
"}\n",
"\n",
"rule Library\n",
"{\n",
"LibraryFromObjects $(<) : $(>:S=$(SUFOBJ)) ;\n",
"Objects $(>) ;\n",
"}\n",
"\n",
"rule SharedLibrary\n",
"{\n",
"SharedLibraryFromObjects $(<) : $(>:S=$(SUFOBJSHR)) : $(3) : $(4) ;\n",
"SharedObjects $(>) ;\n",
"}\n",
"\n",
"if $(UNIX)\n",
"{\n",
"rule LibToolFind\n",
"{\n",
"if $(LIBTOOL) { return $(LIBTOOL) ; }\n",
"\n",
"local matches = [ Glob $(PATH) : libtool ] ;\n",
"\n",
"if ! $(matches)\n",
"{\n",
"Exit \"could not find 'libtool' program in current path. Aborting !\" ;\n",
"}\n",
"LIBTOOL = $(matches[1]) ;\n",
"\n",
"return $(LIBTOOL) ;\n",
"}\n",
"}\n",
"\n",
"rule LibraryFromObjects\n",
"{\n",
"local _i _l _s ;\n",
"\n",
"\n",
"_s = [ FGristFiles $(>) ] ;\n",
"_l = $(<:S=$(SUFLIB)) ;\n",
"\n",
"\n",
"if $(KEEPOBJS)\n",
"{\n",
"Depends obj : $(_s) ;\n",
"}\n",
"else\n",
"{\n",
"Depends lib : $(_l) ;\n",
"}\n",
"\n",
"\n",
"if ! $(_l:D)\n",
"{\n",
"MakeLocate $(_l) $(_l)($(_s:BS)) : $(LOCATE_TARGET) ;\n",
"}\n",
"\n",
"if $(NOARSCAN)\n",
"{\n",
"\n",
"Depends $(_l) : $(_s) ;\n",
"}\n",
"else\n",
"{\n",
"\n",
"Depends $(_l) : $(_l)($(_s:BS)) ;\n",
"\n",
"for _i in $(_s)\n",
"{\n",
"Depends $(_l)($(_i:BS)) : $(_i) ;\n",
"}\n",
"}\n",
"\n",
"Clean clean : $(_l) ;\n",
"\n",
"if $(CRELIB) { CreLib $(_l) : $(_s[1]) ; }\n",
"\n",
"Archive $(_l) : $(_s) ;\n",
"\n",
"if $(RANLIB) { Ranlib $(_l) ; }\n",
"\n",
"\n",
"if ! ( $(NOARSCAN) || $(NOARUPDATE) ) { RmTemps $(_l) : $(_s) ; }\n",
"}\n",
"\n",
"\n",
"rule SharedLibraryFromObjects\n",
"{\n",
"local _i _l _s ;\n",
"\n",
"\n",
"_s = [ FGristFiles $(>) ] ;\n",
"_l = $(<:S=$(SUFLIBSHR)) ;\n",
"\n",
"\n",
"if $(KEEPOBJS)\n",
"{\n",
"Depends obj : $(_s) ;\n",
"}\n",
"else\n",
"{\n",
"Depends lib : $(_l) ;\n",
"}\n",
"\n",
"\n",
"if ! $(_l:D)\n",
"{\n",
"MakeLocate $(_l) : $(LOCATE_TARGET) ;\n",
"}\n",
"\n",
"Depends $(_l) : $(_s) ;\n",
"\n",
"Clean clean : $(_l) ;\n",
"\n",
"\n",
"if $(UNIX)\n",
"{\n",
"local libtool = [ LibToolFind ] ; # find the right libtool\n",
"\n",
"AR on $(_l) = \"$(libtool) --mode=link $(AR)\" ;\n",
"}\n",
"else if $(NT)\n",
"{\n",
"local _implib = $(4) ;\n",
"local _def = $(3) ;\n",
"\n",
"_implib ?= $(_l:S=$(SUFLIBSHR)$(SUFLIB)) ;\n",
"_def ?= $(_l:S=.def) ;\n",
"\n",
"Clean clean : $(_implib) ;\n",
"Depends lib : $(_implib) $(_def) ;\n",
"\n",
"Depends $(_implib) : $(_def) $(_l) ;\n",
"Depends $(_l) : $(_def) ;\n",
"\n",
"DEFFILENAME on $(_l) = $(_def) ;\n",
"IMPLIBNAME on $(_l) = $(_implib) ;\n",
"\n",
"MakeLocate $(_implib) : $(LOCATE_TARGET) ;\n",
"MakeLocate $(_implib:S=.exp) : $(LOCATE_TARGET) ;\n",
"\n",
"if $(JAM_TOOLSET) in VISUALC BORLANDC LCC WATCOM DIGITALMARS\n",
"{\n",
"SharedLink-$(JAM_TOOLSET) $(_l) : $(_s) : $(_implib) : $(_def) ;\n",
"}\n",
"\n",
"DllLink $(_l) : $(_s) ;\n",
"}\n",
"else\n",
"{\n",
"Echo \"Sorry, I don't know how to make a shared library on your system\" ;\n",
"Exit \"Please contact the FTJam maintainer for help\" ;\n",
"}\n",
"}\n",
"\n",
"\n",
"\n",
"rule SharedLink-VISUALC\n",
"{\n",
"Clean clean : $(3:S=.exp) ;\n",
"}\n",
"\n",
"\n",
"rule SharedLink-BORLANDC\n",
"{\n",
"local _deffile = $(4) ;\n",
"local _implib = $(3) ;\n",
"\n",
"LINKFLAGS on $(<) += /x /Gn /Tpd ;\n",
"LINKLIBS on $(<) = $(LINKLIBS) $(ILINKLIBS) ;\n",
"\n",
"DllImplib $(_implib) : $(<) ;\n",
"Depends $(_implib) : $(_deffile) $(<) ;\n",
"Depends lib : $(_implib) ;\n",
"\n",
"DEFFILENAME on $(_implib) = $(_deffile) ;\n",
"\n",
"MakeLocate $(<:S=.tds) : $(LOCATE_TARGET) ;\n",
"Clean clean : $(<:S=.tds) ;\n",
"}\n",
"\n",
"\n",
"rule SharedLink-LCC\n",
"{\n",
"if \"\" {\n",
"}\n",
"\n",
"\n",
"Clean clean : $(4:S=.exp) ;\n",
"}\n",
"\n",
"\n",
"rule SharedLink-WATCOM\n",
"{\n",
"\n",
"local _deffile = $(4) ;\n",
"local _implib = $(3) ;\n",
"\n",
"IMPLIB on $(<) = $(_implib) ;\n",
"DEFFILE on $(<) = $(_deffile) ;\n",
"\n",
"MakeLocate $(<:S=.tds) : $(LOCATE_TARGET) ;\n",
"Clean clean : $(<:S=.tds) ;\n",
"}\n",
"\n",
"\n",
"rule SharedLink-DIGITALMARS\n",
"{\n",
"}\n",
"\n",
"\n",
"rule Link\n",
"{\n",
"MODE on $(<) = $(EXEMODE) ;\n",
"Chmod $(<) ;\n",
"}\n",
"\n",
"rule LinkLibraries\n",
"{\n",
"\n",
"local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ;\n",
"\n",
"Depends $(_t) : $(>:S=$(SUFLIB)) ;\n",
"NEEDLIBS on $(_t) += $(>:S=$(SUFLIB)) ;\n",
"}\n",
"\n",
"rule LinkSharedLibraries\n",
"{\n",
"\n",
"local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ;\n",
"local _ext = $(SUFLIBSHR) ;\n",
"\n",
"if $(NT) || $(OS2)\n",
"{\n",
"_ext = $(SUFLIBSHR)$(SUFLIB) ;\n",
"}\n",
"Depends $(_t) : $(>:S=$(_ext)) ;\n",
"NEEDLIBS on $(_t) += $(>:S=$(_ext)) ;\n",
"}\n",
"\n",
"rule Main\n",
"{\n",
"MainFromObjects $(<) : $(>:S=$(SUFOBJ)) ;\n",
"Objects $(>) ;\n",
"}\n",
"\n",
"rule MainFromObjects\n",
"{\n",
"local _s _t ;\n",
"\n",
"\n",
"_s = [ FGristFiles $(>) ] ;\n",
"_t = [ FAppendSuffix $(<) : $(SUFEXE) ] ;\n",
"\n",
"\n",
"if $(_t) != $(<)\n",
"{\n",
"Depends $(<) : $(_t) ;\n",
"NotFile $(<) ;\n",
"}\n",
"\n",
"\n",
"Depends exe : $(_t) ;\n",
"Depends $(_t) : $(_s) ;\n",
"MakeLocate $(_t) : $(LOCATE_TARGET) ;\n",
"\n",
"Clean clean : $(_t) ;\n",
"\n",
"if $(JAM_TOOLSET) = BORLANDC {\n",
"MakeLocate $(_t:S=.tds) : $(LOCATE_TARGET) ;\n",
"Clean clean : $(_t:S=.tds) ;\n",
"}\n",
"\n",
"Link $(_t) : $(_s) ;\n",
"}\n",
"\n",
"rule MakeLocate\n",
"{\n",
"\n",
"if $(>)\n",
"{\n",
"LOCATE on $(<) = $(>) ;\n",
"Depends $(<) : $(>[1]:G=dir) ;\n",
"MkDir $(>[1]:G=dir) ;\n",
"}\n",
"}\n",
"\n",
"rule MkDir\n",
"{\n",
"\n",
"NoUpdate $(<) ;\n",
"\n",
"\n",
"if $(<:G=) != $(DOT) && ! $($(<)-mkdir)\n",
"{\n",
"\n",
"$(<)-mkdir = true ;\n",
"Depends dirs : $(<) ;\n",
"MkDir1 $(<) ;\n",
"\n",
"\n",
"local s = $(<:P) ;\n",
"\n",
"\n",
"if $(NT)\n",
"{\n",
"switch $(s)\n",
"{\n",
"case *: : s = ;\n",
"case *:\\\\ : s = ;\n",
"}\n",
"}\n",
"\n",
"if $(UNIX) && $(OS) = CYGWIN\n",
"{\n",
"switch $(s)\n",
"{\n",
"case ?: : s = ;\n",
"case ?:/ : s = ;\n",
"case
/cygdrive : s = ;\n",
"case /cygdrive/ : s = ;\n",
"}\n",
"}\n",
"\n",
"if $(s) = $(<)\n",
"{\n",
"\n",
"NotFile $(s) ;\n",
"}\n",
"else if $(s:G=)\n",
"{\n",
"\n",
"Depends $(<) : $(s) ;\n",
"MkDir $(s) ;\n",
"}\n",
"}\n",
"}\n",
"\n",
"rule Object\n",
"{\n",
"\n",
"Clean clean : $(<) ;\n",
"\n",
"MakeLocate $(<) : $(LOCATE_TARGET) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"\n",
"\n",
"HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;\n",
"\n",
"\n",
"\n",
"HDRRULE on $(>) = HdrRule ;\n",
"HDRSCAN on $(>) = $(HDRPATTERN) ;\n",
"HDRSEARCH on $(>) =\n",
"$(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ;\n",
"\n",
"HDRGRIST on $(>) = $(HDRGRIST) ;\n",
"\n",
"\n",
"DEFINES on $(<) += $(DEFINES) ;\n",
"\n",
"\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 .cxx : C++ $(<) : $(>) ;\n",
"case .c++ : C++ $(<) : $(>) ;\n",
"case .C++ : C++ $(<) : $(>) ;\n",
"case .d : Dc $(<) : $(>) ;\n",
"case .f : Fortran $(<) : $(>) ;\n",
"case .l : Cc $(<) : $(<:S=.c) ;\n",
"Lex $(<:S=.c) : $(>) ;\n",
"case .s : As $(<) : $(>) ;\n",
"case .y : Cc $(<) : $(<:S=$(YACCGEN)) ;\n",
"Yacc $(<:S=$(YACCGEN)) : $(>) ;\n",
"case * : UserObject $(<) : $(>) ;\n",
"}\n",
"}\n",
"\n",
"rule ObjectCcFlags\n",
"{\n",
"CCFLAGS on [ FGristFiles $(<:S=$(SUFOBJ)) ] += $(>) ;\n",
"}\n",
"\n",
"rule ObjectC++Flags\n",
"{\n",
"C++FLAGS on [ FGristFiles $(<:S=$(SUFOBJ)) ] += $(>) ;\n",
"}\n",
"\n",
"rule ObjectDefines\n",
"{\n",
"\n",
"local s = [ FGristFiles $(<:S=$(SUFOBJ)) ] ;\n",
"\n",
"DEFINES on $(s) += $(>) ;\n",
"CCDEFS on $(s) = [ on $(s) FDefines $(DEFINES) ] ;\n",
"}\n",
"\n",
"rule ObjectHdrs\n",
"{\n",
"\n",
"local s = [ FGristFiles $(<:S=$(SUFOBJ)) ] ;\n",
"\n",
"HDRS on $(s) += $(>) ;\n",
"CCHDRS on $(s) = [ on $(s) FIncludes $(HDRS) ] ;\n",
"}\n",
"\n",
"rule Objects\n",
"{\n",
"local _i ;\n",
"\n",
"for _i in [ FGristFiles $(<) ]\n",
"{\n",
"Object $(_i:S=$(SUFOBJ)) : $(_i) ;\n",
"Depends obj : $(_i:S=$(SUFOBJ)) ;\n",
"}\n",
"}\n",
"\n",
"rule SharedObjects\n",
"{\n",
"local SUFOBJ = $(SUFOBJSHR) ;\n",
"\n",
"Objects $(<) ;\n",
"\n",
"ObjectCcFlags $(<) : $(PICFLAGS) ;\n",
"\n",
"if $(UNIX)\n",
"{\n",
"libtool on $(<:S=$(SUFOBJ)) = [ LibToolFind ] ;\n",
"CC on $(<:S=$(SUFOBJ)) = \"$(libtool) --mode=compile $(CC) -dynamic\" ;\n",
"}\n",
"}\n",
"\n",
"\n",
"rule RmTemps\n",
"{\n",
"Temporary $(>) ;\n",
"}\n",
"\n",
"rule Setuid\n",
"{\n",
"MODE on [ FAppendSuffix $(<) : $(SUFEXE) ] = 4711 ;\n",
"}\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",
"\n",
"rule SoftLink\n",
"{\n",
"Depends files : $(<) ;\n",
"Depends $(<) : $(>) ;\n",
"SEARCH on $(>) = $(SEARCH_SOURCE) ;\n",
"Clean clean : $(<) ;\n",
"}\n",
"\n",
"rule SubDir\n",
"{\n",
"\n",
"local _top = $(<[1]) ;\n",
"local _tokens = $(<[2-]) ;\n",
"\n",
"\n",
"if ! $(_top)\n",
"{\n",
"Exit SubDir syntax error ;\n",
"}\n",
"\n",
"if ! $($(_top)-SET)\n",
"{\n",
"$(_top)-SET = true ;\n",
"\n",
"\n",
"if $($(_top))\n",
"{\n",
"\n",
"$(_top)-UP = ;\n",
"$(_top)-DOWN = ;\n",
"$(_top)-ROOT = $($(_top)) ;\n",
"}\n",
"else\n",
"{\n",
"\n",
"\n",
"\n",
"_tokens = [ FReverse $(_tokens) ] ;\n",
"SUBDIR_DOWN = [ FReverse $(SUBDIR_DOWN) ] ;\n",
"FStripCommon _tokens : SUBDIR_DOWN ;\n",
"SUBDIR_DOWN = [ FReverse $(SUBDIR_DOWN) ] ;\n",
"_tokens = [ FReverse $(_tokens) ] ;\n",
"\n",
"if $(SUBDIR_DOWN) && $(_tokens)\n",
"{\n",
"Echo Warning: SubDir $(<) misplaced! ;\n",
"}\n",
"\n",
"\n",
"$(_top)-UP = $(SUBDIR_UP) $(_tokens) ;\n",
"$(_top)-DOWN = $(SUBDIR_DOWN) ;\n",
"$(_top)-ROOT = $(SUBDIR_ROOT:E=\"\") ;\n",
"$(_top) = [ FSubDirPath $(_top) ] ;\n",
"}\n",
"\n",
"\n",
"SUBDIR_UP = $($(_top)-UP) ;\n",
"SUBDIR_DOWN = ;\n",
"SUBDIR_ROOT = $($(_top)-ROOT) ;\n",
"\n",
"\n",
"if $($(_top)RULES) {\n",
"include $($(_top)RULES) ;\n",
"} else {\n",
"NoCare $(JAMRULES:R=$($(_top)):G=$(_top)) ;\n",
"include $(JAMRULES:R=$($(_top)):G=$(_top)) ;\n",
"}\n",
"}\n",
"\n",
"\n",
"SUBDIR_UP = $($(_top)-UP) ;\n",
"SUBDIR_DOWN = $($(_top)-DOWN) $(_tokens) ;\n",
"SUBDIR_ROOT = $($(_top)-ROOT) ;\n",
"SUBDIR_TOKENS = $(SUBDIR_DOWN) ;\n",
"\n",
"SUBDIR = [ FSubDirPath $(<) ] ;\n",
"\n",
"\n",
"SEARCH_SOURCE = $(SUBDIR) ;\n",
"LOCATE_SOURCE = $(ALL_LOCATE_TARGET) $(SUBDIR) ;\n",
"LOCATE_TARGET = $(ALL_LOCATE_TARGET) $(SUBDIR) ;\n",
"SOURCE_GRIST = [ FGrist $(SUBDIR_TOKENS) ] ;\n",
"\n",
"\n",
"SUBDIR$(SUBDIRRESET) = ;\n",
"\n",
"\n",
"$(SUBDIRRULES) $(<) ;\n",
"}\n",
"\n",
"rule FSubDirPath\n",
"{\n",
"\n",
"\n",
"\n",
"local _r = [ FRelPath $($(<[1])-UP) : $($(<[1])-DOWN) $(<[2-]) ] ;\n",
"\n",
"return $(_r:R=$($(<[1])-ROOT)) ;\n",
"}\n",
"\n",
"rule SubDirDcFlags\n",
"{\n",
"SUBDIRDCFLAGS += $(<) ;\n",
"}\n",
"\n",
"rule SubDirCcFlags\n",
"{\n",
"SUBDIRCCFLAGS += $(<) ;\n",
"}\n",
"\n",
"rule SubDirC++Flags\n",
"{\n",
"SUBDIRC++FLAGS += $(<) ;\n",
"}\n",
"\n",
"rule SubDirHdrs\n",
"{\n",
"SUBDIRHDRS += [ FDirName $(<) ] ;\n",
"}\n",
"\n",
"rule SubInclude\n",
"{\n",
"\n",
"\n",
"if ! $($(<[1]))\n",
"{\n",
"Exit SubInclude $(<[1]) without prior SubDir $(<[1]) ;\n",
"}\n",
"\n",
"SubDir $(<) ;\n",
"\n",
"include $(JAMFILE:D=$(SUBDIR)) ;\n",
"}\n",
"\n",
"rule SubRules\n",
"{\n",
"\n",
"if ! $($(<[1]))\n",
"{\n",
"Exit SubRules $(<[1]) without prior SubDir $(<[1]) ;\n",
"}\n",
"\n",
"SubDir $(<) ;\n",
"SubDir $(>) ;\n",
"}\n",
"\n",
"rule Undefines\n",
"{\n",
"UNDEFS on [ FAppendSuffix $(<) : $(SUFEXE) ] += $(UNDEFFLAG)$(>) ;\n",
"}\n",
"\n",
"rule UserObject\n",
"{\n",
"Exit \"Unknown suffix on\" $(>) \"- see UserObject rule in Jamfile(5).\" ;\n",
"}\n",
"\n",
"rule Yacc\n",
"{\n",
"local _h ;\n",
"\n",
"_h = $(<:BS=.h) ;\n",
"\n",
"\n",
"MakeLocate $(<) $(_h) : $(LOCATE_SOURCE) ;\n",
"\n",
"if $(YACC)\n",
"{\n",
"Depends $(<) $(_h) : $(>) ;\n",
"Yacc1 $(<) $(_h) : $(>) ;\n",
"YaccMv $(<) $(_h) : $(>) ;\n",
"Clean clean : $(<) $(_h) ;\n",
"}\n",
"\n",
"\n",
"Includes $(<) : $(_h) ;\n",
"}\n",
"\n",
"\n",
"rule FGrist\n",
"{\n",
"return $(<:J=!) ;\n",
"\n",
"}\n",
"\n",
"\n",
"rule FGristFiles\n",
"{\n",
"return $(<:G=$(SOURCE_GRIST:E)) ;\n",
"}\n",
"\n",
"\n",
"rule FGristSourceFiles\n",
"{\n",
"\n",
"\n",
"if ! $(SOURCE_GRIST)\n",
"{\n",
"return $(<) ;\n",
"}\n",
"else\n",
"{\n",
"local _i _o ;\n",
"\n",
"for _i in $(<)\n",
"{\n",
"switch $(_i)\n",
"{\n",
"case *.h : _o += $(_i) ;\n",
"case * : _o += $(_i:G=$(SOURCE_GRIST)) ;\n",
"}\n",
"}\n",
"\n",
"return $(_o) ;\n",
"}\n",
"}\n",
"\n",
"\n",
"rule FReverse\n",
"{\n",
"if $(1) { return [ FReverse $(1[2-]) ] $(1[1]) ; }\n",
"}\n",
"\n",
"\n",
"rule FSubDir\n",
"{\n",
"\n",
"if ! $(<[1])\n",
"{\n",
"return $(DOT) ;\n",
"}\n",
"else\n",
"{\n",
"local _i _d ;\n",
"\n",
"_d = $(DOTDOT) ;\n",
"\n",
"for _i in $(<[2-])\n",
"{\n",
"_d = $(_d:R=$(DOTDOT)) ;\n",
"}\n",
"\n",
"return $(_d) ;\n",
"}\n",
"}\n",
"\n",
"\n",
"rule FStripCommon\n",
"{\n",
"\n",
"\n",
"if $($(<)[1]) && $($(<)[1]) = $($(>)[1])\n",
"{\n",
"$(<) = $($(<)[2-]) ;\n",
"$(>) = $($(>)[2-]) ;\n",
"FStripCommon $(<) : $(>) ;\n",
"}\n",
"}\n",
"\n",
"\n",
"rule FRelPath\n",
"{\n",
"local _l _r ;\n",
"\n",
"\n",
"_l = $(<) ;\n",
"_r = $(>) ;\n",
"\n",
"FStripCommon _l : _r ;\n",
"\n",
"\n",
"_l = [ FSubDir $(_l) ] ;\n",
"_r = [ FDirName $(_r) ] ;\n",
"\n",
"\n",
"\n",
"if $(_r) = $(DOT) {\n",
"return $(_l) ;\n",
"} else {\n",
"return $(_r:R=$(_l)) ;\n",
"}\n",
"}\n",
"\n",
"\n",
"rule FAppendSuffix\n",
"{\n",
"\n",
"if $(>)\n",
"{\n",
"local _i _o ;\n",
"\n",
"for _i in $(<)\n",
"{\n",
"if $(_i:S)\n",
"{\n",
"_o += $(_i) ;\n",
"}\n",
"else\n",
"{\n",
"_o += $(_i:S=$(>)) ;\n",
"}\n",
"}\n",
"return $(_o) ;\n",
"}\n",
"else\n",
"{\n",
"return $(<) ;\n",
"}\n",
"}\n",
"\n",
"\n",
"rule FQuote { return \"\\\\\\\"$(<)\\\\\\\"\" ; }\n",
"rule FDefines { return -D$(<) ; }\n",
"rule FIncludes { return -I$(<) ; }\n",
"\n",
"rule FDirName\n",
"{\n",
"\n",
"local _i ;\n",
"local _s = $(DOT) ;\n",
"\n",
"for _i in $(<)\n",
"{\n",
"_s = $(_i:R=$(_s)) ;\n",
"}\n",
"\n",
"return $(_s) ;\n",
"}\n",
"\n",
"if $(OS2)\n",
"{\n",
"rule FQuote { return \"\\\"$(<)\\\"\" ; }\n",
"rule FIncludes { return /I$(<) ; }\n",
"}\n",
"else if $(NT) && $(JAM_TOOLSET) != MINGW && $(JAM_TOOLSET) != LCC\n",
"{\n",
"rule FDefines { return /D$(<) ; }\n",
"rule FIncludes { return /I$(<) ; }\n",
"}\n",
"\n",
"else if $(MAC)\n",
"{\n",
"rule FQuote { return \"\\\"$(<)\\\"\" ; }\n",
"rule FDefines { return \"-define '$(<)'\" ; }\n",
"rule FIncludes { return \"\\\"$(<:J=,)\\\"\" ; }\n",
"}\n",
"\n",
"else if $(VMS)\n",
"{\n",
"rule FQuote { return \"\\\"\\\"\\\"$(<)\\\"\\\"\\\"\" ; }\n",
"rule FDefines { return \"/define=( $(<:J=,) )\" ; }\n",
"rule FIncludes { return \"/inc=( $(<:J=,) )\" ; }\n",
"\n",
"rule FDirName\n",
"{\n",
"local _s _i ;\n",
"\n",
"\n",
"if ! $(<)\n",
"{\n",
"_s = $(DOT) ;\n",
"}\n",
"else\n",
"{\n",
"\n",
"switch $(<[1])\n",
"{\n",
"case *:* : _s = $(<[1]) ;\n",
"case \\\\[*\\\\] : _s = $(<[1]) ;\n",
"case * : _s = [.$(<[1])] ;\n",
"}\n",
"\n",
"for _i in [.$(<[2-])]\n",
"{\n",
"_s = $(_i:R=$(_s)) ;\n",
"}\n",
"}\n",
"\n",
"return $(_s) ;\n",
"}\n",
"}\n",
"\n",
"\n",
"\n",
"actions updated together piecemeal Archive\n",
"{\n",
"$(AR) $(<) $(>)\n",
"}\n",
"\n",
"actions As\n",
"{\n",
"$(AS) $(ASFLAGS) $(ASHDRS) -o $(<) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) -c -o $(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) -c -o $(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions Dc\n",
"{\n",
"$(DC) -c -of$(<) $(DCFLAGS) $(DOPTIM) $(>)\n",
"}\n",
"\n",
"actions Chgrp\n",
"{\n",
"$(CHGRP) $(GROUP) $(<)\n",
"}\n",
"\n",
"actions Chmod1\n",
"{\n",
"$(CHMOD) $(MODE) $(<)\n",
"}\n",
"\n",
"actions Chown\n",
"{\n",
"$(CHOWN) $(OWNER) $(<)\n",
"}\n",
"\n",
"actions piecemeal together existing Clean\n",
"{\n",
"$(RM) $(>)\n",
"}\n",
"\n",
"actions File\n",
"{\n",
"$(CP) $(>) $(<)\n",
"}\n",
"\n",
"actions GenFile1\n",
"{\n",
"$(>[1]) $(<) $(>[2-])\n",
"}\n",
"\n",
"actions Fortran\n",
"{\n",
"$(FORTRAN) $(FORTRANFLAGS) -o $(<) $(>)\n",
"}\n",
"\n",
"actions HardLink\n",
"{\n",
"$(RM) $(<) && $(LN) $(>) $(<)\n",
"}\n",
"\n",
"actions Install\n",
"{\n",
"$(CP) $(>) $(<)\n",
"}\n",
"\n",
"actions Lex\n",
"{\n",
"$(LEX) $(>)\n",
"}\n",
"\n",
"actions LexMv\n",
"{\n",
"$(MV) lex.yy.c $(<)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions MkDir1\n",
"{\n",
"$(MKDIR) $(<)\n",
"}\n",
"\n",
"actions together Ranlib\n",
"{\n",
"$(RANLIB) $(<)\n",
"}\n",
"\n",
"actions quietly updated piecemeal together RmTemps\n",
"{\n",
"$(RM) $(>)\n",
"}\n",
"\n",
"actions Shell\n",
"{\n",
"$(AWK) '\n",
"NR == 1 { print \"$(SHELLHEADER)\" }\n",
"NR == 1 && /^[#:]/ { next }\n",
"/^##/ { next }\n",
"{ print }\n",
"' < $(>) > $(<)\n",
"}\n",
"\n",
"actions SoftLink\n",
"{\n",
"$(RM) $(<) && $(LN) -s $(>) $(<)\n",
"}\n",
"\n",
"actions Yacc1\n",
"{\n",
"$(YACC) $(YACCFLAGS) $(>)\n",
"}\n",
"\n",
"actions YaccMv\n",
"{\n",
"$(MV) $(YACCFILES).c $(<[1])\n",
"$(MV) $(YACCFILES).h $(<[2])\n",
"}\n",
"\n",
"\n",
"if $(RELOCATE)\n",
"{\n",
"actions C++\n",
"{\n",
"$(C++) -c $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) -c $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions ignore CcMv\n",
"{\n",
"[ $(<) != $(>:BS=$(SUFOBJ)) ] && $(MV) $(>:BS=$(SUFOBJ)) $(<)\n",
"}\n",
"}\n",
"\n",
"\n",
"if $(NOARUPDATE)\n",
"{\n",
"actions Archive\n",
"{\n",
"$(AR) $(<) $(>)\n",
"}\n",
"}\n",
"\n",
"\n",
"if $(UNIX)\n",
"{\n",
"actions GenFile1\n",
"{\n",
"PATH=\"$PATH:.\"\n",
"$(>[1]) $(<) $(>[2-])\n",
"}\n",
"}\n",
"\n",
"\n",
"if $(NT)\n",
"{\n",
"if $(JAM_TOOLSET) = VISUALC || $(JAM_TOOLSET) = INTELC\n",
"{\n",
"actions updated together piecemeal Archive\n",
"{\n",
"if exist $(<) set _$(<:B)_=$(<)\n",
"$(AR) /out:$(<) %_$(<:B)_% $(>)\n",
"}\n",
"\n",
"actions As\n",
"{\n",
"$(AS) /Ml /p /v /w2 $(>) $(<) ,nul,nul;\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) /c /Fo$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) /c /Fo$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /I$(STDHDRS) /Tp$(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions DllLink bind NEEDLIBS DEFFILENAME IMPLIBNAME\n",
"{\n",
"$(LINK) $(LINKFLAGS) /DLL /DEF:$(DEFFILENAME) /IMPLIB:$(IMPLIBNAME) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"}\n",
"else if $(JAM_TOOLSET) = VISUALC16\n",
"{\n",
"actions updated together piecemeal Archive\n",
"{\n",
"$(AR) $(<) -+$(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) /c /Fo$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) /c /Fo$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /Tp$(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions DllLink bind NEEDLIBS DEFFILENAME IMPLIBNAME\n",
"{\n",
"$(LINK) $(LINKFLAGS) /DLL /DEF:$(DEFFILENAME) /IMPLIB:$(IMPLIBNAME) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"}\n",
"else if $(JAM_TOOLSET) = BORLANDC\n",
"{\n",
"actions updated together piecemeal Archive\n",
"{\n",
"$(AR) $(<) -+$(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) -e$(<) $(LINKFLAGS) $(UNDEFS) -L$(LINKLIBS) $(NEEDLIBS) $(>)\n",
"}\n",
"\n",
"actions DllLink bind NEEDLIBS DEFFILENAME\n",
"{\n",
"$(ILINK) $(LINKFLAGS) $(>) , $(<) ,, $(LINKLIBS:E) $(NEEDLIBS:E) , $(DEFFILENAME)\n",
"}\n",
"\n",
"actions DllImplib bind DEFFILENAME\n",
"{\n",
"$(IMPLIB) -a $(<) $(>) $(DEFFILENAME)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) -c -o$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) -c -o$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"}\n",
"else if $(JAM_TOOLSET) = MINGW\n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) $(<) $(>:T)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) -c -o $(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) -c -o $(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions DllLink bind DEFFILENAME IMPLIBNAME\n",
"{\n",
"$(LINK) $(LINKFLAGS) -shared -o $(<) $(>) $(DEFFILENAME) -Wl,--out-implib,$(IMPLIBNAME)\n",
"}\n",
"}\n",
"else if $(JAM_TOOLSET) = WATCOM\n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) -q $(<) +-$(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /Fo=$(<) -I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /Fo=$(<) -I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions DllLink bind NEEDLIBS DEFFILENAME IMPLIBNAME\n",
"{\n",
"$(LINK) $(LINKFLAGS) -l=NT_DLL -\"export=$(DEFFILENAME) option implib=$(IMPLIBNAME)\" /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions Shell\n",
"{\n",
"$(CP) $(>) $(<)\n",
"}\n",
"}\n",
"else if $(JAM_TOOLSET) = LCC\n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) /out:$(<) $(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -Fo$(<) -I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions DllLink bind NEEDLIBS DEFFILENAME\n",
"{\n",
"$(LINK) $(LINKFLAGS) -DLL -o $(<) $(UNDEFS) $(>) $(DEFFILENAME) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions ignore DllLinkMv\n",
"{\n",
"$(MV) $(2) $(1)\n",
"}\n",
"\n",
"actions Shell\n",
"{\n",
"$(CP) $(>) $(<)\n",
"}\n",
"}\n",
"else if $(JAM_TOOLSET) = DIGITALMARS\n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) $(<) $(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) -c $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -o$(<) -I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) -c $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) -o$(<) -I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) $(>),$(<),, $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions DllLink bind NEEDLIBS DEFFILENAME IMPLIBNAME\n",
"{\n",
"$(LINK) $(LINKFLAGS) /IMPLIB:$(IMPLIBNAME) $(>) , $(<) ,NUL, $(LINKLIBS:E) $(NEEDLIBS:E) , $(DEFFILENAME)\n",
"}\n",
"\n",
"actions Shell\n",
"{\n",
"$(CP) $(>) $(<)\n",
"}\n",
"}\n",
"else if $(JAM_TOOLSET) = PELLESC\n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) /OUT:$(<) $(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) /Fo $(<) -I$(STDHDRS) $(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) $(LINKFLAGS) /OUT:$(<) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions DllLink bind NEEDLIBS DEFFILENAME IMPLIBNAME\n",
"{\n",
"$(LINK) $(LINKFLAGS) /DLL /DEF:$(DEFFILENAME) /IMPLIB:$(IMPLIBNAME) /OUT:$(<) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions Shell\n",
"{\n",
"$(CP) $(>) $(<)\n",
"}\n",
"}\n",
"}\n",
"\n",
"\n",
"else if $(OS2)\n",
"{\n",
"if $(JAM_TOOLSET) = WATCOM\n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) -q $(<) +-$(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) /Fo=$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) /Fo=$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) -q $(LINKFLAGS) /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
"}\n",
"\n",
"actions Shell\n",
"{\n",
"$(CP) $(>) $(<)\n",
"}\n",
"}\n",
"else if $(JAM_TOOLSET) = EMX\n",
"{\n",
"actions together piecemeal Archive\n",
"{\n",
"$(AR) $(<) $(>:T)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC) -c -o $(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++) -c -o $(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"}\n",
"}\n",
"\n",
"\n",
"else if $(VMS)\n",
"{\n",
"actions updated together piecemeal Archive\n",
"{\n",
"lib/replace $(<) $(>[1]) ,$(>[2-])\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"$(CC)/obj=$(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"$(C++)/obj=$(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(CCHDRS) $(>)\n",
"}\n",
"\n",
"actions piecemeal together existing Clean\n",
"{\n",
"$(RM) $(>[1]);* ,$(>[2-]);*\n",
"}\n",
"\n",
"actions together quietly CreLib\n",
"{\n",
"if f$search(\"$(<)\") .eqs. \"\" then lib/create $(<)\n",
"}\n",
"\n",
"actions GenFile1\n",
"{\n",
"mcr $(>[1]) $(<) $(>[2-])\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK)/exe=$(<) $(LINKFLAGS) $(>:J=,) ,$(NEEDLIBS)/lib ,$(LINKLIBS)\n",
"}\n",
"\n",
"actions quietly updated piecemeal together RmTemps\n",
"{\n",
"$(RM) $(>[1]);* ,$(>[2-]);*\n",
"}\n",
"\n",
"actions Shell\n",
"{\n",
"$(CP) $(>) $(<)\n",
"}\n",
"}\n",
"\n",
"\n",
"else if $(MAC)\n",
"{\n",
"actions together Archive\n",
"{\n",
"$(LINK) -library -o $(<) $(>)\n",
"}\n",
"\n",
"actions Cc\n",
"{\n",
"set -e MWCincludes $(CCHDRS)\n",
"$(CC) -o $(<) $(CCFLAGS) $(OPTIM) $(CCDEFS) $(>)\n",
"}\n",
"\n",
"actions C++\n",
"{\n",
"set -e MWCincludes $(CCHDRS)\n",
"$(CC) -o $(<) $(C++FLAGS) $(OPTIM) $(CCDEFS) $(>)\n",
"}\n",
"\n",
"actions Link bind NEEDLIBS\n",
"{\n",
"$(LINK) -o $(<) $(LINKFLAGS) $(>) $(NEEDLIBS) \"$(LINKLIBS)\"\n",
"}\n",
"}\n",
"\n",
"if $(WIN98)\n",
"{\n",
"actions existing Clean\n",
"{\n",
"del $(>)\n",
"}\n",
"}\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",
"\n",
"\n",
"rule INSTALLBIN { InstallBin $(BINDIR) : $(<) ; }\n",
"rule INSTALLLIB { InstallLib $(LIBDIR) : $(<) ; }\n",
"rule INSTALLMAN { InstallMan $(MANDIR) : $(<) ; }\n",
"\n",
"\n",
"rule addDirName { $(<) += [ FDirName $(>) ] ; }\n",
"rule makeCommon { FStripCommon $(<) : $(>) ; }\n",
"rule _makeCommon { FStripCommon $(<) : $(>) ; }\n",
"rule makeDirName { $(<) = [ FDirName $(>) ] ; }\n",
"rule makeGrist { $(<) = [ FGrist $(>) ] ; }\n",
"rule makeGristedName { $(<) = [ FGristSourceFiles $(>) ] ; }\n",
"rule makeRelPath { $(<[1]) = [ FRelPath $(<[2-]) : $(>) ] ; }\n",
"rule makeString { $(<) = $(>:J) ; }\n",
"rule makeSubDir { $(<) = [ FSubDir $(>) ] ; }\n",
"rule makeSuffixed { $(<[1]) = [ FAppendSuffix $(>) : $(<[2]) ] ; }\n",
"\n",
"\n",
"\n",
"rule _PkgAppend\n",
"{\n",
"local result = $($(1)) ;\n",
"local i ;\n",
"\n",
"for i in $(2)\n",
"{\n",
"if ! $(i) in $(result)\n",
"{\n",
"result += $(i) ;\n",
"}\n",
"}\n",
"$(1) = $(result) ;\n",
"}\n",
"\n",
"\n",
"rule _PkgPrepend\n",
"{\n",
"local result = $($(1)) ;\n",
"local i ;\n",
"\n",
"for i in $(2)\n",
"{\n",
"if ! $(i) in $(result)\n",
"{\n",
"result = $(i) $(result) ;\n",
"}\n",
"}\n",
"$(1) = $(result) ;\n",
"}\n",
"\n",
"\n",
"rule PkgBegin\n",
"{\n",
"if $(_PKG_NAME)\n",
"{\n",
"Echo \"nested package declarations are not allowed. please use\"\n",
"Exit \"PkgEnd to finish\" $(_PKG_NAME)\"'s declaration\" ;\n",
"}\n",
"\n",
"if ! $(PACKAGE_ROOT)\n",
"{\n",
"PACKAGE_ROOT = [ FDirName $(HOME) packages ] ;\n",
"Echo \"PACKAGE_ROOT variable not set, using\" $(PACKAGE_ROOT) \"directory\" ;\n",
"}\n",
"\n",
"_PKG_NAME = $(1[1]) ;\n",
"_PKG_DESC = [ FDirName $(PACKAGE_ROOT) $(_PKG_NAME).pc ] ;\n",
"_PKG_TOP = $(2) ;\n",
"if ! $(_PKG_TOP)\n",
"{\n",
"_PKG_TOP = [ FDirName $(PACKAGE_ROOT) $(_PKG_NAME) ] ;\n",
"}\n",
"\n",
"_PKG_ORG_HDRS = $(HDRS) ;\n",
"_PKG_ORG_DEFINES = $(DEFINES) ;\n",
"_PKG_ORG_LINKLIBS = $(LINKLIBS) ;\n",
"_PKG_ORG_SUBDIRHDRS = $(SUBDIRHDRS) ;\n",
"\n",
"pkg-$(_PKG_NAME)-top = $(_PKG_TOP) ;\n",
"\n",
"_PKG_USES = ;\n",
"_PKG_DEFINES = ;\n",
"_PKG_INCLUDES = ;\n",
"_PKG_LIBS = ;\n",
"_PKG_DO_INSTALL = ;\n",
"\n",
"_PKG_ALL_USES = ;\n",
"\n",
"_PkgUpdate ;\n",
"}\n",
"\n",
"\n",
"rule PkgEnd\n",
"{\n",
"if $(_PKG_DO_INSTALL)\n",
"{\n",
"_PkgGeneratePc $(_PKG_DESC) ;\n",
"PKG on $(_PKG_DESC) = $(_PKG_NAME) ;\n",
"}\n",
"\n",
"HDRS = $(_PKG_ORG_HDRS) ;\n",
"DEFINES = $(_PKG_ORG_DEFINES) ;\n",
"LINKLIBS = $(_PKG_ORG_LINKLIBS) ;\n",
"\n",
"SUBDIRHDRS = $(_PKG_ORG_SUBDIRHDRS) ;\n",
"\n",
"_PKG_NAME = ;\n",
"_PKG_DO_INSTALL = ;\n",
"}\n",
"\n",
"rule _PkgReverse\n",
"{\n",
"local p ;\n",
"\n",
"result = $(1[1]) ;\n",
"\n",
"for p in $(1[2-])\n",
"{\n",
"result = $(p) $(result) ;\n",
"}\n",
"return $(result) ;\n",
"}\n",
"\n",
"rule _PkgGeneratePc\n",
"{\n",
"MkDir $(PACKAGE_ROOT) ;\n",
"Depends $(1) : $(PACKAGE_ROOT) ;\n",
"Depends install : $(1) ;\n",
"Clean uninstall : $(1) ;\n",
"Always $(1) ; # always re-install, overwrite old version\n",
"}\n",
"\n",
"if $(UNIX)\n",
"{\n",
"actions _PkgGeneratePc\n",
"{\n",
"echo \"# this file was generated automatically - do not edit\" > $(1)\n",
"echo \"pkg-$(PKG)-uses = $(pkg-$(PKG)-uses) ;\" >> $(1)\n",
"echo \"pkg-$(PKG)-libs = $(pkg-$(PKG)-libs:Q) ;\" >> $(1)\n",
"echo \"pkg-$(PKG)-defines = $(pkg-$(PKG)-defines) ;\" >> $(1)\n",
"echo \"pkg-$(PKG)-includes = $(pkg-$(PKG)-includes:Q) ;\" >> $(1)\n",
"echo \"pkg-$(PKG)-ok = 1 ;\" >> $(1)\n",
"}\n",
"}\n",
"else\n",
"{\n",
"actions _PkgGeneratePc\n",
"{\n",
"echo # this file was generated automatically - do not edit > $(1)\n",
"echo pkg-$(PKG)-uses = $(pkg-$(PKG)-uses) ; >> $(1)\n",
"echo pkg-$(PKG)-libs = $(pkg-$(PKG)-libs:Q) ; >> $(1)\n",
"echo pkg-$(PKG)-defines = $(pkg-$(PKG)-defines) ; >> $(1)\n",
"echo pkg-$(PKG)-includes = $(pkg-$(PKG)-includes:Q) ; >> $(1)\n",
"echo pkg-$(PKG)-ok = 1 ; >> $(1)\n",
"}\n",
"}\n",
"\n",
"rule PkgInstallPc\n",
"{\n",
"}\n",
"\n",
"rule _PkgUpdate\n",
"{\n",
"local p z ;\n",
"\n",
"_PKG_ALL_DEFINES = ;\n",
"_PKG_ALL_INCLUDES = ;\n",
"_PKG_ALL_LIBS = ;\n",
"_PKG_USE_LIBS = ;\n",
"\n",
"for p in $(_PKG_ALL_USES)\n",
"{\n",
"_PkgAppend _PKG_ALL_DEFINES : $(pkg-$(p)-defines) ;\n",
"_PkgAppend _PKG_ALL_INCLUDES : $(pkg-$(p)-includes) ;\n",
"}\n",
"\n",
"for p in [ _PkgReverse $(_PKG_ALL_USES) ]\n",
"{\n",
"local thelibs = $(pkg-$(p)-libs) ;\n",
"\n",
"_PKG_ALL_LIBS += $(thelibs) ;\n",
"_PKG_USE_LIBS += $(thelibs[1]) ;\n",
"}\n",
"\n",
"_PkgAppend _PKG_ALL_DEFINES : $(_PKG_DEFINES) ;\n",
"_PkgAppend _PKG_ALL_INCLUDES : $(_PKG_INCLUDES) ;\n",
"\n",
"HDRS = $(_PKG_ORG_HDRS) $(_PKG_ALL_INCLUDES) ;\n",
"DEFINES = $(_PKG_ORG_DEFINES) $(_PKG_ALL_DEFINES) ;\n",
"LINKLIBS = $(_PKG_ORG_LINKLIBS) $(_PKG_ALL_LIBS) ;\n",
"\n",
"pkg-$(_PKG_NAME)-includes = $(_PKG_INCLUDES) ;\n",
"pkg-$(_PKG_NAME)-defines = $(_PKG_DEFINES) ;\n",
"pkg-$(_PKG_NAME)-uses = $(_PKG_USES) ;\n",
"pkg-$(_PKG_NAME)-libs = $(_PKG_LIBS) ;\n",
"}\n",
"\n",
"\n",
"rule _PkgUses\n",
"{\n",
"local p ;\n",
"\n",
"for p in $(1)\n",
"{\n",
"if ! $(p) in $(_PKG_ALL_USES)\n",
"{\n",
"local pcfile = [ FDirName $(PACKAGE_ROOT) $(p).pc ] ;\n",
"\n",
"NoCare $(pcfile) ;\n",
"include $(pcfile) ;\n",
"\n",
"if ! $(pkg-$(p)-ok)\n",
"{\n",
"$(2) += $(p) ;\n",
"}\n",
"else if $(pkg-$(p)-uses)\n",
"{\n",
"_PkgUses $(pkg-$(p)-uses) ;\n",
"}\n",
"_PKG_ALL_USES += $(p) ;\n",
"}\n",
"}\n",
"}\n",
"\n",
"\n",
"rule PkgUses\n",
"{\n",
"local pkg-missing = ;\n",
"\n",
"_PkgUses $(1) : pkg-missing ;\n",
"\n",
"if $(pkg-missing)\n",
"{\n",
"Exit \"Please install the following required packages:\" $(pkg-missing) ;\n",
"}\n",
"\n",
"_PkgPrepend _PKG_USES : $(1) ;\n",
"\n",
"_PkgUpdate ;\n",
"}\n",
"\n",
"\n",
"rule _PkgMakeLocate\n",
"{\n",
"local top = $(3:E=$(DOT)) ;\n",
"local dir file ss ;\n",
"local dirs ;\n",
"\n",
"for ss in $(2)\n",
"{\n",
"file = [ FDirName $(top) $(ss:G=\"\") ] ;\n",
"dir = $(1) ;\n",
"\n",
"if $(ss:D)\n",
"{\n",
"dir = [ FDirName $(dir) $(ss:D) ] ;\n",
"}\n",
"\n",
"LOCATE on $(ss) = $(1) ;\n",
"Depends $(ss) : $(dir) ;\n",
"\n",
"if ! $(dir) in $(dirs)\n",
"{\n",
"dirs += $(dir) ;\n",
"}\n",
"}\n",
"\n",
"MkDir $(dirs) ;\n",
"}\n",
"\n",
"rule _PkgInstallInto\n",
"{\n",
"local sources = $(2) ;\n",
"local targets = $(sources:G=$(INSTALLGRIST)) ;\n",
"\n",
"\n",
"Depends install : $(targets) ;\n",
"Clean uninstall : $(targets) ;\n",
"\n",
"_PkgMakeLocate $(1) : $(targets) : $(3) ;\n",
"\n",
"\n",
"for s in $(sources)\n",
"{\n",
"local t = $(s:G=$(INSTALLGRIST)) ;\n",
"\n",
"Depends $(t) : $(s) ;\n",
"\n",
"SEARCH on $(s) = $(3) ;\n",
"\n",
"Install $(t) : $(s) ;\n",
"Chmod $(t) ;\n",
"\n",
"if $(OWNER) && $(CHOWN)\n",
"{\n",
"Chown $(t) ;\n",
"OWNER on $(t) = $(OWNER) ;\n",
"}\n",
"\n",
"if $(GROUP) && $(CHGRP)\n",
"{\n",
"Chgrp $(t) ;\n",
"GROUP on $(t) = $(GROUP) ;\n",
"}\n",
"}\n",
"}\n",
"\n",
"rule _PkgInstallBin\n",
"{\n",
"local _t = [ FAppendSuffix $(>) : $(SUFEXE) ] ;\n",
"\n",
"_PkgInstallInto $(<) : $(_t) : $(3) ;\n",
"MODE on $(_t:G=$(INSTALLGRIST)) = $(EXEMODE) ;\n",
"}\n",
"\n",
"\n",
"rule _PkgInstallShell\n",
"{\n",
"_PkgInstallInto $(1) : $(2) : $(3) ;\n",
"MODE on $(2:G=$(INSTALLGRIST)) = $(SHELLMODE) ;\n",
"}\n",
"\n",
"\n",
"rule _PkgInstallFile\n",
"{\n",
"_PkgInstallInto $(1) : $(2) : $(3) ;\n",
"MODE on $(2:G=$(INSTALLGRIST)) = $(FILEMODE) ;\n",
"}\n",
"\n",
"rule PkgIncludes\n",
"{\n",
"_PKG_INCLUDES += $(1) ;\n",
"_PkgUpdate ;\n",
"}\n",
"\n",
"rule PkgDefines\n",
"{\n",
"_PKG_DEFINES += $(1) ;\n",
"_PkgUpdate ;\n",
"}\n",
"\n",
"rule PkgInstallHeader\n",
"{\n",
"local dir = [ FDirName $(_PKG_TOP) include ] ;\n",
"\n",
"_PKG_DO_INSTALL = 1 ;\n",
"\n",
"_PkgInstallFile [ FDirName $(dir) $(3) ] : $(1) : $(2) ;\n",
"_PkgAppend _PKG_INCLUDES : $(dir) ;\n",
"_PkgUpdate ;\n",
"}\n",
"\n",
"rule PkgInstallLib\n",
"{\n",
"local lib = $(1:S=$(SUFLIB)) ;\n",
"local dir = [ FDirName $(_PKG_TOP) lib ] ;\n",
"\n",
"_PKG_DO_INSTALL = 1 ;\n",
"\n",
"_PkgInstallFile $(dir) : $(lib) : $(DOT) ;\n",
"_PkgPrepend _PKG_LIBS : [ FDirName $(dir) $(lib) ] ;\n",
"_PkgUpdate ;\n",
"}\n",
"\n",
"\n",
"rule PkgNeedLib\n",
"{\n",
"_PkgAppend _PKG_LIBS : $(1) ;\n",
"_PkgUpdate ;\n",
"}\n",
"\n",
"\n",
"rule PkgMain\n",
"{\n",
"MainFromObjects $(<) : $(>:S=$(SUFOBJ)) ;\n",
"Objects $(>) ;\n",
"LINKLIBS on $(<:S=$(SUFEXE)) += $(LINKLIBS) ;\n",
"Depends $(<:S=$(SUFEXE)) : $(_PKG_USE_LIBS) ;\n",
"}\n",
"\n",
"\n",
"rule PkgGlob\n",
"{\n",
"local files dir ;\n",
"files = [ GLOB [ FDirName $(2) $(1) ] : $(3) ] ;\n",
"dir = [ FDirName $(1) ] ;\n",
"\n",
"return $(files:D=$(dir)) ;\n",
"}\n",
"\n",
"\n",
"include $(JAMFILE) ;\n",
0 };