/* 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 };