| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
|
|
| if $(NT) |
| { |
| SLASH ?= \\ |
| } |
| SLASH ?= / |
|
|
|
|
| |
| |
| |
| |
| rule find-to-root ( dir : patterns + ) |
| { |
| local globs = [ GLOB $(dir) : $(patterns) ] |
| while ! $(globs) && $(dir:P) != $(dir) |
| { |
| dir = $(dir:P) |
| globs = [ GLOB $(dir) : $(patterns) ] |
| } |
| return $(globs) |
| } |
|
|
|
|
| |
| .boost-build-file = |
|
|
| |
| .bootstrap-file = |
|
|
| |
| BOOST_BUILD_PATH.user-value = $(BOOST_BUILD_PATH) |
|
|
| |
| |
| |
| |
| if ! $(BOOST_BUILD_PATH) && $(UNIX) |
| { |
| BOOST_BUILD_PATH = /usr/share/boost-build |
| } |
|
|
|
|
| rule _poke ( module-name ? : variables + : value * ) |
| { |
| module $(<) |
| { |
| $(>) = $(3) |
| } |
| } |
|
|
|
|
| |
| |
| |
| |
| rule boost-build ( dir ? ) |
| { |
| if $(.bootstrap-file) |
| { |
| ECHO "Error: Illegal attempt to re-bootstrap the build system by invoking" |
| ECHO |
| ECHO " 'boost-build" $(dir) ";'" |
| ECHO |
| EXIT "Please consult the documentation at 'http://www.boost.org'." |
| } |
|
|
| |
| |
| BOOST_BUILD_PATH = $(dir:R=$(.boost-build-file:D)) $(BOOST_BUILD_PATH) |
|
|
| |
| |
| |
| |
| _poke .ENVIRON : BOOST_BUILD_PATH : $(BOOST_BUILD_PATH) |
|
|
| |
| local bootstrap-file = [ GLOB $(BOOST_BUILD_PATH) : bootstrap.jam ] |
| .bootstrap-file = $(bootstrap-file[1]) |
|
|
| |
| if ! $(.bootstrap-file) |
| { |
| ECHO "Unable to load Boost.Build: could not find build system." |
| ECHO --------------------------------------------------------- |
| ECHO "$(.boost-build-file) attempted to load the build system by invoking" |
| ECHO |
| ECHO " 'boost-build" $(dir) ";'" |
| ECHO |
| ECHO "but we were unable to find \"bootstrap.jam\" in the specified directory" |
| ECHO "or in BOOST_BUILD_PATH (searching "$(BOOST_BUILD_PATH:J=", ")")." |
| ECHO |
| EXIT "Please consult the documentation at 'http://www.boost.org'." |
| } |
|
|
| if [ MATCH .*(--debug-configuration).* : $(ARGV) ] |
| { |
| ECHO "notice: loading Boost.Build from" |
| [ NORMALIZE_PATH $(.bootstrap-file:D) ] |
| } |
|
|
| |
| include $(.bootstrap-file) |
| } |
|
|
|
|
| if [ MATCH .*(b2).* : $(ARGV[1]:BL) ] |
| || [ MATCH .*(bjam).* : $(ARGV[1]:BL) ] |
| || $(BOOST_ROOT) |
| { |
| |
| |
| |
| |
| |
|
|
| local search-path = $(BOOST_BUILD_PATH) $(BOOST_ROOT) |
| local self = [ SELF_PATH ] |
| local boost-build-relative = ../../share/boost-build |
| local self-based-path = [ NORMALIZE_PATH $(boost-build-relative:R=$(self)) ] |
|
|
| local boost-build-files = |
| [ find-to-root [ PWD ] : boost-build.jam ] |
| [ GLOB $(self-based-path) : boost-build.jam ] |
| |
| [ GLOB $(search-path) : boost-build.jam ] |
|
|
| .boost-build-file = $(boost-build-files[1]) |
|
|
| |
| |
| if ! $(.boost-build-file) |
| { |
| ECHO "Unable to load Boost.Build: could not find \"boost-build.jam\"" |
| ECHO --------------------------------------------------------------- |
|
|
| if ! [ MATCH .*(bjam).* : $(ARGV[1]:BL) ] |
| { |
| ECHO "BOOST_ROOT must be set, either in the environment, or " |
| ECHO "on the command-line with -sBOOST_ROOT=..., to the root" |
| ECHO "of the boost installation." |
| ECHO |
| } |
|
|
| ECHO "Attempted search from" [ PWD ] "up to the root" |
| ECHO "at" $(self-based-path) |
| ECHO "and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: "$(search-path:J=", ")"." |
| EXIT "Please consult the documentation at 'http://www.boost.org'." |
| } |
|
|
| if [ MATCH .*(--debug-configuration).* : $(ARGV) ] |
| { |
| ECHO "notice: found boost-build.jam at" |
| [ NORMALIZE_PATH $(.boost-build-file) ] |
| } |
|
|
| |
| |
| |
| |
| |
| include $(.boost-build-file) |
|
|
| |
| if ! $(.bootstrap-file) |
| { |
| ECHO "Unable to load Boost.Build" |
| ECHO -------------------------- |
| ECHO "\"$(.boost-build-file)\" was found by searching from" [ PWD ] "up to the root" |
| ECHO "and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: "$(search-path:J=", ")"." |
| ECHO |
| ECHO "However, it failed to call the \"boost-build\" rule to indicate" |
| ECHO "the location of the build system." |
| ECHO |
| EXIT "Please consult the documentation at 'http://www.boost.org'." |
| } |
| } |
| else |
| { |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
|
|
| |
| |
| |
| if $(NT) |
| { |
| |
| |
| local SUPPORTED_TOOLSETS = "BORLANDC" "VC7" "VISUALC" "VISUALC16" "INTELC" "WATCOM" |
| "MINGW" "LCC" |
|
|
| |
| |
| TOOLSET = "" |
|
|
| |
| |
| |
| if $(JAM_TOOLSET) |
| { |
| local t |
|
|
| for t in $(SUPPORTED_TOOLSETS) |
| { |
| $(t) = $($(t):J=" ") |
| if $(t) = $(JAM_TOOLSET) { TOOLSET = $(t) |
| } |
|
|
| if ! $(TOOLSET) |
| { |
| ECHO "The JAM_TOOLSET environment variable is defined but its value" |
| ECHO "is invalid, please use one of the following:" |
| ECHO |
|
|
| for t in $(SUPPORTED_TOOLSETS) { ECHO " " $(t) |
| EXIT |
| } |
| } |
|
|
| |
| |
| |
| if ! $(TOOLSET) |
| { |
| if $(BCCROOT) |
| { |
| TOOLSET = BORLANDC |
| BORLANDC = $(BCCROOT:J=" ") |
| } |
| else if $(MSVC) |
| { |
| TOOLSET = VISUALC16 |
| VISUALC16 = $(MSVC:J=" ") |
| } |
| else if $(MSVCNT) |
| { |
| TOOLSET = VISUALC |
| VISUALC = $(MSVCNT:J=" ") |
| } |
| else if $(MSVCDir) |
| { |
| TOOLSET = VISUALC |
| VISUALC = $(MSVCDir:J=" ") |
| } |
| else if $(MINGW) |
| { |
| TOOLSET = MINGW |
| } |
| else |
| { |
| ECHO "Jam cannot be run because, either:" |
| ECHO " a. You didn't set BOOST_ROOT to indicate the root of your" |
| ECHO " Boost installation." |
| ECHO " b. You are trying to use stock Jam but didn't indicate which" |
| ECHO " compilation toolset to use. To do so, follow these simple" |
| ECHO " instructions:" |
| ECHO |
| ECHO " - define one of the following environment variable, with the" |
| ECHO " appropriate value according to this list:" |
| ECHO |
| ECHO " Variable Toolset Description" |
| ECHO |
| ECHO " BORLANDC Borland C++ BC++ install path" |
| ECHO " VISUALC Microsoft Visual C++ VC++ install path" |
| ECHO " VISUALC16 Microsoft Visual C++ 16 bit VC++ 16 bit install" |
| ECHO " INTELC Intel C/C++ IC++ install path" |
| ECHO " WATCOM Watcom C/C++ Watcom install path" |
| ECHO " MINGW MinGW (gcc) MinGW install path" |
| ECHO " LCC Win32-LCC LCC-Win32 install path" |
| ECHO |
| ECHO " - define the JAM_TOOLSET environment variable with the *name*" |
| ECHO " of the toolset variable you want to use." |
| ECHO |
| ECHO " e.g.: set VISUALC=C:\\Visual6" |
| ECHO " set JAM_TOOLSET=VISUALC" |
| EXIT |
| } |
| } |
|
|
| CP ?= copy |
| RM ?= del /f/q |
| SLASH ?= \\ |
| SUFLIB ?= .lib |
| SUFOBJ ?= .obj |
| SUFEXE ?= .exe |
|
|
| if $(TOOLSET) = BORLANDC |
| { |
| ECHO "Compiler is Borland C++" |
|
|
| AR ?= tlib /C /P64 |
| CC ?= bcc32 |
| CCFLAGS ?= -q -y -d -v -w-par -w-ccc -w-rch -w-pro -w-aus |
| C++ ?= bcc32 |
| C++FLAGS ?= -q -y -d -v -w-par -w-ccc -w-rch -w-pro -w-aus -P |
| LINK ?= $(CC) |
| LINKFLAGS ?= $(CCFLAGS) |
| STDLIBPATH ?= $(BORLANDC)\\lib |
| STDHDRS ?= $(BORLANDC)\\include |
| NOARSCAN ?= true |
| } |
| else if $(TOOLSET) = VISUALC16 |
| { |
| ECHO "Compiler is Microsoft Visual C++ 16 bit" |
|
|
| AR ?= lib /nologo |
| CC ?= cl /nologo |
| CCFLAGS ?= /D \"WIN\" |
| C++ ?= $(CC) |
| C++FLAGS ?= $(CCFLAGS) |
| LINK ?= $(CC) |
| LINKFLAGS ?= $(CCFLAGS) |
| LINKLIBS ?= |
| \"$(VISUALC16)\\lib\\mlibce.lib\" |
| \"$(VISUALC16)\\lib\\oldnames.lib\" |
| |
| LINKLIBS ?= |
| NOARSCAN ?= true |
| OPTIM ?= "" |
| STDHDRS ?= $(VISUALC16)\\include |
| UNDEFFLAG ?= "/u _" |
| } |
| else if $(TOOLSET) = VISUALC |
| { |
| ECHO "Compiler is Microsoft Visual C++" |
|
|
| AR ?= lib |
| AS ?= masm386 |
| CC ?= cl /nologo |
| CCFLAGS ?= "" |
| C++ ?= $(CC) |
| C++FLAGS ?= $(CCFLAGS) |
| LINK ?= link /nologo |
| LINKFLAGS ?= "" |
| LINKLIBS ?= \"$(VISUALC)\\lib\\advapi32.lib\" |
| |
| |
| \"$(VISUALC)\\lib\\gdi32.lib\" |
| \"$(VISUALC)\\lib\\user32.lib\" |
| \"$(VISUALC)\\lib\\kernel32.lib\" |
| OPTIM ?= "" |
| STDHDRS ?= $(VISUALC)\\include |
| UNDEFFLAG ?= "/u _" |
| } |
| else if $(TOOLSET) = VC7 |
| { |
| ECHO "Compiler is Microsoft Visual C++ .NET" |
|
|
| AR ?= lib |
| AS ?= masm386 |
| CC ?= cl /nologo |
| CCFLAGS ?= "" |
| C++ ?= $(CC) |
| C++FLAGS ?= $(CCFLAGS) |
| LINK ?= link /nologo |
| LINKFLAGS ?= "" |
| LINKLIBS ?= \"$(VISUALC)\\PlatformSDK\\lib\\advapi32.lib\" |
| |
| |
| \"$(VISUALC)\\PlatformSDK\\lib\\gdi32.lib\" |
| \"$(VISUALC)\\PlatformSDK\\lib\\user32.lib\" |
| \"$(VISUALC)\\PlatformSDK\\lib\\kernel32.lib\" |
| OPTIM ?= "" |
| STDHDRS ?= \"$(VISUALC)\\include\" |
| \"$(VISUALC)\\PlatformSDK\\include\" |
| UNDEFFLAG ?= "/u _" |
| } |
| else if $(TOOLSET) = INTELC |
| { |
| ECHO "Compiler is Intel C/C++" |
|
|
| if ! $(VISUALC) |
| { |
| ECHO "As a special exception, when using the Intel C++ compiler, you need" |
| ECHO "to define the VISUALC environment variable to indicate the location" |
| ECHO "of your Visual C++ installation. Aborting.." |
| EXIT |
| } |
|
|
| AR ?= lib |
| AS ?= masm386 |
| CC ?= icl /nologo |
| CCFLAGS ?= "" |
| C++ ?= $(CC) |
| C++FLAGS ?= $(CCFLAGS) |
| LINK ?= link /nologo |
| LINKFLAGS ?= "" |
| LINKLIBS ?= $(VISUALC)\\lib\\advapi32.lib |
| |
| |
| $(VISUALC)\\lib\\kernel32.lib |
| |
| OPTIM ?= "" |
| STDHDRS ?= $(INTELC)\include $(VISUALC)\\include |
| UNDEFFLAG ?= "/u _" |
| } |
| else if $(TOOLSET) = WATCOM |
| { |
| ECHO "Compiler is Watcom C/C++" |
|
|
| AR ?= wlib |
| CC ?= wcc386 |
| CCFLAGS ?= /zq /DWIN32 /I$(WATCOM)\\h |
| C++ ?= wpp386 |
| C++FLAGS ?= $(CCFLAGS) |
| CP ?= copy |
| DOT ?= . |
| DOTDOT ?= .. |
| LINK ?= wcl386 |
| LINKFLAGS ?= /zq |
| LINKLIBS ?= |
| MV ?= move |
| NOARSCAN ?= true |
| OPTIM ?= |
| RM ?= del /f |
| SLASH ?= \\ |
| STDHDRS ?= $(WATCOM)\\h $(WATCOM)\\h\\nt |
| SUFEXE ?= .exe |
| SUFLIB ?= .lib |
| SUFOBJ ?= .obj |
| UNDEFFLAG ?= "/u _" |
| } |
| else if $(TOOLSET) = MINGW |
| { |
| ECHO "Compiler is GCC with Mingw" |
|
|
| AR ?= ar -ru |
| CC ?= gcc |
| CCFLAGS ?= "" |
| C++ ?= $(CC) |
| C++FLAGS ?= $(CCFLAGS) |
| LINK ?= $(CC) |
| LINKFLAGS ?= "" |
| LINKLIBS ?= "" |
| OPTIM ?= |
| SUFOBJ = .o |
| SUFLIB = .a |
| SLASH = / |
| |
| } |
| else if $(TOOLSET) = LCC |
| { |
| ECHO "Compiler is Win32-LCC" |
|
|
| AR ?= lcclib |
| CC ?= lcc |
| CCFLAGS ?= "" |
| C++ ?= $(CC) |
| C++FLAGS ?= $(CCFLAGS) |
| LINK ?= lcclnk |
| LINKFLAGS ?= "" |
| LINKLIBS ?= "" |
| OPTIM ?= |
| NOARSCAN = true |
| } |
| else |
| { |
| |
| |
| |
| EXIT On NT, set BCCROOT, MSVCNT, MINGW or MSVC to the root of the |
| Borland or Microsoft directories. |
| } |
|
|
| } |
| else if $(OS2) |
| { |
| |
| |
| local SUPPORTED_TOOLSETS = "EMX" "WATCOM" |
|
|
| |
| |
| TOOLSET = "" |
|
|
| |
| |
| |
| if $(JAM_TOOLSET) |
| { |
| local t |
|
|
| for t in $(SUPPORTED_TOOLSETS) |
| { |
| $(t) = $($(t):J=" ") |
| if $(t) = $(JAM_TOOLSET) { TOOLSET = $(t) |
| } |
|
|
| if ! $(TOOLSET) |
| { |
| ECHO "The JAM_TOOLSET environment variable is defined but its value" |
| ECHO "is invalid, please use one of the following:" |
| ECHO |
|
|
| for t in $(SUPPORTED_TOOLSETS) { ECHO " " $(t) |
| EXIT |
| } |
| } |
|
|
| |
| |
| |
| if ! $(TOOLSET) |
| { |
| if $(watcom) |
| { |
| WATCOM = $(watcom:J=" ") |
| TOOLSET = WATCOM |
| } |
| else |
| { |
| ECHO "Jam cannot be run because you didn't indicate which compilation toolset" |
| ECHO "to use. To do so, follow these simple instructions:" |
| ECHO |
| ECHO " - define one of the following environment variable, with the" |
| ECHO " appropriate value according to this list:" |
| ECHO |
| ECHO " Variable Toolset Description" |
| ECHO |
| ECHO " WATCOM Watcom C/C++ Watcom install path" |
| ECHO " EMX EMX (gcc) EMX install path" |
| ECHO " VISUALAGE IBM Visual Age C/C++ VisualAge install path" |
| ECHO |
| ECHO " - define the JAM_TOOLSET environment variable with the *name*" |
| ECHO " of the toolset variable you want to use." |
| ECHO |
| ECHO " e.g.: set WATCOM=C:\WATCOM" |
| ECHO " set JAM_TOOLSET=WATCOM" |
| ECHO |
| EXIT |
| } |
| } |
|
|
| RM = del /f |
| CP = copy |
| MV ?= move |
| DOT ?= . |
| DOTDOT ?= .. |
| SUFLIB ?= .lib |
| SUFOBJ ?= .obj |
| SUFEXE ?= .exe |
|
|
| if $(TOOLSET) = WATCOM |
| { |
| AR ?= wlib |
| BINDIR ?= \\os2\\apps |
| CC ?= wcc386 |
| CCFLAGS ?= /zq /DOS2 /I$(WATCOM)\\h |
| C++ ?= wpp386 |
| C++FLAGS ?= $(CCFLAGS) |
| LINK ?= wcl386 |
| LINKFLAGS ?= /zq |
| LINKLIBS ?= |
| NOARSCAN ?= true |
| OPTIM ?= |
| SLASH ?= \\ |
| STDHDRS ?= $(WATCOM)\\h |
| UNDEFFLAG ?= "/u _" |
| } |
| else if $(TOOLSET) = EMX |
| { |
| ECHO "Compiler is GCC-EMX" |
| AR ?= ar -ru |
| CC ?= gcc |
| CCFLAGS ?= "" |
| C++ ?= $(CC) |
| C++FLAGS ?= $(CCFLAGS) |
| LINK ?= $(CC) |
| LINKFLAGS ?= "" |
| LINKLIBS ?= "" |
| OPTIM ?= |
| SUFOBJ = .o |
| SUFLIB = .a |
| UNDEFFLAG ?= "-U" |
| SLASH = / |
| |
| } |
| else |
| { |
| |
| EXIT "Sorry, but the $(JAM_TOOLSET) toolset isn't supported for now" |
| } |
| } |
| else if $(VMS) |
| { |
| C++ ?= cxx |
| C++FLAGS ?= |
| CC ?= cc |
| CCFLAGS ?= |
| CHMOD ?= set file/prot= |
| CP ?= copy/replace |
| CRELIB ?= true |
| DOT ?= [] |
| DOTDOT ?= [-] |
| EXEMODE ?= (w:e) |
| FILEMODE ?= (w:r) |
| HDRS ?= |
| LINK ?= link |
| LINKFLAGS ?= "" |
| LINKLIBS ?= |
| MKDIR ?= create/dir |
| MV ?= rename |
| OPTIM ?= "" |
| RM ?= delete |
| RUNVMS ?= mcr |
| SHELLMODE ?= (w:er) |
| SLASH ?= . |
| STDHDRS ?= decc$library_include |
| SUFEXE ?= .exe |
| SUFLIB ?= .olb |
| SUFOBJ ?= .obj |
|
|
| switch $(OS) |
| { |
| case OPENVMS : CCFLAGS ?= /stand=vaxc |
| case VMS : LINKLIBS ?= sys$library:vaxcrtl.olb/lib |
| } |
| } |
| else if $(MAC) |
| { |
| local OPT |
|
|
| CW ?= "{CW}" |
|
|
| MACHDRS ?= |
| "$(UMACHDRS):Universal:Interfaces:CIncludes" |
| "$(CW):MSL:MSL_C:MSL_Common:Include" |
| "$(CW):MSL:MSL_C:MSL_MacOS:Include" |
|
|
| MACLIBS ?= |
| "$(CW):MacOS Support:Universal:Libraries:StubLibraries:Interfacelib" |
| "$(CW):MacOS Support:Universal:Libraries:StubLibraries:Mathlib" |
|
|
| MPWLIBS ?= |
| "$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL MPWCRuntime.lib" |
| "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC MPW.Lib" |
|
|
| MPWNLLIBS ?= |
| "$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL MPWCRuntime.lib" |
| "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC MPW(NL).Lib" |
|
|
| SIOUXHDRS ?= |
|
|
| SIOUXLIBS ?= |
| "$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL RuntimePPC.lib" |
| "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL SIOUX.PPC.Lib" |
| "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC.Lib" |
|
|
| C++ ?= mwcppc |
| C++FLAGS ?= -w off -nomapcr |
| CC ?= mwcppc |
| CCFLAGS ?= -w off -nomapcr |
| CP ?= duplicate -y |
| DOT ?= ":" |
| DOTDOT ?= "::" |
| HDRS ?= $(MACHDRS) $(MPWHDRS) |
| LINK ?= mwlinkppc |
| LINKFLAGS ?= -mpwtool -warn |
| LINKLIBS ?= $(MACLIBS) $(MPWLIBS) |
| MKDIR ?= newfolder |
| MV ?= rename -y |
| NOARSCAN ?= true |
| OPTIM ?= |
| RM ?= delete -y |
| SLASH ?= ":" |
| STDHDRS ?= |
| SUFLIB ?= .lib |
| SUFOBJ ?= .o |
| } |
| else if $(OS) = BEOS && $(METROWERKS) |
| { |
| AR ?= mwld -xml -o |
| BINDIR ?= /boot/apps |
| CC ?= mwcc |
| CCFLAGS ?= -nosyspath |
| C++ ?= $(CC) |
| C++FLAGS ?= -nosyspath |
| FORTRAN ?= "" |
| LIBDIR ?= /boot/develop/libraries |
| LINK ?= mwld |
| LINKFLAGS ?= "" |
| MANDIR ?= /boot/documentation/"Shell Tools"/HTML |
| NOARSCAN ?= true |
| STDHDRS ?= /boot/develop/headers/posix |
| } |
| else if $(OS) = BEOS |
| { |
| BINDIR ?= /boot/apps |
| CC ?= gcc |
| C++ ?= $(CC) |
| FORTRAN ?= "" |
| LIBDIR ?= /boot/develop/libraries |
| LINK ?= gcc |
| LINKLIBS ?= -lnet |
| NOARSCAN ?= true |
| STDHDRS ?= /boot/develop/headers/posix |
| } |
| else if $(UNIX) |
| { |
| switch $(OS) |
| { |
| case AIX : |
| LINKLIBS ?= -lbsd |
|
|
| case AMIGA : |
| CC ?= gcc |
| YACC ?= "bison -y" |
|
|
| case CYGWIN : |
| CC ?= gcc |
| CCFLAGS += -D__cygwin__ |
| LEX ?= flex |
| RANLIB ?= "" |
| SUFEXE ?= .exe |
| YACC ?= "bison -y" |
|
|
| case DGUX : |
| RANLIB ?= "" |
| RELOCATE ?= true |
|
|
| case HPUX : |
| YACC = |
| CFLAGS += -Ae |
| CCFLAGS += -Ae |
| RANLIB ?= "" |
|
|
| case INTERIX : |
| CC ?= gcc |
| RANLIB ?= "" |
|
|
| case IRIX : |
| RANLIB ?= "" |
|
|
| case MPEIX : |
| CC ?= gcc |
| C++ ?= gcc |
| CCFLAGS += -D_POSIX_SOURCE |
| HDRS += /usr/include |
| RANLIB ?= "" |
| NOARSCAN ?= true |
| NOARUPDATE ?= true |
|
|
| case MVS : |
| RANLIB ?= "" |
|
|
| case NEXT : |
| AR ?= libtool -o |
| RANLIB ?= "" |
|
|
| case MACOSX : |
| AR ?= libtool -o |
| C++ ?= c++ |
| MANDIR ?= /usr/local/share/man |
| RANLIB ?= "" |
|
|
| case NCR : |
| RANLIB ?= "" |
|
|
| case PTX : |
| RANLIB ?= "" |
|
|
| case QNX : |
| AR ?= wlib |
| CC ?= cc |
| CCFLAGS ?= -Q |
| C++ ?= $(CC) |
| C++FLAGS ?= -Q |
| LINK ?= $(CC) |
| LINKFLAGS ?= -Q |
| NOARSCAN ?= true |
| RANLIB ?= "" |
|
|
| case SCO : |
| RANLIB ?= "" |
| RELOCATE ?= true |
|
|
| case SINIX : |
| RANLIB ?= "" |
|
|
| case SOLARIS : |
| RANLIB ?= "" |
| AR ?= "/usr/ccs/bin/ar ru" |
|
|
| case UNICOS : |
| NOARSCAN ?= true |
| OPTIM ?= -O0 |
|
|
| case UNIXWARE : |
| RANLIB ?= "" |
| RELOCATE ?= true |
| } |
|
|
| |
|
|
| CCFLAGS ?= |
| C++FLAGS ?= $(CCFLAGS) |
| CHMOD ?= chmod |
| CHGRP ?= chgrp |
| CHOWN ?= chown |
| LEX ?= lex |
| LINKFLAGS ?= $(CCFLAGS) |
| LINKLIBS ?= |
| OPTIM ?= -O |
| RANLIB ?= ranlib |
| YACC ?= yacc |
| YACCFILES ?= y.tab |
| YACCFLAGS ?= -d |
| } |
|
|
| |
| |
| |
|
|
| AR ?= ar ru |
| AS ?= as |
| ASFLAGS ?= |
| AWK ?= awk |
| BINDIR ?= /usr/local/bin |
| C++ ?= cc |
| C++FLAGS ?= |
| CC ?= cc |
| CCFLAGS ?= |
| CP ?= cp -f |
| CRELIB ?= |
| DOT ?= . |
| DOTDOT ?= .. |
| EXEMODE ?= 711 |
| FILEMODE ?= 644 |
| FORTRAN ?= f77 |
| FORTRANFLAGS ?= |
| HDRS ?= |
| INSTALLGRIST ?= installed |
| JAMFILE ?= Jamfile |
| JAMRULES ?= Jamrules |
| LEX ?= |
| LIBDIR ?= /usr/local/lib |
| LINK ?= $(CC) |
| LINKFLAGS ?= |
| LINKLIBS ?= |
| LN ?= ln |
| MANDIR ?= /usr/local/man |
| MKDIR ?= mkdir |
| MV ?= mv -f |
| OPTIM ?= |
| RCP ?= rcp |
| RM ?= rm -f |
| RSH ?= rsh |
| SED ?= sed |
| SHELLHEADER ?= "#!/bin/sh" |
| SHELLMODE ?= 755 |
| SLASH ?= / |
| STDHDRS ?= /usr/include |
| SUFEXE ?= "" |
| SUFLIB ?= .a |
| SUFOBJ ?= .o |
| UNDEFFLAG ?= "-u _" |
| YACC ?= |
| YACCFILES ?= |
| YACCFLAGS ?= |
|
|
| HDRPATTERN = |
| "^[ ]*#[ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ; |
| |
| OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ; |
| |
| |
| # |
| # Base dependencies - first for "bootstrap" kinds of rules |
| # |
| |
| DEPENDS all : shell files lib exe obj ; |
| DEPENDS all shell files lib exe obj : first ; |
| NOTFILE all first shell files lib exe obj dirs clean uninstall ; |
| ALWAYS clean uninstall ; |
| |
| # |
| # Rules |
| # |
| |
| rule As |
| { |
| DEPENDS $(<) : $(>) ; |
| ASFLAGS on $(<) += $(ASFLAGS) $(SUBDIRASFLAGS) ; |
| } |
| |
| rule Bulk |
| { |
| local i ; |
| |
| for i in $(>) |
| { |
| File $(i:D=$(<)) : $(i) ; |
| } |
| } |
| |
| rule Cc |
| { |
| local _h ; |
| |
| DEPENDS $(<) : $(>) ; |
| |
| # Just to clarify here: this sets the per-target CCFLAGS to |
| # be the current value of (global) CCFLAGS and SUBDIRCCFLAGS. |
| |
| CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ; |
| |
| # If the compiler's -o flag doesn't work, relocate the .o |
| |
| if $(RELOCATE) |
| { |
| CcMv $(<) : $(>) ; |
| } |
| |
| _h = $(SEARCH_SOURCE) $(HDRS) $(SUBDIRHDRS) ; |
| |
| if $(VMS) && $(_h) |
| { |
| SLASHINC on $(<) = "/inc=(" $(_h[1]) ,$(_h[2-]) ")" ; |
| } |
| else if $(MAC) && $(_h) |
| { |
| local _i _j ; |
| _j = $(_h[1]) ; |
| for _i in $(_h[2-]) |
| { |
| _j = $(_j),$(_i) ; |
| } |
| MACINC on $(<) = \"$(_j)\" ; |
| } |
| } |
| |
| rule C++ |
| { |
| local _h ; |
| |
| DEPENDS $(<) : $(>) ; |
| C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) ; |
| |
| if $(RELOCATE) |
| { |
| CcMv $(<) : $(>) ; |
| } |
| |
| _h = $(SEARCH_SOURCE) $(HDRS) $(SUBDIRHDRS) ; |
| |
| if $(VMS) && $(_h) |
| { |
| SLASHINC on $(<) = "/inc=(" $(_h[1]) ,$(_h[2-]) ")" ; |
| } |
| else if $(MAC) && $(_h) |
| { |
| local _i _j ; |
| _j = $(_h[1]) ; |
| for _i in $(_h[2-]) |
| { |
| _j = $(_j),$(_i) ; |
| } |
| MACINC on $(<) = \"$(_j)\" ; |
| } |
| } |
| |
| rule Chmod |
| { |
| if $(CHMOD) { Chmod1 $(<) ; } |
| } |
| |
| rule File |
| { |
| DEPENDS files : $(<) ; |
| DEPENDS $(<) : $(>) ; |
| SEARCH on $(>) = $(SEARCH_SOURCE) ; |
| MODE on $(<) = $(FILEMODE) ; |
| Chmod $(<) ; |
| } |
| |
| rule Fortran |
| { |
| DEPENDS $(<) : $(>) ; |
| } |
| |
| rule GenFile |
| { |
| local _t = [ FGristSourceFiles $(<) ] ; |
| local _s = [ FAppendSuffix $(>[1]) : $(SUFEXE) ] ; |
| Depends $(_t) : $(_s) $(>[2-]) ; |
| GenFile1 $(_t) : $(_s) $(>[2-]) ; |
| Clean clean : $(_t) ; |
| } |
| |
| rule GenFile1 |
| { |
| MakeLocate $(<) : $(LOCATE_SOURCE) ; |
| SEARCH on $(>) = $(SEARCH_SOURCE) ; |
| } |
| |
| rule HardLink |
| { |
| DEPENDS files : $(<) ; |
| DEPENDS $(<) : $(>) ; |
| SEARCH on $(>) = $(SEARCH_SOURCE) ; |
| } |
| |
| rule HdrMacroFile |
| { |
| # HdrMacroFile file ; |
| # |
| # this rule is used to indicate that a given file contains definitions |
| # for filename macros (e.g. " |
| |
| |
| |
| |
| HDRMACRO $(<) |
| } |
|
|
| rule HdrRule |
| { |
| |
|
|
| |
| |
| |
| |
|
|
| |
| |
| |
| |
|
|
| local s |
|
|
| if $(HDRGRIST) |
| { |
| s = $(>:G=$(HDRGRIST)) |
| } else { |
| s = $(>) |
| } |
|
|
| INCLUDES $(<) : $(s) |
| SEARCH on $(s) = $(HDRSEARCH) |
| NOCARE $(s) |
|
|
| |
|
|
| HDRSEARCH on $(s) = $(HDRSEARCH) |
| HDRSCAN on $(s) = $(HDRSCAN) |
| HDRRULE on $(s) = $(HDRRULE) |
| HDRGRIST on $(s) = $(HDRGRIST) |
| } |
|
|
| rule InstallInto |
| { |
| |
|
|
| local i t |
|
|
| t = $(>:G=$(INSTALLGRIST)) |
|
|
| |
| |
| |
| |
|
|
| Depends install : $(t) |
| Clean uninstall : $(t) |
| SEARCH on $(>) = $(SEARCH_SOURCE) |
| MakeLocate $(t) : $(<) |
|
|
| |
| |
|
|
| for i in $(>) |
| { |
| local tt = $(i:G=$(INSTALLGRIST)) |
|
|
| Depends $(tt) : $(i) |
| Install $(tt) : $(i) |
| Chmod $(tt) |
|
|
| if $(OWNER) && $(CHOWN) |
| { |
| Chown $(tt) |
| OWNER on $(tt) = $(OWNER) |
| } |
|
|
| if $(GROUP) && $(CHGRP) |
| { |
| Chgrp $(tt) |
| GROUP on $(tt) = $(GROUP) |
| } |
| } |
| } |
|
|
| rule InstallBin |
| { |
| local _t = [ FAppendSuffix $(>) : $(SUFEXE) ] |
|
|
| InstallInto $(<) : $(_t) |
| MODE on $(_t:G=installed) = $(EXEMODE) |
| } |
|
|
| rule InstallFile |
| { |
| InstallInto $(<) : $(>) |
| MODE on $(>:G=installed) = $(FILEMODE) |
| } |
|
|
| rule InstallLib |
| { |
| InstallInto $(<) : $(>) |
| MODE on $(>:G=installed) = $(FILEMODE) |
| } |
|
|
| rule InstallMan |
| { |
| |
|
|
| local i s d |
|
|
| for i in $(>) |
| { |
| switch $(i:S) |
| { |
| case .1 : s = 1 |
| case .4 : s = 4 |
| case .7 : s = 7 |
| case .n : s = n |
| } |
|
|
| d = man$(s) |
|
|
| InstallInto $(d:R=$(<)) : $(i) |
| } |
|
|
| MODE on $(>:G=installed) = $(FILEMODE) |
| } |
|
|
| rule InstallShell |
| { |
| InstallInto $(<) : $(>) |
| MODE on $(>:G=installed) = $(SHELLMODE) |
| } |
|
|
| rule Lex |
| { |
| LexMv $(<) : $(>) |
| DEPENDS $(<) : $(>) |
| MakeLocate $(<) : $(LOCATE_SOURCE) |
| Clean clean : $(<) |
| } |
|
|
| rule Library |
| { |
| LibraryFromObjects $(<) : $(>:S=$(SUFOBJ)) |
| Objects $(>) |
| } |
|
|
| rule LibraryFromObjects |
| { |
| local _i _l _s |
|
|
| |
|
|
| _s = [ FGristFiles $(>) ] |
| _l = $(<:S=$(SUFLIB)) |
|
|
| |
|
|
| if $(KEEPOBJS) |
| { |
| DEPENDS obj : $(_s) |
| } |
| else |
| { |
| DEPENDS lib : $(_l) |
| } |
|
|
| |
| |
| |
| |
|
|
| if ! $(_l:D) |
| { |
| MakeLocate $(_l) $(_l)($(_s:BS)) : $(LOCATE_TARGET) |
| } |
|
|
| if $(NOARSCAN) |
| { |
| |
| |
| |
|
|
| DEPENDS $(_l) : $(_s) |
| } |
| else |
| { |
| |
| |
| |
|
|
| DEPENDS $(_l) : $(_l)($(_s:BS)) |
|
|
| for _i in $(_s) |
| { |
| DEPENDS $(_l)($(_i:BS)) : $(_i) |
| } |
| } |
|
|
| Clean clean : $(_l) |
|
|
| if $(CRELIB) { CreLib $(_l) : $(_s[1]) |
|
|
| Archive $(_l) : $(_s) |
|
|
| if $(RANLIB) { Ranlib $(_l) |
|
|
| |
|
|
| if ! ( $(NOARSCAN) || $(KEEPOBJS) ) { RmTemps $(_l) : $(_s) |
| } |
|
|
| rule Link |
| { |
| MODE on $(<) = $(EXEMODE) |
| Chmod $(<) |
| } |
|
|
| rule LinkLibraries |
| { |
| |
| |
|
|
| local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] |
|
|
| DEPENDS $(_t) : $(>:S=$(SUFLIB)) |
| NEEDLIBS on $(_t) += $(>:S=$(SUFLIB)) |
| } |
|
|
| rule Main |
| { |
| MainFromObjects $(<) : $(>:S=$(SUFOBJ)) |
| Objects $(>) |
| } |
|
|
| rule MainFromObjects |
| { |
| local _s _t |
|
|
| |
| |
|
|
| _s = [ FGristFiles $(>) ] |
| _t = [ FAppendSuffix $(<) : $(SUFEXE) ] |
|
|
| if $(_t) != $(<) |
| { |
| DEPENDS $(<) : $(_t) |
| NOTFILE $(<) |
| } |
|
|
| |
|
|
| DEPENDS exe : $(_t) |
| DEPENDS $(_t) : $(_s) |
| MakeLocate $(_t) : $(LOCATE_TARGET) |
|
|
| Clean clean : $(_t) |
|
|
| Link $(_t) : $(_s) |
| } |
|
|
| rule MakeLocate |
| { |
| if $(>) |
| { |
| LOCATE on $(<) = $(>) |
| Depends $(<) : $(>[1]) |
| MkDir $(>[1]) |
| } |
| } |
|
|
| rule MkDir |
| { |
| |
| |
|
|
| NOUPDATE $(<) |
|
|
| if $(<) != $(DOT) && ! $($(<)-mkdir) |
| { |
| local s |
|
|
| |
| |
| |
|
|
| $(<)-mkdir = true |
| MkDir1 $(<) |
| Depends dirs : $(<) |
|
|
| |
| |
|
|
| s = $(<:P) |
|
|
| if $(NT) |
| { |
| switch $(s) |
| { |
| case *: : s = |
| case *:\\ : s = |
| } |
| } |
|
|
| if $(s) && $(s) != $(<) |
| { |
| Depends $(<) : $(s) |
| MkDir $(s) |
| } |
| else if $(s) |
| { |
| NOTFILE $(s) |
| } |
|
|
| } |
| } |
|
|
| rule Object |
| { |
| local h |
|
|
| |
|
|
| Clean clean : $(<) |
|
|
| MakeLocate $(<) : $(LOCATE_TARGET) |
| SEARCH on $(>) = $(SEARCH_SOURCE) |
|
|
| |
| |
| |
| |
| |
|
|
| HDRS on $(<) = $(SEARCH_SOURCE) $(HDRS) $(SUBDIRHDRS) |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
|
|
| if $(SEARCH_SOURCE) |
| { |
| h = $(SEARCH_SOURCE) |
| } |
| else |
| { |
| h = "" |
| } |
|
|
| HDRRULE on $(>) = HdrRule |
| HDRSCAN on $(>) = $(HDRPATTERN) |
| HDRSEARCH on $(>) = $(HDRS) $(SUBDIRHDRS) $(h) $(STDHDRS) |
| HDRGRIST on $(>) = $(HDRGRIST) |
|
|
| |
|
|
| switch $(>:S) |
| { |
| case .asm : As $(<) : $(>) |
| case .c : Cc $(<) : $(>) |
| case .C : C++ $(<) : $(>) |
| case .cc : C++ $(<) : $(>) |
| case .cpp : C++ $(<) : $(>) |
| case .f : Fortran $(<) : $(>) |
| case .l : Cc $(<) : $(<:S=.c) |
| Lex $(<:S=.c) : $(>) |
| case .s : As $(<) : $(>) |
| case .y : Cc $(<) : $(<:S=.c) |
| Yacc $(<:S=.c) : $(>) |
| case * : UserObject $(<) : $(>) |
| } |
| } |
|
|
|
|
| rule ObjectCcFlags |
| { |
| CCFLAGS on [ FGristFiles $(<:S=$(SUFOBJ)) ] += $(>) |
| } |
|
|
| rule ObjectC++Flags |
| { |
| C++FLAGS on [ FGristFiles $(<:S=$(SUFOBJ)) ] += $(>) |
| } |
|
|
| rule ObjectHdrs |
| { |
| HDRS on [ FGristFiles $(<:S=$(SUFOBJ)) ] += $(>) |
| } |
|
|
| rule Objects |
| { |
| local _i |
|
|
| for _i in [ FGristFiles $(<) ] |
| { |
| Object $(_i:S=$(SUFOBJ)) : $(_i) |
| DEPENDS obj : $(_i:S=$(SUFOBJ)) |
| } |
| } |
|
|
| rule RmTemps |
| { |
| TEMPORARY $(>) |
| } |
|
|
| rule Setuid |
| { |
| MODE on [ FAppendSuffix $(<) : $(SUFEXE) ] = 4711 |
| } |
|
|
| rule Shell |
| { |
| DEPENDS shell : $(<) |
| DEPENDS $(<) : $(>) |
| SEARCH on $(>) = $(SEARCH_SOURCE) |
| MODE on $(<) = $(SHELLMODE) |
| Clean clean : $(<) |
| Chmod $(<) |
| } |
|
|
| rule SubDir |
| { |
| local _r _s |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| if ! $($(<[1])) |
| { |
| if ! $(<[1]) |
| { |
| EXIT SubDir syntax error |
| } |
|
|
| $(<[1]) = [ FSubDir $(<[2-]) ] |
| } |
|
|
| |
| |
| |
|
|
| if ! $($(<[1])-included) |
| { |
| |
|
|
| $(<[1])-included = TRUE |
|
|
| |
|
|
| _r = $($(<[1])RULES) |
|
|
| if ! $(_r) |
| { |
| _r = $(JAMRULES:R=$($(<[1]))) |
| } |
|
|
| |
|
|
| include $(_r) |
| } |
|
|
| |
| |
|
|
| _s = [ FDirName $(<[2-]) ] |
| SUBDIR = $(_s:R=$($(<[1]))) |
| SUBDIR_TOKENS = $(<[2-]) |
|
|
| |
| |
| |
| |
|
|
| SEARCH_SOURCE = $(SUBDIR) |
| LOCATE_SOURCE = $(ALL_LOCATE_TARGET) $(SUBDIR) |
| LOCATE_TARGET = $(ALL_LOCATE_TARGET) $(SUBDIR) |
| SOURCE_GRIST = [ FGrist $(<[2-]) ] |
|
|
| |
|
|
| SUBDIRCCFLAGS = |
| SUBDIRC++FLAGS = |
| SUBDIRHDRS = |
| } |
|
|
| rule SubDirCcFlags |
| { |
| SUBDIRCCFLAGS += $(<) |
| } |
|
|
| rule SubDirC++Flags |
| { |
| SUBDIRC++FLAGS += $(<) |
| } |
|
|
| rule SubDirHdrs |
| { |
| SUBDIRHDRS += $(<) |
| } |
|
|
| rule SubInclude |
| { |
| local _s |
|
|
| |
| |
| |
| |
|
|
| if ! $($(<[1])) |
| { |
| EXIT Top level of source tree has not been set with $(<[1]) |
| } |
|
|
| _s = [ FDirName $(<[2-]) ] |
|
|
| include $(JAMFILE:D=$(_s):R=$($(<[1]))) |
| } |
|
|
| rule Undefines |
| { |
| UNDEFS on [ FAppendSuffix $(<) : $(SUFEXE) ] += $(UNDEFFLAG)$(>) |
| } |
|
|
| rule UserObject |
| { |
| EXIT "Unknown suffix on" $(>) "- see UserObject rule in Jamfile(5)." |
| } |
|
|
| rule Yacc |
| { |
| local _h |
|
|
| _h = $(<:BS=.h) |
|
|
| |
|
|
| MakeLocate $(<) $(_h) : $(LOCATE_SOURCE) |
|
|
| if $(YACC) |
| { |
| DEPENDS $(<) $(_h) : $(>) |
| Yacc1 $(<) $(_h) : $(>) |
| YaccMv $(<) $(_h) : $(>) |
| Clean clean : $(<) $(_h) |
| } |
|
|
| |
| |
| INCLUDES $(<) : $(_h) |
| } |
|
|
| |
| |
| |
|
|
| rule FGrist |
| { |
| |
|
|
| local _g _i |
|
|
| _g = $(<[1]) |
|
|
| for _i in $(<[2-]) |
| { |
| _g = $(_g)!$(_i) |
| } |
|
|
| return $(_g) |
| } |
|
|
| rule FGristFiles |
| { |
| if ! $(SOURCE_GRIST) |
| { |
| return $(<) |
| } |
| else |
| { |
| return $(<:G=$(SOURCE_GRIST)) |
| } |
| } |
|
|
| rule FGristSourceFiles |
| { |
| |
| |
|
|
| |
| |
|
|
| if ! $(SOURCE_GRIST) |
| { |
| return $(<) |
| } |
| else |
| { |
| local _i _o |
|
|
| for _i in $(<) |
| { |
| switch $(_i) |
| { |
| case *.h : _o += $(_i) |
| case * : _o += $(_i:G=$(SOURCE_GRIST)) |
| } |
| } |
|
|
| return $(_o) |
| } |
| } |
|
|
| rule FConcat |
| { |
| |
|
|
| local _t _r |
|
|
| $(_r) = $(<[1]) |
|
|
| for _t in $(<[2-]) |
| { |
| $(_r) = $(_r)$(_t) |
| } |
|
|
| return $(_r) |
| } |
|
|
| rule FSubDir |
| { |
| local _i _d |
|
|
| |
| |
| |
|
|
| if ! $(<[1]) |
| { |
| _d = $(DOT) |
| } |
| else |
| { |
| _d = $(DOTDOT) |
|
|
| for _i in $(<[2-]) |
| { |
| _d = $(_d:R=$(DOTDOT)) |
| } |
| } |
|
|
| return $(_d) |
| } |
|
|
| rule FDirName |
| { |
| local _s _i |
|
|
| |
|
|
| if ! $(<) |
| { |
| _s = $(DOT) |
| } |
| else if $(VMS) |
| { |
| |
| |
| |
| |
| |
| |
|
|
| switch $(<[1]) |
| { |
| case *:* : _s = $(<[1]) |
| case \\[*\\] : _s = $(<[1]) |
| case * : _s = [.$(<[1])] |
| } |
|
|
| for _i in [.$(<[2-])] |
| { |
| _s = $(_i:R=$(_s)) |
| } |
| } |
| else if $(MAC) |
| { |
| _s = $(DOT) |
|
|
| for _i in $(<) |
| { |
| _s = $(_i:R=$(_s)) |
| } |
| } |
| else |
| { |
| _s = $(<[1]) |
|
|
| for _i in $(<[2-]) |
| { |
| _s = $(_i:R=$(_s)) |
| } |
| } |
|
|
| return $(_s) |
| } |
|
|
|
|
| rule _makeCommon |
| { |
| |
|
|
| if $($(<)[1]) && $($(<)[1]) = $($(>)[1]) |
| { |
| $(<) = $($(<)[2-]) |
| $(>) = $($(>)[2-]) |
| _makeCommon $(<) : $(>) |
| } |
| } |
|
|
|
|
| rule FRelPath |
| { |
| local _l _r |
|
|
| |
|
|
| _l = $(<) |
| _r = $(>) |
|
|
| _makeCommon _l : _r |
|
|
| |
|
|
| _l = [ FSubDir $(_l) ] |
| _r = [ FDirName $(_r) ] |
|
|
| |
|
|
| |
|
|
| if $(_r) = $(DOT) { |
| return $(_l) |
| } else { |
| return $(_r:R=$(_l)) |
| } |
| } |
|
|
| rule FAppendSuffix |
| { |
| |
| |
| |
|
|
| if $(>) |
| { |
| local _i _o |
|
|
| for _i in $(<) |
| { |
| if $(_i:S) |
| { |
| _o += $(_i) |
| } |
| else |
| { |
| _o += $(_i:S=$(>)) |
| } |
| } |
| return $(_o) |
| } |
| else |
| { |
| return $(<) |
| } |
| } |
|
|
| rule unmakeDir |
| { |
| if $(>[1]:D) && $(>[1]:D) != $(>[1]) && $(>[1]:D) != \\\\ |
| { |
| unmakeDir $(<) : $(>[1]:D) $(>[1]:BS) $(>[2-]) |
| } |
| else |
| { |
| $(<) = $(>) |
| } |
| } |
|
|
|
|
| rule FConvertToSlashes |
| { |
| local _d, _s, _i |
|
|
| unmakeDir _d : $(<) |
|
|
| _s = $(_d[1]) |
| for _i in $(_d[2-]) |
| { |
| _s = $(_s)/$(_i) |
| } |
| return $(_s) |
| } |
|
|
|
|
| |
| |
| |
|
|
| |
| |
| |
|
|
| actions updated together piecemeal Archive |
| { |
| $(AR) $(<) $(>) |
| } |
|
|
| actions As |
| { |
| $(AS) $(ASFLAGS) -I$(HDRS) -o $(<) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) -o $(<) $(>) |
| } |
|
|
| actions Cc |
| { |
| $(CC) -c $(CCFLAGS) $(OPTIM) -I$(HDRS) -o $(<) $(>) |
| } |
|
|
| actions Chgrp |
| { |
| $(CHGRP) $(GROUP) $(<) |
| } |
|
|
| actions Chmod1 |
| { |
| $(CHMOD) $(MODE) $(<) |
| } |
|
|
| actions Chown |
| { |
| $(CHOWN) $(OWNER) $(<) |
| } |
|
|
| actions piecemeal together existing Clean |
| { |
| $(RM) $(>) |
| } |
|
|
| actions File |
| { |
| $(CP) $(>) $(<) |
| } |
|
|
| actions GenFile1 |
| { |
| $(>[1]) $(<) $(>[2-]) |
| } |
|
|
| actions Fortran |
| { |
| $(FORTRAN) $(FORTRANFLAGS) -o $(<) $(>) |
| } |
|
|
| actions HardLink |
| { |
| $(RM) $(<) && $(LN) $(>) $(<) |
| } |
|
|
| actions Install |
| { |
| $(CP) $(>) $(<) |
| } |
|
|
| actions Lex |
| { |
| $(LEX) $(>) |
| } |
|
|
| actions LexMv |
| { |
| $(MV) lex.yy.c $(<) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) |
| } |
|
|
| actions MkDir1 |
| { |
| $(MKDIR) $(<) |
| } |
|
|
| actions together Ranlib |
| { |
| $(RANLIB) $(<) |
| } |
|
|
| actions quietly updated piecemeal together RmTemps |
| { |
| $(RM) $(>) |
| } |
|
|
| actions Shell |
| { |
| $(AWK) ' |
| NR == 1 { print "$(SHELLHEADER)" } |
| NR == 1 && /^[#:]/ { next } |
| /^##/ { next } |
| { print } |
| ' < $(>) > $(<) |
| } |
|
|
| actions Yacc1 |
| { |
| $(YACC) $(YACCFLAGS) $(>) |
| } |
|
|
| actions YaccMv |
| { |
| $(MV) $(YACCFILES).c $(<[1]) |
| $(MV) $(YACCFILES).h $(<[2]) |
| } |
|
|
| |
| |
| |
|
|
| if $(RELOCATE) |
| { |
| actions C++ |
| { |
| $(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) $(>) |
| } |
|
|
| actions Cc |
| { |
| $(CC) -c $(CCFLAGS) $(OPTIM) -I$(HDRS) $(>) |
| } |
|
|
| actions ignore CcMv |
| { |
| [ $(<) != $(>:BS=$(SUFOBJ)) ] && $(MV) $(>:BS=$(SUFOBJ)) $(<) |
| } |
| } |
|
|
| |
| |
| |
|
|
| if $(NOARUPDATE) |
| { |
| actions Archive |
| { |
| $(AR) $(<) $(>) |
| } |
| } |
|
|
| |
| |
| |
|
|
| if $(NT) |
| { |
| if $(TOOLSET) = VISUALC || $(TOOLSET) = VC7 || $(TOOLSET) = INTELC |
| { |
| actions updated together piecemeal Archive |
| { |
| if exist $(<) set _$(<:B)_=$(<) |
| $(AR) /out:$(<) %_$(<:B)_% $(>) |
| } |
|
|
| actions As |
| { |
| $(AS) /Ml /p /v /w2 $(>) $(<) ,nul,nul |
| } |
|
|
| actions Cc |
| { |
| $(CC) /c $(CCFLAGS) $(OPTIM) /Fo$(<) /I$(HDRS) /I$(STDHDRS) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++) /c $(C++FLAGS) $(OPTIM) /Fo$(<) /I$(HDRS) /I$(STDHDRS) /Tp$(>) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK) $(LINKFLAGS) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) |
| } |
| } |
| else if $(TOOLSET) = VISUALC16 |
| { |
| actions updated together piecemeal Archive |
| { |
| $(AR) $(<) -+$(>) |
| } |
|
|
| actions Cc |
| { |
| $(CC) /c $(CCFLAGS) $(OPTIM) /Fo$(<) /I$(HDRS) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++) /c $(C++FLAGS) $(OPTIM) /Fo$(<) /I$(HDRS) /Tp$(>) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK) $(LINKFLAGS) /out:$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) |
| } |
| } |
| else if $(TOOLSET) = BORLANDC |
| { |
| actions updated together piecemeal Archive |
| { |
| $(AR) $(<) -+$(>) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK) -e$(<) $(LINKFLAGS) $(UNDEFS) -L$(LINKLIBS) $(NEEDLIBS) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) -o$(<) $(>) |
| } |
|
|
| actions Cc |
| { |
| $(CC) -c $(CCFLAGS) $(OPTIM) -I$(HDRS) -o$(<) $(>) |
| } |
|
|
| } |
| else if $(TOOLSET) = MINGW |
| { |
| actions together piecemeal Archive |
| { |
| $(AR) $(<) $(>:T) |
| } |
|
|
| actions Cc |
| { |
| $(CC) -c $(CCFLAGS) $(OPTIM) -I$(HDRS) -o$(<) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) -o$(<) $(>) |
| } |
| } |
| else if $(TOOLSET) = WATCOM |
| { |
| actions together piecemeal Archive |
| { |
| $(AR) $(<) +-$(>) |
| } |
|
|
| actions Cc |
| { |
| $(CC) $(CCFLAGS) $(OPTIM) /Fo=$(<) /I$(HDRS) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++) $(C++FLAGS) $(OPTIM) /Fo=$(<) /I$(HDRS) $(>) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK) $(LINKFLAGS) /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) |
| } |
|
|
| actions Shell |
| { |
| $(CP) $(>) $(<) |
| } |
| } |
| else if $(TOOLSET) = LCC |
| { |
| actions together piecemeal Archive |
| { |
| $(AR) /out:$(<) $(>) |
| } |
|
|
| actions Cc |
| { |
| $(CC) $(CCFLAGS) $(OPTIM) -Fo$(<) -I$(HDRS) $(>) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) |
| } |
|
|
| actions Shell |
| { |
| $(CP) $(>) $(<) |
| } |
| } |
| } |
|
|
| |
| |
| |
|
|
| else if $(OS2) |
| { |
| if $(TOOLSET) = WATCOM |
| { |
| actions together piecemeal Archive |
| { |
| $(AR) $(<) +-$(>) |
| } |
|
|
| actions Cc |
| { |
| $(CC) $(CCFLAGS) $(OPTIM) /Fo=$(<) /I$(HDRS) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++) $(C++FLAGS) $(OPTIM) /Fo=$(<) /I$(HDRS) $(>) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK) $(LINKFLAGS) /Fe=$(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) |
| } |
|
|
| actions Shell |
| { |
| $(CP) $(>) $(<) |
| } |
| } |
| else if $(TOOLSET) = EMX |
| { |
| actions together piecemeal Archive |
| { |
| $(AR) $(<) $(>:T) |
| } |
|
|
| actions Cc |
| { |
| $(CC) -c $(CCFLAGS) $(OPTIM) -I$(HDRS) -o$(<) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++) -c $(C++FLAGS) $(OPTIM) -I$(HDRS) -o$(<) $(>) |
| } |
| } |
| } |
|
|
| |
| |
| |
|
|
| else if $(VMS) |
| { |
| actions updated together piecemeal Archive |
| { |
| lib/replace $(<) $(>[1]) ,$(>[2-]) |
| } |
|
|
| actions Cc |
| { |
| $(CC)/obj=$(<) $(CCFLAGS) $(OPTIM) $(SLASHINC) $(>) |
| } |
|
|
| actions C++ |
| { |
| $(C++)/obj=$(<) $(C++FLAGS) $(OPTIM) $(SLASHINC) $(>) |
| } |
|
|
| actions piecemeal together existing Clean |
| { |
| $(RM) $(>[1]) |
| } |
|
|
| actions together quietly CreLib |
| { |
| if f$search("$(<)") .eqs. "" then lib/create $(<) |
| } |
|
|
| actions GenFile1 |
| { |
| mcr $(>[1]) $(<) $(>[2-]) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK)/exe=$(<) $(LINKFLAGS) $(>[1]) ,$(>[2-]) ,$(NEEDLIBS)/lib ,$(LINKLIBS) |
| } |
|
|
| actions quietly updated piecemeal together RmTemps |
| { |
| $(RM) $(>[1]) |
| } |
|
|
| actions Shell |
| { |
| $(CP) $(>) $(<) |
| } |
| } |
|
|
| |
| |
| |
|
|
| else if $(MAC) |
| { |
| actions together Archive |
| { |
| $(LINK) -library -o $(<) $(>) |
| } |
|
|
| actions Cc |
| { |
| set -e MWCincludes $(MACINC) |
| $(CC) -o $(<) $(CCFLAGS) $(OPTIM) $(>) |
| } |
|
|
| actions C++ |
| { |
| set -e MWCincludes $(MACINC) |
| $(CC) -o $(<) $(C++FLAGS) $(OPTIM) $(>) |
| } |
|
|
| actions Link bind NEEDLIBS |
| { |
| $(LINK) -o $(<) $(LINKFLAGS) $(>) $(NEEDLIBS) "$(LINKLIBS)" |
| } |
| } |
|
|
| |
| |
| |
|
|
| rule BULK { Bulk $(<) : $(>) |
| rule FILE { File $(<) : $(>) |
| rule HDRRULE { HdrRule $(<) : $(>) |
| rule INSTALL { Install $(<) : $(>) |
| rule LIBRARY { Library $(<) : $(>) |
| rule LIBS { LinkLibraries $(<) : $(>) |
| rule LINK { Link $(<) : $(>) |
| rule MAIN { Main $(<) : $(>) |
| rule SETUID { Setuid $(<) |
| rule SHELL { Shell $(<) : $(>) |
| rule UNDEFINES { Undefines $(<) : $(>) |
|
|
| |
|
|
| rule INSTALLBIN { InstallBin $(BINDIR) : $(<) |
| rule INSTALLLIB { InstallLib $(LIBDIR) : $(<) |
| rule INSTALLMAN { InstallMan $(MANDIR) : $(<) |
|
|
| |
|
|
| rule addDirName { $(<) += [ FDirName $(>) ] |
| rule makeDirName { $(<) = [ FDirName $(>) ] |
| rule makeGristedName { $(<) = [ FGristSourceFiles $(>) ] |
| rule makeRelPath { $(<[1]) = [ FRelPath $(<[2-]) : $(>) ] |
| rule makeSuffixed { $(<[1]) = [ FAppendSuffix $(>) : $(<[2]) ] |
|
|
| |
| |
| |
|
|
| { |
| if $(JAMFILE) { include $(JAMFILE) |
| } |
|
|
| } |
|
|