       --defs += GC_DEBUG ;
    }
}

if $(--duma)
{
    --defs += OPT_DUMA ;
}

if ( $(OS) = NT ) && ! NT in $(--defs)
{
    --defs += NT ;
}
--defs += YYSTACKSIZE=5000 ;

if $(with-python)
{
    --defs += HAVE_PYTHON ;
}

if $(debug)
{
    --defs += BJAM_NEWSTR_NO_ALLOCATE ;
}


# The basic symbolic targets...
NOTFILE all clean dist ;
ALWAYS clean ;

# Utility rules and actions...
rule .clean
{
    [DELETE] clean : $(<) ;
}
if $(OS) = NT { actions piecemeal together existing [DELETE] {
    del /F /Q "$(>)"
} }
if $(UNIX) = true { actions piecemeal together existing [DELETE] {
    rm -f "$(>)"
} }
if $(OS) = NT {
    --chmod+w = "attrib -r " ;
}
if $(UNIX) = true {
    --chmod+w = "chmod +w " ;
}

rule .mkdir
{
    NOUPDATE $(<) ;
    if $(<:P) { DEPENDS $(<) : $(<:P) ; .mkdir $(<:P) ; }
    if ! $(md<$(<)>) { [MKDIR] $(<) ; md<$(<)> = - ; }
}
if $(OS) = NT { actions [MKDIR] {
    md "$(<)"
} }
if $(UNIX) = true { actions [MKDIR] {
    mkdir "$(<)"
} }

rule .exe
{
    local exe = $(<) ;
    if $(OS) = NT || ( $(UNIX) = true && $(OS) = CYGWIN ) { exe = $(exe:S=.exe) ; }
    LOCATE on $(exe) = $(locate-target) ;
    DEPENDS all : $(exe) ;
    .mkdir $(locate-target) ;
    if $(--link)
    {
        local objs ;
        for local s in $(>)
        {
            # Translate any subdir elements into a simple file name.
            local o = [ MATCH "([^/]+)[/]?(.+)" : $(s) ] ;
            o = $(o:J=_) ;
            o = $(o:S=.o) ;
            objs += $(o) ;
            LOCATE on $(o) = $(locate-target) ;
            DEPENDS $(exe) : $(o) ;
            DEPENDS $(o) : $(s) ;
            DEPENDS $(o) : $(locate-target) ;
            [COMPILE] $(o) : $(s) ;
            .clean $(o) ;
        }
        DEPENDS $(exe) : $(objs) ;
        DEPENDS $(exe) : $(locate-target) ;
        [COMPILE.LINK] $(exe) : $(objs) ;
        .clean $(exe) ;
    }
    else
    {
        DEPENDS $(exe) : $(>) ;
        DEPENDS $(exe) : $(locate-target) ;
        [COMPILE] $(exe) : $(>) ;
        .clean $(exe) ;
    }
    return $(exe) ;
}
if ! $